# Copyright (c) 2013 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# This is the root build file for GN. GN will start processing by loading this
# file, and recursively load all dependencies until all dependencies are either
# resolved or known not to exist (which will cause the build to fail). So if
# you add a new build file, there must be some path of dependencies from this
# file to your new one or GN won't know about it.

import("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//build/config/sanitizers/sanitizers.gni")
import("//build/config/ui.gni")
import("//extensions/features/features.gni")
import("//media/media_options.gni")
import("//remoting/remoting_enable.gni")
import("//third_party/openh264/openh264_args.gni")
import("//tools/ipc_fuzzer/ipc_fuzzer.gni")
import("//ui/ozone/ozone.gni")
import("//v8/gni/v8.gni")
import("//v8/snapshot_toolchain.gni")

if (is_android) {
  import("//build/config/android/config.gni")
}

declare_args() {
  # A list of extra dependencies to add to the root target. This allows a
  # checkout to add additional targets without explicitly changing any checked-
  # in files.
  root_extra_deps = []
}

if (is_official_build) {
  # An official (maximally optimized!) component (optimized for build times)
  # build doesn't make sense and usually doesn't work.
  assert(!is_component_build)
}

# This file defines the following five main targets:
#
# "both_gn_and_gyp" should list every root target (target that nothing else
# depends on) built by GN that is also built in the GYP build.
#
# "gn_all" should (transitively) cause everything to be built; if you run
# 'ninja gn_all' and then 'ninja all', the second build should do no work.
#
# "gn_only" should list every root target that is *not* intended to be built in
# a GYP build. Because GN has different rules for deciding what an 'all' build
# is, this may end up including targets that are actually defined in a GYP
# build but not dependencies of GYP's "all" (and so not actually built).
#
# "gn_visibility": targets that are normally not visible to top-level targets,
# but are built anyway by "all". Since we don't want any such targets, we have
# this placeholder to make sure hidden targets that aren't otherwise depended
# on yet are accounted for.
#
# "All" is an alias for "gn_all". It exists for bot compatibility w/ GYP for
# the iOS bots and the official builders, but should not be generally used
# during the GYP->GN migration.  We cannot guarantee that GN's "All" builds the
# same set of targets as GYP's "All" does, because GYP's "All" supports
# wildcards.
#
# Lastly, none of these targets are guaranteed to be the same as what ninja
# will build with "all". For more on how "all" works and the differences in how
# GYP and GN determine "all", see crbug.com/503241.
#
# TODO(GYP_GONE): crbug.com/481694. Make sure that the above is true and there
# are scripts run on the bots that enforce this. Once the GYP migration is
# over, we can collapse all of these targets as desired.

