# Copyright (c) 2011 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.

{
  'includes': [
    '../build/common.gypi',
  ],
  'targets': [
    {
      'target_name': 'voice_engine',
      'type': 'static_library',
      'dependencies': [
        '<(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)/modules/modules.gyp:audio_coding_module',
        '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer',
        '<(webrtc_root)/modules/modules.gyp:audio_device',
        '<(webrtc_root)/modules/modules.gyp:audio_processing',
        '<(webrtc_root)/modules/modules.gyp:bitrate_controller',
        '<(webrtc_root)/modules/modules.gyp:media_file',
        '<(webrtc_root)/modules/modules.gyp:paced_sender',
        '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
        '<(webrtc_root)/modules/modules.gyp:webrtc_utility',
        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
        '<(webrtc_root)/webrtc.gyp:rtc_event_log',
        'level_indicator',
      ],
      'export_dependent_settings': [
        '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
      ],
      'sources': [
        'include/voe_audio_processing.h',
        'include/voe_base.h',
        'include/voe_codec.h',
        'include/voe_errors.h',
        'include/voe_external_media.h',
        'include/voe_file.h',
        'include/voe_hardware.h',
        'include/voe_neteq_stats.h',
        'include/voe_network.h',
        'include/voe_rtp_rtcp.h',
        'include/voe_video_sync.h',
        'include/voe_volume_control.h',
        'channel.cc',
        'channel.h',
        'channel_manager.cc',
        'channel_manager.h',
        'channel_proxy.cc',
        'channel_proxy.h',
        'monitor_module.cc',
        'monitor_module.h',
        'network_predictor.cc',
        'network_predictor.h',
        'output_mixer.cc',
        'output_mixer.h',
        'shared_data.cc',
        'shared_data.h',
        'statistics.cc',
        'statistics.h',
        'transmit_mixer.cc',
        'transmit_mixer.h',
        'utility.cc',
        'utility.h',
        'voe_audio_processing_impl.cc',
        'voe_audio_processing_impl.h',
        'voe_base_impl.cc',
        'voe_base_impl.h',
        'voe_codec_impl.cc',
        'voe_codec_impl.h',
        'voe_external_media_impl.cc',
        'voe_external_media_impl.h',
        'voe_file_impl.cc',
        'voe_file_impl.h',
        'voe_hardware_impl.cc',
        'voe_hardware_impl.h',
        'voe_neteq_stats_impl.cc',
        'voe_neteq_stats_impl.h',
        'voe_network_impl.cc',
        'voe_network_impl.h',
        'voe_rtp_rtcp_impl.cc',
        'voe_rtp_rtcp_impl.h',
        'voe_video_sync_impl.cc',
        'voe_video_sync_impl.h',
        'voe_volume_control_impl.cc',
        'voe_volume_control_impl.h',
        'voice_engine_defines.h',
        'voice_engine_impl.cc',
        'voice_engine_impl.h',
      ],
    },
    {
      'target_name': 'level_indicator',
      'type': 'static_library',
      'dependencies': [
        '<(webrtc_root)/base/base.gyp:rtc_base_approved',
        '<(webrtc_root)/common.gyp:webrtc_common',
        '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
      ],
      'sources': [
        'level_indicator.cc',
        'level_indicator.h',
      ]
    }
  ],
  'conditions': [
    ['OS=="win"', {
      'defines': ['WEBRTC_DRIFT_COMPENSATION_SUPPORTED',],
    }],
    ['include_tests==1', {
      'targets': [
        {
          'target_name': 'voice_engine_unittests',
          'type': '<(gtest_target_type)',
          'dependencies': [
            'voice_engine',
            '<(DEPTH)/testing/gmock.gyp:gmock',
            '<(DEPTH)/testing/gtest.gyp:gtest',
            # The rest are to satisfy the unittests' include chain.
            # This would be unnecessary if we used qualified includes.
            '<(webrtc_root)/common_audio/common_audio.gyp:common_audio',
            '<(webrtc_root)/modules/modules.gyp:audio_device',
            '<(webrtc_root)/modules/modules.gyp:audio_processing',
            '<(webrtc_root)/modules/modules.gyp:audio_coding_module',
            '<(webrtc_root)/modules/modules.gyp:audio_conference_mixer',
            '<(webrtc_root)/modules/modules.gyp:media_file',
            '<(webrtc_root)/modules/modules.gyp:rtp_rtcp',
            '<(webrtc_root)/modules/modules.gyp:webrtc_utility',
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
            '<(webrtc_root)/test/test.gyp:test_support_main',
          ],
          'sources': [
            'channel_unittest.cc',
            'network_predictor_unittest.cc',
            'transmit_mixer_unittest.cc',
            'utility_unittest.cc',
            'voe_audio_processing_unittest.cc',
            'voe_base_unittest.cc',
            'voe_codec_unittest.cc',
            'voe_network_unittest.cc',
            'voice_engine_fixture.cc',
            'voice_engine_fixture.h',
          ],
          'conditions': [
            ['OS=="android"', {
              'dependencies': [
                '<(DEPTH)/testing/android/native_test.gyp:native_test_native_code',
              ],
            }],
          ],
        },
        {
          # command line test that should work on linux/mac/win
          'target_name': 'voe_cmd_test',
          'type': 'executable',
          'dependencies': [
            'voice_engine',
            '<(DEPTH)/testing/gtest.gyp:gtest',
            '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
            '<(webrtc_root)/test/test.gyp:channel_transport',
            '<(webrtc_root)/test/test.gyp:test_support',
            '<(webrtc_root)/webrtc.gyp:rtc_event_log',
          ],
          'sources': [
            'test/cmd_test/voe_cmd_test.cc',
          ],
        },
      ], # targets
      'conditions': [
        ['OS!="ios"', {
          'targets': [
            {
              'target_name': 'voe_auto_test',
              'type': 'executable',
              'dependencies': [
                'voice_engine',
                '<(DEPTH)/testing/gmock.gyp:gmock',
                '<(DEPTH)/testing/gtest.gyp:gtest',
                '<(DEPTH)/third_party/gflags/gflags.gyp:gflags',
                '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
                '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers_default',
                '<(webrtc_root)/test/test.gyp:channel_transport',
                '<(webrtc_root)/test/test.gyp:test_common',
                '<(webrtc_root)/test/test.gyp:test_support',
                '<(webrtc_root)/webrtc.gyp:rtc_event_log',
               ],
              'sources': [
                'test/auto_test/automated_mode.cc',
                'test/auto_test/extended/agc_config_test.cc',
                'test/auto_test/extended/ec_metrics_test.cc',
                'test/auto_test/fakes/conference_transport.cc',
                'test/auto_test/fakes/conference_transport.h',
                'test/auto_test/fakes/loudest_filter.cc',
                'test/auto_test/fakes/loudest_filter.h',
                'test/auto_test/fixtures/after_initialization_fixture.cc',
                'test/auto_test/fixtures/after_initialization_fixture.h',
                'test/auto_test/fixtures/after_streaming_fixture.cc',
                'test/auto_test/fixtures/after_streaming_fixture.h',
                'test/auto_test/fixtures/before_initialization_fixture.cc',
                'test/auto_test/fixtures/before_initialization_fixture.h',
                'test/auto_test/fixtures/before_streaming_fixture.cc',
                'test/auto_test/fixtures/before_streaming_fixture.h',
                'test/auto_test/standard/audio_processing_test.cc',
                'test/auto_test/standard/codec_before_streaming_test.cc',
                'test/auto_test/standard/codec_test.cc',
                'test/auto_test/standard/dtmf_test.cc',
                'test/auto_test/standard/external_media_test.cc',
                'test/auto_test/standard/file_before_streaming_test.cc',
                'test/auto_test/standard/file_test.cc',
                'test/auto_test/standard/hardware_before_initializing_test.cc',
                'test/auto_test/standard/hardware_before_streaming_test.cc',
                'test/auto_test/standard/hardware_test.cc',
                'test/auto_test/standard/mixing_test.cc',
                'test/auto_test/standard/neteq_stats_test.cc',
                'test/auto_test/standard/rtp_rtcp_before_streaming_test.cc',
                'test/auto_test/standard/rtp_rtcp_extensions.cc',
                'test/auto_test/standard/rtp_rtcp_test.cc',
                'test/auto_test/standard/voe_base_misc_test.cc',
                'test/auto_test/standard/video_sync_test.cc',
                'test/auto_test/standard/volume_test.cc',
                'test/auto_test/resource_manager.cc',
                'test/auto_test/voe_conference_test.cc',
                'test/auto_test/voe_cpu_test.cc',
                'test/auto_test/voe_cpu_test.h',
                'test/auto_test/voe_output_test.cc',
                'test/auto_test/voe_standard_test.cc',
                'test/auto_test/voe_standard_test.h',
                'test/auto_test/voe_stress_test.cc',
                'test/auto_test/voe_stress_test.h',
                'test/auto_test/voe_test_defines.h',
                'test/auto_test/voe_test_interface.h',
              ],
              'conditions': [
                ['OS=="android"', {
                  # some tests are not supported on android yet, exclude these tests.
                  'sources!': [
                    'test/auto_test/standard/hardware_before_streaming_test.cc',
                  ],
                }],
                ['enable_protobuf==1', {
                  'defines': [
                    'ENABLE_RTC_EVENT_LOG',
                  ],
                }],
              ],
              # Disable warnings to enable Win64 build, issue 1323.
              'msvs_disabled_warnings': [
                4267,  # size_t to int truncation.
              ],
            },
          ],
        }],
        ['OS=="android"', {
          'targets': [
            {
              'target_name': 'voice_engine_unittests_apk_target',
              'type': 'none',
              'dependencies': [
                '<(android_tests_path):voice_engine_unittests_apk',
              ],
            },
          ],
          'conditions': [
            ['test_isolation_mode != "noop"',
              {
                'targets': [
                  {
                    'target_name': 'voice_engine_unittests_apk_run',
                    'type': 'none',
                    'dependencies': [
                      '<(android_tests_path):voice_engine_unittests_apk',
                    ],
                    'includes': [
                      '../build/isolate.gypi',
                    ],
                    'sources': [
                      'voice_engine_unittests_apk.isolate',
                    ],
                  },
                ],
              },
            ],
          ],
        }],
        ['test_isolation_mode != "noop"', {
          'targets': [
            {
              'target_name': 'voice_engine_unittests_run',
              'type': 'none',
              'dependencies': [
                'voice_engine_unittests',
              ],
              'includes': [
                '../build/isolate.gypi',
              ],
              'sources': [
                'voice_engine_unittests.isolate',
              ],
            },
            {
              'target_name': 'voe_auto_test_run',
              'type': 'none',
              'dependencies': [
                'voe_auto_test',
              ],
              'includes': [
                '../build/isolate.gypi',
              ],
              'sources': [
                'voe_auto_test.isolate',
              ],
            },
          ],
        }],
      ],  # conditions
    }], # include_tests==1
  ], # conditions
}
