# Copyright (c) 2018, 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("compiled_action.gni") import("executable_suffix.gni") import("prebuilt_dart_sdk.gni") _dart_root = get_path_info("..", "abspath") # A template for running Dart scripts during the build. This should *not* be # used for generating snapshots. It uses the dart binary from the prebuilt # Dart SDK if one is available, and dart_bootstrap otherwise. # # Parameters: # script: # The un-rebased path to the Dart script. # # args: # The arguments to pass to the Dart script. # packages (optional): # The un-rebased path to the .packages file. # # Forwarded to action() with the usual meaning: # depfile # deps # inputs # outputs # visibility template("dart_action") { assert(defined(invoker.script), "script must be defined for $target_name") assert(defined(invoker.outputs), "outputs must be defined for $target_name") assert(defined(invoker.args), "args must be defined for $target_name") assert(!defined(invoker.sources), "dart_action doesn't take a sources arg. Use inputs instead.") if (prebuilt_dart_exe_works) { action(target_name) { forward_variables_from(invoker, [ "inputs", "outputs", "deps", "visibility", "depfile", ]) script = "$_dart_root/build/gn_run_binary.py" prebuilt_dart_binary = "$_dart_root/tools/sdks/$host_os/dart-sdk/bin/dart$executable_suffix" inputs += [ invoker.script ] if (defined(invoker.packages)) { inputs += [ invoker.packages ] } args = [ "compiled_action", rebase_path(prebuilt_dart_binary), ] if (defined(invoker.packages)) { args += [ "--packages=" + rebase_path(invoker.packages), ] } args += [ rebase_path(invoker.script) ] + invoker.args } } else { compiled_action(target_name) { forward_variables_from(invoker, [ "inputs", "outputs", "deps", "visibility", "depfile", ]) inputs += [ invoker.script ] if (defined(invoker.packages)) { inputs += [ invoker.packages ] } tool = "runtime/bin:dart_bootstrap" args = [] if (defined(invoker.packages)) { args += [ "--packages=" + rebase_path(invoker.packages), ] } args += [ rebase_path(invoker.script) ] + invoker.args } } }