Index: sdk/lib/rules.gni |
diff --git a/sdk/lib/rules.gni b/sdk/lib/rules.gni |
new file mode 100644 |
index 0000000000000000000000000000000000000000..93ade221871799e2642368200853891a869bf6a3 |
--- /dev/null |
+++ b/sdk/lib/rules.gni |
@@ -0,0 +1,44 @@ |
+# 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: |
+# dart_root |
+# Path to the Dart SDK source root. Default value is "//dart". |
+# |
+# The sources will be copied into $root_gen_dir/dart_sdk_libs/$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") |
+ } |
+ 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 = [ "$root_gen_dir/dart_sdk_libs/$lib_name/{{source_file_part}}" ] |
+ } |
+} |