|  | # Copyright (c) 2016, the Dart project authors.  Please see the AUTHORS file | 
|  | # for details. All rights reserved. Use of this source code is governed by a | 
|  | # BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import("build/config/gclient_args.gni") | 
|  | import("sdk_args.gni") | 
|  |  | 
|  | targeting_fuchsia = target_os == "fuchsia" | 
|  |  | 
|  | # This target will be built if no target is specified when invoking ninja. | 
|  | group("default") { | 
|  | if (targeting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ ":runtime" ] | 
|  | } | 
|  |  | 
|  | group("most") { | 
|  | import("runtime/runtime_args.gni") | 
|  | if (targeting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | ":analysis_server", | 
|  | ":create_sdk", | 
|  | ":dart2js", | 
|  | ":dartanalyzer", | 
|  | ":ddc", | 
|  | ":runtime", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("runtime") { | 
|  | import("runtime/runtime_args.gni") | 
|  |  | 
|  | if (targeting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  |  | 
|  | deps = [ | 
|  | "runtime/bin:dart", | 
|  | "runtime/bin:ffi_test_dynamic_library", | 
|  | "runtime/bin:ffi_test_functions", | 
|  | "runtime/bin:process_test", | 
|  | "runtime/bin:run_vm_tests", | 
|  | "runtime/vm:kernel_platform_files($host_toolchain)", | 
|  | "samples/ffi/http:fake_http", | 
|  | "utils/dartdev:dartdev", | 
|  | "utils/kernel-service:kernel-service", | 
|  | ] | 
|  | if (!is_win) { | 
|  | # The test isn't run on windows | 
|  | deps += [ "runtime/bin:entrypoints_verification_test" ] | 
|  | } | 
|  |  | 
|  | # This flag is set in runtime/runtime_args.gni | 
|  | # The analyze_snapshot tool is only supported on 64 bit AOT builds running | 
|  | # under linux and android platforms | 
|  | if (build_analyze_snapshot) { | 
|  | deps += [ | 
|  | # The `analyze_snapshot` tests require the `analyze_snapshot` as well as | 
|  | # `gen_snapshot` binaries. | 
|  | "runtime/bin:analyze_snapshot", | 
|  | "runtime/bin:analyze_snapshot($host_toolchain)", | 
|  | "runtime/bin:gen_snapshot", | 
|  | "runtime/bin:gen_snapshot($host_toolchain)", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_linux || is_android) { | 
|  | deps += [ "runtime/bin:abstract_socket_test" ] | 
|  | } else if (is_fuchsia) { | 
|  | deps += [ ":fuchsia_test_package" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # A separate target and not included in group("runtime"). This way the target\ | 
|  | # "runtime" does not get many executables extra as build output. | 
|  | group("run_ffi_unit_tests") { | 
|  | deps = [ "runtime/bin/ffi_unit_test:run_ffi_unit_tests" ] | 
|  | } | 
|  |  | 
|  | group("runtime_precompiled") { | 
|  | deps = [ | 
|  | "runtime/bin:dart_precompiled_runtime", | 
|  | "runtime/bin:process_test", | 
|  | ] | 
|  | if (is_linux || is_android) { | 
|  | deps += [ "runtime/bin:abstract_socket_test" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | group("create_sdk") { | 
|  | public_deps = [ "sdk:create_sdk" ] | 
|  | } | 
|  |  | 
|  | group("create_platform_sdk") { | 
|  | public_deps = [ "sdk:create_platform_sdk" ] | 
|  | } | 
|  |  | 
|  | group("dart2js") { | 
|  | deps = [ "utils/compiler:dart2js" ] | 
|  | } | 
|  |  | 
|  | group("dart2wasm_platform") { | 
|  | deps = [ | 
|  | ":runtime_precompiled", | 
|  | "utils/dart2wasm:compile_dart2wasm_js_compatibility_platform", | 
|  | "utils/dart2wasm:compile_dart2wasm_platform", | 
|  | "utils/dart2wasm:dart2wasm_snapshot", | 
|  | ] | 
|  | if (defined(is_product)) { | 
|  | if (is_product) { | 
|  | deps += [ "utils/dart2wasm:dart2wasm_product_snapshot" ] | 
|  | } else { | 
|  | deps += [ "utils/dart2wasm:dart2wasm_asserts_snapshot" ] | 
|  | } | 
|  | } | 
|  | } | 
|  |  | 
|  | group("dart2wasm") { | 
|  | deps = [ | 
|  | ":dart2wasm_platform", | 
|  | "utils/dart2wasm:test_wasm_modules", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dart2wasm_benchmark") { | 
|  | deps = [ | 
|  | ":dart2wasm_platform", | 
|  | "third_party/binaryen:wasm-opt", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dartanalyzer") { | 
|  | deps = [ "utils/dartanalyzer" ] | 
|  | } | 
|  |  | 
|  | group("ddc") { | 
|  | deps = [ "utils/ddc:dartdevc" ] | 
|  | } | 
|  |  | 
|  | group("analysis_server") { | 
|  | deps = [ "utils/analysis_server" ] | 
|  | } | 
|  |  | 
|  | # This is the target that is built on the dart2js build bots. | 
|  | # It must depend on anything that is required by the dart2js | 
|  | # test suites. | 
|  | group("dart2js_bot") { | 
|  | deps = [ ":create_sdk" ] | 
|  | } | 
|  |  | 
|  | # This rule and the compressed_observatory_archive rule are for the Fuchsia | 
|  | # bots that pre-build the Observatory. They copy the observatory tar files to | 
|  | # the root build output directory for convenient access by the Fuchsia buildbot | 
|  | # scripts. | 
|  | group("observatory_archive") { | 
|  | deps = [ "runtime/observatory:copy_observatory_archive" ] | 
|  | } | 
|  |  | 
|  | group("compressed_observatory_archive") { | 
|  | deps = [ "runtime/observatory:copy_compressed_observatory_archive" ] | 
|  | } | 
|  |  | 
|  | if (is_fuchsia) { | 
|  | import("third_party/fuchsia/gn-sdk/src/component.gni") | 
|  | import("third_party/fuchsia/gn-sdk/src/package.gni") | 
|  |  | 
|  | test_binaries = [ | 
|  | "dart", | 
|  | "dart_precompiled_runtime", | 
|  | "run_vm_tests", | 
|  | ] | 
|  |  | 
|  | foreach(binary, test_binaries) { | 
|  | fuchsia_component("${binary}_test_component") { | 
|  | testonly = true | 
|  | manifest = "runtime/bin/${binary}_test_component.cml" | 
|  | data_deps = [ | 
|  | "runtime/bin:${binary}", | 
|  | "runtime/bin:ffi_test_dynamic_library", | 
|  | "runtime/bin:ffi_test_functions", | 
|  | ] | 
|  | library_files = [ | 
|  | "libffi_test_dynamic_library.so", | 
|  | "libffi_test_functions.so", | 
|  | ] | 
|  | resource_files = [ | 
|  | ".dart_tool/package_config.json", | 
|  | "tools/addlatexhash.dart", | 
|  | ] | 
|  | resource_dirs = [ | 
|  | "pkg/async_helper", | 
|  | "pkg/expect", | 
|  | "pkg/meta", | 
|  | "tests/ffi", | 
|  | "third_party/pkg/native/pkgs/ffi", | 
|  | "third_party/pkg/path", | 
|  | ] | 
|  | resources = [] | 
|  | foreach(file, library_files) { | 
|  | resources += [ | 
|  | { | 
|  | path = root_out_dir + "/" + file | 
|  | dest = "lib/" + file | 
|  | }, | 
|  | ] | 
|  | } | 
|  | foreach(file, resource_files) { | 
|  | resources += [ | 
|  | { | 
|  | path = file | 
|  | dest = "data/" + file | 
|  | }, | 
|  | ] | 
|  | } | 
|  | resources += | 
|  | exec_script("tools/fuchsia/find_resources.py", resource_dirs, "json") | 
|  | } | 
|  | } | 
|  |  | 
|  | fuchsia_package("fuchsia_test_package") { | 
|  | testonly = true | 
|  | if (is_debug) { | 
|  | package_name = "dart_test_debug" | 
|  | } else if (is_release) { | 
|  | package_name = "dart_test_release" | 
|  | } else if (is_product) { | 
|  | package_name = "dart_test_product" | 
|  | } | 
|  | deps = [] | 
|  | foreach(binary, test_binaries) { | 
|  | deps += [ ":${binary}_test_component" ] | 
|  | } | 
|  | } | 
|  | } |