# 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}" } } }