# Copyright 2016 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/config/clang/clang.gni")
import("//build/config/clang/crash_diagnostics.gni")
import("//build/config/clang/time_trace.gni")
import("//build/config/compiler.gni")
import("//build/config/linker.gni")
import("//build/rust/config.gni")
import("//build/toolchain/ccache.gni")
import("//build/toolchain/concurrent_jobs.gni")
import("//build/toolchain/goma.gni")

declare_args() {
  if (is_fuchsia) {
    # Controls whether the compiler emits full stack frames for function calls.
    # This reduces performance but increases the ability to generate good
    # stack traces, especially when we have bugs around unwind table generation.
    # It applies only for Fuchsia targets (see below where it is unset).
    #
    # TODO(fxbug.dev/32216): Theoretically unwind tables should be good enough so we can
    # remove this option when the issues are addressed.
    enable_frame_pointers = is_debug
  }

  # **NOTE:** This is for **experimentation only** and should not normally be
  # changed.  Set the version of the C++ standard to compile for, 17 or 20.
  experimental_cxx_version = 17

  # Controls whether to use the ML inliner in Clang to reduce size.
  clang_ml_inliner = true
}

# No frame pointers for host compiles.
if (!is_fuchsia) {
  enable_frame_pointers = false
}

if (zircon_toolchain != false) {
  import("//build/config/zircon/levels.gni")
  enable_frame_pointers = zx_assert_level > 0
}

config("language") {
  cflags_c = [ "-std=c11" ]
  cflags_cc = [ "-std=c++$experimental_cxx_version" ]
  if (current_os == "mac") {
    # macOS needs this to not complain about C++17isms that older macOS
    # system libc++ doesn't support.  But we use our own toolchain's static
    # libc++ anyway.
    cflags_cc += [ "-faligned-allocation" ]

    # libc++ headers mark some symbols as unavailable on macOS by default
    # because the system libc++ doesn't support them.  But we use our own
    # toolchain's static libc++ anyway.
    defines = [ "_LIBCPP_DISABLE_AVAILABILITY" ]
  }
}

config("color_diagnostics") {
  # GCC correctly defaults this from the terminal, so leave it alone.
  if (!is_gcc) {
    cflags = [ "-fcolor-diagnostics" ]
    asmflags = cflags
    ldflags = cflags

    # The macOS linker does not support `--color-diagnostics`.
    if (current_os != "mac") {
      ldflags += [ "-Wl,--color-diagnostics" ]
    }
  }
}

config("crash-diagnostics-dir") {
  if (!is_gcc && crash_diagnostics_dir != "") {
    cflags = [ "-fcrash-diagnostics-dir=" +
               rebase_path(crash_diagnostics_dir, root_build_dir) ]
    asmflags = cflags
    ldflags = cflags
  }
}

config("time-trace") {
  if (!is_gcc && time_trace) {
    cflags = [ "-ftime-trace" ]
    asmflags = cflags
    ldflags = cflags
  }
}

config("compiler") {
  cflags = []
  cflags_cc = [ "-fvisibility-inlines-hidden" ]
  cflags_objcc = [ "-fvisibility-inlines-hidden" ]
  configs = [
    ":color_diagnostics",
    ":crash-diagnostics-dir",
    "rust:panic_cfg",
    ":time-trace",
    ":toolchain_version_stamp",
  ]

  if (!is_gcc) {
    # TODO(fxbug.dev/92521): Remove this after we address the wlan-hw-sim-test
    # failures with the new Clang ABI.
    cflags += [ "-fclang-abi-compat=13.0" ]

    configs += [
      ":clang_defaults",
      ":ffp_contract",
    ]
  }

  if (current_os == "fuchsia") {
    configs += [ "//build/config/fuchsia:compiler" ]
  } else {
    if (current_os == "linux") {
      configs += [ "//build/config/linux:compiler" ]
    } else if (current_os == "mac") {
      configs += [ "//build/config/mac:compiler" ]
    }
  }

  asmflags = cflags
}

config("cpu_baseline") {
  if (current_cpu == "arm64") {
    configs = [ "//build/config/arm64" ]
  } else if (current_cpu == "x64") {
    configs = [ "//build/config/x64" ]
  }
}

# These flags are enabled by default in Fuchsia's Clang toolchain, but we set
# them explicitly to support other Clang toolchains and Clang-based tools.
config("clang_defaults") {
  if (clang_embed_bitcode) {
    cflags = [
      "-Xclang",
      "-fembed-bitcode=all",
    ]
  }
  if (current_cpu == "x64") {
    asmflags = [ "-Wa,--mrelax-relocations=yes" ]
  }
}

config("ffp_contract") {
  # TODO(fxbug.dev/88681): This was the default for -ffp-model=precise until
  # LLVM revision f04e387055e495e3e14570087d68e93593cf2918 when Clang switched
  # to -ffp-contract=on.
  cflags = [ "-ffp-contract=off" ]
  asmflags = cflags
}

# We want to force a recompile and relink of the world whenever our toolchain
# changes since artifacts from an older version of the toolchain may or may not
# be compatible with newer ones.
#
# To achieve this, we insert an unused flag in the compile line.
config("toolchain_version_stamp") {
  if (clang_prefix == default_clang_prefix) {
    clang_version = read_file(
            "//prebuilt/third_party/clang/${host_platform}/.versions/clang.cipd_version",
            "json")
    defines = [ "TOOLCHAIN_VERSION=${clang_version.instance_id}" ]
  }
  rustflags = [ "--cfg=__rust_toolchain=\"${rustc_version_string}\"" ]
}

