-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathmeson.build
208 lines (188 loc) · 9.09 KB
/
meson.build
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
project('RIFE-ncnn-Vulkan', 'cpp',
default_options: ['buildtype=release', 'warning_level=2', 'b_lto=true', 'b_ndebug=if-release', 'cpp_std=c++20'],
license: 'MIT',
meson_version: '>=0.55.0',
version: '9'
)
cxx = meson.get_compiler('cpp')
gcc_syntax = cxx.get_argument_syntax() == 'gcc'
if get_option('buildtype') == 'release'
add_global_arguments(gcc_syntax ? ['-fno-math-errno', '-fno-trapping-math'] : '/GS-', language: 'cpp')
endif
omp_dep = 0
if meson.get_compiler('cpp').get_id() == 'clang'
omp_dep = declare_dependency(
compile_args : ['-Xpreprocessor', '-fopenmp']
)
else
omp_dep = dependency('openmp')
endif
deps = [
omp_dep,
dependency('threads'),
dependency('vulkan', required: false)
]
if gcc_syntax
vapoursynth_dep = dependency('vapoursynth', version: '>=55').partial_dependency(compile_args: true, includes: true)
deps += vapoursynth_dep
install_dir = vapoursynth_dep.get_variable(pkgconfig: 'libdir') / 'vapoursynth'
else
add_project_arguments('/DNOMINMAX', language: 'cpp')
install_dir = get_option('libdir') / 'vapoursynth'
endif
message(install_dir)
if get_option('use_system_ncnn')
deps += dependency('ncnn', method: 'cmake')
else
cmake = import('cmake')
opt_var = cmake.subproject_options()
opt_var.add_cmake_defines({'NCNN_INSTALL_SDK': false})
opt_var.add_cmake_defines({'NCNN_PIXEL_ROTATE': false})
opt_var.add_cmake_defines({'NCNN_PIXEL_AFFINE': false})
opt_var.add_cmake_defines({'NCNN_PIXEL_DRAWING': false})
opt_var.add_cmake_defines({'NCNN_VULKAN': true})
opt_var.add_cmake_defines({'NCNN_VULKAN_ONLINE_SPIRV': true})
opt_var.add_cmake_defines({'NCNN_BUILD_BENCHMARK': false})
opt_var.add_cmake_defines({'NCNN_BUILD_TESTS': false})
opt_var.add_cmake_defines({'NCNN_BUILD_TOOLS': false})
opt_var.add_cmake_defines({'NCNN_BUILD_EXAMPLES': false})
opt_var.add_cmake_defines({'NCNN_INT8': false})
opt_var.add_cmake_defines({'NCNN_AVX512': false})
opt_var.add_cmake_defines({'NCNN_AVX512VNNI': false})
opt_var.add_cmake_defines({'NCNN_XOP': false})
opt_var.add_cmake_defines({'NCNN_DISABLE_RTTI': false})
opt_var.add_cmake_defines({'NCNN_DISABLE_EXCEPTION': false})
opt_var.add_cmake_defines({'WITH_LAYER_absval': false})
opt_var.add_cmake_defines({'WITH_LAYER_argmax': false})
opt_var.add_cmake_defines({'WITH_LAYER_batchnorm': false})
opt_var.add_cmake_defines({'WITH_LAYER_bias': false})
opt_var.add_cmake_defines({'WITH_LAYER_bnll': false})
opt_var.add_cmake_defines({'WITH_LAYER_concat': true})
opt_var.add_cmake_defines({'WITH_LAYER_convolution': true})
opt_var.add_cmake_defines({'WITH_LAYER_crop': true})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolution': true})
opt_var.add_cmake_defines({'WITH_LAYER_dropout': false})
opt_var.add_cmake_defines({'WITH_LAYER_eltwise': true})
opt_var.add_cmake_defines({'WITH_LAYER_elu': false})
opt_var.add_cmake_defines({'WITH_LAYER_embed': false})
opt_var.add_cmake_defines({'WITH_LAYER_exp': false})
opt_var.add_cmake_defines({'WITH_LAYER_flatten': true})
opt_var.add_cmake_defines({'WITH_LAYER_innerproduct': true})
opt_var.add_cmake_defines({'WITH_LAYER_input': true})
opt_var.add_cmake_defines({'WITH_LAYER_log': false})
opt_var.add_cmake_defines({'WITH_LAYER_lrn': false})
opt_var.add_cmake_defines({'WITH_LAYER_memorydata': true})
opt_var.add_cmake_defines({'WITH_LAYER_mvn': false})
opt_var.add_cmake_defines({'WITH_LAYER_pooling': true})
opt_var.add_cmake_defines({'WITH_LAYER_power': false})
opt_var.add_cmake_defines({'WITH_LAYER_prelu': true})
opt_var.add_cmake_defines({'WITH_LAYER_proposal': false})
opt_var.add_cmake_defines({'WITH_LAYER_reduction': false})
opt_var.add_cmake_defines({'WITH_LAYER_relu': true})
opt_var.add_cmake_defines({'WITH_LAYER_reshape': false})
opt_var.add_cmake_defines({'WITH_LAYER_roipooling': false})
opt_var.add_cmake_defines({'WITH_LAYER_scale': false})
opt_var.add_cmake_defines({'WITH_LAYER_sigmoid': true})
opt_var.add_cmake_defines({'WITH_LAYER_slice': true})
opt_var.add_cmake_defines({'WITH_LAYER_softmax': false})
opt_var.add_cmake_defines({'WITH_LAYER_split': true})
opt_var.add_cmake_defines({'WITH_LAYER_spp': false})
opt_var.add_cmake_defines({'WITH_LAYER_tanh': false})
opt_var.add_cmake_defines({'WITH_LAYER_threshold': false})
opt_var.add_cmake_defines({'WITH_LAYER_tile': false})
opt_var.add_cmake_defines({'WITH_LAYER_rnn': false})
opt_var.add_cmake_defines({'WITH_LAYER_lstm': false})
opt_var.add_cmake_defines({'WITH_LAYER_binaryop': true})
opt_var.add_cmake_defines({'WITH_LAYER_unaryop': true})
opt_var.add_cmake_defines({'WITH_LAYER_convolutiondepthwise': true})
opt_var.add_cmake_defines({'WITH_LAYER_padding': true})
opt_var.add_cmake_defines({'WITH_LAYER_squeeze': false})
opt_var.add_cmake_defines({'WITH_LAYER_expanddims': false})
opt_var.add_cmake_defines({'WITH_LAYER_normalize': false})
opt_var.add_cmake_defines({'WITH_LAYER_permute': false})
opt_var.add_cmake_defines({'WITH_LAYER_priorbox': false})
opt_var.add_cmake_defines({'WITH_LAYER_detectionoutput': false})
opt_var.add_cmake_defines({'WITH_LAYER_interp': true})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolutiondepthwise': false})
opt_var.add_cmake_defines({'WITH_LAYER_shufflechannel': false})
opt_var.add_cmake_defines({'WITH_LAYER_instancenorm': false})
opt_var.add_cmake_defines({'WITH_LAYER_clip': true})
opt_var.add_cmake_defines({'WITH_LAYER_reorg': false})
opt_var.add_cmake_defines({'WITH_LAYER_yolodetectionoutput': false})
opt_var.add_cmake_defines({'WITH_LAYER_quantize': false})
opt_var.add_cmake_defines({'WITH_LAYER_dequantize': false})
opt_var.add_cmake_defines({'WITH_LAYER_yolov3detectionoutput': false})
opt_var.add_cmake_defines({'WITH_LAYER_psroipooling': false})
opt_var.add_cmake_defines({'WITH_LAYER_roialign': false})
opt_var.add_cmake_defines({'WITH_LAYER_packing': true})
opt_var.add_cmake_defines({'WITH_LAYER_requantize': false})
opt_var.add_cmake_defines({'WITH_LAYER_cast': true})
opt_var.add_cmake_defines({'WITH_LAYER_hardsigmoid': false})
opt_var.add_cmake_defines({'WITH_LAYER_selu': false})
opt_var.add_cmake_defines({'WITH_LAYER_hardswish': false})
opt_var.add_cmake_defines({'WITH_LAYER_noop': false})
opt_var.add_cmake_defines({'WITH_LAYER_pixelshuffle': true})
opt_var.add_cmake_defines({'WITH_LAYER_deepcopy': false})
opt_var.add_cmake_defines({'WITH_LAYER_mish': false})
opt_var.add_cmake_defines({'WITH_LAYER_statisticspooling': false})
opt_var.add_cmake_defines({'WITH_LAYER_swish': false})
opt_var.add_cmake_defines({'WITH_LAYER_gemm': true})
opt_var.add_cmake_defines({'WITH_LAYER_groupnorm': false})
opt_var.add_cmake_defines({'WITH_LAYER_layernorm': false})
opt_var.add_cmake_defines({'WITH_LAYER_softplus': false})
opt_var.add_cmake_defines({'WITH_LAYER_gru': false})
opt_var.add_cmake_defines({'WITH_LAYER_multiheadattention': false})
opt_var.add_cmake_defines({'WITH_LAYER_gelu': false})
opt_var.add_cmake_defines({'WITH_LAYER_convolution1d': false})
opt_var.add_cmake_defines({'WITH_LAYER_pooling1d': false})
opt_var.add_cmake_defines({'WITH_LAYER_convolutiondepthwise1d': false})
opt_var.add_cmake_defines({'WITH_LAYER_convolution3d': false})
opt_var.add_cmake_defines({'WITH_LAYER_convolutiondepthwise3d': false})
opt_var.add_cmake_defines({'WITH_LAYER_pooling3d': false})
opt_var.add_cmake_defines({'WITH_LAYER_matmul': false})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolution1d': false})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolutiondepthwise1d': false})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolution3d': false})
opt_var.add_cmake_defines({'WITH_LAYER_deconvolutiondepthwise3d': false})
opt_var.add_cmake_defines({'WITH_LAYER_einsum': false})
opt_var.add_cmake_defines({'WITH_LAYER_deformableconv2d': false})
if host_machine.system() == 'darwin'
if host_machine.cpu_family().startswith('x86')
opt_var.add_cmake_defines({'CMAKE_OSX_ARCHITECTURES': 'x86_64'})
endif
if host_machine.cpu_family().startswith('arm')
opt_var.add_cmake_defines({'CMAKE_OSX_ARCHITECTURES': 'arm64'})
endif
endif
if gcc_syntax
opt_var.append_compile_args('cpp', '-fvisibility=hidden')
endif
opt_var.set_install(false)
sub_proj = cmake.subproject('ncnn', options: opt_var)
deps += sub_proj.dependency('GenericCodeGen')
deps += sub_proj.dependency('glslang')
deps += sub_proj.dependency('MachineIndependent')
deps += sub_proj.dependency('ncnn')
deps += sub_proj.dependency('OGLCompiler')
deps += sub_proj.dependency('OSDependent')
deps += sub_proj.dependency('SPIRV')
endif
sources = [
'RIFE/plugin.cpp',
'RIFE/rife.cpp',
'RIFE/rife.h',
'RIFE/rife_ops.h',
'RIFE/warp.cpp'
]
if host_machine.cpu_family().startswith('x86') and gcc_syntax
add_project_arguments('-mfpmath=sse', '-msse2', language: 'cpp')
endif
shared_module('rife', sources,
dependencies: deps,
install: true,
install_dir: install_dir,
gnu_symbol_visibility: 'hidden'
)
install_subdir('models',
install_dir: install_dir
)