chromium/ppapi/BUILD.gn

# Copyright 2014 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/features.gni")
import("//build/config/nacl/config.gni")
import("//build/config/nacl/rules.gni")
import("//components/nacl/features.gni")
import("//components/nacl/target_cpu.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//testing/test.gni")
if (is_mac) {
  import("//build/config/mac/rules.gni")
}

assert(enable_ppapi)

# Test files shared between several targets below.
#
# TODO(brettw) it seems like it should be possible to factor this in a source
# set that is shared in such a way that these only need to be referenced once.
test_common_source_files = [
  "lib/gl/gles2/gl2ext_ppapi.c",
  "lib/gl/gles2/gl2ext_ppapi.h",
  "lib/gl/gles2/gles2.c",
  "tests/all_c_includes.h",
  "tests/all_cpp_includes.h",
  "tests/arch_dependent_sizes_32.h",
  "tests/arch_dependent_sizes_64.h",
  "tests/pp_thread.h",
  "tests/test_audio.cc",
  "tests/test_audio.h",
  "tests/test_audio_config.cc",
  "tests/test_audio_config.h",
  "tests/test_case.cc",
  "tests/test_case.h",
  "tests/test_console.cc",
  "tests/test_console.h",
  "tests/test_core.cc",
  "tests/test_core.h",
  "tests/test_cursor_control.cc",
  "tests/test_cursor_control.h",
  "tests/test_empty.cc",
  "tests/test_empty.h",
  "tests/test_file_io.cc",
  "tests/test_file_io.h",
  "tests/test_file_ref.cc",
  "tests/test_file_ref.h",
  "tests/test_file_system.cc",
  "tests/test_file_system.h",
  "tests/test_fullscreen.cc",
  "tests/test_fullscreen.h",
  "tests/test_graphics_2d.cc",
  "tests/test_graphics_2d.h",
  "tests/test_graphics_3d.cc",
  "tests/test_graphics_3d.h",
  "tests/test_host_resolver.cc",
  "tests/test_host_resolver.h",
  "tests/test_host_resolver_crash.cc",
  "tests/test_host_resolver_crash.h",
  "tests/test_host_resolver_private.cc",
  "tests/test_host_resolver_private.h",
  "tests/test_host_resolver_private_disallowed.cc",
  "tests/test_host_resolver_private_disallowed.h",
  "tests/test_image_data.cc",
  "tests/test_image_data.h",
  "tests/test_ime_input_event.cc",
  "tests/test_ime_input_event.h",
  "tests/test_input_event.cc",
  "tests/test_input_event.h",
  "tests/test_media_stream_audio_track.cc",
  "tests/test_media_stream_audio_track.h",
  "tests/test_media_stream_video_track.cc",
  "tests/test_media_stream_video_track.h",
  "tests/test_memory.cc",
  "tests/test_memory.h",
  "tests/test_message_handler.cc",
  "tests/test_message_handler.h",
  "tests/test_message_loop.cc",
  "tests/test_message_loop.h",
  "tests/test_mouse_cursor.cc",
  "tests/test_mouse_cursor.h",
  "tests/test_mouse_lock.cc",
  "tests/test_mouse_lock.h",
  "tests/test_net_address.cc",
  "tests/test_net_address.h",
  "tests/test_net_address_private_untrusted.cc",
  "tests/test_net_address_private_untrusted.h",
  "tests/test_network_monitor.cc",
  "tests/test_network_monitor.h",
  "tests/test_network_proxy.cc",
  "tests/test_network_proxy.h",
  "tests/test_paint_aggregator.cc",
  "tests/test_paint_aggregator.h",
  "tests/test_post_message.cc",
  "tests/test_post_message.h",
  "tests/test_printing.cc",
  "tests/test_printing.h",
  "tests/test_tcp_server_socket_private.cc",
  "tests/test_tcp_server_socket_private.h",
  "tests/test_tcp_socket.cc",
  "tests/test_tcp_socket.h",
  "tests/test_tcp_socket_private.cc",
  "tests/test_tcp_socket_private.h",
  "tests/test_tcp_socket_private_crash.cc",
  "tests/test_tcp_socket_private_crash.h",
  "tests/test_test_internals.cc",
  "tests/test_test_internals.h",
  "tests/test_trace_event.cc",
  "tests/test_trace_event.h",
  "tests/test_udp_socket.cc",
  "tests/test_udp_socket.h",
  "tests/test_udp_socket_private.cc",
  "tests/test_udp_socket_private.h",
  "tests/test_uma.cc",
  "tests/test_uma.h",
  "tests/test_url_loader.cc",
  "tests/test_url_loader.h",
  "tests/test_url_request.cc",
  "tests/test_url_request.h",
  "tests/test_utils.h",
  "tests/test_utils.cc",
  "tests/test_var.cc",
  "tests/test_var.h",
  "tests/test_var_resource.cc",
  "tests/test_var_resource.h",
  "tests/test_video_decoder.cc",
  "tests/test_video_decoder.h",
  "tests/test_video_encoder.cc",
  "tests/test_video_encoder.h",
  "tests/test_view.cc",
  "tests/test_view.h",
  "tests/test_websocket.cc",
  "tests/test_websocket.h",
  "tests/testing_instance.cc",
  "tests/testing_instance.h",

  # Compile-time tests
  "tests/test_c_includes.c",
  "tests/test_cpp_includes.cc",
  "tests/test_struct_sizes.c",
]

