# Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. # # Use of this source code is governed by a BSD-style license # that can be found in the LICENSE file in the root of the source # tree. An additional intellectual property rights grant can be found # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. { 'targets': [ { 'target_name': 'audio_device', 'type': 'static_library', 'dependencies': [ 'webrtc_utility', '<(webrtc_root)/base/base.gyp:rtc_base_approved', '<(webrtc_root)/common.gyp:webrtc_common', '<(webrtc_root)/common_audio/common_audio.gyp:common_audio', '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers', ], 'include_dirs': [ '.', '../include', 'include', 'dummy', # Contains dummy audio device implementations. ], 'direct_dependent_settings': { 'include_dirs': [ '../include', 'include', ], }, # TODO(xians): Rename files to e.g. *_linux.{ext}, remove sources in conditions section 'sources': [ 'include/audio_device.h', 'include/audio_device_defines.h', 'audio_device_buffer.cc', 'audio_device_buffer.h', 'audio_device_generic.cc', 'audio_device_generic.h', 'audio_device_config.h', 'dummy/audio_device_dummy.cc', 'dummy/audio_device_dummy.h', 'dummy/file_audio_device.cc', 'dummy/file_audio_device.h', 'fine_audio_buffer.cc', 'fine_audio_buffer.h', ], 'conditions': [ ['OS=="linux"', { 'include_dirs': [ 'linux', ], }], # OS==linux ['OS=="ios"', { 'include_dirs': [ 'ios', ], }], # OS==ios ['OS=="mac"', { 'include_dirs': [ 'mac', ], }], # OS==mac ['OS=="win"', { 'include_dirs': [ 'win', ], }], ['OS=="android"', { 'include_dirs': [ 'android', ], }], # OS==android ['include_internal_audio_device==0', { 'defines': [ 'WEBRTC_DUMMY_AUDIO_BUILD', ], }], ['build_with_chromium==0', { 'sources': [ # Don't link these into Chrome since they contain static data. 'dummy/file_audio_device_factory.cc', 'dummy/file_audio_device_factory.h', ], }], ['include_internal_audio_device==1', { 'sources': [ 'audio_device_impl.cc', 'audio_device_impl.h', ], 'conditions': [ ['use_dummy_audio_file_devices==1', { 'defines': [ 'WEBRTC_DUMMY_FILE_DEVICES', ], }, { # use_dummy_audio_file_devices==0, so use a platform device. 'conditions': [ ['OS=="android"', { 'sources': [ 'android/audio_device_template.h', 'android/audio_manager.cc', 'android/audio_manager.h', 'android/audio_record_jni.cc', 'android/audio_record_jni.h', 'android/audio_track_jni.cc', 'android/audio_track_jni.h', 'android/build_info.cc', 'android/build_info.h', 'android/opensles_common.cc', 'android/opensles_common.h', 'android/opensles_player.cc', 'android/opensles_player.h', 'android/opensles_recorder.cc', 'android/opensles_recorder.h', ], 'link_settings': { 'libraries': [ '-llog', '-lOpenSLES', ], }, }], ['OS=="linux"', { 'sources': [ 'linux/alsasymboltable_linux.cc', 'linux/alsasymboltable_linux.h', 'linux/audio_device_alsa_linux.cc', 'linux/audio_device_alsa_linux.h', 'linux/audio_mixer_manager_alsa_linux.cc', 'linux/audio_mixer_manager_alsa_linux.h', 'linux/latebindingsymboltable_linux.cc', 'linux/latebindingsymboltable_linux.h', ], 'defines': [ 'LINUX_ALSA', ], 'link_settings': { 'libraries': [ '-ldl','-lX11', ], }, 'conditions': [ ['include_pulse_audio==1', { 'defines': [ 'LINUX_PULSE', ], 'sources': [ 'linux/audio_device_pulse_linux.cc', 'linux/audio_device_pulse_linux.h', 'linux/audio_mixer_manager_pulse_linux.cc', 'linux/audio_mixer_manager_pulse_linux.h', 'linux/pulseaudiosymboltable_linux.cc', 'linux/pulseaudiosymboltable_linux.h', ], }], ], }], ['OS=="mac"', { 'sources': [ 'mac/audio_device_mac.cc', 'mac/audio_device_mac.h', 'mac/audio_mixer_manager_mac.cc', 'mac/audio_mixer_manager_mac.h', 'mac/portaudio/pa_memorybarrier.h', 'mac/portaudio/pa_ringbuffer.c', 'mac/portaudio/pa_ringbuffer.h', ], 'link_settings': { 'libraries': [ '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework', '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework', ], }, }], ['OS=="ios"', { 'dependencies': [ '<(webrtc_root)/base/base.gyp:rtc_base', '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', ], 'export_dependent_settings': [ '<(webrtc_root)/sdk/sdk.gyp:rtc_sdk_common_objc', ], 'sources': [ 'ios/audio_device_ios.h', 'ios/audio_device_ios.mm', 'ios/audio_device_not_implemented_ios.mm', 'ios/audio_session_observer.h', 'ios/objc/RTCAudioSession+Configuration.mm', 'ios/objc/RTCAudioSession+Private.h', 'ios/objc/RTCAudioSession.h', 'ios/objc/RTCAudioSession.mm', 'ios/objc/RTCAudioSessionConfiguration.h', 'ios/objc/RTCAudioSessionConfiguration.m', 'ios/objc/RTCAudioSessionDelegateAdapter.h', 'ios/objc/RTCAudioSessionDelegateAdapter.mm', 'ios/voice_processing_audio_unit.h', 'ios/voice_processing_audio_unit.mm', ], 'xcode_settings': { 'CLANG_ENABLE_OBJC_ARC': 'YES', }, 'link_settings': { 'xcode_settings': { 'OTHER_LDFLAGS': [ '-framework AudioToolbox', '-framework AVFoundation', '-framework Foundation', '-framework UIKit', ], }, }, }], ['OS=="win"', { 'sources': [ 'win/audio_device_core_win.cc', 'win/audio_device_core_win.h', 'win/audio_device_wave_win.cc', 'win/audio_device_wave_win.h', 'win/audio_mixer_manager_win.cc', 'win/audio_mixer_manager_win.h', ], 'link_settings': { 'libraries': [ # Required for the built-in WASAPI AEC. '-ldmoguids.lib', '-lwmcodecdspuuid.lib', '-lamstrmid.lib', '-lmsdmo.lib', ], }, }], ['OS=="win" and clang==1', { 'msvs_settings': { 'VCCLCompilerTool': { 'AdditionalOptions': [ # Disable warnings failing when compiling with Clang on Windows. # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366 '-Wno-bool-conversion', '-Wno-delete-non-virtual-dtor', '-Wno-logical-op-parentheses', '-Wno-microsoft-extra-qualification', '-Wno-microsoft-goto', '-Wno-missing-braces', '-Wno-parentheses-equality', '-Wno-reorder', '-Wno-shift-overflow', '-Wno-tautological-compare', '-Wno-unused-private-field', ], }, }, }], ], # conditions (for non-dummy devices) }], # use_dummy_audio_file_devices check ], # conditions }], # include_internal_audio_device==1 ], # conditions }, ], }