| # Copyright 2020 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. |
| |
| # The list of all valid variant tag strings that can appear inside a |
| # variant definition scope, or in `exclude_variant_tags` target or toolchain |
| # fields. |
| # |
| # Tags are used to specify various properties of a variant, and allows some |
| # filtering to happen during variant toolchain selection, or directly inside |
| # a target's build rules by looking at `toolchain_variant.variant_tags`. |
| # |
| all_variant_tags = [ |
| # The `instrumented` tag is used for variants that generate instrumented |
| # machine code (e.g. profiling and sanitizers). As a special case, if this |
| # tag is listed by a variant descriptor, the global |
| # toolchain_variant.instrumented flag will be set to true in the |
| # context of the corresponding variant toolchain. |
| "instrumented", |
| |
| # The `instrumentation-runtime` tag is used for instrumented variants that |
| # also require linking a specific instrumentation runtime to linkable |
| # binaries. Note that any variant that has this tag should also have |
| # the `instrumented` tag as well. |
| "instrumentation-runtime", |
| |
| # The `asan` tag is used for variants that implement address-sanitizers. |
| # These should always list `instrumented` and `instrumentation-runtime` |
| # as well. |
| "asan", |
| |
| # The `hwasan` tag is used for variants that use Hardware-assisted AddressSanitizer. |
| "hwasan", |
| |
| # The `tsan` tag is used for variants that implement thread-sanitizers. |
| # These should always list `instrumented` and `instrumentation-runtime` |
| # as well. |
| "tsan", |
| |
| # The `ubsan` tag is used for variants that implement undefined-behaviour |
| # sanitizers. These should always list 'instrumented' as well. |
| "ubsan", |
| |
| # The `sancov` tag is used for variants that implement code coverage |
| # collection. |
| "sancov", |
| |
| # The `replaces-allocator` tag is used for instrumentation runtimes that |
| # provide alternative implementations of the standard C/C++ memory allocation |
| # APIs. |
| "replaces-allocator", |
| |
| # The `lsan` tag is used for variants that implement leak checking. |
| "lsan", |
| |
| # The `fuzzer` tag is used for variants that implement fuzzers only. |
| "fuzzer", |
| |
| # The `gcc` tag is used for variants that use GCC instead of Clang to |
| # build C/C++ binaries. This should only be used for Zircon specific |
| # toolchains. |
| "gcc", |
| |
| # The `profile` tag is used for profile instrumentation. |
| "profile", |
| |
| # The `coverage` tag is used for coverage instrumentation. |
| "coverage", |
| |
| # The `llvm-profdata` tag is used for all instrumentation that emits the |
| # `llvm-profdata` format. |
| "llvm-profdata", |
| |
| # The `lto` tag is used for LTO and ThinLTO. |
| "lto", |
| |
| # The 'kernel-excluded' and 'kernel-only' tags are used to indicate |
| # that a given variant should never be applied to the kernel toolchains, |
| # or should only be applied to them respectively. Note that these are |
| # treated specially by toolchain_variant_suite(), based on the |
| # presence of the 'kernel' tag in the toolchain suite's tags. |
| "kernel-excluded", |
| "kernel-only", |
| ] |