group("gn_all") {
  testonly = true

  deps = [
    ":gn_visibility",
    "//base:base_unittests",
    "//chrome/installer",
    "//components:components_unittests",
    "//net:net_unittests",
    "//skia:skia_unittests",
    "//sql:sql_unittests",
    "//tools/ipc_fuzzer:ipc_fuzzer_all",
    "//ui/base:ui_base_unittests",
    "//ui/gfx:gfx_unittests",
    "//url:url_unittests",
  ]

  if (!is_android && !is_chromecast) {
    deps += [
      "//crypto:crypto_unittests",
      "//google_apis/gcm:gcm_unit_tests",
    ]
  }

  if (!is_ios && !is_android && !is_chromecast) {
    deps += [
      "//chrome",
      "//chrome/test:browser_tests",
      "//chrome/test:interactive_ui_tests",
      "//chrome/test:sync_integration_tests",
      "//chrome/test/chromedriver:chromedriver_unittests",
      "//components/sync/tools:sync_client",
      "//components/sync/tools:sync_listen_notifications",
      "//extensions:extensions_browsertests",
      "//extensions:extensions_unittests",
      "//gpu/gles2_conform_support:gles2_conform_test",
      "//gpu/khronos_glcts_support:khronos_glcts_test",
      "//jingle:jingle_unittests",
      "//net:hpack_example_generator",
      "//ppapi:ppapi_unittests",
      "//ppapi/examples/2d",
      "//ppapi/examples/audio",
      "//ppapi/examples/audio_input",
      "//ppapi/examples/compositor",
      "//ppapi/examples/crxfs",
      "//ppapi/examples/enumerate_devices",
      "//ppapi/examples/file_chooser",
      "//ppapi/examples/flash_topmost",
      "//ppapi/examples/font",
      "//ppapi/examples/gamepad",
      "//ppapi/examples/gles2",
      "//ppapi/examples/gles2_spinning_cube",
      "//ppapi/examples/ime",
      "//ppapi/examples/input",
      "//ppapi/examples/media_stream_audio",
      "//ppapi/examples/media_stream_video",
      "//ppapi/examples/mouse_cursor",
      "//ppapi/examples/mouse_lock",
      "//ppapi/examples/printing",
      "//ppapi/examples/scaling",
      "//ppapi/examples/scripting",
      "//ppapi/examples/stub",
      "//ppapi/examples/threading",
      "//ppapi/examples/url_loader",
      "//ppapi/examples/video_capture",
      "//ppapi/examples/video_decode",
      "//ppapi/examples/video_effects",
      "//ppapi/examples/video_encode",
      "//printing:printing_unittests",
      "//third_party/cacheinvalidation:cacheinvalidation_unittests",
      "//third_party/pdfium/samples:pdfium_test",
      "//third_party/webrtc/tools:frame_analyzer",
      "//tools/battor_agent",
      "//tools/battor_agent:battor_agent_unittests",
      "//tools/gn",
      "//tools/gn:gn_unittests",
      "//tools/perf/clear_system_cache",
      "//ui/accessibility:accessibility_unittests",
      "//ui/accessibility/extensions",
    ]
  }

  if (!is_ios) {
    # TODO(GYP): Figure out which of these should actually build on iOS,
    # and whether there should be other targets that are iOS-only and missing.
    deps += [
      "//cc:cc_unittests",
      "//chrome/test:telemetry_perf_unittests",
      "//chrome/test:unit_tests",
      "//components:components_browsertests",
      "//components/policy:policy_templates",
      "//content/shell:content_shell",
      "//content/test:content_browsertests",
      "//content/test:content_perftests",
      "//content/test:content_unittests",
      "//device:device_unittests",
      "//gpu:gpu_unittests",
      "//gpu/ipc/service:gpu_ipc_service_unittests",
      "//ipc:ipc_tests",
      "//media:media_unittests",
      "//media/capture:capture_unittests",
      "//media/cast:cast_unittests",
      "//media/midi:midi_unittests",
      "//mojo",
      "//mojo/common:mojo_common_unittests",
      "//mojo/edk/system:mojo_system_unittests",
      "//mojo/edk/test:mojo_public_bindings_unittests",
      "//mojo/edk/test:mojo_public_system_unittests",
      "//net:net_perftests",
      "//services/service_manager/public/cpp",
      "//storage//browser:storage_unittests",
      "//third_party/WebKit/Source/platform:blink_platform_unittests",
      "//third_party/WebKit/Source/platform/heap:blink_heap_unittests",
      "//third_party/WebKit/Source/web:webkit_unit_tests",
      "//third_party/WebKit/Source/wtf:wtf_unittests",
      "//third_party/angle/src/tests:angle_end2end_tests",
      "//third_party/angle/src/tests:angle_unittests",
      "//third_party/angle/src/tests:angle_white_box_tests",
      "//third_party/catapult/telemetry:bitmaptools($host_toolchain)",
      "//third_party/smhasher:pmurhash",
      "//tools/imagediff($host_toolchain)",
      "//ui/display:display_unittests",
      "//ui/events:events_unittests",
      "//ui/gl:gl_unittests",
      "//ui/touch_selection:ui_touch_selection_unittests",
      "//url/ipc:url_ipc_unittests",
    ]
  } else {
    deps += [ "//ios:all" ]
  }

  deps += root_extra_deps

  if (enable_extensions) {
    deps += [ "//extensions/shell:app_shell_unittests" ]
  }

  if (enable_media_router) {
    deps += [ "//chrome/browser/media/router" ]
  }

  if (enable_remoting) {
    deps += [ "//remoting:remoting_all" ]
  }

  if (toolkit_views) {
    deps += [
      "//ui/views:views_unittests",
      "//ui/views/examples:views_examples_exe",
      "//ui/views/examples:views_examples_with_content_exe",
    ]
  }

  if (use_ash) {
    deps += [
      "//ash:ash_content_unittests",
      "//ash:ash_shell_with_content",
      "//ash:ash_unittests",
    ]
  }

  if (use_aura) {
    deps += [
      "//ui/aura:aura_unittests",
      "//ui/aura:demo",
      "//ui/wm:wm_unittests",
    ]
  }

  if (use_ozone) {
    deps += [
      "//ui/ozone",
      "//ui/ozone:ozone_unittests",
      "//ui/ozone/gl:ozone_gl_unittests",
    ]
  }

  if (use_x11 || ozone_platform_x11) {
    deps += [ "//tools/xdisplaycheck" ]
  }

  if (is_win) {
    deps += [
      "//chrome/installer/gcapi",
      "//chrome/tools/build/win/syzygy:chrome_dll_syzygy",
    ]
  }

  if (is_android) {
    deps += [
      "//base:base_junit_tests",
      "//base/android/linker:chromium_android_linker",
      "//build/android/gyp/test:hello_world",
      "//chrome/android/webapk/shell_apk:webapk",
      "//components/invalidation/impl:components_invalidation_impl_junit_tests",
      "//components/policy/android:components_policy_junit_tests",
      "//content/public/android:content_junit_tests",
      "//content/shell/android:content_shell_apk",
      "//media/gpu:video_decode_accelerator_unittest",
      "//net/android:net_junit_tests",
      "//testing/android/junit:junit_unit_tests",
      "//third_party/android_async_task:android_async_task_java",
      "//third_party/errorprone:chromium_errorprone",
      "//third_party/smhasher:murmurhash3",
      "//tools/android:android_tools",
      "//tools/android:memconsumer",
      "//tools/android:push_apps_to_background",
      "//tools/android/audio_focus_grabber:audio_focus_grabber_apk",
      "//tools/android/customtabs_benchmark:customtabs_benchmark_apk",
      "//tools/android/kerberos/SpnegoAuthenticator:spnego_authenticator_apk",
      "//tools/cygprofile:cygprofile_unittests",
      "//ui/android:ui_junit_tests",
    ]
    deps -= [
      "//net:net_perftests",
      "//url:url_unittests",
    ]

    if (!is_component_build) {
      deps += [
        "//components/cronet/android:cronet_package",
        "//components/cronet/android:cronet_perf_test_apk",
        "//components/cronet/android:cronet_sample_apk",
        "//components/cronet/android:cronet_sample_test_apk",
        "//components/cronet/android:cronet_test_apk",
        "//components/cronet/android:cronet_test_instrumentation_apk",
        "//components/cronet/android:cronet_unittests",
      ]
    }

    if (!is_chromecast) {
      deps += [
        "//android_webview",
        "//android_webview/test",
        "//android_webview/tools/automated_ui_tests:webview_ui_test_app",
        "//android_webview/tools/system_webview_shell",
        "//chrome/android:chrome_junit_tests",
        "//chrome/android:chrome_public_apk",
        "//chrome/android:chrome_public_test_apk",
        "//chrome/android:chrome_sync_shell_test_apk",
        "//chrome/test/chromedriver/test/webview_shell:chromedriver_webview_shell_apk",
        "//content/shell/android:content_shell_test_apk",
        "//third_party/custom_tabs_client:custom_tabs_client_example_apk",
      ]
    }

    if (target_cpu != "x64") {
      deps += [
        "//content/shell/android:chromium_linker_test_apk",
        "//third_party/android_platform:android_relocation_packer_unittests($host_toolchain)",
      ]
    }

    if (enable_chrome_android_internal) {
      deps += [ "//clank" ]
    }
  }

  if (is_linux || is_android) {
    deps += [
      "//breakpad:breakpad_unittests",
      "//breakpad:core-2-minidump",
      "//breakpad:generate_test_dump",
      "//breakpad:minidump-2-core",
    ]
  }

  if (is_chromeos) {
    deps += [
      "//chromeos:chromeos_unittests",
      "//chromeos/components:chromeos_components_unittests",
      "//components/session_manager/core",
      "//ui/app_list:app_list_unittests",
      "//ui/app_list/presenter:app_list_presenter_unittests",
      "//ui/arc:ui_arc_unittests",
      "//ui/chromeos:ui_chromeos_unittests",
    ]
  }

  if (is_chromeos || is_mac || is_win) {
    deps += [
      "//rlz:rlz_id",
      "//rlz:rlz_lib",
      "//rlz:rlz_unittests",
    ]
  }

  if (is_linux) {
    # The following are definitely linux-only.
    deps += [
      "//chrome:manpage",
      "//chrome:xdg_mime",
      "//net:disk_cache_memory_test",
      "//net:quic_client",
      "//net:quic_server",
      "//sandbox/linux:chrome_sandbox",
      "//sandbox/linux:sandbox_linux_unittests",
    ]

    if (use_dbus) {
      deps += [
        "//dbus:dbus_test_server",
        "//dbus:dbus_unittests",
      ]
    }

    if (is_chrome_branded && is_official_build) {
      # TODO(dpranke): add the linux_dump_symbols flag?
      deps += [ "//chrome:linux_symbols" ]
    }
  }

  if (is_ios || is_win || (is_linux && !is_chromeos)) {
    deps += [
      "//base:base_i18n_perftests",
      "//base:base_perftests",
      "//google_apis:google_apis_unittests",
    ]
  }

  if ((is_win || is_mac || is_linux) &&
      (target_cpu == "x86" || target_cpu == "x64")) {
    deps += [ "//third_party/swiftshader" ]
  }

  # TODO(GYP): Figure out which of these should (and can) build
  # for chromeos/ios.
  if (!is_chromeos && !is_ios) {
    deps += [
      "//base:build_utf8_validator_tables",
      "//base:check_example",
      "//cc:cc_perftests",
      "//cc/blink:cc_blink_unittests",
      "//components:components_perftests",
      "//components/sync:run_sync_testserver",
      "//device:device_unittests",
      "//gin:gin_shell",
      "//gin:gin_unittests",
      "//google_apis/gcm:mcs_probe",
      "//gpu:gl_tests",
      "//gpu:gpu_perftests",
      "//ipc:ipc_perftests",
      "//media:media_perftests",
      "//net:dump_cache",
      "//third_party/libphonenumber:libphonenumber_unittests",
      "//ui/compositor:compositor_unittests",
    ]

    if (!is_android) {
      deps += [
        "//chrome/test:load_library_perf_tests",
        "//chrome/test:sync_performance_tests",
        "//chrome/test/chromedriver:chromedriver",
        "//chrome/test/chromedriver:chromedriver_tests",
        "//courgette:courgette",
        "//courgette:courgette_fuzz",
        "//courgette:courgette_minimal_tool",
        "//courgette:courgette_unittests",
        "//media/cast:generate_barcode_video",
        "//media/cast:generate_timecode_audio",
        "//net:crash_cache",
        "//net:crl_set_dump",
        "//net:dns_fuzz_stub",
        "//net:gdig",
        "//net:get_server_time",
        "//net:net_watcher",  # TODO(GYP): This should be conditional on use_v8_in_net
        "//net:run_testserver",
        "//net:stress_cache",
        "//net:tld_cleanup",
        "//ppapi:pepper_hash_for_uma",
        "//ppapi:ppapi_perftests",
        "//third_party/leveldatabase:env_chromium_unittests",
        "//third_party/libaddressinput:libaddressinput_unittests",
      ]
    }

    if (enable_extensions) {
      deps += [ "//extensions/shell:app_shell" ]
    }

    if (enable_nacl) {
      deps += [ "//components/nacl/loader:nacl_loader_unittests" ]

      if (is_linux) {
        # TODO(dpranke): Figure out what platforms should actually have this.
        deps += [ "//components/nacl/loader:nacl_helper" ]

        if (enable_nacl_nonsfi) {
          deps += [
            "//components/nacl/loader:helper_nonsfi",
            "//components/nacl/loader:nacl_helper_nonsfi_unittests",
          ]
        }
      }
    }

    if (media_use_ffmpeg && !is_android) {
      deps += [ "//media:ffmpeg_regression_tests" ]
    }
  }

  if (is_android || (is_linux && !is_chromeos)) {
    deps += [
      "//breakpad:dump_syms($host_toolchain)",
      "//breakpad:microdump_stackwalk($host_toolchain)",
      "//breakpad:minidump_dump($host_toolchain)",
      "//breakpad:minidump_stackwalk($host_toolchain)",
      "//components/network_hints/browser",
      "//content/public/app:browser",
      "//content/public/app:child",
      "//mojo/edk/test:mojo_public_system_perftests",
      "//services/service_manager/public/cpp",
      "//testing/gmock:gmock_main",
    ]

    if (!is_android) {
      deps += [
        "//chrome/test:chrome_app_unittests",
        "//gpu/khronos_glcts_support:khronos_glcts_test",
        "//media/cast:cast_benchmarks",
        "//media/cast:tap_proxy",
        "//skia:filter_fuzz_stub",
        "//skia:image_operations_bench",
        "//third_party/sqlite:sqlite_shell",
        "//ui/keyboard:keyboard_unittests",
        "//ui/message_center:message_center_unittests",
        "//ui/snapshot:snapshot_unittests",
      ]

      if (!is_debug && !is_component_build) {
        deps += [ "//chrome/tools/service_discovery_sniffer" ]
      }
    }

    if (use_x11) {
      if (target_cpu != "arm") {
        deps += [ "//gpu/tools/compositor_model_bench" ]
      }
    }
  }

  if (is_mac) {
    deps += [
      "//breakpad:crash_inspector",
      "//breakpad:dump_syms",

      # XPC service is in developement and guarded against the
      # enable_xpc_notifications, in the meantime however we still
      # need compile coverage in the bots.
      "//chrome/browser/ui/cocoa/notifications:alert_notification_xpc_service",
      "//third_party/apple_sample_code",
      "//third_party/molokocacao",
    ]
    deps -= [
      # Mojo in GN contains some things which are never compiled in GYP on Mac,
      # so compilation fails on Mac. They need porting.
      "//mojo",
    ]
  }

  if (is_win) {
    deps += [
      "//base:pe_image_test",
      "//chrome/install_static:install_static_unittests",
      "//chrome/installer/setup:setup_unittests",
      "//chrome_elf:chrome_elf_unittests",
      "//chrome_elf:dll_hash_main",
      "//cloud_print:cloud_print_unittests",
      "//components/wifi:wifi_test",
      "//net:quic_client",
      "//net:quic_server",
      "//sandbox/win:pocdll",
      "//sandbox/win:sandbox_poc",
      "//sandbox/win:sbox_integration_tests",
      "//sandbox/win:sbox_unittests",
      "//sandbox/win:sbox_validation_tests",
      "//testing/gtest:gtest_main",
      "//third_party/pdfium/samples:pdfium_diff",
      "//third_party/tcmalloc:addr2line-pdb",
      "//tools/win/chromeexts:chromeexts",
    ]
    deps -= [
      "//crypto:crypto_unittests",  # TODO(GYP)
      "//net:net_unittests",  # TODO(GYP)
    ]

    if (!(is_component_build && is_debug && target_cpu == "x86")) {
      deps +=
          [ "//chrome/installer/mini_installer:next_version_mini_installer" ]
    }
  } else if (!is_android && !is_ios) {
    deps += [ "//breakpad:symupload($host_toolchain)" ]
  }

  if (is_chromecast) {
    deps += [ "//chromecast:cast_shell" ]
  }

  if (is_mac || is_win) {
    deps += [
      "//third_party/crashpad/crashpad/handler:crashpad_handler",
      "//third_party/crashpad/crashpad/tools:crashpad_database_util",
    ]
  }

  if (use_openh264) {
    deps += [
      "//third_party/openh264:common",
      "//third_party/openh264:encoder",
      "//third_party/openh264:processing",
    ]
  }

  if (!is_ios) {
    deps += [
      "//media/mojo:media_mojo_unittests",
      "//services:service_unittests",
    ]
  }

  if (!is_android && !is_ios) {
    deps += [ "//content/browser/bluetooth/tools:bluetooth_metrics_hash" ]
  }

  if (!is_android && !is_ios && !is_chromeos) {
    deps += [ "//components/proximity_auth:proximity_auth_unittests" ]
  }

  if (is_win || is_linux) {
    deps += [
      "//mash:all",
      "//media/mojo/services:media_service_unittests",
      "//mojo",
      "//services/navigation",
      "//services/preferences:tests",
      "//services/ui/demo",
      "//services/ui/demo:mus_demo_unittests",
      "//services/ui/public/interfaces:ui_struct_traits_unittests",
      "//services/ui/ws:tests",
      "//ui/views/mus:views_mus_interactive_ui_tests",
      "//ui/views/mus:views_mus_unittests",
    ]

    # crbug.com/676055: media_service_unittests fails to link under Windows
    # component builds, due to duplicate symbol definitions.
    if (is_win && is_component_build) {
      deps -= [ "//media/mojo/services:media_service_unittests" ]
    }

    if (use_ozone && is_chromeos) {
      deps += [ "//services/ui/display:display_service_unittests" ]
    }
  }

  if (is_linux && !is_chromeos && !is_chromecast) {
    # TODO(GYP): Figure out if any of these should be in gn_all
    # and figure out how cross-platform they are
    deps += [
      ":gn_mojo_targets",
      "//chrome/installer/util:strings",
      "//chrome/tools/convert_dict",
      "//components/constrained_window:unit_tests",
      "//components/filesystem:filesystem_service_unittests",
      "//components/leveldb:leveldb_service_unittests",
      "//components/metrics:serialization",
      "//components/password_manager/content/renderer:browser_tests",
      "//components/rappor:unit_tests",
      "//components/sessions:unit_tests",
      "//media/blink:media_blink_unittests",
      "//media/cast:udp_proxy",
      "//storage/browser:dump_file_system",
      "//third_party/angle:libANGLE",
      "//third_party/angle:libEGL",
      "//third_party/angle:libGLESv2",
      "//third_party/leveldatabase:leveldb_test_targets",
      "//third_party/libjpeg_turbo:simd",
      "//third_party/opus:opus_compare",
      "//third_party/opus:opus_demo",
      "//third_party/opus:test_opus_api",
      "//third_party/opus:test_opus_decode",
      "//third_party/opus:test_opus_encode",
      "//third_party/opus:test_opus_padding",
      "//third_party/pdfium/third_party:fx_freetype",
      "//third_party/webrtc/system_wrappers:field_trial_default",
      "//third_party/webrtc/system_wrappers:metrics_default",
      "//ui/display/types",
      "//ui/shell_dialogs:shell_dialogs_unittests",
    ]

    if (enable_nacl) {
      deps += [ "//native_client/src/trusted/debug_stub:gdb_rsp_unittest" ]
    }

    if (target_cpu == "x86" || target_cpu == "x64") {
      if (!is_android) {
        deps += [ "//chrome/test:load_library_perf_tests" ]
      }
      deps += [
        "//native_client/src/trusted/platform_qualify:vcpuid",
        "//third_party/libjpeg_turbo:simd_asm",
      ]
    }
    if (is_linux && current_toolchain == host_toolchain) {
      deps += [ "//v8:v8_shell" ]
    }
  }

  if (use_ozone) {
    deps += [ "//ui/ozone/demo" ]
  }

  if ((is_linux && !is_chromeos && !is_chromecast) || (is_win && use_drfuzz) ||
      (use_libfuzzer && is_mac)) {
    deps += [
      "//testing/libfuzzer/fuzzers",
      "//testing/libfuzzer/tests:libfuzzer_tests",
      "//third_party/icu/fuzzers",
    ]

    # TODO(miu): Remove this dependency once the build configuration in
    # chrome/browser/BUILD.gn is migrated to chrome/browser/media/BUILD.gn.
    # This dependency here only exists to allow GN to discover the
    # fuzzer_test target there.
    deps += [ "//chrome/browser/media:cast_remoting_connector_fuzzer" ]
  }

  if (enable_nacl) {
    deps += [ "//native_client_sdk/src:nacl_core_sdk" ]
  }

  if (is_android) {
    deps += [ "//build/android/gyp/test:hello_world" ]
  }

  if (is_linux && use_ozone) {
    deps += [
      "//headless",
      "//headless:headless_tests",
    ]
  }

  if (!is_ios) {
    deps += [ "//v8:gn_all" ]
  }
}