config("relative_paths") {
  if (is_gcc) {
    if (use_goma) {
      # TODO(fxbug.dev/27308): `-fdebug-prefix-map` is also used by Goma to canonicalize
      # build commands, allowing it to reuse compilation results for users running
      # out of different working directories. However, it only supports a single
      # "-fdebug-prefix-map" prefix. Attempting to provide more than one causes
      # canonicalization to fail, meaning that builds running out of different
      # directories won't share cache results. For now, we just provide a single
      # debug-prefix-map, even though more would be ideal.

      # Map "/some/dir/fuchsia" to "../..".
      cflags = [ "-fdebug-prefix-map=" + rebase_path("//") + "=" +
                 rebase_path("//", root_build_dir) ]
    } else {
      cflags = [
        # Map "/some/dir/fuchsia/out/my-build.my-arch" to ".".
        "-fdebug-prefix-map=" + rebase_path(root_build_dir) + "=.",

        # Map "/some/dir/fuchsia/out" to "..".
        "-fdebug-prefix-map=" + rebase_path("$root_build_dir/..") + "=..",

        # Map "/some/dir/fuchsia" to "../..".
        "-fdebug-prefix-map=" + rebase_path("//") + "=" +
            rebase_path("//", root_build_dir),
      ]
    }
  } else {
    # Make builds independent of the absolute file path. -ffile-prefix-map= can
    # be used to the same effect, but it requires putting the absolute path to
    # the build directory in the compile command, thus making it dependent on
    # the absolute path of build directory. -ffile-compilation-dir is designed
    # to address this issue, making both debug info and coverage mapping
    # independent of the absolute path of the build directory.
    cflags = [ "-ffile-compilation-dir=." ]
  }

  if (!is_gcc) {
    # This makes sure that include directories in the toolchain are
    # represented as relative to the build directory (because that's how we
    # invoke the compiler), rather than absolute.  This can affect __FILE__
    # expansions (e.g. assertions in system headers).  We normally run a
    # compiler that's someplace within the source tree, so its absolute
    # installation path will have a prefix matching `absolute_path` and
    # hence be mapped to `relative_path` in the debugging information, so
    # this should actually be superfluous for purposes of the debugging
    # information.
    cflags += [ "-no-canonical-prefixes" ]
  }

  asmflags = cflags
  ldflags = cflags

  if (current_os == "win") {
    ldflags += [
      # This embeds just "name.pdb" in the binary instead of the absolute
      # path to the PDB file.
      "-Wl,/pdbaltpath:%_PDB%",

      # This embeds a fake Windows-style absolute path rather than the real
      # build-time absolute path in the PDB file.  Windows apparently
      # requires an absolute path here, so we use an arbitrary fake one for
      # reproducibility.
      "-Wl,/pdbsourcepath:c:\\src",
    ]
  }

  # `-Zremap-cwd-prefix` ensures that absolute paths do not leak into
  # outputs for universal reproducibility while keeping the command line
  # free of absolute paths for remote caching benefit.
  # Available since: https://github.com/rust-lang/rust/pull/87320
  rustflags = [ "-Zremap-cwd-prefix=." ]
}

config("debug") {
  rustflags = [ "-Cdebug-assertions=yes" ]
}

config("release") {
  defines = [ "NDEBUG=1" ]
}

config("exceptions") {
  cflags_cc = [ "-fexceptions" ]
  cflags_objcc = cflags_cc
  ldflags = cflags_cc
}

config("no_exceptions") {
  cflags_cc = [ "-fno-exceptions" ]
  cflags_objcc = cflags_cc
  ldflags = cflags_cc
}

config("rtti") {
  cflags_cc = [ "-frtti" ]
  cflags_objcc = cflags_cc
  ldflags = cflags_cc
}

config("no_rtti") {
  cflags_cc = [ "-fno-rtti" ]
  cflags_objcc = cflags_cc
  ldflags = cflags_cc
}

config("default_include_dirs") {
  include_dirs = [
    "//",
    root_gen_dir,
  ]
}

config("linker_gc") {
  cflags = [
    "-fdata-sections",
    "-ffunction-sections",
  ]
  ldflags = cflags
  if (current_os == "mac") {
    ldflags += [ "-Wl,-dead_strip" ]
  } else if (current_os == "win") {
    ldflags += [ "-Wl,/opt:ref" ]
  } else {
    ldflags += [ "-Wl,--gc-sections" ]
  }
}

config("default_linker_gc") {
  configs = [ ":linker_gc" ]
}

# Implicit dependencies for linker_gc config.
group("linker_gc_deps") {
}

config("linker_string_merging") {
  if (current_os == "win") {
    ldflags = [ "-Wl,/opt:lldtailmerge" ]
  } else if (current_os != "mac") {
    ldflags = [ "-Wl,-O2" ]
  }
}

# Each optimize_$optimize config below corresponds to a single setting that's
# controlled by the optimize argument. The default_optimize level is set to
# optimize_$optimize for convenience, but individual targets can override their
# optimization level by remove default_optimize and manually applying one of
# the configs below.

config("optimize_none") {
  cflags = [ "-O0" ]
  ldflags = cflags
  rustflags = [ "-Copt-level=0" ]
}

config("optimize_debug") {
  cflags = [ "-Og" ]
  ldflags = cflags

  # Rust doesn't recognize opt level "g", the closest is "1".
  # See: https://doc.rust-lang.org/rustc/codegen-options/index.html#opt-level
  rustflags = [ "-Copt-level=1" ]
}

config("optimize_default") {
  cflags = [ "-O2" ]
  ldflags = cflags
  rustflags = [ "-Copt-level=2" ]
}

config("optimize_size") {
  # GCC doesn't have -Oz
  if (!is_gcc && use_oz) {
    cflags = [ "-Oz" ]
  } else {
    # TODO(fxbug.dev/84386): We would ideally be using -Oz by default but that
    # currently frequently results in binaries that are larger than -Oz.
    cflags = [ "-Os" ]
  }
  ldflags = cflags

  if (clang_ml_inliner) {
    cflags += [
      # `release` uses AOT model embedded inside the compiler.
      "-mllvm",
      "-enable-ml-inliner=release",
    ]
  }

  if (use_oz) {
    rustflags = [ "-Copt-level=z" ]
  } else {
    # TODO(fxbug.dev/84386): We would ideally be using -Oz by default but that
    # currently frequently results in binaries that are larger than -Oz.
    rustflags = [ "-Copt-level=s" ]
  }

  configs = [ ":linker_string_merging" ]
}

