Cleanup debug flags and enable libc++ debugging on Linux. (#835)

The big change here is to enable libc++'s debug mode outside of `opt`
builds on Linux where it seems to work well with the Homebrew installed
toolchain. I'm restricting it to Linux as the system libc++ install on
x86 macOS doesn't seem to work. This is based on and subsumes #811.

This also tidies up how `-NDEBUG` is set to include non-codegen compile
actions, and consolidates some optimization flags in a single location.
This part has no functionality change, but would likely invalidate
caches so bundled here where both a) I noticed and b) we already had
a cache invalidation.
This commit is contained in:
Chandler Carruth
2021-09-18 03:57:17 -07:00
committed by GitHub
parent 89da711a26
commit bc658e6923
@@ -169,13 +169,11 @@ def _impl(ctx):
flag_groups = ([
flag_group(
flags = [
"-DNDEBUG",
"-ffunction-sections",
"-fdata-sections",
],
),
]),
with_features = [with_feature_set(features = ["opt"])],
),
flag_set(
actions = codegen_compile_actions,
@@ -284,12 +282,20 @@ def _impl(ctx):
name = "default_optimization_flags",
enabled = True,
requires = [feature_set(["opt"])],
flag_sets = [flag_set(
actions = codegen_compile_actions,
flag_groups = [flag_group(flags = [
"-O3",
])],
)],
flag_sets = [
flag_set(
actions = all_compile_actions,
flag_groups = [flag_group(flags = [
"-DNDEBUG",
])],
),
flag_set(
actions = codegen_compile_actions,
flag_groups = [flag_group(flags = [
"-O3",
])],
),
],
)
# Handle different levels and forms of debug info emission with individual
@@ -518,6 +524,17 @@ def _impl(ctx):
),
]),
),
flag_set(
actions = all_compile_actions,
flag_groups = [flag_group(flags = [
# Enable libc++'s debug features.
"-D_LIBCXX_DEBUG=1",
])],
with_features = [
with_feature_set(features = ["dbg"]),
with_feature_set(features = ["fastbuild"]),
],
),
],
)