# TODO(GYP_GONE): This target exists for compatibility with GYP, specifically
# for the iOS bots and the official builders.
group("All") {
  testonly = true

  deps = [
    ":gn_all",
  ]
}

# TODO(GYP_GONE): This target exists for compatibility with GYP for the
# builders that specify targets in the recipes directly.
# Ideally it should not exist, and the builders should be specifying
# more specific targets (or 'All') via the source-side
# //testing/buildbot/*.json files. We should simply delete this target
# and update any recipes that are using it.
group("chromium_builder_tests") {
  testonly = true
  deps = []
}

# TODO(GYP_GONE): Figure out if we really need this target or if there's
# some better way to specify things.
if (is_win) {
  group("chrome_official_builder_no_unittests") {
    deps = [
      "//base/win:eventlog_provider",
      "//chrome/installer/gcapi",
      "//chrome/installer/mini_installer",
      "//cloud_print",
      "//cloud_print/virtual_driver/win/port_monitor:copy_gcp_portmon_binaries",
      "//components/policy:pack_policy_templates",
      "//courgette",
      "//courgette:copy_courgette_binaries",
      "//remoting/webapp",
    ]

    if (target_cpu == "x86") {
      if (is_clang) {
        deps += [ "//courgette(//build/toolchain/win:clang_x64)" ]
      } else {
        deps += [ "//courgette(//build/toolchain/win:x64)" ]
      }
    }
    if (is_chrome_branded) {
      deps += [ "//remoting/host:remoting_host_installation" ]
    }
  }

  group("chrome_official_builder") {
    testonly = true

    deps = [
      ":chrome_official_builder_no_unittests",
      "//base:base_unittests",
      "//chrome/test:browser_tests",
      "//chrome/test:sync_integration_tests",
      "//ipc:ipc_tests",
      "//media:media_unittests",
      "//media/midi:midi_unittests",
      "//net:net_unittests",
      "//printing:printing_unittests",
      "//sql:sql_unittests",
      "//ui/base:ui_base_unittests",
      "//ui/gfx:gfx_unittests",
      "//ui/touch_selection:ui_touch_selection_unittests",
      "//ui/views:views_unittests",
      "//url:url_unittests",
    ]
  }

  group("All_syzygy") {
    if (is_syzyasan) {
      deps = [
        "//chrome/installer/mini_installer:mini_installer",
        "//chrome/installer/mini_installer:mini_installer_syzygy",
      ]
    }
  }

  if (is_syzyasan) {
    group("chrome_official_syzyasan_builder") {
      deps = [
        ":All_syzygy",
        ":chrome_official_builder_no_unittests",
      ]
    }
  }
}

