# 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

    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

    sources = [
      "blank_detector_desktop_capturer_wrapper_unittest.cc",
      "cropped_desktop_frame_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",
      "window_finder_mac.h",
      "window_finder_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",
    "capture_result_desktop_capturer_wrapper.cc",
    "capture_result_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_capturer_wrapper.cc",
    "desktop_capturer_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.cc",
    "window_finder.h",
    "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",
    "../../api:refcountedbase",
    "../../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" ]
    }
  }
}
