blob: 8c4de0f54729e65e641fce528bcc5181df121a9f [file] [log] [blame]
# Copyright 2018 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.
if (is_debug) {
# TODO(fxbug.dev/89149): consider "debug"
default_optimize = "none"
} else {
default_optimize = "size"
}
# NOTE: Keep in sync with //build/config/zircon/levels.gni
declare_args() {
# * `none`: really unoptimized, usually only build-tested and not run
# * `debug`: "optimized for debugging", light enough to avoid confusion
# * `default`: default optimization level
# * `size`: optimized for space rather than purely for speed
# * `speed`: optimized purely for speed
# * `sanitizer`: optimized for sanitizers (ASan, etc.)
# * `profile`: optimized for coverage/profile data collection
# * `coverage`: optimized for coverage data collection
optimize = default_optimize
}
_optimize_valid = [
"none",
"debug",
"default",
"size",
"speed",
"sanitizer",
"profile",
"coverage",
]
assert(_optimize_valid + [ optimize ] - [ optimize ] != _optimize_valid,
"`optimize=\"...\"` must be one of $_optimize_valid")
declare_args() {
# Controls whether to use -Oz when `optimize` is set to `"size"`.
use_oz = false
}
if (use_oz) {
assert(optimize == "size", "clang_use_oz requires `optimize = \"size\"`")
}
declare_args() {
# * `none` means no debugging information
# * `backtrace` means sufficient debugging information to symbolize backtraces
# * `debug` means debugging information suited for debugging
debuginfo = "debug"
}
_debuginfo_valid = [
"none",
"backtrace",
"debug",
]
assert(_debuginfo_valid + [ debuginfo ] - [ debuginfo ] != _debuginfo_valid,
"`debuginfo=\"...\"` must be one of $_debuginfo_valid")
declare_args() {
# Explicitly specify DWARF version used.
dwarf_version = 5
# TODO(fxbug.dev/26814): Use DWARF 4 for the kernel proper and physboot
# until the GDB used by kernel developers fully supports DWARF 5.
# TODO(fxbug.dev/87422): Use DWARF 4 on macOS to avoid the warning reported
# by lld. This matches the default DWARF version currently used by Clang:
# https://github.com/llvm/llvm-project/blob/89c94c2/clang/lib/Driver/ToolChains/Darwin.cpp#L1159
if (is_kernel || is_mac) {
dwarf_version = 4
}
}
assert(dwarf_version >= 2 && dwarf_version <= 5,
"`dwarf_version=\"...\"` must be between 2 and 5")