| # 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") | |
| _is_dart = _dart_root == get_path_info("//", "abspath") | |
| if (dart_dynamic_modules) { | |
| _kernel_service_script = "pkg/dart2bytecode/bin/kernel_service.dart" | |
| } else { | |
| _kernel_service_script = "pkg/vm/bin/kernel_service.dart" | |
| } | |
| 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 = "../../$_kernel_service_script" | |
| training_args = [ | |
| "--train", | |
| rebase_path("../../$_kernel_service_script", root_build_dir), | |
| ] | |
| 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.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" | |
| } | |
| aot_snapshot("frontend_server_aot_product") { | |
| main_dart = "../../pkg/frontend_server/bin/frontend_server_starter.dart" | |
| name = "frontend_server_aot_product" | |
| output = "$root_out_dir/frontend_server_aot_product.dart.snapshot" | |
| # dartaotruntime in the dart sdk has dart_product_config applied to it, | |
| # so it is built in product mode in both release and | |
| # product sdks, and is 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") { | |
| action("kernel_service" + target_name + "_dill") { | |
| if (defined(invoker.pool)) { | |
| pool = invoker.pool | |
| } else if (_is_dart) { | |
| pool = "//build/toolchain:local_action_pool($host_toolchain)" | |
| } else { | |
| pool = "$_dart_root/build/dart:dart_action_pool($default_toolchain)" | |
| } | |
| gen_kernel_tool = | |
| "$_dart_root/utils:bootstrap_gen_kernel.exe($host_toolchain)" | |
| kernel_service_script = "../../$_kernel_service_script" | |
| deps = [ | |
| "../../runtime/vm:vm_platform", | |
| gen_kernel_tool, | |
| ] | |
| inputs = [ | |
| kernel_service_script, | |
| "$root_out_dir/vm_platform.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-gnroot" | |
| script = "$_dart_root/build/gn_run_binary.py" | |
| args = [ rebase_path(get_label_info(gen_kernel_tool, "root_out_dir") + | |
| "/bootstrap_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 + ":///" + | |
| rebase_path("../../.dart_tool/package_config.json", "//"), | |
| "--platform=" + | |
| rebase_path("$root_out_dir/vm_platform.dill", root_build_dir), | |
| "--filesystem-root=" + rebase_path("//", root_build_dir), | |
| "--filesystem-scheme=" + scheme, | |
| "--no-aot", | |
| "--no-embed-sources", | |
| "--output=" + rebase_path(output, root_build_dir), | |
| scheme + ":///" + rebase_path(kernel_service_script, "//"), | |
| ] | |
| } | |
| } | |
| kernel_service_dill("") { | |
| extra_args = [] | |
| } |