| # 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) |
| } |
| } |