copy("copy_test_files") {
  sources = [
    # Keep "test_case.html.mock-http-headers" with "test_case.html"
    # and "corb_eligible_resource.json.mock-http-headers" with
    # "corb_eligible_resource.json".
    "tests/corb_eligible_resource.json",
    "tests/corb_eligible_resource.json.mock-http-headers",
    "tests/test_case.html",
    "tests/test_case.html.mock-http-headers",
    "tests/test_page.css",
    "tests/test_page.css.mock-http-headers",
  ]
  outputs = [ "$root_out_dir/{{source_file_part}}" ]
}

copy("copy_test_files2") {
  sources = [ "tests/test_url_loader_data/hello.txt" ]
  outputs = [ "$root_out_dir/test_url_loader_data/{{source_file_part}}" ]
}

source_set("ppapi_tests_sources") {
  sources = test_common_source_files
  sources += [
    "tests/test_browser_font.cc",
    "tests/test_browser_font.h",
    "tests/test_buffer.cc",
    "tests/test_buffer.h",
    "tests/test_char_set.cc",
    "tests/test_char_set.h",
    "tests/test_crypto.cc",
    "tests/test_crypto.h",
    "tests/test_file_chooser.cc",
    "tests/test_file_chooser.h",
    "tests/test_net_address_private.cc",
    "tests/test_net_address_private.h",
    "tests/test_tcp_socket_private_trusted.cc",
    "tests/test_tcp_socket_private_trusted.h",
    "tests/test_url_util.cc",
    "tests/test_url_util.h",
    "tests/test_video_decoder_dev.cc",
    "tests/test_video_decoder_dev.h",
    "tests/test_x509_certificate_private.cc",
    "tests/test_x509_certificate_private.h",

    # Deprecated test cases.
    "tests/test_instance_deprecated.cc",
    "tests/test_instance_deprecated.h",
    "tests/test_var_deprecated.cc",
    "tests/test_var_deprecated.h",
  ]

  configs += [
    "//build/config:precompiled_headers",
    "//v8:external_startup_data",
  ]

  defines = [ "GL_GLEXT_PROTOTYPES" ]
  include_dirs = [ "lib/gl/include" ]

  deps = [
    ":copy_test_files",
    ":copy_test_files2",
    "//ppapi/cpp",
    "//ppapi/shared_impl",
  ]
}

if (is_mac) {
  ppapi_tests_target_type = "mac_plugin_bundle"
} else {
  ppapi_tests_target_type = "shared_library"
}
target(ppapi_tests_target_type, "ppapi_tests") {
  deps = [ ":ppapi_tests_sources" ]
}

source_set("blink_deprecated_test_plugin_sources") {
  sources = [ "tests/blink_deprecated_test_plugin.cc" ]

  deps = [
    "//base",
    "//ppapi/cpp",
    "//ppapi/shared_impl",
  ]
}

if (!is_mac) {
  loadable_module("blink_deprecated_test_plugin") {
    deps = [ ":blink_deprecated_test_plugin_sources" ]
  }
} else {
  mac_plugin_bundle("blink_deprecated_test_plugin") {
    deps = [ ":blink_deprecated_test_plugin_sources" ]
  }
}

source_set("blink_test_plugin_sources") {
  sources = [ "tests/blink_test_plugin.cc" ]

  deps = [
    "//base",
    "//ppapi/cpp",
    "//ppapi/shared_impl",
  ]
}

if (!is_mac) {
  loadable_module("blink_test_plugin") {
    deps = [ ":blink_test_plugin_sources" ]
  }
} else {
  mac_plugin_bundle("blink_test_plugin") {
    deps = [ ":blink_test_plugin_sources" ]
  }
}