config("optimize_speed") {
  cflags = [ "-O3" ]
  ldflags = cflags
  rustflags = [ "-Copt-level=3" ]
  configs = [ ":linker_string_merging" ]
}

config("optimize_sanitizer") {
  # Instrumentation adds overhead that is greatly improved by optimization.
  # -O1 is well-tested with the instrumentation modes and does not degrade the
  # comprehensibility of backtraces produced by sanitizer failures.
  cflags = [ "-O1" ]
  ldflags = cflags
  rustflags = [ "-Copt-level=1" ]
}

config("optimize_profile") {
  if (zircon_toolchain != false) {
    # For Zircon artifacts, this must always enable optimizations
    # to ensure userboot.so is compiled with -O2
    # See https://fxbug.dev/67467 for more context.
    configs = [ ":optimize_default" ]
  } else {
    cflags = [ "-O1" ]
    ldflags = cflags
    rustflags = [ "-Copt-level=1" ]
  }
}

config("optimize_coverage") {
  if (zircon_toolchain != false) {
    # For Zircon artifacts, this must always enable optimizations
    # to ensure userboot.so is compiled with -O2
    # See https://fxbug.dev/67467 for more context.
    configs = [ ":optimize_default" ]
  } else {
    cflags = [ "-O1" ]
    ldflags = cflags
    rustflags = [ "-Copt-level=1" ]
  }
}

config("default_optimize") {
  configs = [ ":optimize_${optimize}" ]
}

# Each of the debuginfo_$debuginfo configs below corresponds to a single setting
# that controls the amount of debugging information used and is controlled by
# the debuginfo argument. The default_debuginfo level is set to
# debuginfo_$debuginfo for convenience, but individual targets can override
# their debuginfo level by manually applying one of the configs below.

config("debuginfo_none") {
  cflags = [ "-g0" ]
  if (current_os != "win") {
    asmflags = cflags
  }
  ldflags = cflags
  rustflags = [ "-Cdebuginfo=0" ]
}

config("debuginfo_backtrace") {
  cflags = [ "-g1" ]
  if (current_os != "win") {
    asmflags = cflags
  }
  ldflags = cflags
  rustflags = [ "-Cdebuginfo=1" ]
}

config("debuginfo_debug") {
  cflags = [ "-g3" ]
  if (current_os != "win") {
    asmflags = cflags
  }
  ldflags = cflags
  rustflags = [ "-Cdebuginfo=2" ]
}

config("default_debuginfo") {
  configs = [ ":debuginfo_${debuginfo}" ]
  if (current_os != "win") {
    cflags = [ "-gdwarf-${dwarf_version}" ]
    if (!is_gcc) {
      # This option forces Clang to only emit class type information when
      # constructors are emitted which can significantly reduce debug info
      # size. Eventually, this option will enabled by default in Clang when
      # -fno-standalone-debug is used.
      cflags += [
        "-Xclang",
        "-debug-info-kind=constructor",
      ]
    }
    asmflags = cflags
  } else if (debuginfo != "none" && current_os == "win") {
    # TODO(fxbug.dev/55244): This produces the .pdb file, but it doesn't seem
    # to get the DWARF data out of the main output file.
    ldflags = [ "-Wl,/debug:full" ]
  }
}

config("default_frame_pointers") {
  if (enable_frame_pointers) {
    configs = [ ":frame_pointers" ]
  } else {
    configs = [ ":no_frame_pointers" ]
  }
}

config("frame_pointers") {
  cflags = [ "-fno-omit-frame-pointer" ]
  ldflags = cflags
  rustflags = [ "-Cforce-frame-pointers" ]
  if (zircon_toolchain != false) {
    defines = [ "WITH_FRAME_POINTERS=1" ]
  }
}

group("frame_pointers_deps") {
  # Implicit dependencies for frame_pointers config
}

config("no_frame_pointers") {
  cflags = [ "-fomit-frame-pointer" ]
  ldflags = cflags

  # rustc automatically does this for release builds, and there's no way to
  # force it for non-release.
  if (zircon_toolchain != false) {
    defines = [ "WITH_FRAME_POINTERS=0" ]
  }
}

group("no_frame_pointers_deps") {
  # Implicit dependencies for no_frame_pointers config
}

config("suppress_iterator_warnings") {
  defines = [ "_LIBCPP_DISABLE_DEPRECATION_WARNINGS" ]
  visibility = [
    "//third_party/flatbuffers/*",
    "//third_party/grpc/*",
  ]
}

config("default_warnings") {
  cflags = [
    "-Wall",
    "-Wextra",
    "-Wconversion",
    "-Wextra-semi",
    "-Wimplicit-fallthrough",
    "-Wnewline-eof",
    "-Wstrict-prototypes",
    "-Wwrite-strings",
    "-Wno-sign-conversion",
    "-Wno-unused-parameter",
    "-Wnonportable-system-include-path",
  ]

  if (is_gcc) {
    # GCC is pedantic about which flags apply to which language.
    cflags -= [
      "-Wstrict-prototypes",
      "-Wextra-semi",
    ]
    cflags_c = [ "-Wstrict-prototypes" ]
    cflags_cc = [ "-Wextra-semi" ]

    # GCC doesn't support these flags
    cflags -= [
      "-Wnewline-eof",
      "-Wnonportable-system-include-path",
    ]

    cflags += [
      # TODO(fxbug.dev/64272): Disable "-Wmissing-field-initializers" which
      # warns when designated initializers are used on some (but not all)
      # fields in C++, contrary to its documentation (and Clang).
      #
      # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=39589.
      "-Wno-missing-field-initializers",
    ]
  }
}

