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

import("//build/config/ui.gni")
import("../../webrtc.gni")

use_desktop_capture_differ_sse2 = current_cpu == "x86" || current_cpu == "x64"

rtc_static_library("primitives") {
  sources = [
    "desktop_capture_types.h",
    "desktop_frame.cc",
    "desktop_frame.h",
    "desktop_geometry.cc",
    "desktop_geometry.h",
    "desktop_region.cc",
    "desktop_region.h",
    "shared_desktop_frame.cc",
    "shared_desktop_frame.h",
    "shared_memory.cc",
    "shared_memory.h",
  ]

  deps = [
    "../..:webrtc_common",
    "../../rtc_base:rtc_base",  # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
  ]
}

if (rtc_include_tests) {
  rtc_source_set("desktop_capture_modules_tests") {
    testonly = true

    # Skip restricting visibility on mobile platforms since the tests on those
    # gets additional generated targets which would require many lines here to
    # cover (which would be confusing to read and hard to maintain).
    if (!is_android && !is_ios) {
      visibility = [ "..:modules_tests" ]
    }
    sources = []
    deps = []
    if (rtc_desktop_capture_supported) {
      deps += [
        ":desktop_capture_mock",
        ":primitives",
        ":screen_drawer",
        "../../rtc_base:rtc_base",
        "../../rtc_base:rtc_base_approved",
        "../../system_wrappers",
        "../../test:test_support",
        "../../test:video_test_support",
      ]
      sources += [
        "screen_capturer_integration_test.cc",
        "screen_drawer_unittest.cc",
        "window_finder_unittest.cc",
      ]
    }
  }

  rtc_source_set("desktop_capture_unittests") {
    testonly = true

    # Skip restricting visibility on mobile platforms since the tests on those
    # gets additional generated targets which would require many lines here to
    # cover (which would be confusing to read and hard to maintain).
    if (!is_android && !is_ios) {
      visibility = [ "..:modules_unittests" ]
    }
    sources = [
      "blank_detector_desktop_capturer_wrapper_unittest.cc",
      "desktop_and_cursor_composer_unittest.cc",
      "desktop_capturer_differ_wrapper_unittest.cc",
      "desktop_frame_rotation_unittest.cc",
      "desktop_geometry_unittest.cc",
      "desktop_region_unittest.cc",
      "differ_block_unittest.cc",
      "fallback_desktop_capturer_wrapper_unittest.cc",
      "mouse_cursor_monitor_unittest.cc",
      "rgba_color_unittest.cc",
      "test_utils.cc",
      "test_utils.h",
      "test_utils_unittest.cc",
      "win/cursor_unittest.cc",
      "win/cursor_unittest_resources.h",
      "win/cursor_unittest_resources.rc",
      "win/screen_capture_utils_unittest.cc",
      "win/screen_capturer_win_directx_unittest.cc",
    ]
    deps = [
      ":desktop_capture",
      ":desktop_capture_mock",
      ":primitives",
      "../..:webrtc_common",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers",
      "../../test:test_support",
      "//testing/gmock",
    ]
    if (rtc_desktop_capture_supported) {
      sources += [
        "screen_capturer_helper_unittest.cc",
        "screen_capturer_mac_unittest.cc",
        "screen_capturer_unittest.cc",
        "window_capturer_unittest.cc",
      ]
      deps += [ ":desktop_capture_mock" ]
    }
    if (!build_with_chromium && is_clang) {
      # Suppress warnings from the Chromium Clang plugin (bugs.webrtc.org/163).
      suppressed_configs += [ "//build/config/clang:find_bad_constructs" ]
    }
  }

  source_set("screen_drawer") {
    testonly = true

    public_deps = [
      ":desktop_capture",
    ]

    sources = [
      "screen_drawer.cc",
      "screen_drawer.h",
      "screen_drawer_linux.cc",
      "screen_drawer_lock_posix.cc",
      "screen_drawer_lock_posix.h",
      "screen_drawer_mac.cc",
      "screen_drawer_win.cc",
    ]

    deps = [
      ":primitives",
      "../../rtc_base:rtc_base_approved",
      "../../system_wrappers",
    ]
  }

  source_set("desktop_capture_mock") {
    testonly = true

    public_deps = [
      ":desktop_capture",
      "//testing/gmock",
    ]

    sources = [
      "desktop_frame_generator.cc",
      "desktop_frame_generator.h",
      "fake_desktop_capturer.cc",
      "fake_desktop_capturer.h",
      "mock_desktop_capturer_callback.cc",
      "mock_desktop_capturer_callback.h",
    ]

    deps = [
      ":primitives",
      "../../rtc_base:rtc_base_approved",
      "../../test:test_support",
    ]
  }
}

rtc_source_set("desktop_capture") {
  public_deps = [
    ":desktop_capture_generic",
  ]
  if (is_mac) {
    public_deps += [ ":desktop_capture_objc" ]
  }
}

if (is_mac) {
  rtc_source_set("desktop_capture_objc") {
    visibility = [ ":desktop_capture" ]
    sources = [
      "mac/desktop_configuration.mm",
      "mouse_cursor_monitor_mac.mm",
      "screen_capturer_mac.mm",
      "window_capturer_mac.mm",
    ]
    deps = [
      ":desktop_capture_generic",
      ":primitives",
      "../../rtc_base:rtc_base",
      "../../rtc_base:rtc_base_approved",
    ]
    libs = [
      "AppKit.framework",
      "IOKit.framework",
      "OpenGL.framework",
    ]
  }
}

