| # 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("../sdk_args.gni") | |
| _dart_root = get_path_info("..", "abspath") | |
| _is_dart = _dart_root == get_path_info("//", "abspath") | |
| template("compile_platform") { | |
| assert(defined(invoker.libraries_specification_uri), | |
| "Need 'libraries_specification_uri' in $target_name") | |
| assert(defined(invoker.outputs), "Need 'outputs' in $target_name") | |
| assert(defined(invoker.args), "Need 'args' in $target_name") | |
| if (defined(invoker.single_root_scheme)) { | |
| assert(defined(invoker.single_root_base), | |
| "Need 'single_root_base' in $target_name") | |
| } | |
| if (defined(invoker.single_root_base)) { | |
| assert(defined(invoker.single_root_scheme), | |
| "Need 'single_root_scheme' in $target_name") | |
| } | |
| assert(!defined(invoker.script), "Remove 'script' from $target_name") | |
| assert(!defined(invoker.depfile), "Remove 'depfile' from $target_name") | |
| action(target_name) { | |
| mnemonic = "COMPILE_PLATFORM" | |
| 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)" | |
| } | |
| outputs = invoker.outputs | |
| depfile = outputs[0] + ".d" | |
| compile_platform_tool = | |
| "$_dart_root/utils:bootstrap_compile_platform.exe($host_toolchain)" | |
| compile_platform_exe = | |
| get_label_info(compile_platform_tool, "root_out_dir") + | |
| "/bootstrap_compile_platform.exe" | |
| deps = [ compile_platform_tool ] | |
| if (defined(invoker.deps)) { | |
| deps += invoker.deps | |
| } | |
| inputs = [ compile_platform_exe ] | |
| if (defined(invoker.inputs)) { | |
| inputs += invoker.inputs | |
| } | |
| script = "$_dart_root/build/gn_run_binary.py" | |
| args = [ rebase_path(compile_platform_exe, root_build_dir) ] | |
| args += invoker.args | |
| if (defined(invoker.single_root_scheme)) { | |
| args += [ "--single-root-scheme=" + invoker.single_root_scheme ] | |
| } | |
| if (defined(invoker.single_root_base)) { | |
| args += [ "--single-root-base=" + invoker.single_root_base ] | |
| } | |
| if (defined(invoker.single_root_scheme)) { | |
| args += [ invoker.libraries_specification_uri ] | |
| } else { | |
| args += | |
| [ rebase_path(invoker.libraries_specification_uri, root_build_dir) ] | |
| } | |
| args += [ "unused-vm-platform.dill" ] | |
| args += rebase_path(outputs, root_build_dir) | |
| } | |
| } |