# 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_host_sdk_toolchain.gni") import("../build/dart/prebuilt_dart_sdk.gni") _is_fuchsia = defined(is_fuchsia_tree) && is_fuchsia_tree if (_is_fuchsia) { import("//build/dart/dart.gni") } _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") # In order to automatically compute dependencies, we need to add a dependency # on vm_outline.dill. This is used to include the source code of Fasta itself # in the dependency file. Without this, a change to Fasta wouldn't cause the # platform dill files to be rebuilt. However, when building # vm_outline_strong.dill, we shouldn't list it as a dependency as this would # lead to cyclic dependencies. add_implicit_vm_platform_dependency = true if (defined(invoker.add_implicit_vm_platform_dependency)) { add_implicit_vm_platform_dependency = invoker.add_implicit_vm_platform_dependency } action(target_name) { script = "$_dart_root/tools/compile_platform.py" outputs = invoker.outputs inputs = [] deps = [] args = [] if (defined(invoker.deps)) { deps += invoker.deps } if (defined(invoker.inputs)) { inputs += invoker.inputs } if (add_implicit_vm_platform_dependency) { inputs += [ "$root_out_dir/vm_outline_strong.dill" ] deps += [ "$_dart_root/runtime/vm:vm_platform" ] } depfile = outputs[0] + ".d" if (_is_fuchsia) { args += [ "--dart-executable", rebase_path(prebuilt_dart), ] } else if (!prebuilt_dart_exe_works) { deps += [ "$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)" ] dart_out_dir = get_label_info( "$_dart_root/runtime/bin:dart_bootstrap($dart_host_toolchain)", "root_out_dir") args += [ "--dart-executable", rebase_path("$dart_out_dir/dart_bootstrap$executable_suffix"), ] } 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 += [ rebase_path("$root_out_dir/vm_outline_strong.dill", root_build_dir) ] args += rebase_path(outputs, root_build_dir) } }