config("Wno-reorder-init-list") {
  cflags = [ "-Wno-reorder-init-list" ]
  visibility = [ "//third_party/*" ]
}

# TODO(fxbug.dev/58161): clean up instances of this outside of third party code.
config("Wno-unused-function") {
  cflags = [ "-Wno-unused-function" ]
  visibility = [
    "//src/devices/i2c/drivers/aml-i2c:aml-i2c-driver",
    "//src/devices/i2c/drivers/intel-i2c:intel-i2c-driver",
    "//zircon/third_party/uapp/dash",
    "//zircon/third_party/ulib/musl/ldso",
    "//zircon/third_party/ulib/musl/src/network",
    "//zircon/third_party/ulib/musl/src/time",
  ]
}

config("Wno-range-loop-construct") {
  cflags = [ "-Wno-range-loop-construct" ]
  visibility = [ "//src/developer/debug/third_party/libunwindstack" ]
}

config("Wno-strict-prototypes") {
  cflags = [ "-Wno-strict-prototypes" ]
}

# TODO(fxbug.dev/58162): clean up instances of this outside of third party code.
#
# NOTE: Do not add this to public_configs under any circumstances. Public
# configs are viral and will infect unsuspecting targets.
config("Wno-conversion") {
  cflags = [ "-Wno-conversion" ]

  # To trim this list:
  # $ scripts/gn/trim_visibility.py --target="//build/config:Wno-conversion"
  visibility = [
    "//garnet/lib/debugger_utils:*",
    "//garnet/lib/intel_pt_decode/*",
    "//garnet/lib/perfmon:*",
    "//garnet/lib/profiler:*",
    "//garnet/lib/profiler/tests:*",
    "//garnet/lib/trace_converters:*",
    "//garnet/public/lib/test_runner/cpp:*",
    "//sdk/lib/media/audio/cpp:*",
    "//sdk/lib/media/cpp:*",
    "//sdk/lib/sys/cpp/tests:*",
    "//sdk/lib/sys/service/cpp:*",
    "//sdk/lib/syslog/streams/cpp:*",
    "//sdk/lib/vfs/cpp:*",
    "//sdk/lib/vfs/cpp/testing:*",
    "//src/bringup/bin/ptysvc:*",
    "//src/camera/bin/camera-gym:*",
    "//src/camera/drivers/controller/test:*",
    "//src/camera/drivers/hw_accel/gdc:*",
    "//src/camera/drivers/hw_accel/ge2d:*",
    "//src/camera/drivers/sensors/imx227:*",
    "//src/camera/lib/image_utils:*",
    "//src/camera/lib/virtual_camera:*",
    "//src/cobalt/bin/system-metrics:*",
    "//src/cobalt/bin/testapp:*",
    "//src/connectivity/bluetooth/core/bt-host/gap:*",
    "//src/connectivity/bluetooth/core/bt-host/gatt:*",
    "//src/connectivity/bluetooth/core/bt-host/hci:*",
    "//src/connectivity/bluetooth/core/bt-host/l2cap:*",
    "//src/connectivity/bluetooth/core/bt-host/sdp:*",
    "//src/connectivity/bluetooth/core/bt-host/sm:*",
    "//src/connectivity/bluetooth/core/bt-host/socket:*",
    "//src/connectivity/bluetooth/core/bt-host/testing:*",
    "//src/connectivity/bluetooth/core/bt-host/transport:*",
    "//src/connectivity/bluetooth/hci/emulator:*",
    "//src/connectivity/bluetooth/hci/transport/uart:*",
    "//src/connectivity/bluetooth/hci/vendor/broadcom:*",
    "//src/connectivity/bluetooth/hci/vendor/intel:*",
    "//src/connectivity/bluetooth/tools/bt-hci-tool:*",
    "//src/connectivity/bluetooth/tools/bt-intel-tool:*",
    "//src/connectivity/network/tools/nc/third_party/openbsd-netcat:*",
    "//src/connectivity/openthread/drivers/ot-radio:*",
    "//src/connectivity/openthread/tests/fake-drivers/fake-ot-radio:*",
    "//src/connectivity/telephony/drivers/qmi-fake-transport:*",
    "//src/connectivity/telephony/drivers/qmi-usb-transport:*",
    "//src/connectivity/telephony/tests/driver-unit:*",
    "//src/connectivity/telephony/tests/fake-drivers/at-fake-transport:*",
    "//src/connectivity/telephony/tests/fake-drivers/usb-qmi-function:*",
    "//src/connectivity/wlan/drivers/testing:*",
    "//src/connectivity/wlan/drivers/testing/lib/sim-env:*",
    "//src/connectivity/wlan/drivers/testing/lib/sim-env/test:*",
    "//src/connectivity/wlan/drivers/testing/lib/sim-fake-ap:*",
    "//src/connectivity/wlan/drivers/testing/lib/sim-fake-ap/test:*",
    "//src/connectivity/wlan/drivers/third_party/atheros/ath10k:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/chipset:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/msgbuf:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/msgbuf/test:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/pcie:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/sdio:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/sdio/test:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/sim:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/sim/test:*",
    "//src/connectivity/wlan/drivers/third_party/broadcom/brcmfmac/test:*",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi:*",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/mvm:*",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/pcie:*",
    "//src/connectivity/wlan/drivers/third_party/intel/iwlwifi/platform:*",
    "//src/connectivity/wlan/drivers/wlan:*",
    "//src/connectivity/wlan/drivers/wlanif:*",
    "//src/connectivity/wlan/drivers/wlanif/test:*",
    "//src/connectivity/wlan/drivers/wlanphy:*",
    "//src/connectivity/wlan/lib/common/cpp:*",
    "//src/connectivity/wlan/lib/mlme/cpp:*",
    "//src/connectivity/wlan/lib/mlme/cpp/tests:*",
    "//src/connectivity/wlan/testing/wlantap-driver:*",
    "//src/developer/debug/debug_agent:*",
    "//src/developer/debug/debug_agent/integration_tests:*",
    "//src/developer/debug/third_party/libunwindstack:*",
    "//src/developer/debug/zxdb/client:*",
    "//src/developer/debug/zxdb/console:*",
    "//src/developer/debug/zxdb/debug_adapter:*",
    "//src/developer/debug/zxdb/expr:*",
    "//src/developer/debug/zxdb/symbols:*",
    "//src/developer/ffx/lib/buildid/cpp:*",
    "//src/developer/forensics/exceptions/tests:*",
    "//src/developer/forensics/feedback_data/tests:*",
    "//src/developer/memory/metrics:*",
    "//src/developer/memory/monitor/tests:*",
    "//src/developer/shell/josh/console:*",
    "//src/developer/shell/josh/lib:*",
    "//src/developer/shell/mirror:*",
    "//src/devices/bin/driver_host:*",
    "//src/devices/bin/driver_manager:*",
    "//src/devices/block/bin/gpt:*",
    "//src/devices/block/drivers/ftl:*",
    "//src/devices/block/drivers/ftl/tests:*",
    "//src/devices/block/drivers/nvme:*",
    "//src/devices/board/drivers/x86:*",
    "//src/devices/bus/drivers/pci:*",
    "//src/devices/bus/drivers/pci/test:*",
    "//src/devices/bus/drivers/platform/test:*",
    "//src/devices/bus/lib/virtio:*",
    "//src/devices/cpu/drivers/aml-cpu-legacy:*",
    "//src/devices/i2c/drivers/intel-i2c:*",
    "//src/devices/internal/drivers/fragment:*",
    "//src/devices/lib/amlogic:*",
    "//src/devices/lib/fidl-metadata/test:*",
    "//src/devices/lib/goldfish/pipe_io:*",
    "//src/devices/nand/drivers/intel-spi-flash:*",
    "//src/devices/nand/drivers/ram-nand:*",
    "//src/devices/pci/testing:*",
    "//src/devices/power/drivers/fusb302:*",
    "//src/devices/power/drivers/ti-ina231:*",
    "//src/devices/pwm/drivers/aml-pwm:*",
    "//src/devices/radar/tests/radar-integration-test:*",
    "//src/devices/rtc/drivers/intel-rtc:*",
    "//src/devices/spi/drivers/aml-spi:*",
    "//src/devices/spi/drivers/intel-gspi:*",
    "//src/devices/spi/drivers/spi:*",
    "//src/devices/sysmem/drivers/sysmem:*",
    "//src/devices/tee/drivers/optee:*",
    "//src/devices/temperature/drivers/shtv3:*",
    "//src/devices/testing/fake-msi:*",
    "//src/devices/testing/goldfish/fake_pipe:*",
    "//src/devices/tpm/drivers/cr50-spi:*",
    "//src/devices/tpm/drivers/tpm:*",
    "//src/devices/usb/drivers/xhci:*",
    "//src/diagnostics/validator/inspect/lib/cpp:*",
    "//src/firmware/gigaboot/lib",
    "//src/firmware/gigaboot/src",
    "//src/graphics/display/drivers/aml-hdmi:*",
    "//src/graphics/display/drivers/amlogic-display:*",
    "//src/graphics/display/drivers/display:*",
    "//src/graphics/display/drivers/fake:*",
    "//src/graphics/display/drivers/goldfish-display:*",
    "//src/graphics/display/drivers/intel-i915:*",
    "//src/graphics/display/drivers/ssd1306:*",
    "//src/graphics/display/lib/designware:*",
    "//src/graphics/display/lib/designware/test:*",
    "//src/graphics/display/testing:*",
    "//src/graphics/drivers/misc/goldfish:*",
    "//src/graphics/drivers/misc/goldfish_address_space:*",
    "//src/graphics/drivers/misc/goldfish_sync:*",
    "//src/graphics/drivers/msd-arm-mali/src:*",
    "//src/graphics/lib/compute/common:*",
    "//src/graphics/lib/compute/common/vk:*",
    "//src/graphics/lib/compute/hotsort/hotsort_gen:*",
    "//src/graphics/lib/compute/hotsort/platforms/vk:*",
    "//src/graphics/lib/compute/hotsort/platforms/vk/targets:*",
    "//src/graphics/lib/compute/spinel:*",
    "//src/graphics/lib/compute/spinel/ext/geometry:*",
    "//src/graphics/lib/compute/spinel/platforms/vk:*",
    "//src/graphics/lib/compute/spinel/platforms/vk/targets:*",
    "//src/graphics/lib/compute/spinel/platforms/vk/tests/spinel_vk_test:*",
    "//src/graphics/lib/compute/svg:*",
    "//src/graphics/lib/compute/tests:*",
    "//src/graphics/lib/compute/tests/common/spinel:*",
    "//src/graphics/lib/compute/tests/common/spinel_vk:*",
    "//src/graphics/lib/compute/tests/common/svg:*",
    "//src/graphics/lib/compute/tests/mock_spinel:*",
    "//src/lib/backoff:*",
    "//src/lib/chunked-compression:*",
    "//src/lib/cobalt/cpp:*",
    "//src/lib/containers/cpp:*",
    "//src/lib/ddk:*",
    "//src/lib/elflib:*",
    "//src/lib/fidl/cpp/tests/dispatcher:*",
    "//src/lib/fidl/llcpp/tests:*",
    "//src/lib/fidl/llcpp/tests/conformance:*",
    "//src/lib/fidl/llcpp/tests/integration:*",
    "//src/lib/fidl/llcpp/tests/wire_types:*",
    "//src/lib/files:*",
    "//src/lib/fsl/socket:*",
    "//src/lib/fsl/vmo:*",
    "//src/lib/icu/tools/extractor:*",
    "//src/lib/json_parser:*",
    "//src/lib/line_input:*",
    "//src/lib/listnode:*",
    "//src/lib/process_builder:*",
    "//src/lib/storage/vfs/cpp:*",
    "//src/lib/ui/input:*",
    "//src/lib/ui/scenic/cpp:*",
    "//src/lib/usb_bulk/cpp:*",
    "//src/lib/vmo_store:*",
    "//src/lib/vulkan/imagepipe_view:*",
    "//src/lib/vulkan/tests:*",
    "//src/media/audio/audio_core:*",
    "//src/media/audio/drivers/aml-g12-tdm/test:*",
    "//src/media/audio/drivers/codecs/tas27xx:*",
    "//src/media/audio/drivers/codecs/tas5720:*",
    "//src/media/audio/drivers/intel-hda/controller:*",
    "//src/media/audio/drivers/lib/audio-utils:*",
    "//src/media/audio/drivers/lib/intel-hda:*",
    "//src/media/codec/codecs:*",
    "//src/media/codec/codecs/sw:*",
    "//src/media/codec/codecs/sw/aac:*",
    "//src/media/codec/codecs/sw/ffmpeg:*",
    "//src/media/codec/codecs/sw/sbc:*",
    "//src/media/codec/codecs/test:*",
    "//src/media/codec/examples/use_media_decoder:*",
    "//src/media/drivers/amlogic_decoder:*",
    "//src/media/drivers/amlogic_decoder/third_party/libvpx:*",
    "//src/media/lib/codec_impl:*",
    "//src/media/lib/codec_impl/unit_tests:*",
    "//src/media/lib/extend_bits/unit_tests:*",
    "//src/media/playback/mediaplayer:*",
    "//src/media/playback/mediaplayer/demux:*",
    "//src/media/playback/mediaplayer/ffmpeg:*",
    "//src/media/playback/mediaplayer/fidl:*",
    "//src/media/playback/mediaplayer/graph:*",
    "//src/media/playback/mediaplayer/metrics:*",
    "//src/media/sounds/soundplayer:*",
    "//src/modular/bin/sessionctl:*",
    "//src/modular/bin/sessionmgr:*",
    "//src/modular/bin/sessionmgr/puppet_master:*",
    "//src/modular/bin/sessionmgr/storage:*",
    "//src/modular/lib/async/cpp:*",
    "//src/modular/lib/modular_config:*",
    "//src/modular/lib/modular_test_harness/cpp:*",
    "//src/modular/tests:*",
    "//src/security/tee_manager:*",
    "//src/sys/appmgr:*",
    "//src/sys/appmgr/integration_tests/mock_runner:*",
    "//src/sys/appmgr/integration_tests/sandbox/features/storage:*",
    "//src/sys/appmgr/integration_tests/util:*",
    "//src/sys/lib/chrealm:*",
    "//src/sys/pkg/lib/far/cpp:*",
    "//src/sys/sysmgr:*",
    "//src/ui/a11y/bin/a11y_manager/tests:*",
    "//src/ui/a11y/bin/a11y_manager/tests/util:*",
    "//src/ui/a11y/lib/annotation:*",
    "//src/ui/a11y/lib/configuration:*",
    "//src/ui/a11y/lib/configuration/tests:*",
    "//src/ui/a11y/lib/gesture_manager/recognizers/tests:*",
    "//src/ui/a11y/lib/magnifier/tests:*",
    "//src/ui/a11y/lib/screen_reader:*",
    "//src/ui/a11y/lib/screen_reader/focus/tests/mocks:*",
    "//src/ui/a11y/lib/screen_reader/i18n:*",
    "//src/ui/a11y/lib/screen_reader/i18n/tests:*",
    "//src/ui/a11y/lib/screen_reader/tests:*",
    "//src/ui/a11y/lib/semantics:*",
    "//src/ui/a11y/lib/semantics/tests:*",
    "//src/ui/a11y/lib/semantics/tests/mocks:*",
    "//src/ui/a11y/lib/semantics/util/tests:*",
    "//src/ui/a11y/lib/util:*",
    "//src/ui/backlight/drivers/ti-lp8556:*",
    "//src/ui/bin/root_presenter:*",
    "//src/ui/bin/root_presenter/tests:*",
    "//src/ui/examples/bouncing_ball:*",
    "//src/ui/examples/embedder:*",
    "//src/ui/examples/escher/common:*",
    "//src/ui/examples/lab/direct_input:*",
    "//src/ui/examples/lab/direct_input/child:*",
    "//src/ui/examples/lab/scenic_dev_app:*",
    "//src/ui/examples/shadertoy/service:*",
    "//src/ui/examples/standalone_app:*",
    "//src/ui/input/drivers/goodix:*",
    "//src/ui/input/drivers/hid-buttons:*",
    "//src/ui/input/drivers/pc-ps2:*",
    "//src/ui/input/lib/hid-input-report:*",
    "//src/ui/lib/escher/test:*",
    "//src/ui/lib/escher/test/common:*",
    "//src/ui/lib/yuv:*",
    "//src/ui/scenic/bin:*",
    "//src/ui/scenic/lib/display:*",
    "//src/ui/scenic/lib/flatland:*",
    "//src/ui/scenic/lib/flatland/buffers:*",
    "//src/ui/scenic/lib/flatland/engine:*",
    "//src/ui/scenic/lib/flatland/renderer:*",
    "//src/ui/scenic/lib/flatland/renderer/tests:*",
    "//src/ui/scenic/lib/flatland/tests:*",
    "//src/ui/scenic/lib/gfx:*",
    "//src/ui/scenic/lib/gfx/tests:*",
    "//src/ui/scenic/lib/input:*",
    "//src/ui/scenic/lib/input/tests:*",
    "//src/ui/scenic/lib/scheduling/tests:*",
    "//src/ui/tools/gltf_export:*",
    "//src/ui/tools/scenic_snapshot_viewer:*",
    "//src/ui/tools/tiles_ctl:*",
    "//src/virtualization/third_party/fdt:*",
    "//third_party/acpica/*",
    "//third_party/crashpad/*",
    "//third_party/ffmpeg/*",
    "//third_party/glfw/*",
    "//third_party/iperf/*",
    "//third_party/libc-tests/*",
    "//third_party/mesa/*",
    "//third_party/micro-ecc/*",
    "//third_party/modp_b64:*",
    "//third_party/ogg/*",
    "//third_party/opus/*",
    "//third_party/rust_crates/compat/brotli:*",
    "//third_party/zstd:*",
    "//tools/bootserver_old:*",
    "//tools/fidlcat:*",
    "//tools/fidlcat/interception_tests:*",
    "//tools/fidlcat/lib:*",
    "//tools/netprotocol:*",
    "//tools/symbolizer:*",
    "//tools/vboot_reference:*",
    "//vendor/*",
    "//zircon/kernel/arch/arm64:*",
    "//zircon/kernel/arch/arm64/hypervisor:*",
    "//zircon/kernel/arch/x86:*",
    "//zircon/kernel/arch/x86/user-copy:*",
    "//zircon/kernel/dev/coresight/tests:*",
    "//zircon/kernel/kernel:*",
    "//zircon/kernel/lib/acpi_lite:*",
    "//zircon/kernel/lib/cbuf:*",
    "//zircon/kernel/lib/crypto/boringssl:*",
    "//zircon/kernel/lib/jtrace:*",
    "//zircon/kernel/lib/jtrace/tests:*",
    "//zircon/kernel/lib/libc/string",
    "//zircon/kernel/lib/libc/string/arch/arm64:*",
    "//zircon/kernel/lib/libc/string/arch/x86:*",
    "//zircon/kernel/lib/persistent-debuglog/tests:*",
    "//zircon/kernel/lib/syscalls:*",
    "//zircon/kernel/lib/userabi/userboot:*",
    "//zircon/kernel/object:*",
    "//zircon/kernel/platform/generic-arm:*",
    "//zircon/kernel/platform/pc:*",
    "//zircon/kernel/target/arm64/boot-shim:*",
    "//zircon/kernel/tests:*",
    "//zircon/kernel/vm:*",
    "//zircon/system/ulib/fbl:*",
    "//zircon/system/ulib/fidl:*",
    "//zircon/system/ulib/hid:*",
    "//zircon/system/ulib/image-format:*",
    "//zircon/system/ulib/ktrace:*",
    "//zircon/system/ulib/launchpad:*",
    "//zircon/system/ulib/lazy_init:*",
    "//zircon/system/ulib/ldmsg:*",
    "//zircon/system/ulib/log:*",
    "//zircon/system/ulib/profile:*",
    "//zircon/system/ulib/spi:*",
    "//zircon/system/ulib/sysconfig-client:*",
    "//zircon/system/ulib/sysmem-version:*",
    "//zircon/system/ulib/sysmem-version/test:*",
    "//zircon/system/ulib/task-utils:*",
    "//zircon/system/ulib/tftp:*",
    "//zircon/system/ulib/trace:*",
    "//zircon/system/ulib/trace-engine:*",
    "//zircon/system/ulib/trace-reader:*",
    "//zircon/system/ulib/trace-test-utils:*",
    "//zircon/system/ulib/virtio:*",
    "//zircon/system/utest/msd:*",
    "//zircon/third_party/dev/ethernet/e1000:*",
    "//zircon/third_party/lib/jitterentropy",
    "//zircon/third_party/uapp/dash:*",
    "//zircon/third_party/uapp/fsck-msdosfs:*",
    "//zircon/third_party/uapp/mkfs-msdosfs:*",
    "//zircon/third_party/ulib/cksum:*",
    "//zircon/third_party/ulib/linenoise:*",
    "//zircon/third_party/ulib/musl:*",
    "//zircon/third_party/ulib/musl/ldso",
    "//zircon/third_party/ulib/musl/src/complex",
    "//zircon/third_party/ulib/musl/src/dirent",
    "//zircon/third_party/ulib/musl/src/env",
    "//zircon/third_party/ulib/musl/src/fenv",
    "//zircon/third_party/ulib/musl/src/internal",
    "//zircon/third_party/ulib/musl/src/ipc",
    "//zircon/third_party/ulib/musl/src/legacy",
    "//zircon/third_party/ulib/musl/src/locale",
    "//zircon/third_party/ulib/musl/src/math",
    "//zircon/third_party/ulib/musl/src/multibyte",
    "//zircon/third_party/ulib/musl/src/network",
    "//zircon/third_party/ulib/musl/src/passwd",
    "//zircon/third_party/ulib/musl/src/prng",
    "//zircon/third_party/ulib/musl/src/process",
    "//zircon/third_party/ulib/musl/src/regex",
    "//zircon/third_party/ulib/musl/src/sched",
    "//zircon/third_party/ulib/musl/src/stdio",
    "//zircon/third_party/ulib/musl/src/stdlib",
    "//zircon/third_party/ulib/musl/src/string:*",
    "//zircon/third_party/ulib/musl/src/time",
    "//zircon/third_party/ulib/musl/src/unistd",
    "//zircon/third_party/ulib/musl/third_party/complex",
    "//zircon/third_party/ulib/musl/third_party/math",
    "//zircon/third_party/ulib/musl/third_party/tre",
    "//zircon/third_party/ulib/ngunwind:*",
    "//zircon/tools/blobfs:*",
    "//zircon/tools/kazoo:*",
    "//zircon/tools/ktrace-dump:*",
    "//zircon/tools/lz4:*",
    "//zircon/tools/merkleroot:*",
    "//zircon/tools/minfs:*",
    "//zircon/tools/mtd-redundant-storage:*",
    "//zircon/tools/xdc-server:*",
    "//zircon/tools/zbi:*",
  ]
}

