2 protoc = find_program('protoc')
4 epoxydep = dependency('epoxy')
5 libavcodecdep = dependency('libavcodec')
6 libavformatdep = dependency('libavformat')
7 libavutildep = dependency('libavutil')
8 libjpegdep = dependency('libjpeg')
9 libswscaledep = dependency('libswscale')
10 movitdep = dependency('movit')
11 protobufdep = dependency('protobuf')
12 qt5deps = dependency('qt5', modules: ['Core', 'Gui', 'Widgets', 'OpenGLExtensions', 'OpenGL', 'PrintSupport'])
13 sdl2_imagedep = dependency('SDL2_image')
14 sdl2dep = dependency('sdl2')
15 sqlite3dep = dependency('sqlite3')
16 vadrmdep = dependency('libva-drm')
17 vax11dep = dependency('libva-x11')
18 x11dep = dependency('x11')
20 # Protobuf compilation.
21 gen = generator(protoc, \
22 output : ['@BASENAME@.pb.cc', '@BASENAME@.pb.h'],
23 arguments : ['--proto_path=@CURRENT_SOURCE_DIR@', '--cpp_out=@BUILD_DIR@', '@INPUT@'])
24 proto_generated = gen.process('state.proto', 'frame.proto')
26 # Preprocess Qt as needed.
27 moc_files = qt5.preprocess(
28 moc_headers: ['mainwindow.h', 'jpeg_frame_view.h', 'clip_list.h'],
29 ui_files: ['mainwindow.ui'],
30 dependencies: qt5deps)
33 srcs = ['flow.cpp', 'gpu_timers.cpp']
35 # All the other files.
36 srcs += ['main.cpp', 'player.cpp', 'video_stream.cpp', 'chroma_subsampler.cpp']
37 srcs += ['vaapi_jpeg_decoder.cpp', 'db.cpp', 'ycbcr_converter.cpp', 'flags.cpp']
38 srcs += ['mainwindow.cpp', 'jpeg_frame_view.cpp', 'clip_list.cpp', 'frame_on_disk.cpp']
40 srcs += proto_generated
42 # Shaders needed at runtime.
43 shaders = ['chroma_subsample.vert', 'densify.vert', 'equations.vert', 'hole_fill.vert', 'motion_search.vert', 'sor.vert', 'splat.vert', 'vs.vert']
44 shaders += ['add_base_flow.frag', 'blend.frag', 'chroma_subsample.frag', 'densify.frag', 'derivatives.frag', 'diffusivity.frag',
45 'equations.frag', 'gray.frag', 'hole_blend.frag', 'hole_fill.frag', 'motion_search.frag', 'prewarp.frag', 'resize_flow.frag',
46 'sobel.frag', 'sor.frag', 'splat.frag']
48 foreach shader : shaders
49 run_command('ln', '-s', join_paths(meson.current_source_dir(), shader), meson.current_build_dir())
52 shader_srcs = bin2h_gen.process(shaders)
55 executable('futatabi', srcs, dependencies: [shareddep, qt5deps, libjpegdep, movitdep, libmicrohttpddep, protobufdep, sqlite3dep, vax11dep, vadrmdep, x11dep, libavformatdep, libavcodecdep, libavutildep, libswscaledep], link_with: shared)
56 executable('flow', 'flow_main.cpp', 'flow.cpp', 'gpu_timers.cpp', shader_srcs, dependencies: [shareddep, epoxydep, sdl2dep, sdl2_imagedep])
57 executable('eval', 'eval.cpp', 'util.cpp')
58 executable('vis', 'vis.cpp', 'util.cpp')