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

  # Used by the EFI toolchain used to build the Gigaboot bootloader.
  "efi",

  # 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",
]
