pipewire/spa/plugins/audioconvert/meson.build
Peter Hutterer 0cbd56f0cd spa: declare a dependency for each used library in meson.build
For SPA libraries that we link against elsewhere in the tree, declare a
declare a dependency "foo_dep" for that library that specifies how to
link to it. Then use that dependency in the various targets.

This removes the knowledge of how to link with the library from the
target which can treat it as just another dependency.

In the case of optional libraries (e.g. the journal support lib) we can
then use declare_dependency() to declare an empty dependencies and thus
link them unconditionally in the target.
2021-09-20 07:29:03 +00:00

200 lines
5.5 KiB
Meson

audioconvert_sources = ['audioadapter.c',
'audioconvert.c',
'fmtconvert.c',
'channelmix.c',
'merger.c',
'plugin.c',
'resample.c',
'splitter.c']
simd_cargs = []
simd_dependencies = []
if have_sse
audioconvert_sse = static_library('audioconvert_sse',
['resample-native-sse.c',
'resample-peaks-sse.c',
'volume-ops-sse.c',
'channelmix-ops-sse.c' ],
c_args : [sse_args, '-O3', '-DHAVE_SSE'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
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'],
include_directories : [spa_inc],
install : false
)
simd_cargs += ['-DHAVE_NEON']
simd_dependencies += audioconvert_neon
endif
audioconvert_lib = static_library('audioconvert',
['fmt-ops.c',
'biquad.c',
'crossover.c',
'channelmix-ops.c',
'channelmix-ops-c.c',
'resample-native.c',
'resample-peaks.c',
'fmt-ops-c.c',
'volume-ops.c',
'volume-ops-c.c' ],
c_args : [ simd_cargs, '-O3'],
link_with : simd_dependencies,
include_directories : [configinc, spa_inc],
install : false
)
audioconvert_dep = declare_dependency(link_with: audioconvert_lib)
spa_audioconvert_lib = shared_library('spa-audioconvert',
audioconvert_sources,
c_args : simd_cargs,
include_directories : [spa_inc],
dependencies : [ 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'],
include_directories : [spa_inc],
install : false
)
test_apps = [
'test-audioadapter',
'test-audioconvert',
'test-channelmix',
'test-fmt-ops',
'test-resample',
]
foreach a : test_apps
test(a,
executable(a, a + '.c',
dependencies : [ dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
include_directories : [ configinc, spa_inc ],
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@/spa/plugins/'.format(meson.build_root()),
])
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 : [ dl_lib, pthread_lib, mathlib, audioconvert_dep, spa_audioconvert_dep ],
include_directories : [ configinc, spa_inc ],
c_args : [ simd_cargs ],
install_rpath : spa_plugindir / 'audioconvert',
install : installed_tests_enabled,
install_dir : installed_tests_execdir / 'audioconvert'),
env : [
'SPA_PLUGIN_DIR=@0@/spa/plugins/'.format(meson.build_root()),
])
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,
c_args : [ simd_cargs ],
include_directories : [spa_inc ],
link_with : [ test_lib ],
dependencies : [sndfile_dep, mathlib, audioconvert_dep],
install : true,
)
endif