[pulseaudio-commits] [Git][pulseaudio/webrtc-audio-processing][master] Initial meson build files

Arun Raghavan gitlab at gitlab.freedesktop.org
Sun Oct 28 14:53:48 UTC 2018


Arun Raghavan pushed to branch master at PulseAudio / webrtc-audio-processing


Commits:
eb398328 by Matthew Waters at 2018-10-28T12:25:18Z
Initial meson build files

- - - - -


10 changed files:

- + meson.build
- + meson_options.txt
- + webrtc/base/meson.build
- + webrtc/common_audio/meson.build
- + webrtc/meson.build
- + webrtc/modules/audio_coding/meson.build
- + webrtc/modules/audio_processing/meson.build
- + webrtc/modules/interface/meson.build
- + webrtc/modules/meson.build
- + webrtc/system_wrappers/meson.build


Changes:

=====================================
meson.build
=====================================
@@ -0,0 +1,110 @@
+poject('webrtc-audio-processing', 'c', 'cpp',
+  version : '0.3.1',
+  meson_version : '>= 0.47',
+  default_options : [ 'warning_level=1',
+                      'buildtype=debugoptimized' ])
+
+soversion = 0
+
+cc = meson.get_compiler('c')
+
+host_system = host_machine.system()
+
+platform_cflags = []
+os_cflags = []
+os_deps = []
+have_posix = false
+have_win = false
+
+if ['darwin', 'ios'].contains(host_system)
+  os_cflags = ['-DWEBRTC_MAC', '-DWEBRTC_THREAD_RR', '-DWEBRTC_CLOCK_TYPE_REALTIME']
+  if host_system == 'ios'
+    os_cflags += ['-DWEBRTC_IOS']
+  endif
+  platform_cflags += ['-D WEBRTC_POSIX']
+  have_posix = true
+elif host_system == 'android'
+  os_cflags += ['-DWEBRTC_ANDROID', '-DWEBRTC_LINUX', '-DWEBRTC_THREAD_RR', '-DWEBRTC_CLOCK_TYPE_REALTIME']
+  os_deps += [cc.find_library('log')]
+  os_deps += [dependency('gnustl', required : get_option('gnustl'))]
+  platform_cflags += ['-DWEBRTC_POSIX']
+  have_posix = true
+elif host_system == 'linux'
+  os_cflags += ['-DWEBRTC_LINUX', '-DWEBRTC_THREAD_RR']
+  os_deps += [cc.find_library('rt', required : false)]
+  os_deps += [dependency('threads')]
+  platform_cflags += ['-DWEBRTC_POSIX']
+  have_posix = true
+elif host_system == 'windows'
+  platform_cflags += ['-DWEBRTC_WIN', '-D_WIN32', '-U__STRICT_ANSI__']
+  os_deps += [cc.find_library('winmm')]
+  have_win = true
+endif
+
+arch_cflags = []
+have_arm = false
+have_armv7 = false
+have_neon = false
+have_x86 = false
+if ['arm', 'armv7', 'aarch64'].contains(host_machine.cpu_family())
+  have_arm = true
+  arch_cflags = ['-DWEBRTC_ARCH_ARM']
+  if cc.compiles('''#ifndef __ARM_ARCH_7A__
+#error no armv7 arch
+#endif''')
+    have_armv7 = true
+    arch_cflags = ['-DWEBRTC_ARCH_ARM_V7']
+  endif
+  if cc.compiles('''#ifndef __aarch64__
+#error no aarch64 arch
+#endif''')
+    have_neon = true
+    arch_cflags = ['-DWEBRTC_ARCH_ARM64', '-DWEBRTC_HAS_NEON']
+  endif
+endif
+if ['x86', 'x86_64'].contains(host_machine.cpu_family())
+  have_x86 = true
+endif
+
+neon_opt = get_option('neon')
+if neon_opt != 'no'
+  if neon_opt != 'runtime'
+    if cc.compiles('#include <arm_neon.h>', args : '-mfpu=neon')
+      arch_cflags += ['-mfpu=neon', '-DWEBRTC_HAS_NEON']
+      have_neon = true
+    endif
+  else
+    neon_opt += ['-DWEBRTC_DETECT_NEON', '-mfpu=neon']
+    have_neon = true
+  endif
+endif
+
+noise_cflags = []
+if get_option('ns_mode') == 'float'
+  noise_cflags += ['-DWEBRTC_NS_FLOAT=1']
+else
+  noise_cflags += ['-DWEBRTC_NS_FIXED=1']
+endif
+
+common_cflags = ['-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD', '-DNDEBUG'] + platform_cflags + os_cflags + arch_cflags + noise_cflags
+common_cxxflags = ['-std=c++11'] + common_cflags
+common_deps = os_deps
+webrtc_inc = include_directories('.')
+
+subdir('webrtc')
+
+pkgconfig = import('pkgconfig')
+
+pkgconfig.generate(
+    name: 'webrtc-audio-processing',
+    description: 'WebRTC Audio Processing library',
+    version: meson.project_version(),
+    filebase: 'webrtc-audio-processing',
+    subdirs: 'webrtc_audio_processing',
+    extra_cflags: [
+      '-DWEBRTC_AUDIO_PROCESSING_ONLY_BUILD',
+    ] + platform_cflags,
+    # XXX: passing the libwebrtc_audio_processing object result in adding not-installed libraries to Libs.private
+    libraries: '-lwebrtc_audio_processing',
+    libraries_private: common_deps,
+)


