diff options
Diffstat (limited to '')
-rw-r--r-- | spa/plugins/audioconvert/meson.build | 206 |
1 files changed, 206 insertions, 0 deletions
diff --git a/spa/plugins/audioconvert/meson.build b/spa/plugins/audioconvert/meson.build new file mode 100644 index 0000000..f08527a --- /dev/null +++ b/spa/plugins/audioconvert/meson.build @@ -0,0 +1,206 @@ +audioconvert_sources = [ + 'audioadapter.c', + 'audioconvert.c', + 'plugin.c' +] + +simd_cargs = [] +simd_dependencies = [] + +audioconvert_c = static_library('audioconvert_c', + [ 'channelmix-ops-c.c', + 'biquad.c', + 'crossover.c', + 'volume-ops-c.c', + 'peaks-ops-c.c', + 'resample-native-c.c', + 'fmt-ops-c.c' ], + c_args : ['-Ofast', '-ffast-math'], + dependencies : [ spa_dep ], + install : false + ) +simd_dependencies += audioconvert_c + +if have_sse + audioconvert_sse = static_library('audioconvert_sse', + ['resample-native-sse.c', + 'volume-ops-sse.c', + 'peaks-ops-sse.c', + 'channelmix-ops-sse.c' ], + c_args : [sse_args, '-Ofast', '-DHAVE_SSE'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_SSE'] + simd_dependencies += audioconvert_sse +endif +if have_sse2 + audioconvert_sse2 = static_library('audioconvert_sse2', + ['fmt-ops-sse2.c' ], + c_args : [sse2_args, '-O3', '-DHAVE_SSE2'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_SSE2'] + simd_dependencies += audioconvert_sse2 +endif +if have_ssse3 + audioconvert_ssse3 = static_library('audioconvert_ssse3', + ['fmt-ops-ssse3.c', + 'resample-native-ssse3.c' ], + c_args : [ssse3_args, '-O3', '-DHAVE_SSSE3'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_SSSE3'] + simd_dependencies += audioconvert_ssse3 +endif +if have_sse41 + audioconvert_sse41 = static_library('audioconvert_sse41', + ['fmt-ops-sse41.c'], + c_args : [sse41_args, '-O3', '-DHAVE_SSE41'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_SSE41'] + simd_dependencies += audioconvert_sse41 +endif +if have_avx and have_fma + audioconvert_avx = static_library('audioconvert_avx', + ['resample-native-avx.c'], + c_args : [avx_args, fma_args, '-O3', '-DHAVE_AVX', '-DHAVE_FMA'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_AVX', '-DHAVE_FMA'] + simd_dependencies += audioconvert_avx +endif +if have_avx2 + audioconvert_avx2 = static_library('audioconvert_avx2', + ['fmt-ops-avx2.c'], + c_args : [avx2_args, '-O3', '-DHAVE_AVX2'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_AVX2'] + simd_dependencies += audioconvert_avx2 +endif + +if have_neon + audioconvert_neon = static_library('audioconvert_neon', + ['resample-native-neon.c', + 'fmt-ops-neon.c' ], + c_args : [neon_args, '-O3', '-DHAVE_NEON'], + dependencies : [ spa_dep ], + install : false + ) + simd_cargs += ['-DHAVE_NEON'] + simd_dependencies += audioconvert_neon +endif + +audioconvert_lib = static_library('audioconvert', + ['fmt-ops.c', + 'channelmix-ops.c', + 'peaks-ops.c', + 'resample-native.c', + 'resample-peaks.c', + 'volume-ops.c' ], + c_args : [ simd_cargs, '-O3'], + link_with : simd_dependencies, + include_directories : [configinc], + dependencies : [ spa_dep ], + install : false + ) +audioconvert_dep = declare_dependency(link_with: audioconvert_lib) + +spa_audioconvert_lib = shared_library('spa-audioconvert', + audioconvert_sources, + c_args : simd_cargs, + dependencies : [ spa_dep, mathlib, audioconvert_dep ], + install : true, + install_dir : spa_plugindir / 'audioconvert') +spa_audioconvert_dep = declare_dependency(link_with: spa_audioconvert_lib) + +test_lib = static_library('test_lib', + ['test-source.c' ], + c_args : ['-O3'], + dependencies : [ spa_dep ], + install : false + ) + +test_apps = [ + 'test-audioadapter', + 'test-audioconvert', + 'test-channelmix', + 'test-fmt-ops', + 'test-peaks', + 'test-resample', + ] + +foreach a : test_apps + test(a, + executable(a, a + '.c', + dependencies : [ spa_dep, dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ], + include_directories : [ configinc ], + link_with : [ test_lib ], + install_rpath : spa_plugindir / 'audioconvert', + c_args : [ simd_cargs ], + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audioconvert'), + env : [ + 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), + ]) + + if installed_tests_enabled + test_conf = configuration_data() + test_conf.set('exec', installed_tests_execdir / 'audioconvert' / a) + configure_file( + input: installed_tests_template, + output: a + '.test', + install_dir: installed_tests_metadir / 'audioconvert', + configuration: test_conf + ) + endif +endforeach + +benchmark_apps = [ + 'benchmark-fmt-ops', + 'benchmark-resample', + ] + +foreach a : benchmark_apps + benchmark(a, + executable(a, a + '.c', + dependencies : [ spa_dep, dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ], + include_directories : [ configinc ], + c_args : [ simd_cargs ], + install_rpath : spa_plugindir / 'audioconvert', + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audioconvert'), + env : [ + 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), + ]) + + if installed_tests_enabled + test_conf = configuration_data() + test_conf.set('exec', installed_tests_execdir / 'audioconvert' / a) + configure_file( + input: installed_tests_template, + output: a + '.test', + install_dir: installed_tests_metadir / 'audioconvert', + configuration: test_conf + ) + endif +endforeach + +if sndfile_dep.found() + sparesample_sources = [ + 'spa-resample.c', + ] + executable('spa-resample', + sparesample_sources, + link_with : [ test_lib ], + dependencies : [ spa_dep, sndfile_dep, mathlib, audioconvert_dep ], + install : true, + ) +endif |