third_party.pigweed.src/pw_build/BUILD.gn
Alexei Frolov 844ff0f056 pw_build, pw_toolchain: Add default configs
This CL reworks toolchains to be defined as scopes composing configs and
toolchain args. This allows individual targets to add configs to or
remove configs from the defaults.

Change-Id: I105a231f3e2de35499e1617241f3eeb42ef3248d
2020-06-16 09:50:59 -07:00

112 lines
2.5 KiB
Plaintext

# Copyright 2019 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.
import("$dir_pw_docgen/docs.gni")
config("colorize_output") {
cflags = [
# Colorize output. Ninja's Clang invocation disables color by default.
"-fdiagnostics-color",
]
ldflags = cflags
}
config("debugging") {
# Enable debug symbol generation. This has no effect on final code size.
cflags = [ "-g" ]
}
config("extra_debugging") {
# Include things like macro expansion in debug info.
cflags = [ "-g3" ]
}
# Optimization levels
config("optimize_debugging") {
cflags = [ "-Og" ]
ldflags = cflags
}
config("optimize_speed") {
cflags = [ "-O2" ]
ldflags = cflags
}
config("optimize_more_speed") {
cflags = [ "-O3" ]
ldflags = cflags
}
config("optimize_size") {
cflags = [ "-Os" ]
ldflags = cflags
}
# Standard compiler flags to reduce output binary size.
config("reduced_size") {
cflags = [
"-fno-common",
"-fno-exceptions",
"-ffunction-sections",
"-fdata-sections",
]
cflags_cc = [ "-fno-rtti" ]
}
config("strict_warnings") {
cflags = [
"-Wall",
"-Wextra",
# Make all warnings errors, except for the exemptions below.
"-Werror",
"-Wno-error=cpp", # preprocessor #warning statement
"-Wno-error=deprecated-declarations", # [[deprecated]] attribute
]
cflags_cc = [ "-Wnon-virtual-dtor" ]
}
# This config contains warnings that we don't necessarily recommend projects
# enable, but are enabled for upstream Pigweed for maximum project
# compatibility.
config("extra_strict_warnings") {
cflags = [ "-Wshadow" ]
}
config("cpp11") {
cflags_cc = [ "-std=c++11" ]
}
config("cpp14") {
cflags_cc = [ "-std=c++14" ]
}
config("cpp17") {
cflags_cc = [
"-std=c++17",
# Allow uses of the register keyword, which may appear in C headers.
"-Wno-register",
]
}
pw_doc_group("docs") {
sources = [ "docs.rst" ]
}
# Pool to limit a single thread to download external Go packages at a time.
pool("go_download_pool") {
depth = 1
}