=====================================
meson_options.txt
=====================================
@@ -0,0 +1,9 @@
+option('ns_mode', type: 'combo',
+       choices : ['float', 'fixed'],
+       description: 'Noise suppresion mode to use.')
+option('gnustl', type: 'feature',
+       value: 'auto',
+       description: 'Use gnustl for a c++ library implementation (only used on Android)')
+option('neon', type: 'combo',
+       choices: ['no', 'yes', 'auto', 'runtime'],
+       description: '')


=====================================
webrtc/base/meson.build
=====================================
@@ -0,0 +1,34 @@
+base_sources = [
+  'criticalsection.cc',
+  'checks.cc',
+  'event.cc',
+  'platform_thread.cc',
+  'platform_file.cc',
+  'stringutils.cc',
+  'thread_checker_impl.cc',
+]
+
+base_headers = [
+  'arraysize.h',
+  'checks.h',
+  'constructormagic.h',
+  'basictypes.h',
+  'maybe.h',
+  'platform_file.h',
+]
+
+install_headers(base_headers,
+    subdir: 'webrtc_audio_processing/webrtc/base'
+)
+
+libbase = static_library('libbase',
+    base_sources,
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    cpp_args : common_cxxflags
+)
+
+base_dep = declare_dependency(
+    link_with: libbase
+)
+