config("Wno-extra-semi") {
  cflags = [ "-Wno-extra-semi" ]
}

config("Wno-implicit-fallthrough") {
  cflags = [ "-Wno-implicit-fallthrough" ]
  visibility = [
    "//src/lib/fxl:third_party",
    "//third_party/rust_crates/compat/brotli",
    "//zircon/third_party/uapp/dash",
    "//zircon/third_party/ulib/boringssl",
    "//zircon/third_party/ulib/lz4",
  ]
}

# Config to suppress Wno-unused-but-set-parameter warning in the third party code
# that doesn't comply with.
config("Wno-unused-but-set-parameter") {
  cflags = [ "-Wno-unused-but-set-parameter" ]
  visibility = [
    "//third_party/*",
    "//vendor/*",
    "//zircon/third_party/uapp/dash",
  ]
}

# Config to suppress Wunused-but-set-variable warning in the third party code
# that doesn't comply with.
config("Wno-unused-but-set-variable") {
  cflags = [ "-Wno-unused-but-set-variable" ]
  visibility = [
    "//garnet/bin/insntrace/*",
    "//src/connectivity/network/tools/nc/third_party/openbsd-netcat/*",
    "//src/connectivity/wlan/drivers/third_party/*",
    "//src/devices/power/drivers/fusb302/*",
    "//src/devices/usb/drivers/xhci/*",
    "//src/media/audio/drivers/usb-audio/*",
    "//src/storage/fvm/driver/*",
    "//third_party/*",
    "//vendor/*",
    "//zircon/third_party/uapp/dash",
  ]
}

