Home | History | Annotate | Download | only in audio_device
      1 # Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
      2 #
      3 # Use of this source code is governed by a BSD-style license
      4 # that can be found in the LICENSE file in the root of the source
      5 # tree. An additional intellectual property rights grant can be found
      6 # in the file PATENTS.  All contributing project authors may
      7 # be found in the AUTHORS file in the root of the source tree.
      8 
      9 {
     10   'targets': [
     11     {
     12       'target_name': 'audio_device',
     13       'type': 'static_library',
     14       'dependencies': [
     15         'webrtc_utility',
     16         '<(webrtc_root)/base/base.gyp:rtc_base_approved',
     17         '<(webrtc_root)/common.gyp:webrtc_common',
     18         '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
     19         '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
     20       ],
     21       'include_dirs': [
     22         '.',
     23         '../include',
     24         'include',
     25         'dummy',  # Contains dummy audio device implementations.
     26       ],
     27       'direct_dependent_settings': {
     28         'include_dirs': [
     29           '../include',
     30           'include',
     31         ],
     32       },
     33       # TODO(xians): Rename files to e.g. *_linux.{ext}, remove sources in conditions section
     34       'sources': [
     35         'include/audio_device.h',
     36         'include/audio_device_defines.h',
     37         'audio_device_buffer.cc',
     38         'audio_device_buffer.h',
     39         'audio_device_generic.cc',
     40         'audio_device_generic.h',
     41         'audio_device_config.h',
     42         'dummy/audio_device_dummy.cc',
     43         'dummy/audio_device_dummy.h',
     44         'dummy/file_audio_device.cc',
     45         'dummy/file_audio_device.h',
     46         'fine_audio_buffer.cc',
     47         'fine_audio_buffer.h',
     48       ],
     49       'conditions': [
     50         ['OS=="linux"', {
     51           'include_dirs': [
     52             'linux',
     53           ],
     54         }], # OS==linux
     55         ['OS=="ios"', {
     56           'include_dirs': [
     57             'ios',
     58           ],
     59         }], # OS==ios
     60         ['OS=="mac"', {
     61           'include_dirs': [
     62             'mac',
     63           ],
     64         }], # OS==mac
     65         ['OS=="win"', {
     66           'include_dirs': [
     67             'win',
     68           ],
     69         }],
     70         ['OS=="android"', {
     71           'include_dirs': [
     72             'android',
     73           ],
     74         }], # OS==android
     75         ['include_internal_audio_device==0', {
     76           'defines': [
     77             'WEBRTC_DUMMY_AUDIO_BUILD',
     78           ],
     79         }],
     80         ['build_with_chromium==0', {
     81           'sources': [
     82             # Don't link these into Chrome since they contain static data.
     83             'dummy/file_audio_device_factory.cc',
     84             'dummy/file_audio_device_factory.h',
     85           ],
     86         }],
     87         ['include_internal_audio_device==1', {
     88           'sources': [
     89             'audio_device_impl.cc',
     90             'audio_device_impl.h',
     91           ],
     92           'conditions': [
     93             ['OS=="android"', {
     94               'sources': [
     95                 'android/audio_device_template.h',
     96                 'android/audio_manager.cc',
     97                 'android/audio_manager.h',
     98                 'android/audio_record_jni.cc',
     99                 'android/audio_record_jni.h',
    100                 'android/audio_track_jni.cc',
    101                 'android/audio_track_jni.h',
    102                 'android/build_info.cc',
    103                 'android/build_info.h',
    104                 'android/opensles_common.cc',
    105                 'android/opensles_common.h',
    106                 'android/opensles_player.cc',
    107                 'android/opensles_player.h',
    108               ],
    109               'link_settings': {
    110                 'libraries': [
    111                   '-llog',
    112                   '-lOpenSLES',
    113                 ],
    114               },
    115             }],
    116             ['OS=="linux"', {
    117               'sources': [
    118                 'linux/alsasymboltable_linux.cc',
    119                 'linux/alsasymboltable_linux.h',
    120                 'linux/audio_device_alsa_linux.cc',
    121                 'linux/audio_device_alsa_linux.h',
    122                 'linux/audio_mixer_manager_alsa_linux.cc',
    123                 'linux/audio_mixer_manager_alsa_linux.h',
    124                 'linux/latebindingsymboltable_linux.cc',
    125                 'linux/latebindingsymboltable_linux.h',
    126               ],
    127               'defines': [
    128                 'LINUX_ALSA',
    129               ],
    130               'link_settings': {
    131                 'libraries': [
    132                   '-ldl','-lX11',
    133                 ],
    134               },
    135               'conditions': [
    136                 ['include_pulse_audio==1', {
    137                   'defines': [
    138                     'LINUX_PULSE',
    139                   ],
    140                   'sources': [
    141                     'linux/audio_device_pulse_linux.cc',
    142                     'linux/audio_device_pulse_linux.h',
    143                     'linux/audio_mixer_manager_pulse_linux.cc',
    144                     'linux/audio_mixer_manager_pulse_linux.h',
    145                     'linux/pulseaudiosymboltable_linux.cc',
    146                     'linux/pulseaudiosymboltable_linux.h',
    147                   ],
    148                 }],
    149               ],
    150             }],
    151             ['OS=="mac"', {
    152               'sources': [
    153                 'mac/audio_device_mac.cc',
    154                 'mac/audio_device_mac.h',
    155                 'mac/audio_mixer_manager_mac.cc',
    156                 'mac/audio_mixer_manager_mac.h',
    157                 'mac/portaudio/pa_memorybarrier.h',
    158                 'mac/portaudio/pa_ringbuffer.c',
    159                 'mac/portaudio/pa_ringbuffer.h',
    160               ],
    161               'link_settings': {
    162                 'libraries': [
    163                   '$(SDKROOT)/System/Library/Frameworks/AudioToolbox.framework',
    164                   '$(SDKROOT)/System/Library/Frameworks/CoreAudio.framework',
    165                 ],
    166               },
    167             }],
    168             ['OS=="ios"', {
    169               'sources': [
    170                 'ios/audio_device_ios.h',
    171                 'ios/audio_device_ios.mm',
    172                 'ios/audio_device_not_implemented_ios.mm',
    173               ],
    174               'xcode_settings': {
    175                 'CLANG_ENABLE_OBJC_ARC': 'YES',
    176               },
    177               'link_settings': {
    178                 'xcode_settings': {
    179                   'OTHER_LDFLAGS': [
    180                     '-framework AudioToolbox',
    181                     '-framework AVFoundation',
    182                     '-framework Foundation',
    183                     '-framework UIKit',
    184                   ],
    185                 },
    186               },
    187             }],
    188             ['OS=="win"', {
    189               'sources': [
    190                 'win/audio_device_core_win.cc',
    191                 'win/audio_device_core_win.h',
    192                 'win/audio_device_wave_win.cc',
    193                 'win/audio_device_wave_win.h',
    194                 'win/audio_mixer_manager_win.cc',
    195                 'win/audio_mixer_manager_win.h',
    196               ],
    197               'link_settings': {
    198                 'libraries': [
    199                   # Required for the built-in WASAPI AEC.
    200                   '-ldmoguids.lib',
    201                   '-lwmcodecdspuuid.lib',
    202                   '-lamstrmid.lib',
    203                   '-lmsdmo.lib',
    204                 ],
    205               },
    206             }],
    207             ['OS=="win" and clang==1', {
    208               'msvs_settings': {
    209                 'VCCLCompilerTool': {
    210                   'AdditionalOptions': [
    211                     # Disable warnings failing when compiling with Clang on Windows.
    212                     # https://bugs.chromium.org/p/webrtc/issues/detail?id=5366
    213                     '-Wno-bool-conversion',
    214                     '-Wno-delete-non-virtual-dtor',
    215                     '-Wno-logical-op-parentheses',
    216                     '-Wno-microsoft-extra-qualification',
    217                     '-Wno-microsoft-goto',
    218                     '-Wno-missing-braces',
    219                     '-Wno-parentheses-equality',
    220                     '-Wno-reorder',
    221                     '-Wno-shift-overflow',
    222                     '-Wno-tautological-compare',
    223                     '-Wno-unused-private-field',
    224                   ],
    225                 },
    226               },
    227             }],
    228           ], # conditions
    229         }], # include_internal_audio_device==1
    230       ], # conditions
    231     },
    232   ],
    233   'conditions': [
    234     # Does not compile on iOS: webrtc:4755.
    235     ['include_tests==1 and OS!="ios"', {
    236       'targets': [
    237         {
    238           'target_name': 'audio_device_tests',
    239           'type': 'executable',
    240           'dependencies': [
    241             'audio_device',
    242             'webrtc_utility',
    243             '<(webrtc_root)/test/test.gyp:test_support_main',
    244             '<(DEPTH)/testing/gtest.gyp:gtest',
    245             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
    246           ],
    247           'sources': [
    248             'test/audio_device_test_api.cc',
    249             'test/audio_device_test_defines.h',
    250           ],
    251         },
    252         {
    253           'target_name': 'audio_device_test_func',
    254           'type': 'executable',
    255           'dependencies': [
    256             'audio_device',
    257             'webrtc_utility',
    258             '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
    259             '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
    260             '<(webrtc_root)/test/test.gyp:test_support',
    261             '<(DEPTH)/testing/gtest.gyp:gtest',
    262           ],
    263           'sources': [
    264             'test/audio_device_test_func.cc',
    265             'test/audio_device_test_defines.h',
    266             'test/func_test_manager.cc',
    267             'test/func_test_manager.h',
    268           ],
    269         },
    270       ], # targets
    271     }], # include_tests==1 and OS!=ios
    272   ],
    273 }
    274 
    275