=====================================
webrtc/common_audio/meson.build
=====================================
@@ -0,0 +1,111 @@
+common_audio_sources = [
+  'resampler/push_resampler.cc',
+  'resampler/push_sinc_resampler.cc',
+  'resampler/resampler.cc',
+  'resampler/sinc_resampler.cc',
+  'resampler/sinusoidal_linear_chirp_source.cc',
+  'signal_processing/auto_corr_to_refl_coef.c',
+  'signal_processing/auto_correlation.c',
+  'signal_processing/complex_fft.c',
+  'signal_processing/copy_set_operations.c',
+  'signal_processing/cross_correlation.c',
+  'signal_processing/division_operations.c',
+  'signal_processing/dot_product_with_scale.c',
+  'signal_processing/downsample_fast.c',
+  'signal_processing/energy.c',
+  'signal_processing/filter_ar.c',
+  'signal_processing/filter_ma_fast_q12.c',
+  'signal_processing/get_hanning_window.c',
+  'signal_processing/get_scaling_square.c',
+  'signal_processing/ilbc_specific_functions.c',
+  'signal_processing/levinson_durbin.c',
+  'signal_processing/lpc_to_refl_coef.c',
+  'signal_processing/min_max_operations.c',
+  'signal_processing/randomization_functions.c',
+  'signal_processing/real_fft.c',
+  'signal_processing/refl_coef_to_lpc.c',
+  'signal_processing/resample.c',
+  'signal_processing/resample_48khz.c',
+  'signal_processing/resample_by_2.c',
+  'signal_processing/resample_by_2_internal.c',
+  'signal_processing/resample_fractional.c',
+  'signal_processing/spl_init.c',
+  'signal_processing/spl_sqrt.c',
+  'signal_processing/splitting_filter.c',
+  'signal_processing/sqrt_of_one_minus_x_squared.c',
+  'signal_processing/vector_scaling_operations.c',
+  'vad/vad.cc',
+  'vad/vad_core.c',
+  'vad/vad_filterbank.c',
+  'vad/vad_gmm.c',
+  'vad/vad_sp.c',
+  'vad/webrtc_vad.c',
+  'audio_converter.cc',
+  'audio_ring_buffer.cc',
+  'audio_util.cc',
+  'blocker.cc',
+  'channel_buffer.cc',
+  'fft4g.c',
+  'fir_filter.cc',
+  'lapped_transform.cc',
+  'real_fourier.cc',
+  'real_fourier_ooura.cc',
+  'ring_buffer.c',
+  'sparse_fir_filter.cc',
+  'wav_file.cc',
+  'wav_header.cc',
+  'window_generator.cc',
+]
+
+arch_libs = []
+if have_x86
+  arch_libs += [static_library('common_audio_sse2',
+    ['resampler/sinc_resampler_sse.cc', 'fir_filter_sse.cc'],
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    c_args: common_cflags + ['-msse2'],
+    cpp_args: common_cxxflags + ['-msse2'])]
+endif
+
+if have_arm
+  common_audio_sources += [
+    'signal_processing/complex_bit_reverse_arm.S',
+    'signal_processing/spl_sqrt_floor_arm.S',
+  ]
+endif
+
+if have_armv7
+  common_audio_sources += [
+    'signal_processing/filter_ar_fast_q12_armv7.S',
+  ]
+endif
+
+if have_neon
+  common_audio_sources += [
+    'resampler/sinc_resampler_neon.cc',
+    'signal_processing/cross_correlation_neon.c',
+    'signal_processing/downsample_fast_neon.c',
+    'signal_processing/min_max_operations_neon.c',
+    'fir_filter_neon.cc',
+  ]
+endif
+
+if not have_arm
+  common_audio_sources += [
+    'signal_processing/complex_bit_reverse.c',
+    'signal_processing/filter_ar_fast_q12.c',
+    'signal_processing/spl_sqrt_floor.c',
+  ]
+endif
+
+libcommon_audio = static_library('common_audio',
+    common_audio_sources,
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    c_args: common_cflags,
+    cpp_args: common_cxxflags
+)
+
+common_audio_dep = declare_dependency(
+  link_with: [libcommon_audio] + arch_libs,
+)


=====================================
webrtc/meson.build
=====================================
@@ -0,0 +1,31 @@
+webrtc_sources = [
+  'common_types.cc'
+]
+
+webrtc_headers = [
+  'common.h',
+  'common_types.h',
+  'typedefs.h',
+]
+
+install_headers(webrtc_headers,
+    subdir: 'webrtc_audio_processing/webrtc'
+)
+
+libwebrtc = static_library('webrtc',
+    webrtc_sources,
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    c_args: common_cflags,
+    cpp_args: common_cxxflags
+)
+
+webrtc_dep = declare_dependency(
+    link_with: libwebrtc
+)
+
+subdir('base')
+subdir('common_audio')
+subdir('system_wrappers')
+
+subdir('modules')


