# Copyright (c) 2016 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': 'rtc_media',
      'type': 'static_library',
      'dependencies': [
        '<(webrtc_root)/base/base.gyp:rtc_base_approved',
        '<(webrtc_root)/common.gyp:webrtc_common',
        '<(webrtc_root)/webrtc.gyp:webrtc',
        '<(webrtc_root)/voice_engine/voice_engine.gyp:voice_engine',
        '<(webrtc_root)/system_wrappers/system_wrappers.gyp:system_wrappers',
        '<(webrtc_root)/p2p/p2p.gyp:rtc_p2p',
      ],
      'direct_dependent_settings': {
        'include_dirs': [
          '<(libyuv_dir)/include',
        ],
      },
      'sources': [
        'base/audiosource.h',
        'base/codec.cc',
        'base/codec.h',
        'base/cpuid.cc',
        'base/cpuid.h',
        'base/cryptoparams.h',
        'base/device.h',
        'base/fakescreencapturerfactory.h',
        'base/hybriddataengine.h',
        'base/mediachannel.h',
        'base/mediacommon.h',
        'base/mediaconstants.cc',
        'base/mediaconstants.h',
        'base/mediaengine.cc',
        'base/mediaengine.h',
        'base/rtpdataengine.cc',
        'base/rtpdataengine.h',
        'base/rtpdump.cc',
        'base/rtpdump.h',
        'base/rtputils.cc',
        'base/rtputils.h',
        'base/screencastid.h',
        'base/streamparams.cc',
        'base/streamparams.h',
        'base/turnutils.cc',
        'base/turnutils.h',
        'base/videoadapter.cc',
        'base/videoadapter.h',
        'base/videobroadcaster.cc',
        'base/videobroadcaster.h',
        'base/videocapturer.cc',
        'base/videocapturer.h',
        'base/videocapturerfactory.h',
        'base/videocommon.cc',
        'base/videocommon.h',
        'base/videoframe.cc',
        'base/videoframe.h',
        'base/videoframefactory.cc',
        'base/videoframefactory.h',
        'base/videosourcebase.cc',
        'base/videosourcebase.h',
        'base/yuvframegenerator.cc',
        'base/yuvframegenerator.h',
        'devices/videorendererfactory.h',
        'engine/nullwebrtcvideoengine.h',
        'engine/simulcast.cc',
        'engine/simulcast.h',
        'engine/webrtccommon.h',
        'engine/webrtcmediaengine.cc',
        'engine/webrtcmediaengine.h',
        'engine/webrtcmediaengine.cc',
        'engine/webrtcvideocapturer.cc',
        'engine/webrtcvideocapturer.h',
        'engine/webrtcvideocapturerfactory.h',
        'engine/webrtcvideocapturerfactory.cc',
        'engine/webrtcvideodecoderfactory.h',
        'engine/webrtcvideoencoderfactory.h',
        'engine/webrtcvideoengine2.cc',
        'engine/webrtcvideoengine2.h',
        'engine/webrtcvideoframe.cc',
        'engine/webrtcvideoframe.h',
        'engine/webrtcvideoframefactory.cc',
        'engine/webrtcvideoframefactory.h',
        'engine/webrtcvoe.h',
        'engine/webrtcvoiceengine.cc',
        'engine/webrtcvoiceengine.h',
        'sctp/sctpdataengine.cc',
        'sctp/sctpdataengine.h',
      ],
      # TODO(kjellander): Make the code compile without disabling these flags.
      # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
      'cflags': [
        '-Wno-deprecated-declarations',
      ],
      'cflags!': [
        '-Wextra',
      ],
      'cflags_cc!': [
        '-Woverloaded-virtual',
      ],
      'msvs_disabled_warnings': [
        4245,  # conversion from 'int' to 'size_t', signed/unsigned mismatch.
        4267,  # conversion from 'size_t' to 'int', possible loss of data.
        4389,  # signed/unsigned mismatch.
      ],
      'conditions': [
        ['build_libyuv==1', {
          'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
        }],
        ['build_usrsctp==1', {
          'include_dirs': [
            # TODO(jiayl): move this into the direct_dependent_settings of
            # usrsctp.gyp.
            '<(DEPTH)/third_party/usrsctp/usrsctplib',
          ],
          'dependencies': [
            '<(DEPTH)/third_party/usrsctp/usrsctp.gyp:usrsctplib',
          ],
        }],
        ['build_with_chromium==1', {
          'dependencies': [
            '<(webrtc_root)/modules/modules.gyp:video_capture',
          ],
        }, {
          'defines': [
            'HAVE_WEBRTC_VIDEO',
            'HAVE_WEBRTC_VOICE',
          ],
          'direct_dependent_settings': {
            'defines': [
              'HAVE_WEBRTC_VIDEO',
              'HAVE_WEBRTC_VOICE',
            ],
          },
          'dependencies': [
            '<(webrtc_root)/modules/modules.gyp:video_capture_module_internal_impl',
          ],
        }],
        ['OS=="linux" and use_gtk==1', {
          'sources': [
            'devices/gtkvideorenderer.cc',
            'devices/gtkvideorenderer.h',
          ],
          'cflags': [
            '<!@(pkg-config --cflags gobject-2.0 gthread-2.0 gtk+-2.0)',
          ],
        }],
        ['OS=="win"', {
          'sources': [
            'devices/gdivideorenderer.cc',
            'devices/gdivideorenderer.h',
          ],
          'msvs_settings': {
            'VCLibrarianTool': {
              'AdditionalDependencies': [
                'd3d9.lib',
                'gdi32.lib',
                'strmiids.lib',
              ],
            },
          },
        }],
        ['OS=="mac" and target_arch=="ia32"', {
          'sources': [
            'devices/carbonvideorenderer.cc',
            'devices/carbonvideorenderer.h',
          ],
          'link_settings': {
            'xcode_settings': {
              'OTHER_LDFLAGS': [
                '-framework Carbon',
              ],
            },
          },
        }],
        ['OS=="ios" or (OS=="mac" and target_arch!="ia32")', {
          'defines': [
            'CARBON_DEPRECATED=YES',
          ],
        }],
      ],
    },  # target rtc_media
  ],  # targets.
  'conditions': [
    ['include_tests==1', {
      'targets' : [
        {
          'target_name': 'rtc_unittest_main',
          'type': 'static_library',
          'dependencies': [
            '<(DEPTH)/testing/gmock.gyp:gmock',
            '<(DEPTH)/testing/gtest.gyp:gtest',
            '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
          ],
          'direct_dependent_settings': {
            'include_dirs': [
              '<(libyuv_dir)/include',
              '<(DEPTH)/testing/gmock/include',
            ],
          },
          'conditions': [
            ['build_libyuv==1', {
              'dependencies': ['<(DEPTH)/third_party/libyuv/libyuv.gyp:libyuv',],
            }],
            ['OS=="ios"', {
              # TODO(kjellander): Make the code compile without disabling these.
              # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
              'cflags': [
                '-Wno-unused-variable',
              ],
              'xcode_settings': {
                'WARNING_CFLAGS': [
                  '-Wno-unused-variable',
                ],
              },
            }],
          ],
          'include_dirs': [
             '<(DEPTH)/testing/gtest/include',
             '<(DEPTH)/testing/gtest',
           ],
          'sources': [
            'base/fakemediaengine.h',
            'base/fakenetworkinterface.h',
            'base/fakertp.h',
            'base/fakevideocapturer.h',
            'base/fakevideorenderer.h',
            'base/testutils.cc',
            'base/testutils.h',
            'engine/fakewebrtccall.cc',
            'engine/fakewebrtccall.h',
            'engine/fakewebrtccommon.h',
            'engine/fakewebrtcdeviceinfo.h',
            'engine/fakewebrtcvcmfactory.h',
            'engine/fakewebrtcvideocapturemodule.h',
            'engine/fakewebrtcvideoengine.h',
            'engine/fakewebrtcvoiceengine.h',
          ],
        },  # target rtc_unittest_main
        {
          'target_name': 'rtc_media_unittests',
          'type': 'executable',
          'dependencies': [
            '<(webrtc_root)/base/base_tests.gyp:rtc_base_tests_utils',
            '<(webrtc_root)/media/media.gyp:rtc_media',
            '<(webrtc_root)/system_wrappers/system_wrappers.gyp:metrics_default',
            'rtc_unittest_main',
          ],
          'sources': [
            'base/codec_unittest.cc',
            'base/rtpdataengine_unittest.cc',
            'base/rtpdump_unittest.cc',
            'base/rtputils_unittest.cc',
            'base/streamparams_unittest.cc',
            'base/turnutils_unittest.cc',
            'base/videoadapter_unittest.cc',
            'base/videobroadcaster_unittest.cc',
            'base/videocapturer_unittest.cc',
            'base/videocommon_unittest.cc',
            'base/videoengine_unittest.h',
            'base/videoframe_unittest.h',
            'engine/nullwebrtcvideoengine_unittest.cc',
            'engine/simulcast_unittest.cc',
            'engine/webrtcmediaengine_unittest.cc',
            'engine/webrtcvideocapturer_unittest.cc',
            'engine/webrtcvideoframe_unittest.cc',
            'engine/webrtcvideoframefactory_unittest.cc',
            'engine/webrtcvideoengine2_unittest.cc',
            'engine/webrtcvoiceengine_unittest.cc',
            'sctp/sctpdataengine_unittest.cc',
          ],
          # TODO(kjellander): Make the code compile without disabling these flags.
          # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
          'cflags': [
            '-Wno-sign-compare',
          ],
          'cflags_cc!': [
            '-Woverloaded-virtual',
          ],
          'msvs_disabled_warnings': [
            4245,  # conversion from 'int' to 'uint32_t', signed/unsigned mismatch.
            4389,  # signed/unsigned mismatch.
          ],
          'conditions': [
            ['OS=="win"', {
              'msvs_settings': {
                'VCLinkerTool': {
                  'AdditionalDependencies': [
                    # TODO(ronghuawu): Since we've included strmiids in
                    # libjingle_media target, we shouldn't need this here.
                    # Find out why it doesn't work without this.
                    'strmiids.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-sign-compare',
                    '-Wno-unused-function',
                  ],
                },
              },
            },],
            ['clang==1', {
              # TODO(kjellander): Make the code compile without disabling these.
              # See https://bugs.chromium.org/p/webrtc/issues/detail?id=3307
              'cflags!': [
                '-Wextra',
              ],
              'xcode_settings': {
                'WARNING_CFLAGS!': ['-Wextra'],
              },
            }],
            ['OS=="ios"', {
              'sources!': [
                'sctp/sctpdataengine_unittest.cc',
              ],
              'mac_bundle_resources': [
                '<(DEPTH)/resources/media/captured-320x240-2s-48.frames',
                '<(DEPTH)/resources/media/faces.1280x720_P420.yuv',
                '<(DEPTH)/resources/media/faces_I420.jpg',
                '<(DEPTH)/resources/media/faces_I422.jpg',
                '<(DEPTH)/resources/media/faces_I444.jpg',
                '<(DEPTH)/resources/media/faces_I411.jpg',
                '<(DEPTH)/resources/media/faces_I400.jpg',
              ],
            }],
          ],
        },  # target rtc_media_unittests
      ],  # targets
      'conditions': [
        ['test_isolation_mode != "noop"', {
          'targets': [
            {
              'target_name': 'rtc_media_unittests_run',
              'type': 'none',
              'dependencies': [
                'rtc_media_unittests',
              ],
              'includes': [
                '../build/isolate.gypi',
              ],
              'sources': [
                'rtc_media_unittests.isolate',
              ],
            },
          ],
        }],
      ],  # conditions
    }],  # include_tests==1
  ],  # conditions
}