if (is_chromeos) {
  group("chromiumos_preflight") {
    testonly = true
    deps = [
      "//breakpad:minidump_stackwalk($host_toolchain)",
      "//chrome",
      "//chrome/test/chromedriver",
      "//media:media_unittests",
      "//media/gpu:video_decode_accelerator_unittest",
      "//media/gpu:video_encode_accelerator_unittest",
      "//ppapi/examples/video_decode",
      "//sandbox/linux:chrome_sandbox",
      "//sandbox/linux:sandbox_linux_unittests",

      # Blocked on https://github.com/catapult-project/catapult/issues/2297
      #"//third_party/catapult/telemetry:bitmaptools",
      "//tools/perf/clear_system_cache",
    ]
  }
}

group("gn_mojo_targets") {
  testonly = true
  if (is_linux && !is_chromeos) {
    # TODO(GYP): Figure out if any of these should be in gn_all
    # and figure out how cross-platform they are
    deps = [
      "//ipc:ipc_tests",
      "//mojo:tests",
      "//services:service_unittests",
    ]
  }
}

group("gn_visibility") {
  deps = [
    "//build/config/sanitizers:options_sources",
    # "//third_party/pdfium:pdfium_embeddertests",  # TODO(GYP): visibility?
    # "//third_party/pdfium:pdfium_unittests",  # TODO(GYP): visibility?
  ]

  if (!is_ios) {
    deps += [
      "//v8:postmortem-metadata",
      "//v8:v8_snapshot",
    ]
  }
}

