| # 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. |
| |
| default_dart_root = rebase_path("../..") |
| |
| # 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 "../..". |
| # |
| # 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 = default_dart_root |
| } |
| 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}}", |
| ] |
| } |
| } |