|  | # 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") | 
|  |  | 
|  | targetting_fuchsia = target_os == "fuchsia" | 
|  |  | 
|  | # This target will be built if no target is specified when invoking ninja. | 
|  | group("default") { | 
|  | if (targetting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ ":runtime" ] | 
|  | } | 
|  |  | 
|  | group("most") { | 
|  | import("runtime/runtime_args.gni") | 
|  | if (targetting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | ":analysis_server", | 
|  | ":create_sdk", | 
|  | ":dart2js", | 
|  | ":dartanalyzer", | 
|  | ":dartdevc", | 
|  | ":runtime", | 
|  | ] | 
|  | } | 
|  |  | 
|  | group("runtime") { | 
|  | import("runtime/runtime_args.gni") | 
|  |  | 
|  | if (targetting_fuchsia) { | 
|  | # Fuchsia has run_vm_tests marked testonly. | 
|  | testonly = true | 
|  | } | 
|  | deps = [ | 
|  | "runtime/bin:dart", | 
|  | "runtime/bin:entrypoints_verification_test", | 
|  | "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)", | 
|  | "utils/kernel-service:kernel-service", | 
|  | ] | 
|  |  | 
|  | # TODO(bkonyi): this dep causes a segfault on Android XARM_X64 builds. | 
|  | # See issue #41776. | 
|  | if (dart_target_arch != "arm") { | 
|  | deps += [ | 
|  | "utils/dartdev:dartdev", | 
|  | "utils/dds:dds", | 
|  | ] | 
|  | } | 
|  |  | 
|  | if (is_linux || is_android) { | 
|  | deps += [ "runtime/bin:abstract_socket_test" ] | 
|  | } | 
|  | } | 
|  |  | 
|  | # 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("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" ] | 
|  | } | 
|  |  | 
|  | # 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/sdk/linux/build/component.gni") | 
|  | import("third_party/fuchsia/sdk/linux/build/package.gni") | 
|  |  | 
|  | template("dart_fuchsia_test_package") { | 
|  | fuchsia_package(target_name) { | 
|  | package_name = invoker.package_name | 
|  | if (is_debug) { | 
|  | package_name += "_debug" | 
|  | } else if (is_release) { | 
|  | package_name += "_release" | 
|  | } else if (is_product) { | 
|  | package_name += "_product" | 
|  | } | 
|  | testonly = true | 
|  | deps = invoker.deps | 
|  | } | 
|  | } | 
|  |  | 
|  | template("dart_fuchsia_test_component") { | 
|  | fuchsia_component(target_name) { | 
|  | testonly = true | 
|  | data_deps = [ "runtime/bin:dart" ] | 
|  | if (defined(invoker.data_deps)) { | 
|  | data_deps += invoker.data_deps | 
|  | } | 
|  | manifest = "build/fuchsia/dart.cmx" | 
|  |  | 
|  | library_files = [] | 
|  | if (defined(invoker.library_files)) { | 
|  | library_files += invoker.library_files | 
|  | } | 
|  | resource_files = [ | 
|  | ".dart_tool/package_config.json", | 
|  | "pkg/testing/test/hello_test.dart", | 
|  | "tools/addlatexhash.dart", | 
|  | ] | 
|  | resource_dirs = invoker.resource_dirs | 
|  |  | 
|  | 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") | 
|  | } | 
|  | } | 
|  |  | 
|  | dart_fuchsia_test_component("fuchsia_test_component") { | 
|  | resource_dirs = [ | 
|  | "tests/standalone_2", | 
|  | "pkg/async_helper", | 
|  | "pkg/expect", | 
|  | "pkg/meta", | 
|  | "pkg/native_stack_traces", | 
|  | "pkg/smith", | 
|  | "third_party/pkg/args", | 
|  | "third_party/pkg/async", | 
|  | "third_party/pkg/charcode", | 
|  | "third_party/pkg/collection", | 
|  | "third_party/pkg/convert", | 
|  | "third_party/pkg/crypto", | 
|  | "third_party/pkg/http", | 
|  | "third_party/pkg/http_parser", | 
|  | "third_party/pkg/path", | 
|  | "third_party/pkg/pool", | 
|  | "third_party/pkg/stack_trace", | 
|  | "third_party/pkg/string_scanner", | 
|  | "third_party/pkg/typed_data", | 
|  | ] | 
|  | } | 
|  |  | 
|  | dart_fuchsia_test_package("fuchsia_test_package") { | 
|  | package_name = "dart_test" | 
|  | deps = [ ":fuchsia_test_component" ] | 
|  | } | 
|  |  | 
|  | dart_fuchsia_test_component("fuchsia_ffi_test_component") { | 
|  | data_deps = [ | 
|  | "runtime/bin:ffi_test_dynamic_library", | 
|  | "runtime/bin:ffi_test_functions", | 
|  | ] | 
|  | library_files = [ | 
|  | "libffi_test_dynamic_library.so", | 
|  | "libffi_test_functions.so", | 
|  | ] | 
|  | resource_dirs = [ | 
|  | "pkg/expect", | 
|  | "pkg/meta", | 
|  | "tests/ffi", | 
|  | "third_party/pkg/ffi", | 
|  | ] | 
|  | } | 
|  |  | 
|  | dart_fuchsia_test_package("fuchsia_ffi_test_package") { | 
|  | package_name = "dart_ffi_test" | 
|  | deps = [ ":fuchsia_ffi_test_component" ] | 
|  | } | 
|  | } |