if (!is_ios) {
  # This group includes all of the targets needed to build and test Blink,
  # including running the layout tests (see below).
  group("blink_tests") {
    testonly = true

    deps = [
      ":webkit_layout_tests",
      "//third_party/WebKit/public:all_blink",
    ]
  }

  # Layout tests runner
  # third_party/WebKit/Tools/Scripts/run-webkit-tests
  group("run_webkit_tests") {
    testonly = true
    deps = [
      ":webkit_layout_tests",
    ]
  }

  # https://www.chromium.org/developers/testing/webkit-layout-tests

  # The _exparchive at the end of the name indicates to the isolate recipe
  # that the isolate should be archived separately using the `exparchive`
  # command, rather than as part of the normal `batcharchive` command.
  group("webkit_layout_tests_exparchive") {
    testonly = true
    deps = [
      ":webkit_layout_tests",
    ]
    data_deps = [
      ":webkit_layout_tests",
    ]
  }

  # This target contains only a small subset of the layout tests,
  # and is useful for testing with the regular isolate mechanism.
  # To run the full layout test suite you need to use
  # :webkit_layout_tests_exparchive, above, instead.
  group("webkit_layout_tests") {
    testonly = true
    data_deps = [
      "//content/shell:content_shell",
      "//mojo/public/interfaces/bindings/tests:test_interfaces",
      "//third_party/WebKit/public:blink_devtools_frontend_resources_files",
      "//third_party/mesa:osmesa",
      "//tools/imagediff",
    ]

    if (is_android) {
      data_deps += [
        "//breakpad:breakpad_unittests",
        "//breakpad:dump_syms",
        "//breakpad:microdump_stackwalk",
        "//breakpad:minidump_dump",
        "//breakpad:minidump_stackwalk",
        "//breakpad:symupload",
        "//tools/android/forwarder2",
      ]
    }

    if (is_win) {
      data_deps += [ "//content/shell:content_shell_crash_service" ]
    }

    if (!is_win && !is_android) {
      data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
    }

    if (is_mac) {
      data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
    }

    if (is_linux) {
      data_deps += [ "//breakpad:dump_syms($host_toolchain)" ]
    }

    data = [
      "$root_build_dir/resources/inspector/",
      "//testing/scripts/common.py",
      "//testing/scripts/run_isolated_script_test.py",
      "//testing/xvfb.py",
      "//third_party/WebKit/LayoutTests/",
      "//third_party/WebKit/PerformanceTests/",
      "//third_party/WebKit/Tools/Scripts/",
    ]

    if (is_win) {
      data += [ "//third_party/apache-win32/" ]
    }

    if (is_android) {
      data += [
        "//third_party/catapult/",
        "//build/android/",
      ]
    }
  }
}

