]> git.sesse.net Git - nageru/blobdiff - meson.build
Make the Nageru version settable from the Meson configuration.
[nageru] / meson.build
index 8308335fa6ee127dc339595722cf03cc66825f63..9dbfd22648c140dbfded07ed3133bc95fc3e00e4 100644 (file)
@@ -1,54 +1,43 @@
-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')
+project('nageru', 'cpp', default_options: ['buildtype=debugoptimized'], version: '1.8.0-pre')
+
+cxx = meson.get_compiler('cpp')
+
+# Use lld if we can; it links a lot faster than ld.bfd or gold.
+code = '''#include <stdio.h>
+int main() { printf("Hello, world!\n"); return 0; }
+'''
+if cxx.links(code, args: '-fuse-ld=lld', name: 'check for LLD')
+       add_project_link_arguments('-fuse-ld=lld', language: 'cpp')
+endif
 
 # 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.')
+       error('Movit pkg-config installation is broken.')
+endif
+add_project_arguments('-DMOVIT_SHADER_DIR="' + r.stdout().strip() + '"', language: 'cpp')
+
+# Make the Nageru version available as a #define.
+add_project_arguments('-DNAGERU_VERSION="' + meson.project_version() + '"', language: 'cpp')
+
+# DeckLink has these issues, and we include it from various places.
+if cxx.has_argument('-Wno-non-virtual-dtor')
+       add_project_arguments('-Wno-non-virtual-dtor', language: 'cpp')
 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')
+
+# FFmpeg has a lot of deprecated APIs whose replacements are not available
+# in Debian stable, so we suppress these warnings.
+if cxx.has_argument('-Wno-deprecated-declarations')
+       add_project_arguments('-Wno-deprecated-declarations', language: 'cpp')
+endif
+
+# This needs to be done before declaring any build targets.
+if get_option('cef_dir') != ''
+       add_project_arguments('-DHAVE_CEF=1', language: 'cpp')
+endif
+
+top_include = include_directories('.')
+
+subdir('shared')
+subdir('nageru')
+subdir('futatabi')