# 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") if (precompile_tools) { 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) } } else { prebuilt_dart_action(target_name) { mnemonic = "COMPILE_PLATFORM" if (defined(invoker.pool)) { pool = invoker.pool } compile_platform_tool = "$_dart_root/utils:bootstrap_compile_platform.dill($host_toolchain)" script = get_label_info(compile_platform_tool, "target_out_dir") + "/bootstrap_compile_platform.dill" outputs = invoker.outputs depfile = outputs[0] + ".d" vm_args = [ "-Dsdk_hash=$sdk_hash" ] deps = [ compile_platform_tool ] if (defined(invoker.deps)) { deps += invoker.deps } inputs = [] if (defined(invoker.inputs)) { inputs += invoker.inputs } 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) } } }