blob: 0aa80f87006278ef5d0e36325686390cda860cd2 [file] [log] [blame]
# 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}}" ]
}
}