| # Copyright 2017 The Fuchsia Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Template to define a config for use in the `known_variants` list. |
| # `variant` is used just like `config`, but it also accepts two other |
| # optional parameters: |
| # |
| # common_flags |
| # This is a shorthand for appending the same thing to cflags, |
| # asmflags, and ldflags. Most flags that affect code generation |
| # should be used uniformly in compilation, assembly, and linking. |
| # If cflags, asmflags, or ldflags is also specified, common_flags |
| # will be appended to it. |
| # |
| # deps |
| # This lists labels that will be automatically added to the deps list |
| # of each executable target built in this variant. |
| # |
| template("variant") { |
| config(target_name) { |
| asmflags = [] |
| cflags = [] |
| ldflags = [] |
| forward_variables_from(invoker, |
| "*", |
| [ |
| "common_flags", |
| "deps", |
| ]) |
| if (defined(invoker.common_flags)) { |
| asmflags += invoker.common_flags |
| cflags += invoker.common_flags |
| ldflags += invoker.common_flags |
| } |
| } |
| group("${target_name}_deps") { |
| # Propagate it as public_deps so that targets in deps can have |
| # public_configs that will be applied to variant executables. |
| if (defined(invoker.deps)) { |
| public_deps = invoker.deps |
| } |
| } |
| } |