# Config to suppress Wbitwise-instead-of-logical warning in the third party code
# that doesn't comply with.
config("Wno-bitwise-instead-of-logical") {
  cflags = [ "-Wno-bitwise-instead-of-logical" ]
  visibility = [ "//third_party/zstd:*" ]
}

config("Wno-defaulted-function-deleted") {
  cflags = [ "-Wno-defaulted-function-deleted" ]
  visibility = [ "//src/lib/vulkan/*" ]
}

config("symbol_visibility_hidden") {
  # Disable libc++ visibility annotations to make sure that the compiler option
  # has effect on symbols defined in libc++ headers. Note that we don't want to
  # disable these annotations altogether to ensure that our toolchain is usable
  # outside of our build since not every user uses hidden visibility by default.
  defines = [ "_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS" ]
  cflags = [ "-fvisibility=hidden" ]
  if (zircon_toolchain != false) {
    cflags_cc = [ "-fvisibility-inlines-hidden" ]
  }
}

config("symbol_no_undefined") {
  if (current_os == "mac") {
    ldflags = [ "-Wl,-undefined,error" ]
  } else {
    ldflags = [ "-Wl,--no-undefined" ]
  }
}

config("shared_library_config") {
  if (current_os == "fuchsia") {
    configs = [ "//build/config/fuchsia:shared_library_config" ]
  } else if (current_os == "linux") {
    cflags = [ "-fPIC" ]
  } else if (current_os == "mac") {
    configs = [ "//build/config/mac:mac_dynamic_flags" ]
  }
}

