summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Miller <alex.miller@gmx.de>2022-08-07 03:34:33 +0200
committerSam James <sam@gentoo.org>2022-08-24 05:55:53 +0100
commitddba1d149e82dba88b72f992729ad4158f640e32 (patch)
tree34412d5e0d8d78ada40cc86a038f4421f37cddc2 /eclass/flag-o-matic.eclass
parentpython-any-r1.eclass: localise 'i' in python_setup (diff)
downloadgentoo-ddba1d149e82dba88b72f992729ad4158f640e32.tar.gz
gentoo-ddba1d149e82dba88b72f992729ad4158f640e32.tar.bz2
gentoo-ddba1d149e82dba88b72f992729ad4158f640e32.zip
flag-o-matic.eclass: test-flag-PROG, strip unused args that generate warnings
A number of configure checks used by CMake and autoconf (and probably other build systems) relies on warning-free compiler runs. A combination of compiler and flags that always generates warnings can cause misconfiguration and/or build failures. Since commit ae9870d9f6b1394ede86176443770b36d7e60ac1, flags that generate warnings that could be suppressed with -Qunused-arguments are accepted anyway to avoid stripping all linker flags (#627474). But commit 28d6437fc7009002f98f28e8900e994109927726 added linker invocation for linker flags tests, so the workaround shouldn't be necessary any more. Drop the extra -Qunused-arguments check and reject all flags that generate warnings to avoid configuration issues. If it turns out that stripping these unused flags is still problematic, we could accept them and actually add -Qunused-arguments to the relevant *FLAGS to silence the warnings, but that would require bigger changes, so let's try the simpler and cleaner solution first. Bug: https://bugs.gentoo.org/627474 Bug: https://bugs.gentoo.org/714742 Bug: https://bugs.gentoo.org/862798 Signed-off-by: Alexander Miller <alex.miller@gmx.de> Closes: https://github.com/gentoo/gentoo/pull/26773 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'eclass/flag-o-matic.eclass')
-rw-r--r--eclass/flag-o-matic.eclass22
1 files changed, 11 insertions, 11 deletions
diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 7319326c7ad8..365741a6dddf 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -601,11 +601,20 @@ _test-flag-PROG() {
#
# We can add more selective detection of no-op flags via
# '-Werror=ignored-optimization-argument' and similar error options
- # similar to what we are doing with '-Qunused-arguments'.
+ # or accept unused flags with '-Qunused-arguments' like we
+ # used to for bug #627474. Since we now invoke the linker
+ # for testing linker flags, unused argument warnings aren't
+ # ignored; linker flags may no longer be accepted in CFLAGS.
+ #
+ # However, warnings emitted by a compiler for a clean source
+ # can break feature detection by CMake or autoconf since
+ # many checks use -Werror internally. See e.g. bug #714742.
local cmdline=(
"${comp[@]}"
# Clang will warn about unknown gcc flags but exit 0.
# Need -Werror to force it to exit non-zero.
+ #
+ # See also bug #712488 and bug #714742.
-Werror
"$@"
# -x<lang> options need to go before first source file
@@ -614,16 +623,7 @@ _test-flag-PROG() {
"${test_in}" -o "${test_out}"
)
- if ! "${cmdline[@]}" &>/dev/null; then
- # -Werror makes clang bail out on unused arguments as well;
- # try to add -Qunused-arguments to work-around that
- # other compilers don't support it but then, it's failure like
- # any other.
- #
- # See also bug #712488 and bug #714742.
- cmdline+=( -Qunused-arguments )
- "${cmdline[@]}" &>/dev/null
- fi
+ "${cmdline[@]}" &>/dev/null
}
# @FUNCTION: test-flag-CC