# 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',
      ],
      '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',
        'level_indicator.cc',
        'level_indicator.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',
      ],
    },
  ],
  '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
}
