|  | # 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/dart_host_toolchain.gni") | 
|  |  | 
|  | # This target will be built if no target is specified when invoking ninja. | 
|  | group("default") { | 
|  | if (is_fuchsia || is_fuchsia_host) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | ":runtime", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("most") { | 
|  | if (is_fuchsia || is_fuchsia_host) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | ":analysis_server", | 
|  | ":create_sdk", | 
|  | ":dart2js", | 
|  | ":dartanalyzer", | 
|  | ":dartdevc", | 
|  | ":runtime", | 
|  | ":samples", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("runtime") { | 
|  | if (is_fuchsia || is_fuchsia_host) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | "runtime/bin:dart", | 
|  | "runtime/bin:dart_bootstrap($dart_host_toolchain)", | 
|  | "runtime/bin:process_test", | 
|  | "runtime/bin:run_vm_tests", | 
|  | "runtime/bin:sample_extension", | 
|  | "runtime/bin:test_extension", | 
|  | "runtime/vm:patched_sdk", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("runtime_kernel") { | 
|  | if (is_fuchsia || is_fuchsia_host) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | ":runtime", | 
|  |  | 
|  | # TODO(rmacnak): Link this into 'dart'. | 
|  | "utils/kernel-service:kernel-service", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("runtime_precompiled") { | 
|  | deps = [ | 
|  | "runtime/bin:dart_bootstrap($dart_host_toolchain)", | 
|  | "runtime/bin:dart_precompiled_runtime", | 
|  | "runtime/bin:process_test", | 
|  | "runtime/vm:patched_sdk", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("create_sdk") { | 
|  | deps = [ | 
|  | "sdk:create_sdk", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dart2js") { | 
|  | deps = [ | 
|  | "utils/compiler:dart2js", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dartanalyzer") { | 
|  | deps = [ | 
|  | "utils/dartanalyzer", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dartdevc") { | 
|  | deps = [ | 
|  | "utils/dartdevc", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("dartfmt") { | 
|  | deps = [ | 
|  | "utils/dartfmt", | 
|  | ] | 
|  | } | 
|  |  | 
|  | 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", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("samples") { | 
|  | deps = [ | 
|  | "runtime/bin:sample_extension", | 
|  | ] | 
|  | } | 
|  |  | 
|  | # The rules below build a Fuchsia OS image that includes the Dart tree | 
|  | # under /system/test/dart. | 
|  | if (is_fuchsia) { | 
|  | action("generate_dart_test_manifest") { | 
|  | testonly = true | 
|  |  | 
|  | deps = [ | 
|  | "//packages/gn:mkbootfs", | 
|  | ] | 
|  |  | 
|  | output_prefix = "$target_gen_dir/dart_test_tree" | 
|  | outputs = [ | 
|  | "$output_prefix.manifest", | 
|  | ] | 
|  |  | 
|  | mode = "release" | 
|  | if (is_debug) { | 
|  | mode = "debug" | 
|  | } | 
|  |  | 
|  | mkbootfs_gen = get_label_info("//packages/gn:mkbootfs", "target_gen_dir") | 
|  | system_manifest = "$mkbootfs_gen/system.bootfs.manifest" | 
|  |  | 
|  | script = "tools/gen_fuchsia_test_manifest.py" | 
|  | args = [ | 
|  | "-m", | 
|  | mode, | 
|  | "-u", | 
|  | rebase_path(system_manifest), | 
|  | "-o", | 
|  | rebase_path(output_prefix), | 
|  | ] | 
|  | } | 
|  |  | 
|  | action("generate_dart_test_image") { | 
|  | testonly = true | 
|  | deps = [ | 
|  | ":generate_dart_test_manifest", | 
|  | "runtime/bin:dart", | 
|  | "runtime/bin:process_test", | 
|  | "runtime/bin:run_vm_tests", | 
|  | ] | 
|  |  | 
|  | mkbootfs_gen = get_label_info("//packages/gn:mkbootfs", "target_gen_dir") | 
|  | boot_manifest = "$mkbootfs_gen/boot.bootfs.manifest" | 
|  |  | 
|  | # Compute path to magenta bootdata.bin | 
|  | if (current_cpu == "arm64") { | 
|  | magenta_bootdata = | 
|  | "//out/build-magenta/build-magenta-qemu-arm64/bootdata.bin" | 
|  | } else if (current_cpu == "x64") { | 
|  | magenta_bootdata = | 
|  | "//out/build-magenta/build-magenta-pc-x86-64/bootdata.bin" | 
|  | } else { | 
|  | assert(false, "unable to determine path to magenta's bootdata.bin") | 
|  | } | 
|  |  | 
|  | packages_file = "$mkbootfs_gen/packages" | 
|  |  | 
|  | input = "$target_gen_dir/dart_test_tree.manifest" | 
|  | inputs = [ | 
|  | magenta_bootdata, | 
|  | input, | 
|  | ] | 
|  |  | 
|  | output = "$root_out_dir/dart_test_tree.bin" | 
|  | outputs = [ | 
|  | output, | 
|  | ] | 
|  |  | 
|  | script = "//packages/gn/make_bootfs.py" | 
|  | args = [ | 
|  | "--boot-manifest", | 
|  | rebase_path(boot_manifest), | 
|  | "--system-manifest", | 
|  | rebase_path(input), | 
|  | "--output-file", | 
|  | rebase_path(output), | 
|  | "--build-id-map", | 
|  | rebase_path("$target_gen_dir/build_id_map"), | 
|  | "--pre-binaries", | 
|  | rebase_path(magenta_bootdata), | 
|  | ] | 
|  | args += read_file(packages_file, "list lines") | 
|  | } | 
|  | } |