# 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.

import("//build/toolchain/variant_tags.gni")

# The list of all valid toolchain tag strings that can appear inside a
# `tags` definition when calling variant_toolchain_suite(). Note that the
# `toolchain_variant.tags` value will contain both the tags from the
# base toolchain, and those from the corresponding variant descriptor, if any.
#
# Tags are used to specify various properties of a toolchain, and allows some
# filtering to happen during variant toolchain selection, or directly inside
# a target's build rules by looking at `toolchain_variant.tags`.
#
all_toolchain_tags = all_variant_tags
all_toolchain_tags += [
  # This tag is used for toolchains that are only used to build parts of the
  # Zircon kernel. Generally this means there is no C standard library. Some
  # Zircon targets affect their build settings based on the presence of this
  # tag.
  "kernel",

  # This indicates the toolchain targets UEFI.
  "efi",

  # This indicates a toolchain does not provide the Fuchsia Compiler ABI.
  "no-compiler-abi",

  # This indicates a toolchain offers no floating point support.
  "no-floating-point",

  # This tag is used by Zircon toolchains that generate static PIE executable
  # binaries.
  "static-pie",

  # This tag is used by Zircon toolchains that generate code that assumes that
  # unaligned access will crash the system.
  "strict-align",

  # This tag is used by Zircon toolchain that generate code that doesn't link
  # to any system runtime (e.g. the C library).
  "standalone",

  # This tag is used by Zircon toolchains that enables the 'tiny' code
  # generation model (i.e. the program and its statically defined symbols must
  # be within 1 GiB).
  "tiny",
]