# Add a dummy target for compatibility w/ GYP
group("chromium_swarm_tests") {
}

group("chromium_builder_perf") {
  testonly = true

  if (!is_ios && !is_android && !is_chromecast) {
    data_deps = [
      "//cc:cc_perftests",
      "//chrome/test:load_library_perf_tests",
      "//chrome/test:telemetry_perf_tests",
      "//components/tracing:tracing_perftests",
      "//gpu:gpu_perftests",
      "//media:media_perftests",
      "//tools/perf/chrome_telemetry_build:telemetry_chrome_test",
    ]

    if (!is_chromeos) {
      data_deps += [ "//chrome/test:performance_browser_tests" ]
    }
    if (is_linux && !is_chromeos) {
      if (is_official_build) {
        # In GN builds, this is controlled by the 'linux_dump_symbols'
        # flag, which defaults to 1 for official builds. For now,
        # we skip the separate flag and just key off of is_official_build.
        data_deps += [ "//chrome:linux_symbols" ]
      }

      data_deps += [ "//tools/perf/clear_system_cache" ]
    }

    if (is_win) {
      data_deps += [
        "//chrome/installer/mini_installer:mini_installer",
        "//chrome/test:angle_perftests",
      ]
    } else {
      data_deps += [ "//breakpad:minidump_stackwalk($host_toolchain)" ]
    }
  }
}

