blob: 6ac5c8418fa5553d0c423865cce0aec717d565f3 [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(https://fxbug.dev/42170458): 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
# * `size_lto`: optimize for space and use LTO
# * `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",
"size_lto",
"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(https://fxbug.dev/42101274): Use DWARF 4 for the kernel proper and physboot
# until the GDB used by kernel developers fully supports DWARF 5.
# TODO(https://fxbug.dev/42168542): 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")
if (is_gcc) {
# TODO(https://fxbug.dev/42076979): GCC doesn't yet support zstd.
default_compress_debuginfo = "zlib"
} else {
default_compress_debuginfo = "zstd"
}
declare_args() {
# Enable compression of debug sections.
compress_debuginfo = default_compress_debuginfo
}
_compress_debuginfo_valid = [
"none",
"zlib",
"zstd",
]
assert(_compress_debuginfo_valid + [ compress_debuginfo ] -
[ compress_debuginfo ] != _compress_debuginfo_valid,
"`compress_debuginfo=\"...\"` must be one of $_compress_debuginfo_valid")