| Index: build/symlink.gni
|
| diff --git a/build/symlink.gni b/build/symlink.gni
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..691128c8d3b6c02a891675fb7b22d416af34183a
|
| --- /dev/null
|
| +++ b/build/symlink.gni
|
| @@ -0,0 +1,68 @@
|
| +# Copyright 2015 The Chromium Authors. All rights reserved.
|
| +# Use of this source code is governed by a BSD-style license that can be
|
| +# found in the LICENSE file.
|
| +
|
| +# Creates a symlink.
|
| +# Args:
|
| +# source: Path to link to.
|
| +# output: Where to create the symlink.
|
| +template("symlink") {
|
| + action(target_name) {
|
| + forward_variables_from(invoker,
|
| + [
|
| + "deps",
|
| + "testonly",
|
| + "visibility",
|
| + ])
|
| + outputs = [
|
| + invoker.output,
|
| + ]
|
| + script = "//build/symlink.py"
|
| + args = [
|
| + "-f",
|
| + rebase_path(invoker.source, get_path_info(invoker.output, "dir")),
|
| + rebase_path(invoker.output, root_build_dir),
|
| + ]
|
| + }
|
| +}
|
| +
|
| +# Creates a symlink from root_build_dir/target_name to |binary_label|. This rule
|
| +# is meant to be used within if (current_toolchain == default_toolchain) blocks
|
| +# and point to targets in the non-default toolchain.
|
| +# Note that for executables, using a copy (as opposed to a symlink) does not
|
| +# work when is_component_build=true, since dependent libraries are found via
|
| +# relative location.
|
| +#
|
| +# Args:
|
| +# binary_label: Target that builds the file to symlink to. e.g.:
|
| +# ":foo($host_toolchain)".
|
| +# output: Where to create the symlink (default="$root_out_dir/$target_name")
|
| +#
|
| +# Example:
|
| +# if (current_toolchain == host_toolchain) {
|
| +# executable("foo") { ... }
|
| +# } else if (current_toolchain == default_toolchain) {
|
| +# binary_symlink("foo") {
|
| +# binary_label = ":foo($host_toolchain)"
|
| +# }
|
| +# }
|
| +template("binary_symlink") {
|
| + symlink(target_name) {
|
| + forward_variables_from(invoker,
|
| + [
|
| + "output",
|
| + "testonly",
|
| + "visibility",
|
| + ])
|
| + deps = [
|
| + invoker.binary_label,
|
| + ]
|
| +
|
| + _out_dir = get_label_info(invoker.binary_label, "root_out_dir")
|
| + source = "$_out_dir/" + get_label_info(invoker.binary_label, "name")
|
| +
|
| + if (!defined(output)) {
|
| + output = "$root_out_dir/${invoker.target_name}"
|
| + }
|
| + }
|
| +}
|
|
|