=====================================
webrtc/modules/audio_coding/meson.build
=====================================
@@ -0,0 +1,33 @@
+audio_coding_sources = [
+  'codecs/isac/main/source/arith_routines.c',
+  'codecs/isac/main/source/arith_routines_hist.c',
+  'codecs/isac/main/source/arith_routines_logist.c',
+  'codecs/isac/main/source/encode_lpc_swb.c',
+  'codecs/isac/main/source/entropy_coding.c',
+  'codecs/isac/main/source/filter_functions.c',
+  'codecs/isac/main/source/filterbanks.c',
+  'codecs/isac/main/source/filterbank_tables.c',
+  'codecs/isac/main/source/intialize.c',
+  'codecs/isac/main/source/lpc_analysis.c',
+  'codecs/isac/main/source/lpc_gain_swb_tables.c',
+  'codecs/isac/main/source/lpc_shape_swb12_tables.c',
+  'codecs/isac/main/source/lpc_shape_swb16_tables.c',
+  'codecs/isac/main/source/lpc_tables.c',
+  'codecs/isac/main/source/pitch_estimator.c',
+  'codecs/isac/main/source/pitch_filter.c',
+  'codecs/isac/main/source/pitch_gain_tables.c',
+  'codecs/isac/main/source/pitch_lag_tables.c',
+  'codecs/isac/main/source/spectrum_ar_model_tables.c',
+]
+
+libaudio_coding = static_library('audio_coding',
+    audio_coding_sources,
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    c_args: common_cflags,
+    cpp_args: common_cxxflags
+)
+
+audio_coding_dep = declare_dependency(
+    link_with: libaudio_coding
+)


=====================================
webrtc/modules/audio_processing/meson.build
=====================================
@@ -0,0 +1,125 @@
+webrtc_audio_processing_sources = [
+  'aec/aec_core.c',
+  'aec/aec_rdft.c',
+  'aec/aec_resampler.c',
+  'aec/echo_cancellation.c',
+  'aecm/echo_control_mobile.c',
+  'aecm/aecm_core.c',
+  'aecm/aecm_core_c.c',
+  'agc/legacy/analog_agc.c',
+  'agc/legacy/digital_agc.c',
+  'agc/agc.cc',
+  'agc/agc_manager_direct.cc',
+  'agc/histogram.cc',
+  'agc/utility.cc',
+  'beamformer/array_util.cc',
+  'beamformer/covariance_matrix_generator.cc',
+  'beamformer/nonlinear_beamformer.cc',
+  'intelligibility/intelligibility_enhancer.cc',
+  'intelligibility/intelligibility_utils.cc',
+  'logging/aec_logging_file_handling.cc',
+  'transient/click_annotate.cc',
+  'transient/file_utils.cc',
+  'transient/moving_moments.cc',
+  'transient/transient_detector.cc',
+  'transient/transient_suppressor.cc',
+  'transient/wpd_node.cc',
+  'transient/wpd_tree.cc',
+  'utility/delay_estimator.c',
+  'utility/delay_estimator_wrapper.c',
+  'vad/gmm.cc',
+  'vad/pitch_based_vad.cc',
+  'vad/pitch_internal.cc',
+  'vad/pole_zero_filter.cc',
+  'vad/standalone_vad.cc',
+  'vad/vad_audio_proc.cc',
+  'vad/vad_circular_buffer.cc',
+  'vad/voice_activity_detector.cc',
+  'audio_buffer.cc',
+  'audio_processing_impl.cc',
+  'audio_processing_impl.h',
+  'echo_cancellation_impl.cc',
+  'echo_control_mobile_impl.cc',
+  'gain_control_impl.cc',
+  'high_pass_filter_impl.cc',
+  'level_estimator_impl.cc',
+  'noise_suppression_impl.cc',
+  'rms_level.cc',
+  'splitting_filter.cc',
+  'processing_component.cc',
+  'three_band_filter_bank.cc',
+  'typing_detection.cc',
+  'voice_detection_impl.cc',
+]
+
+webrtc_audio_processing_beamformer_headers = [
+  'beamformer/array_util.h',
+]
+
+webrtc_audio_processing_include_headers = [
+  'include/audio_processing.h',
+]
+
+if get_option('ns_mode') == 'float'
+  webrtc_audio_processing_sources += [
+    'ns/noise_suppression.c',
+    'ns/ns_core.c',
+  ]
+else
+  webrtc_audio_processing_sources += [
+    'ns/noise_suppression_x.c',
+    'ns/nsx_core.c',
+    'ns/nsx_core_c.c',
+  ]
+  if have_neon
+    webrtc_audio_processing_sources += [
+      'ns/nsx_core_neon.c',
+    ]
+  endif
+endif
+
+extra_libs = []
+if have_x86
+  extra_libs += [
+    static_library('webrtc_audio_processing_privatearch',
+      ['aec/aec_core_sse2.c', 'aec/aec_rdft_sse2.c'],
+      dependencies: common_deps,
+      include_directories: webrtc_inc,
+      c_args: common_cflags + ['-msse2'],
+      cpp_args: common_cxxflags + ['-msse2']
+    )
+  ]
+endif
+
+if have_neon
+  webrtc_audio_processing_sources += [
+    'aec/aec_core_neon.c',
+    'aec/aec_rdft_neon.c',
+    'aecm/aecm_core_neon.c',
+  ]
+endif
+
+install_headers(webrtc_audio_processing_beamformer_headers,
+    subdir: 'webrtc_audio_processing/webrtc/modules/audio_processing/beamformer'
+)
+
+install_headers(webrtc_audio_processing_include_headers,
+    subdir: 'webrtc_audio_processing/webrtc/modules/audio_processing/include'
+)
+
+libwebrtc_audio_processing = library('webrtc_audio_processing',
+    webrtc_audio_processing_sources,
+    dependencies: [base_dep, audio_coding_dep, system_wrappers_dep, common_audio_dep, audio_coding_dep, webrtc_dep] + common_deps,
+    link_with: extra_libs,
+    include_directories: webrtc_inc,
+    c_args: common_cflags,
+    cpp_args: common_cxxflags,
+    soversion: soversion,
+    install: true
+)
+
+webrtc_audio_processing_dep = declare_dependency(
+    link_with: libwebrtc_audio_processing,
+    include_directories: webrtc_inc,
+    version: meson.project_version()
+)


