| # Copyright (c) 2017, 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/dart_action.gni") |
| import("../../runtime/runtime_args.gni") |
| import("../../sdk_args.gni") |
| import("../aot_snapshot.gni") |
| import("../application_snapshot.gni") |
| import("../create_timestamp.gni") |
| |
| _dart_root = get_path_info("../..", "abspath") |
| |
| group("kernel-service") { |
| if (dart_snapshot_kind == "app-jit") { |
| deps = [ ":copy_kernel-service_snapshot" ] |
| } else { |
| deps = [ ":kernel_service_dill" ] |
| } |
| } |
| |
| application_snapshot("kernel-service_snapshot") { |
| main_dart = "../../pkg/vm/bin/kernel_service.dart" |
| training_args = [ |
| "--train", |
| |
| # Force triple-slashes both on Windows and otherwise. |
| # Becomes e.g. file:///full/path/to/file and "file:///C:/full/path/to/file. |
| # Without the ', "/"' part, on Linux it would get four slashes. |
| "file:///" + rebase_path("../../pkg/vm/bin/kernel_service.dart", "/"), |
| ] |
| output = "$root_gen_dir/kernel-service.dart.snapshot" |
| } |
| |
| copy("copy_kernel-service_snapshot") { |
| deps = [ ":kernel-service_snapshot" ] |
| sources = [ "$root_gen_dir/kernel-service.dart.snapshot" ] |
| outputs = [ "$root_out_dir/kernel-service.dart.snapshot" ] |
| } |
| |
| create_timestamp_file("frontend_server_files_stamp") { |
| path = rebase_path("../../pkg/frontend_server/lib") |
| output = "$target_gen_dir/frontend_server_files.stamp" |
| } |
| |
| create_timestamp_file("ddc_files_stamp") { |
| path = rebase_path("../../pkg/dev_compiler/lib") |
| output = "$target_gen_dir/ddc_files.stamp" |
| } |
| |
| application_snapshot("frontend_server") { |
| main_dart = "../../pkg/frontend_server/bin/frontend_server_starter.dart" |
| deps = [ |
| ":ddc_files_stamp", |
| ":frontend_server_files_stamp", |
| "../../runtime/vm:kernel_platform_files($host_toolchain)", |
| ] |
| sdk_root = rebase_path("$root_out_dir") |
| training_args = [ |
| "--train", |
| "--sdk-root=$sdk_root/", |
| "--platform=$sdk_root/vm_platform_strong.dill", |
| rebase_path(main_dart), |
| ] |
| output = "$root_out_dir/frontend_server.dart.snapshot" |
| } |
| |
| aot_snapshot("frontend_server_aot") { |
| main_dart = "../../pkg/frontend_server/bin/frontend_server_starter.dart" |
| name = "frontend_server_aot" |
| output = "$root_out_dir/frontend_server_aot.dart.snapshot" |
| |
| # dartaotruntime has dart_product_config applied to it, so it is built in |
| # product mode in both release and product builds, and is only built in debug |
| # mode in debug builds. The following line ensures that the dartaotruntime and |
| # frontend_server_aot snapshot in an SDK build are always compatible with |
| # each other. |
| force_product_mode = !dart_debug |
| } |
| |
| template("kernel_service_dill") { |
| if (precompile_tools) { |
| action("kernel_service" + target_name + "_dill") { |
| if (defined(invoker.pool)) { |
| pool = invoker.pool |
| } |
| |
| gen_kernel_tool = "//utils:gen_kernel.exe($host_toolchain)" |
| kernel_service_script = "../../pkg/vm/bin/kernel_service.dart" |
| |
| deps = [ |
| "../../runtime/vm:vm_platform", |
| gen_kernel_tool, |
| ] |
| inputs = [ |
| kernel_service_script, |
| "$root_out_dir/vm_platform_strong.dill", |
| ] |
| output = "$root_gen_dir/kernel_service" + invoker.target_name + ".dill" |
| outputs = [ output ] |
| depfile = "$root_gen_dir/kernel_service" + invoker.target_name + "_dill.d" |
| |
| scheme = "org-dartlang-kernel-service" |
| |
| script = "$_dart_root/build/gn_run_binary.py" |
| args = [ |
| "compiled_action", |
| rebase_path( |
| get_label_info(gen_kernel_tool, "root_out_dir") + "/gen_kernel.exe", |
| root_build_dir), |
| ] |
| args += invoker.extra_args |
| args += [ |
| "--depfile=" + rebase_path(depfile, root_build_dir), |
| |
| # Ensure the compiled kernel-service will use this SDK hash when |
| # consuming/producing kernel. |
| "-Dsdk_hash=$sdk_hash", |
| "--packages=" + scheme + ":///.dart_tool/package_config.json", |
| "--platform=" + rebase_path("$root_out_dir/vm_platform_strong.dill", |
| root_build_dir), |
| "--filesystem-root=" + rebase_path("../../"), |
| "--filesystem-scheme=" + scheme, |
| "--no-aot", |
| "--no-embed-sources", |
| "--output=" + rebase_path(output, root_build_dir), |
| scheme + ":///pkg/vm/bin/kernel_service.dart", |
| ] |
| } |
| } else { |
| prebuilt_dart_action("kernel_service" + target_name + "_dill") { |
| deps = [ |
| "../../runtime/vm:kernel_platform_files($host_toolchain)", |
| "../../runtime/vm:vm_platform", |
| ] |
| kernel_service_script = "../../pkg/vm/bin/kernel_service.dart" |
| gen_kernel_script = "../../pkg/vm/bin/gen_kernel.dart" |
| |
| inputs = [ |
| gen_kernel_script, |
| kernel_service_script, |
| "$root_out_dir/vm_platform_strong.dill", |
| ] |
| output = "$root_gen_dir/kernel_service" + invoker.target_name + ".dill" |
| outputs = [ output ] |
| |
| depfile = "$root_gen_dir/kernel_service" + invoker.target_name + "_dill.d" |
| |
| vm_args = [ |
| "--depfile=" + rebase_path(depfile, root_build_dir), |
| "--depfile_output_filename=" + rebase_path(output, root_build_dir), |
| |
| # Ensure gen_kernel.dart will use this SDK hash when consuming/producing |
| # kernel. |
| "-Dsdk_hash=$sdk_hash", |
| ] |
| |
| script = gen_kernel_script |
| scheme = "org-dartlang-kernel-service" |
| |
| args = |
| invoker.extra_args + [ |
| # Ensure the compiled kernel-service will use this SDK hash when |
| # consuming/producing kernel. |
| "-Dsdk_hash=$sdk_hash", |
| |
| "--packages=" + scheme + ":///.dart_tool/package_config.json", |
| "--platform=" + rebase_path("$root_out_dir/vm_platform_strong.dill", |
| root_build_dir), |
| "--filesystem-root=" + rebase_path("../../"), |
| "--filesystem-scheme=" + scheme, |
| "--no-aot", |
| "--no-embed-sources", |
| "--output=" + rebase_path(output, root_build_dir), |
| ] |
| args += [ scheme + ":///pkg/vm/bin/kernel_service.dart" ] |
| } |
| } |
| } |
| |
| kernel_service_dill("") { |
| extra_args = [] |
| } |