| # Copyright (c) 2016, 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. |
| |
| # This build rule will copy the source for one Dart SDK library. |
| # |
| # Required arguments: |
| # sdk_lib_name |
| # The name of a Dart SDK library. |
| # |
| # Optional arguments: |
| # destination |
| # Base path to copy sources. Default value is "$root_gen_dir/dart_sdk". |
| # |
| # dart_root |
| # Path to the Dart SDK source root. Default value is "//dart". |
| # |
| # The sources will be copied into $root_gen_dir/dart_sdk/$sdk_lib_name/. |
| # |
| template("dart_sdk_lib_copy") { |
| assert(defined(invoker.sdk_lib_name)) |
| if (defined(invoker.dart_root)) { |
| dart_root = rebase_path(invoker.dart_root) |
| } else { |
| dart_root = rebase_path("//dart") |
| } |
| if (defined(invoker.destination)) { |
| destination = invoker.destination |
| } else { |
| destination = "$root_gen_dir/dart_sdk" |
| } |
| dart_sdk_sdk_lib_path = |
| rebase_path("sdk/lib", "", dart_root) |
| dart_sdk_tools_gypi_to_gn_path = |
| rebase_path("tools/gypi_to_gn.py", "", dart_root) |
| # The name of the SDK library being copied. |
| lib_name = invoker.sdk_lib_name |
| # The path to the libraries source directory. |
| lib_path = rebase_path(lib_name, "", dart_sdk_sdk_lib_path) |
| # The path to the sources gypi. |
| lib_sources_gypi = lib_name + "_sources.gypi" |
| # Get the contents of the gypi file. |
| sdk_lib_sources_gypi = |
| exec_script(dart_sdk_tools_gypi_to_gn_path, |
| [rebase_path(lib_sources_gypi, "", lib_path)], |
| "scope", |
| [rebase_path(lib_sources_gypi, "", lib_path)]) |
| copy(target_name) { |
| sources = rebase_path(sdk_lib_sources_gypi.sources, "", lib_path) |
| outputs = [ "$destination/$lib_name/{{source_file_part}}" ] |
| } |
| } |