config("executable_config") {
  configs = []

  if (current_os == "fuchsia") {
    configs += [ "//build/config/fuchsia:executable_config" ]
  } else if (current_os == "mac") {
    configs += [
      "//build/config/mac:mac_dynamic_flags",
      "//build/config/mac:mac_executable_flags",
    ]
  }
}

config("default_libs") {
  configs = []

  if (current_os == "mac") {
    configs += [ "//build/config/mac:default_libs" ]
  }
}

config("werror") {
  if (!use_ccache) {
    cflags = [
      "-Werror",

      # Declarations marked as deprecated should cause build failures, rather
      # they should emit warnings to notify developers about the use of
      # deprecated interfaces.
      "-Wno-error=deprecated-declarations",

      # Do not add additional -Wno-error to this config.
    ]

    asmflags = [ "-Wa,--fatal-warnings" ]
    cflags += asmflags

    if (current_os == "win") {
      ldflags = [ "-Wl,/WX" ]
    }
  }
  rustflags = [ "-Dwarnings" ]
}

# Please use //build/config/sanitizers:suppress-ubsan.DO-NOT-USE-THIS instead
config("temporarily_disable_ubsan_do_not_use") {
  configs = [ "//build/config/sanitizers:suppress-ubsan.DO-NOT-USE-THIS" ]
  visibility = [ "//third_party/*" ]
}

