blob: ab67e4c603d5c53a4ef779c4ed3fccd4225da80e [file] [log] [blame]
# 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
},
],
}