=====================================
webrtc/modules/interface/meson.build
=====================================
@@ -0,0 +1,7 @@
+interface_headers = [
+  'module_common_types.h',
+]
+
+install_headers(interface_headers,
+    subdir: 'webrtc_audio_processing/webrtc/modules/interface'
+)


=====================================
webrtc/modules/meson.build
=====================================
@@ -0,0 +1,3 @@
+subdir('audio_coding')
+subdir('audio_processing')
+subdir('interface')


=====================================
webrtc/system_wrappers/meson.build
=====================================
@@ -0,0 +1,57 @@
+system_wrappers_sources = [
+  'source/aligned_malloc.cc',
+  'source/cpu_features.cc',
+  'source/event.cc',
+  'source/file_impl.cc',
+  'source/critical_section.cc',
+  'source/logging.cc',
+  'source/metrics_default.cc',
+  'source/rw_lock.cc',
+  'source/sleep.cc',
+  'source/thread.cc',
+  'source/trace_impl.cc',
+]
+
+if have_posix
+  system_wrappers_sources += [
+    'source/critical_section_posix.cc',
+    'source/event_timer_posix.cc',
+    'source/rw_lock_posix.cc',
+    'source/thread_posix.cc',
+    'source/trace_posix.cc',
+  ]
+endif
+
+if have_win
+  system_wrappers_sources += [
+    'source/critical_section_win.cc',
+    'source/condition_variable.cc',
+    'source/condition_variable_event_win.cc',
+    'source/condition_variable_native_win.cc',
+    'source/event_timer_win.cc',
+    'source/rw_lock_win.cc',
+    'source/rw_lock_generic.cc',
+    'source/thread_win.cc',
+    'source/trace_win.cc',
+  ]
+endif
+
+system_headers = [
+  'include/trace.h',
+]
+
+install_headers(system_headers,
+    subdir: 'webrtc_audio_processing/webrtc/system_wrappers/include'
+)
+
+libsystem_wrappers = static_library('system_wrappers',
+    system_wrappers_sources,
+    dependencies: common_deps,
+    include_directories: webrtc_inc,
+    c_args : common_cflags,
+    cpp_args : common_cxxflags
+)
+
+system_wrappers_dep = declare_dependency(
+    link_with: libsystem_wrappers
+)



View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/commit/eb398328abafc8287f1d9b8e1df7a64d6fc364a0

-- 
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/webrtc-audio-processing/commit/eb398328abafc8287f1d9b8e1df7a64d6fc364a0
You're receiving this email because of your account on gitlab.freedesktop.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20181028/829be0b2/attachment-0001.html>


More information about the pulseaudio-commits mailing list