config("no_stack_protector") {
  cflags = [ "-fno-stack-protector" ]
}

config("no_profile") {
  # The difference between this config and removing //build/config/profile is
  # the dynamic linker setting which is necessary for it to use at runtime with
  # the libraries it was linked against.
  cflags = [
    "-fno-profile-instr-generate",
    "-fno-coverage-mapping",
  ]
}

config("icf") {
  # This changes C/C++ semantics and might be incompatible with third-party
  # code that relies on function pointers comparison.
  if (current_os == "win" && (linker == "lld" || !is_gcc)) {
    ldflags = [ "-Wl,/opt:icf=all" ]
  } else if (linker == "gold" || linker == "lld") {
    ldflags = [ "-Wl,--icf=all" ]
  }
}

# "_ALL_SOURCE" is used by some system headers to expose more features (say in fcntl.h) beyond those
# strictly defined in standard.
config("all_source") {
  defines = [ "_ALL_SOURCE" ]
}

config("auto_var_init") {
  if (!is_gcc) {
    # Automatically initialize variables with a pattern.
    cflags = [ "-ftrivial-auto-var-init=pattern" ]
  }
}

config("thread_safety_annotations") {
  if (!is_gcc) {
    cflags = [ "-Wthread-safety" ]
    defines = [ "_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1" ]
  }
}

# Tools that must be executed locally.
pool("local") {
  depth = default_concurrent_jobs.local
}