rtc_static_library("desktop_capture_generic") {
  visibility = [
    ":desktop_capture",
    ":desktop_capture_objc",
  ]
  sources = [
    "blank_detector_desktop_capturer_wrapper.cc",
    "blank_detector_desktop_capturer_wrapper.h",
    "cropped_desktop_frame.cc",
    "cropped_desktop_frame.h",
    "cropping_window_capturer.cc",
    "cropping_window_capturer.h",
    "cropping_window_capturer_win.cc",
    "desktop_and_cursor_composer.cc",
    "desktop_and_cursor_composer.h",
    "desktop_capture_options.cc",
    "desktop_capture_options.h",
    "desktop_capturer.cc",
    "desktop_capturer.h",
    "desktop_capturer_differ_wrapper.cc",
    "desktop_capturer_differ_wrapper.h",
    "desktop_frame_rotation.cc",
    "desktop_frame_rotation.h",
    "desktop_frame_win.cc",
    "desktop_frame_win.h",
    "differ_block.cc",
    "differ_block.h",
    "fallback_desktop_capturer_wrapper.cc",
    "fallback_desktop_capturer_wrapper.h",
    "mac/desktop_configuration.h",
    "mac/desktop_configuration_monitor.cc",
    "mac/desktop_configuration_monitor.h",
    "mac/full_screen_chrome_window_detector.cc",
    "mac/full_screen_chrome_window_detector.h",
    "mac/scoped_pixel_buffer_object.cc",
    "mac/scoped_pixel_buffer_object.h",
    "mac/window_list_utils.cc",
    "mac/window_list_utils.h",
    "mouse_cursor.cc",
    "mouse_cursor.h",
    "mouse_cursor_monitor.h",
    "mouse_cursor_monitor_win.cc",
    "resolution_tracker.cc",
    "resolution_tracker.h",
    "rgba_color.cc",
    "rgba_color.h",
    "screen_capture_frame_queue.h",
    "screen_capturer_helper.cc",
    "screen_capturer_helper.h",
    "screen_capturer_win.cc",
    "win/cursor.cc",
    "win/cursor.h",
    "win/d3d_device.cc",
    "win/d3d_device.h",
    "win/desktop.cc",
    "win/desktop.h",
    "win/display_configuration_monitor.cc",
    "win/display_configuration_monitor.h",
    "win/dxgi_adapter_duplicator.cc",
    "win/dxgi_adapter_duplicator.h",
    "win/dxgi_context.cc",
    "win/dxgi_context.h",
    "win/dxgi_duplicator_controller.cc",
    "win/dxgi_duplicator_controller.h",
    "win/dxgi_frame.cc",
    "win/dxgi_frame.h",
    "win/dxgi_output_duplicator.cc",
    "win/dxgi_output_duplicator.h",
    "win/dxgi_texture.cc",
    "win/dxgi_texture.h",
    "win/dxgi_texture_mapping.cc",
    "win/dxgi_texture_mapping.h",
    "win/dxgi_texture_staging.cc",
    "win/dxgi_texture_staging.h",
    "win/scoped_gdi_object.h",
    "win/scoped_thread_desktop.cc",
    "win/scoped_thread_desktop.h",
    "win/screen_capture_utils.cc",
    "win/screen_capture_utils.h",
    "win/screen_capturer_win_directx.cc",
    "win/screen_capturer_win_directx.h",
    "win/screen_capturer_win_gdi.cc",
    "win/screen_capturer_win_gdi.h",
    "win/screen_capturer_win_magnifier.cc",
    "win/screen_capturer_win_magnifier.h",
    "win/window_capture_utils.cc",
    "win/window_capture_utils.h",
    "window_capturer_win.cc",
    "window_finder.h",
    "window_finder_mac.h",
    "window_finder_mac.mm",
    "window_finder_win.cc",
    "window_finder_win.h",
  ]

  if (use_x11) {
    sources += [
      "mouse_cursor_monitor_x11.cc",
      "screen_capturer_x11.cc",
      "window_capturer_x11.cc",
      "window_finder_x11.cc",
      "window_finder_x11.h",
      "x11/shared_x_display.cc",
      "x11/shared_x_display.h",
      "x11/window_list_utils.cc",
      "x11/window_list_utils.h",
      "x11/x_atom_cache.cc",
      "x11/x_atom_cache.h",
      "x11/x_error_trap.cc",
      "x11/x_error_trap.h",
      "x11/x_server_pixel_buffer.cc",
      "x11/x_server_pixel_buffer.h",
    ]
    configs += [ "//build/config/linux:x11" ]
  }

  if (!is_win && !is_mac && !use_x11) {
    sources += [
      "mouse_cursor_monitor_null.cc",
      "screen_capturer_null.cc",
      "window_capturer_null.cc",
    ]
  }

  if (is_win) {
    libs = [
      "d3d11.lib",
      "dxgi.lib",
    ]
  }

  deps = [
    ":primitives",
    "../..:webrtc_common",
    "../../rtc_base:rtc_base",  # TODO(kjellander): Cleanup in bugs.webrtc.org/3806.
    "../../system_wrappers",
    "//third_party/libyuv",
  ]

  if (use_desktop_capture_differ_sse2) {
    deps += [ ":desktop_capture_differ_sse2" ]
  }
}

if (use_desktop_capture_differ_sse2) {
  # Have to be compiled as a separate target because it needs to be compiled
  # with SSE2 enabled.
  rtc_static_library("desktop_capture_differ_sse2") {
    visibility = [ ":*" ]
    sources = [
      "differ_vector_sse2.cc",
      "differ_vector_sse2.h",
    ]

    if (is_posix) {
      cflags = [ "-msse2" ]
    }
  }
}
