mirror of git://git.musl-libc.org/musl
configure: work around compilers that merely warn for unknown options
some compilers (such as clang) accept unknown options without error, but then print warnings on each invocation, cluttering the build output and burying meaningful warnings. this patch makes configure's tryflag and tryldflag functions use additional options to turn the unknown-option warnings into errors, if available, but only at check time. these options are not output in config.mak to avoid the risk of spurious build breakage; if they work, they will have already done their job at configure time.
This commit is contained in:
parent
aeeac9ca54
commit
fc431d3f76
|
@ -80,7 +80,7 @@ fi
|
||||||
tryflag () {
|
tryflag () {
|
||||||
printf "checking whether compiler accepts %s... " "$2"
|
printf "checking whether compiler accepts %s... " "$2"
|
||||||
echo "typedef int x;" > "$tmpc"
|
echo "typedef int x;" > "$tmpc"
|
||||||
if $CC $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then
|
if $CC $CFLAGS_TRY $2 -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then
|
||||||
printf "yes\n"
|
printf "yes\n"
|
||||||
eval "$1=\"\${$1} \$2\""
|
eval "$1=\"\${$1} \$2\""
|
||||||
eval "$1=\${$1# }"
|
eval "$1=\${$1# }"
|
||||||
|
@ -94,7 +94,7 @@ fi
|
||||||
tryldflag () {
|
tryldflag () {
|
||||||
printf "checking whether linker accepts %s... " "$2"
|
printf "checking whether linker accepts %s... " "$2"
|
||||||
echo "typedef int x;" > "$tmpc"
|
echo "typedef int x;" > "$tmpc"
|
||||||
if $CC -nostdlib -shared "$2" -o /dev/null "$tmpc" >/dev/null 2>&1 ; then
|
if $CC $LDFLAGS_TRY -nostdlib -shared "$2" -o /dev/null "$tmpc" >/dev/null 2>&1 ; then
|
||||||
printf "yes\n"
|
printf "yes\n"
|
||||||
eval "$1=\"\${$1} \$2\""
|
eval "$1=\"\${$1} \$2\""
|
||||||
eval "$1=\${$1# }"
|
eval "$1=\${$1# }"
|
||||||
|
@ -113,7 +113,9 @@ CFLAGS_C99FSE=
|
||||||
CFLAGS_AUTO=
|
CFLAGS_AUTO=
|
||||||
CFLAGS_MEMOPS=
|
CFLAGS_MEMOPS=
|
||||||
CFLAGS_NOSSP=
|
CFLAGS_NOSSP=
|
||||||
|
CFLAGS_TRY=
|
||||||
LDFLAGS_AUTO=
|
LDFLAGS_AUTO=
|
||||||
|
LDFLAGS_TRY=
|
||||||
OPTIMIZE_GLOBS=
|
OPTIMIZE_GLOBS=
|
||||||
prefix=/usr/local/musl
|
prefix=/usr/local/musl
|
||||||
exec_prefix='$(prefix)'
|
exec_prefix='$(prefix)'
|
||||||
|
@ -204,6 +206,14 @@ printf "no; compiler output follows:\n%s\n" "$output"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Figure out options to force errors on unknown flags.
|
||||||
|
#
|
||||||
|
tryflag CFLAGS_TRY -Werror=unknown-warning-option
|
||||||
|
tryflag CFLAGS_TRY -Werror=unused-command-line-argument
|
||||||
|
tryldflag LDFLAGS_TRY -Werror=unknown-warning-option
|
||||||
|
tryldflag LDFLAGS_TRY -Werror=unused-command-line-argument
|
||||||
|
|
||||||
#
|
#
|
||||||
# Need to know if the compiler is gcc to decide whether to build the
|
# Need to know if the compiler is gcc to decide whether to build the
|
||||||
# musl-gcc wrapper, and for critical bug detection in some gcc versions.
|
# musl-gcc wrapper, and for critical bug detection in some gcc versions.
|
||||||
|
|
Loading…
Reference in New Issue