]> git.sesse.net Git - nageru/blob - meson.build
Switch build systems to Meson.
[nageru] / meson.build
1 project('futatabi', 'cpp')
2 qt5 = import('qt5')
3 protoc = find_program('protoc')
4
5 epoxydep = dependency('epoxy')
6 libavcodecdep = dependency('libavcodec')
7 libavformatdep = dependency('libavformat')
8 libavutildep = dependency('libavutil')
9 libjpegdep = dependency('libjpeg')
10 libmicrohttpddep = dependency('libmicrohttpd')
11 libswscaledep = dependency('libswscale')
12 movitdep = dependency('movit')
13 protobufdep = dependency('protobuf')
14 qt5deps = dependency('qt5', modules: ['Core', 'Gui', 'Widgets', 'OpenGLExtensions', 'OpenGL', 'PrintSupport'])
15 sdl2_imagedep = dependency('SDL2_image')
16 sdl2dep = dependency('sdl2')
17 sqlite3dep = dependency('sqlite3')
18 vadrmdep = dependency('libva-drm')
19 vax11dep = dependency('libva-x11')
20 x11dep = dependency('x11')
21
22 # Add the right MOVIT_SHADER_DIR definition.
23 r = run_command('pkg-config', '--variable=shaderdir', 'movit')
24 if r.returncode() != 0
25   error('Movit pkg-config installation is broken.')
26 endif
27 add_global_arguments('-DMOVIT_SHADER_DIR="' + r.stdout().strip() + '"', language: 'cpp')
28
29 # Protobuf compilation.
30 gen = generator(protoc, \
31   output    : ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'],
32   arguments : ['--proto_path=@CURRENT_SOURCE_DIR@', '--cpp_out=@BUILD_DIR@', '@INPUT@'])
33 proto_generated = gen.process('state.proto')
34
35 # Preprocess Qt as needed.
36 moc_files = qt5.preprocess(
37   moc_headers: ['mainwindow.h', 'jpeg_frame_view.h', 'clip_list.h'],
38   ui_files: ['mainwindow.ui'],
39   dependencies: qt5deps)
40
41 # Flow objects.
42 srcs = ['flow.cpp', 'gpu_timers.cpp']
43
44 # All the other files.
45 srcs += ['ffmpeg_raii.cpp', 'main.cpp', 'player.cpp', 'httpd.cpp', 'mux.cpp', 'metacube2.cpp', 'video_stream.cpp', 'context.cpp', 'chroma_subsampler.cpp']
46 srcs += ['vaapi_jpeg_decoder.cpp', 'memcpy_interleaved.cpp', 'db.cpp', 'disk_space_estimator.cpp', 'ycbcr_converter.cpp', 'flags.cpp']
47 srcs += ['mainwindow.cpp', 'jpeg_frame_view.cpp', 'clip_list.cpp']
48 srcs += moc_files
49 srcs += proto_generated
50
51 executable('futatabi', srcs, dependencies: [qt5deps, libjpegdep, movitdep, libmicrohttpddep, protobufdep, sqlite3dep, vax11dep, vadrmdep, x11dep, libavformatdep, libavcodecdep, libavutildep, libswscaledep])
52 executable('flow', 'flow_main.cpp', 'flow.cpp', 'gpu_timers.cpp', dependencies: [epoxydep, sdl2dep, sdl2_imagedep])
53 executable('eval', 'eval.cpp', 'util.cpp')
54 executable('vis', 'vis.cpp', 'util.cpp')