# 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.

{
  'targets': [
    {
      'target_name': 'video_render_module',
      'type': 'static_library',
      'dependencies': [
        'webrtc_utility',
        '<(webrtc_root)/common_video/common_video.gyp:common_video',
        '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers',
      ],
      'sources': [
        'android/video_render_android_impl.cc',
        'android/video_render_android_impl.h',
        'android/video_render_android_native_opengl2.cc',
        'android/video_render_android_native_opengl2.h',
        'android/video_render_android_surface_view.cc',
        'android/video_render_android_surface_view.h',
        'android/video_render_opengles20.cc',
        'android/video_render_opengles20.h',
        'external/video_render_external_impl.cc',
        'external/video_render_external_impl.h',
        'i_video_render.h',
        'include/video_render.h',
        'include/video_render_defines.h',
        'incoming_video_stream.cc',
        'incoming_video_stream.h',
        'ios/open_gles20.h',
        'ios/open_gles20.mm',
        'ios/video_render_ios_channel.h',
        'ios/video_render_ios_channel.mm',
        'ios/video_render_ios_gles20.h',
        'ios/video_render_ios_gles20.mm',
        'ios/video_render_ios_impl.h',
        'ios/video_render_ios_impl.mm',
        'ios/video_render_ios_view.h',
        'ios/video_render_ios_view.mm',
        'linux/video_render_linux_impl.cc',
        'linux/video_render_linux_impl.h',
        'linux/video_x11_channel.cc',
        'linux/video_x11_channel.h',
        'linux/video_x11_render.cc',
        'linux/video_x11_render.h',
        'mac/cocoa_full_screen_window.mm',
        'mac/cocoa_full_screen_window.h',
        'mac/cocoa_render_view.mm',
        'mac/cocoa_render_view.h',
        'mac/video_render_agl.cc',
        'mac/video_render_agl.h',
        'mac/video_render_mac_carbon_impl.cc',
        'mac/video_render_mac_carbon_impl.h',
        'mac/video_render_mac_cocoa_impl.h',
        'mac/video_render_mac_cocoa_impl.mm',
        'mac/video_render_nsopengl.h',
        'mac/video_render_nsopengl.mm',
        'video_render_frames.cc',
        'video_render_frames.h',
        'video_render_impl.cc',
        'video_render_impl.h',
        'windows/i_video_render_win.h',
        'windows/video_render_direct3d9.cc',
        'windows/video_render_direct3d9.h',
        'windows/video_render_windows_impl.cc',
        'windows/video_render_windows_impl.h',
      ],
      # TODO(andrew): with the proper suffix, these files will be excluded
      # automatically.
      'conditions': [
        ['include_internal_video_render==1', {
          'defines': ['WEBRTC_INCLUDE_INTERNAL_VIDEO_RENDER',],
        }],
        ['OS!="android" or include_internal_video_render==0', {
          'sources!': [
            'android/video_render_android_impl.h',
            'android/video_render_android_native_opengl2.h',
            'android/video_render_android_surface_view.h',
            'android/video_render_opengles20.h',
            'android/video_render_android_impl.cc',
            'android/video_render_android_native_opengl2.cc',
            'android/video_render_android_surface_view.cc',
            'android/video_render_opengles20.cc',
          ],
        }, {
          'link_settings': {
            'libraries': [
              '-lGLESv2',
            ],
          },
        }],
        ['OS!="ios" or include_internal_video_render==0', {
          'sources!': [
            # iOS
            'ios/open_gles20.h',
            'ios/open_gles20.mm',
            'ios/video_render_ios_channel.h',
            'ios/video_render_ios_channel.mm',
            'ios/video_render_ios_gles20.h',
            'ios/video_render_ios_gles20.mm',
            'ios/video_render_ios_impl.h',
            'ios/video_render_ios_impl.mm',
            'ios/video_render_ios_view.h',
            'ios/video_render_ios_view.mm',
          ],
        }],
        ['OS!="linux" or include_internal_video_render==0', {
          'sources!': [
            'linux/video_render_linux_impl.h',
            'linux/video_x11_channel.h',
            'linux/video_x11_render.h',
            'linux/video_render_linux_impl.cc',
            'linux/video_x11_channel.cc',
            'linux/video_x11_render.cc',
          ],
        }, {
          'link_settings': {
            'libraries': [
              '-lXext',
            ],
          },
        }],
        ['OS!="mac" or include_internal_video_render==0', {
          'sources!': [
            'mac/cocoa_full_screen_window.h',
            'mac/cocoa_render_view.h',
            'mac/video_render_agl.h',
            'mac/video_render_mac_carbon_impl.h',
            'mac/video_render_mac_cocoa_impl.h',
            'mac/video_render_nsopengl.h',
            'mac/video_render_nsopengl.mm',
            'mac/video_render_mac_cocoa_impl.mm',
            'mac/video_render_agl.cc',
            'mac/video_render_mac_carbon_impl.cc',
            'mac/cocoa_render_view.mm',
            'mac/cocoa_full_screen_window.mm',
          ],
        }],
        ['OS=="ios"', {
          'xcode_settings': {
            'CLANG_ENABLE_OBJC_ARC': 'YES',
          },
          'all_dependent_settings': {
            'xcode_settings': {
              'OTHER_LDFLAGS': [
                '-framework OpenGLES',
                '-framework QuartzCore',
                '-framework UIKit',
              ],
            },
          },
        }],
        ['OS=="win" and include_internal_video_render==1', {
          'variables': {
            # 'directx_sdk_path' will be overridden in the condition block
            # below, but it must not be declared as empty here since gyp
            # will check if the first character is '/' for some reason.
            # If it's empty, we'll get an out-of-bounds error.
            'directx_sdk_path': 'will_be_overridden',
            'directx_sdk_default_path': '<(DEPTH)/third_party/directxsdk/files',
            'conditions': [
              ['"<!(python <(DEPTH)/build/dir_exists.py <(directx_sdk_default_path))"=="True"', {
                'directx_sdk_path': '<(DEPTH)/third_party/directxsdk/files',
              }, {
                'directx_sdk_path': '$(DXSDK_DIR)',
              }],
            ],
          },

          'include_dirs': [
            '<(directx_sdk_path)/Include',
          ],
        }],
        ['OS!="win" or include_internal_video_render==0', {
          'sources!': [
            'windows/i_video_render_win.h',
            'windows/video_render_direct3d9.h',
            'windows/video_render_windows_impl.h',
            'windows/video_render_direct3d9.cc',
            'windows/video_render_windows_impl.cc',
          ],
        }],
      ] # conditions
    }, # video_render_module
  ], # targets

  'conditions': [
    ['include_internal_video_render==1', {
      'defines': ['WEBRTC_INCLUDE_INTERNAL_VIDEO_RENDER',],
    }],
    ['include_tests==1', {
      'targets': [
        {
          'target_name': 'video_render_tests',
          'type': 'executable',
          'dependencies': [
            'video_render_module',
            'webrtc_utility',
            '<(webrtc_root)/system_wrappers/source/system_wrappers.gyp:system_wrappers',
            '<(webrtc_root)/common_video/common_video.gyp:common_video',
          ],
          'sources': [
            'test/testAPI/testAPI.cc',
            'test/testAPI/testAPI.h',
            'test/testAPI/testAPI_android.cc',
            'test/testAPI/testAPI_mac.mm',
          ],
          'conditions': [
            ['OS=="mac" or OS=="linux"', {
              'cflags': [
                '-Wno-write-strings',
              ],
              'ldflags': [
                '-lpthread -lm',
              ],
            }],
            ['OS=="linux"', {
              'link_settings': {
                'libraries': [
                  '-lX11',
                ],
              },
            }],
            ['OS=="mac"', {
              'xcode_settings': {
                'OTHER_LDFLAGS': [
                  '-framework Foundation -framework AppKit -framework Cocoa -framework OpenGL',
                ],
              },
            }],
          ] # conditions
        }, # video_render_module_test
      ], # targets
      'conditions': [
        ['test_isolation_mode != "noop"', {
          'targets': [
            {
              'target_name': 'video_render_tests_run',
              'type': 'none',
              'dependencies': [
                'video_render_tests',
              ],
              'includes': [
                '../../build/isolate.gypi',
                'video_render_tests.isolate',
              ],
              'sources': [
                'video_render_tests.isolate',
              ],
            },
          ],
        }],
      ],
    }], # include_tests==0
  ], # conditions
}

