| # 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", | 
 |     ] | 
 |   } | 
 |  | 
 |   # We do not support AOT on ia32 and should therefore not provide native | 
 |   # snapshot tooling. | 
 |   if (dart_target_arch != "ia32" && dart_target_arch != "x86") { | 
 |     if (dart_runtime_mode == "release") { | 
 |       deps += [ "runtime/bin:analyze_snapshot_product" ] | 
 |     } else { | 
 |       deps += [ "runtime/bin:analyze_snapshot" ] | 
 |     } | 
 |   } | 
 |  | 
 |   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("dart2wasm_platform") { | 
 |   deps = [ | 
 |     ":runtime_precompiled", | 
 |     "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("dartanalyzer") { | 
 |   deps = [ "utils/dartanalyzer" ] | 
 | } | 
 |  | 
 | group("dartdevc") { | 
 |   deps = [ "utils/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/sdk/${host_os}/build/component.gni") | 
 |   import("third_party/fuchsia/sdk/${host_os}/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/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" ] | 
 |   } | 
 | } |