if (!is_ios && !is_android && !is_chromecast) {
  group("chromium_builder_asan") {
    testonly = true

    deps = [
      "//chrome:chrome",
      "//content/shell:content_shell",
      "//v8:d8",
    ]
    if (!is_win) {
      deps += [
        "//net:dns_fuzz_stub",
        "//skia:filter_fuzz_stub",
      ]
    }
    if (enable_ipc_fuzzer && !is_component_build) {
      deps += [ "//tools/ipc_fuzzer:ipc_fuzzer_all" ]
    }
    if (!is_chromeos) {
      deps += [
        "//third_party/pdfium/samples:pdfium_test",
        "//v8:v8_shell($v8_snapshot_toolchain)",
      ]
    }
    if (is_win && symbol_level == 2 && target_cpu == "x86" && is_syzyasan) {
      deps += [
        "//chrome/tools/build/win/syzygy:chrome_dll_syzygy",
        "//content/shell:content_shell_syzyasan",
      ]
    }
  }
}

# For compatibility with GYP. The linux_chromium_chromeos_rel_ng and
# linux_chromium_chromeos_compile_rel_ng bots reference this target as
# something to build, but all targets for those bots to compile are set
# up differently.
# TODO bug 601920: Remove reference to aura_builder on bot config and delete
# this group.
group("aura_builder") {
}

