| # 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_action.gni") |
| import("../build/dart_host_sdk_toolchain.gni") |
| import("../build/prebuilt_dart_sdk.gni") |
| |
| _dart_root = get_path_info("..", "abspath") |
| |
| # Template to generate a patched_sdk folder. |
| # |
| # This template expects four arguments: |
| # - mode: vm or dart2js (whether to build an sdk for the vm or for dart2js) |
| # - input_patches_dir: directory containing the input library files. |
| # - patched_sdk_dir: the output location |
| # - deps: extra dependencies that must be built ahead of time. |
| template("generate_patched_sdk") { |
| assert(defined(invoker.input_patches_dir), |
| "Need input_patches_dir in $target_name") |
| assert(defined(invoker.patched_sdk_dir), |
| "Need patched_sdk_dir in $target_name") |
| assert(defined(invoker.mode), "Need mode in $target_name") |
| |
| dart_action(target_name) { |
| forward_variables_from(invoker, [ |
| "deps", |
| ]) |
| |
| depfile = "$root_out_dir/${target_name}_patched_sdk.d" |
| |
| script = "$_dart_root/tools/patch_sdk.dart" |
| |
| if (defined(invoker.outputs)) { |
| outputs = invoker.outputs |
| } else { |
| outputs = [ |
| # Instead of listing all outputs we list those consumed by |
| # other BUILD rules. |
| "$root_out_dir/${invoker.patched_sdk_dir}/platform.dill", |
| "$root_out_dir/${invoker.patched_sdk_dir}/outline.dill", |
| ] |
| } |
| |
| args = [ |
| invoker.mode, |
| rebase_path("$_dart_root/sdk"), |
| rebase_path(invoker.input_patches_dir), |
| rebase_path("$root_out_dir/${invoker.patched_sdk_dir}", root_build_dir), |
| rebase_path("$_dart_root/.packages"), |
| ] |
| } |
| } |