Have ./configure use the compiler return code for error indication.
Previously ./configure would use any output on stderr as an indication that the compilation failed. However if some compiler wrapper uses stderr for some other purpose, e.g. distcc for nodes going down, then ./configure would not properly configure the build. This problem was noted by Mike Frysinger. For backwards compatibility, ./configure will revert to the old way, i.e. checking for anything on stderr, if when it deliberately runs the compiler with an error, a zero exit status is returned.
This commit is contained in:
parent
5a5dd2c793
commit
2d55657c03
44
configure
vendored
44
configure
vendored
@ -97,6 +97,22 @@ case "$1" in
|
|||||||
done
|
done
|
||||||
|
|
||||||
test=ztest$$
|
test=ztest$$
|
||||||
|
|
||||||
|
cat > $test.c <<EOF
|
||||||
|
#error error
|
||||||
|
EOF
|
||||||
|
if ($CC -c $CFLAGS $test.c) 2>/dev/null; then
|
||||||
|
try()
|
||||||
|
{
|
||||||
|
test "`( $* ) 2>&1`" = ""
|
||||||
|
}
|
||||||
|
else
|
||||||
|
try()
|
||||||
|
{
|
||||||
|
( $* ) 2>/dev/null
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
extern int getchar();
|
extern int getchar();
|
||||||
int hello() {return getchar();}
|
int hello() {return getchar();}
|
||||||
@ -249,8 +265,8 @@ SHAREDLIBM=${SHAREDLIBM-"libz$shared_ext.$VER1"}
|
|||||||
if test $shared -eq 1; then
|
if test $shared -eq 1; then
|
||||||
echo Checking for shared library support...
|
echo Checking for shared library support...
|
||||||
# we must test in two steps (cc then ld), required at least on SunOS 4.x
|
# we must test in two steps (cc then ld), required at least on SunOS 4.x
|
||||||
if test "`($CC -w -c $SFLAGS $test.c) 2>&1`" = "" &&
|
if try $CC -w -c $SFLAGS $test.c &&
|
||||||
test "`($LDSHARED $SFLAGS -o $test$shared_ext $test.o) 2>&1`" = ""; then
|
try $LDSHARED $SFLAGS -o $test$shared_ext $test.o; then
|
||||||
echo Building shared library $SHAREDLIBV with $CC.
|
echo Building shared library $SHAREDLIBV with $CC.
|
||||||
elif test -z "$old_cc" -a -z "$old_cflags"; then
|
elif test -z "$old_cc" -a -z "$old_cflags"; then
|
||||||
echo No shared library support.
|
echo No shared library support.
|
||||||
@ -281,7 +297,7 @@ cat > $test.c <<EOF
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
off64_t dummy = 0;
|
off64_t dummy = 0;
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS -D_LARGEFILE64_SOURCE=1 $test.c; then
|
||||||
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
|
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCE=1"
|
||||||
SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
|
SFLAGS="${SFLAGS} -D_LARGEFILE64_SOURCE=1"
|
||||||
ALL="${ALL} all64"
|
ALL="${ALL} all64"
|
||||||
@ -297,7 +313,7 @@ int main(void) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
echo "Checking for fseeko... Yes."
|
echo "Checking for fseeko... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="${CFLAGS} -DNO_FSEEKO"
|
CFLAGS="${CFLAGS} -DNO_FSEEKO"
|
||||||
@ -312,7 +328,7 @@ cat > $test.c <<EOF
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
int main() { return 0; }
|
int main() { return 0; }
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
sed < zconf.h "/^#ifdef HAVE_UNISTD_H.* may be/s/def HAVE_UNISTD_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
||||||
mv zconf.temp.h zconf.h
|
mv zconf.temp.h zconf.h
|
||||||
echo "Checking for unistd.h... Yes."
|
echo "Checking for unistd.h... Yes."
|
||||||
@ -324,7 +340,7 @@ cat > $test.c <<EOF
|
|||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
int main() { return 0; }
|
int main() { return 0; }
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
sed < zconf.h "/^#ifdef HAVE_STDARG_H.* may be/s/def HAVE_STDARG_H\(.*\) may be/ 1\1 was/" > zconf.temp.h
|
||||||
mv zconf.temp.h zconf.h
|
mv zconf.temp.h zconf.h
|
||||||
echo "Checking for stdarg.h... Yes."
|
echo "Checking for stdarg.h... Yes."
|
||||||
@ -367,7 +383,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()."
|
echo "Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf()."
|
||||||
|
|
||||||
cat > $test.c <<EOF
|
cat > $test.c <<EOF
|
||||||
@ -390,7 +406,7 @@ int main()
|
|||||||
return (mytest("Hello%d\n", 1));
|
return (mytest("Hello%d\n", 1));
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
echo "Checking for vsnprintf() in stdio.h... Yes."
|
echo "Checking for vsnprintf() in stdio.h... Yes."
|
||||||
|
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
@ -415,7 +431,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of vsnprintf()... Yes."
|
echo "Checking for return value of vsnprintf()... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
|
CFLAGS="$CFLAGS -DHAS_vsnprintf_void"
|
||||||
@ -455,7 +471,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of vsprintf()... Yes."
|
echo "Checking for return value of vsprintf()... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_vsprintf_void"
|
CFLAGS="$CFLAGS -DHAS_vsprintf_void"
|
||||||
@ -486,7 +502,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC $CFLAGS -o $test $test.c) 2>&1`" = ""; then
|
if try $CC $CFLAGS -o $test $test.c; then
|
||||||
echo "Checking for snprintf() in stdio.h... Yes."
|
echo "Checking for snprintf() in stdio.h... Yes."
|
||||||
|
|
||||||
cat >$test.c <<EOF
|
cat >$test.c <<EOF
|
||||||
@ -505,7 +521,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of snprintf()... Yes."
|
echo "Checking for return value of snprintf()... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_snprintf_void"
|
CFLAGS="$CFLAGS -DHAS_snprintf_void"
|
||||||
@ -539,7 +555,7 @@ int main()
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for return value of sprintf()... Yes."
|
echo "Checking for return value of sprintf()... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DHAS_sprintf_void"
|
CFLAGS="$CFLAGS -DHAS_sprintf_void"
|
||||||
@ -565,7 +581,7 @@ int main()
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
|
if try $CC -c $CFLAGS $test.c; then
|
||||||
echo "Checking for attribute(visibility) support... Yes."
|
echo "Checking for attribute(visibility) support... Yes."
|
||||||
else
|
else
|
||||||
CFLAGS="$CFLAGS -DNO_VIZ"
|
CFLAGS="$CFLAGS -DNO_VIZ"
|
||||||
|
Loading…
Reference in New Issue
Block a user