blob: d34d4fce8ad69b66ae5df50acda24f90396bf6e6 [file] [log] [blame]
# 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",
]