]> git.sesse.net Git - nageru/commitdiff
Switch build systems to Meson.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 7 Nov 2018 16:38:03 +0000 (17:38 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 7 Nov 2018 16:39:02 +0000 (17:39 +0100)
Makefile [deleted file]
meson.build [new file with mode: 0644]

diff --git a/Makefile b/Makefile
deleted file mode 100644 (file)
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 (file)
index 0000000..8308335
--- /dev/null
@@ -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')