if (is_android) {
  group("optimize_gn_gen") {
    deps = [
      # These run expensive scripts in non-default toolchains. Generally, host
      # toolchain targets are loaded in the later part of the run, and the
      # result is they push out the end of generation. By preloading these, the
      # scripts can be parallelized with the rest of the load.
      "//build/config/linux(//build/toolchain/linux:clang_x64)",
      "//build/config/posix(//build/toolchain/linux:clang_x64)",

      # Include x86 toolchains as well since V8 uses them for 32-bit snapshot
      # generation.
      "//build/config/linux(//build/toolchain/linux:clang_x86)",
      "//build/config/posix(//build/toolchain/linux:clang_x86)",
    ]
  }
}

# Because of the source assignment filter, many targets end up over-filtering
# their sources if the output directory contains a platform name. Assert that
# this doesn't happen. http://crbug.com/548283
template("assert_valid_out_dir") {
  # List copied from //build/config/BUILDCONFIG.gn.
  set_sources_assignment_filter([
                                  "*\bandroid/*",
                                  "*\bchromeos/*",
                                  "*\bcocoa/*",
                                  "*\bios/*",
                                  "*\blinux/*",
                                  "*\bmac/*",
                                  "*\bposix/*",
                                  "*\bwin/*",
                                ])
  assert(target_name != "")  # Mark as used.
  sources = invoker.actual_sources
  assert(
      sources == invoker.actual_sources,
      "Do not use a platform name in your output directory (found \"$root_build_dir\"). http://crbug.com/548283")
}

assert_valid_out_dir("_unused") {
  actual_sources = [ "$root_build_dir/foo" ]
}