test("ppapi_unittests") {
  sources = [
    "host/resource_message_filter_unittest.cc",
    "proxy/device_enumeration_resource_helper_unittest.cc",
    "proxy/file_chooser_resource_unittest.cc",
    "proxy/file_system_resource_unittest.cc",
    "proxy/interface_list_unittest.cc",
    "proxy/mock_resource.cc",
    "proxy/mock_resource.h",
    "proxy/nacl_message_scanner_unittest.cc",
    "proxy/plugin_dispatcher_unittest.cc",
    "proxy/plugin_resource_tracker_unittest.cc",
    "proxy/plugin_var_tracker_unittest.cc",
    "proxy/ppapi_command_buffer_proxy_unittest.cc",
    "proxy/ppb_var_unittest.cc",
    "proxy/ppp_instance_private_proxy_unittest.cc",
    "proxy/ppp_instance_proxy_unittest.cc",
    "proxy/ppp_messaging_proxy_unittest.cc",
    "proxy/printing_resource_unittest.cc",
    "proxy/raw_var_data_unittest.cc",
    "proxy/serialized_var_unittest.cc",
    "proxy/tracked_callback_unittest.cc",
    "proxy/video_decoder_resource_unittest.cc",
    "proxy/video_encoder_resource_unittest.cc",
    "proxy/websocket_resource_unittest.cc",
    "shared_impl/media_stream_audio_track_shared_unittest.cc",
    "shared_impl/media_stream_buffer_manager_unittest.cc",
    "shared_impl/media_stream_video_track_shared_unittest.cc",
    "shared_impl/proxy_lock_unittest.cc",
    "shared_impl/resource_tracker_unittest.cc",
    "shared_impl/thread_aware_callback_unittest.cc",
    "shared_impl/time_conversion_unittest.cc",
    "shared_impl/var_tracker_unittest.cc",
  ]

  deps = [
    "//base/test:test_support",
    "//gpu/ipc/common:command_buffer_traits",
    "//ipc",
    "//ipc:run_all_unittests",
    "//ipc:test_support",
    "//media:shared_memory_support",
    "//ppapi/host",
    "//ppapi/proxy",
    "//ppapi/proxy:test_support",
    "//ppapi/shared_impl",
    "//ppapi/shared_impl:test_support",
    "//skia",
    "//testing/gmock",
    "//testing/gtest",
    "//ui/surface",
  ]
}

test("ppapi_perftests") {
  sources = [
    "proxy/ppapi_perftests.cc",
    "proxy/ppp_messaging_proxy_perftest.cc",
  ]

  deps = [
    "//base/test:test_support",
    "//mojo/core/embedder",
    "//ppapi/proxy",
    "//ppapi/proxy:test_support",
    "//ppapi/shared_impl",
    "//ppapi/shared_impl:test_support",
    "//testing/gtest",
  ]
}

executable("pepper_hash_for_uma") {
  sources = [ "tools/pepper_hash_for_uma.cc" ]

  deps = [
    "//base",
    "//build/win:default_exe_manifest",
  ]
}

source_set("ppapi_gles2_lib") {
  include_dirs = [ "lib/gl/include" ]
  sources = [
    "lib/gl/gles2/gl2ext_ppapi.c",
    "lib/gl/gles2/gl2ext_ppapi.h",
    "lib/gl/gles2/gles2.c",
  ]
  deps = [ "//ppapi/cpp" ]
}

if (enable_nacl) {
  import("//ppapi/native_client/nacl_test_data.gni")

  if (is_nacl) {
    nacl_test_data("ppapi_nacl_tests") {
      include_dirs = [ "lib/gl/include" ]
      sources = test_common_source_files

      sources += [
        "tests/test_nacl_irt_stack_alignment.cc",
        "tests/test_nacl_irt_stack_alignment.h",
        "tests/test_tcp_server_socket_private_disallowed.cc",
        "tests/test_tcp_server_socket_private_disallowed.h",
        "tests/test_tcp_socket_private_disallowed.cc",
        "tests/test_tcp_socket_private_disallowed.h",
        "tests/test_udp_socket_private_disallowed.cc",
        "tests/test_udp_socket_private_disallowed.h",
      ]

      defines = [
        "GL_GLEXT_PROTOTYPES",
        "PPAPI_TEST_IMPLEMENTATION",
      ]
      deps = [
        "//ppapi/cpp",
        "//ppapi/native_client/src/untrusted/irt_stub:ppapi_stub_lib",
      ]
      if (current_cpu == "pnacl") {
        pretranslate_pexe = true
      }
    }
  }

  group("ppapi_nacl_tests_all") {
    data_deps = [
      ":copy_test_files",
      ":ppapi_nacl_tests(//build/toolchain/nacl:clang_newlib_${nacl_target_cpu})",
      ":ppapi_nacl_tests(//build/toolchain/nacl:newlib_pnacl)",
    ]

    if (target_cpu != "mipsel" && !is_mac && !is_win) {
      data_deps += [
        ":ppapi_nacl_tests(//build/toolchain/nacl:glibc_${nacl_target_cpu})",
      ]
    }
  }
}