# 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',
          ],
          'dependencies': [
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
          ],
          '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',
                  ],
                  '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)/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
    },
  ],
  'conditions': [
    # Does not compile on iOS: webrtc:4755.
    ['include_tests==1 and OS!="ios"', {
      'targets': [
        {
          'target_name': 'audio_device_tests',
          'type': 'executable',
          'dependencies': [
            'audio_device',
            'webrtc_utility',
            '<(webrtc_root)/test/test.gyp:test_support_main',
            '<(DEPTH)/testing/gtest.gyp:gtest',
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
          ],
          'sources': [
            'test/audio_device_test_api.cc',
            'test/audio_device_test_defines.h',
          ],
        },
      ], # targets
    }], # include_tests==1 and OS!=ios
  ],
}

