| # 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") | 
 |  | 
 | 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 | 
 |   } | 
 |  | 
 |   outline = "vm_outline_strong.dill" | 
 |   if (defined(invoker.outline)) { | 
 |     outline = invoker.outline | 
 |   } | 
 |  | 
 |   prebuilt_dart_action(target_name) { | 
 |     if (defined(invoker.pool)) { | 
 |       pool = invoker.pool | 
 |     } | 
 |     script = "$_dart_root/pkg/front_end/tool/_fasta/compile_platform.dart" | 
 |  | 
 |     packages = "$_dart_root/.dart_tool/package_config.json" | 
 |  | 
 |     outputs = invoker.outputs | 
 |  | 
 |     vm_args = [ "-Dsdk_hash=$sdk_hash" ] | 
 |  | 
 |     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/$outline" ] | 
 |       deps += [ "$_dart_root/runtime/vm:vm_platform" ] | 
 |     } | 
 |     depfile = outputs[0] + ".d" | 
 |  | 
 |     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/$outline", root_build_dir) ] | 
 |     args += rebase_path(outputs, root_build_dir) | 
 |   } | 
 | } |