From 4268eef4f78db50a65e408fff35ce7606ad3ebb2 Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Wed, 7 Nov 2018 17:38:03 +0100 Subject: [PATCH] Switch build systems to Meson. --- Makefile | 55 ----------------------------------------------------- meson.build | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 55 deletions(-) delete mode 100644 Makefile create mode 100644 meson.build diff --git a/Makefile b/Makefile deleted file mode 100644 index 6946cae..0000000 --- a/Makefile +++ /dev/null @@ -1,55 +0,0 @@ -CXX=g++ -PROTOC=protoc -PKG_MODULES := Qt5Core Qt5Gui Qt5Widgets Qt5OpenGLExtensions Qt5OpenGL Qt5PrintSupport libjpeg movit libmicrohttpd protobuf sqlite3 -CXXFLAGS ?= -O2 -g -Wall # Will be overridden by environment. -CXXFLAGS += -fPIC $(shell pkg-config --cflags $(PKG_MODULES)) -DMOVIT_SHADER_DIR=\"$(shell pkg-config --variable=shaderdir movit)\" -pthread - -LDLIBS=$(shell pkg-config --libs $(PKG_MODULES)) -pthread -lavformat -lavcodec -lavutil -lswscale -lGL -lva -lva-drm -lva-x11 -lX11 - -# Qt objects -OBJS_WITH_MOC = mainwindow.o jpeg_frame_view.o clip_list.o -OBJS += $(OBJS_WITH_MOC) -OBJS += $(OBJS_WITH_MOC:.o=.moc.o) - -# Flow objects -OBJS += flow.o gpu_timers.o - -OBJS += ffmpeg_raii.o main.o player.o httpd.o mux.o metacube2.o video_stream.o context.o chroma_subsampler.o -OBJS += vaapi_jpeg_decoder.o memcpy_interleaved.o db.o disk_space_estimator.o ycbcr_converter.o flags.o -OBJS += state.pb.o - -%.o: %.cpp - $(CXX) -MMD -MP $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $< -%.o: %.cc - $(CXX) -MMD -MP $(CPPFLAGS) $(CXXFLAGS) -o $@ -c $< -%.pb.cc %.pb.h : %.proto - $(PROTOC) --cpp_out=. $< - -%.h: %.ui - uic $< -o $@ - -%.moc.cpp: %.h - moc $< -o $@ - -all: futatabi flow vis eval - -mainwindow.o: ui_mainwindow.h state.pb.h - -clip_list.h: state.pb.h - -db.h: state.pb.h - -futatabi: $(OBJS) $(CEF_LIBS) - $(CXX) -o $@ $^ $(LDFLAGS) $(LDLIBS) -flow: flow.o flow_main.o gpu_timers.o - $(CXX) -o $@ $^ -lepoxy -lSDL2 -lSDL2_image -eval: eval.o util.o - $(CXX) -o $@ $^ -vis: vis.o util.o - $(CXX) -o $@ $^ - -DEPS=$(OBJS:.o=.d) --include $(DEPS) - -clean: - $(RM) $(OBJS) $(DEPS) flow_main.o gpu_timers.o futatabi $(OBJS_WITH_MOC:.o=.moc.cpp) *.pb.cc *.pb.h diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..8308335 --- /dev/null +++ b/meson.build @@ -0,0 +1,54 @@ +project('futatabi', 'cpp') +qt5 = import('qt5') +protoc = find_program('protoc') + +epoxydep = dependency('epoxy') +libavcodecdep = dependency('libavcodec') +libavformatdep = dependency('libavformat') +libavutildep = dependency('libavutil') +libjpegdep = dependency('libjpeg') +libmicrohttpddep = dependency('libmicrohttpd') +libswscaledep = dependency('libswscale') +movitdep = dependency('movit') +protobufdep = dependency('protobuf') +qt5deps = dependency('qt5', modules: ['Core', 'Gui', 'Widgets', 'OpenGLExtensions', 'OpenGL', 'PrintSupport']) +sdl2_imagedep = dependency('SDL2_image') +sdl2dep = dependency('sdl2') +sqlite3dep = dependency('sqlite3') +vadrmdep = dependency('libva-drm') +vax11dep = dependency('libva-x11') +x11dep = dependency('x11') + +# Add the right MOVIT_SHADER_DIR definition. +r = run_command('pkg-config', '--variable=shaderdir', 'movit') +if r.returncode() != 0 + error('Movit pkg-config installation is broken.') +endif +add_global_arguments('-DMOVIT_SHADER_DIR="' + r.stdout().strip() + '"', language: 'cpp') + +# Protobuf compilation. +gen = generator(protoc, \ + output : ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'], + arguments : ['--proto_path=@CURRENT_SOURCE_DIR@', '--cpp_out=@BUILD_DIR@', '@INPUT@']) +proto_generated = gen.process('state.proto') + +# Preprocess Qt as needed. +moc_files = qt5.preprocess( + moc_headers: ['mainwindow.h', 'jpeg_frame_view.h', 'clip_list.h'], + ui_files: ['mainwindow.ui'], + dependencies: qt5deps) + +# Flow objects. +srcs = ['flow.cpp', 'gpu_timers.cpp'] + +# All the other files. +srcs += ['ffmpeg_raii.cpp', 'main.cpp', 'player.cpp', 'httpd.cpp', 'mux.cpp', 'metacube2.cpp', 'video_stream.cpp', 'context.cpp', 'chroma_subsampler.cpp'] +srcs += ['vaapi_jpeg_decoder.cpp', 'memcpy_interleaved.cpp', 'db.cpp', 'disk_space_estimator.cpp', 'ycbcr_converter.cpp', 'flags.cpp'] +srcs += ['mainwindow.cpp', 'jpeg_frame_view.cpp', 'clip_list.cpp'] +srcs += moc_files +srcs += proto_generated + +executable('futatabi', srcs, dependencies: [qt5deps, libjpegdep, movitdep, libmicrohttpddep, protobufdep, sqlite3dep, vax11dep, vadrmdep, x11dep, libavformatdep, libavcodecdep, libavutildep, libswscaledep]) +executable('flow', 'flow_main.cpp', 'flow.cpp', 'gpu_timers.cpp', dependencies: [epoxydep, sdl2dep, sdl2_imagedep]) +executable('eval', 'eval.cpp', 'util.cpp') +executable('vis', 'vis.cpp', 'util.cpp') -- 2.39.2