aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2015-05-19 22:48:24 +0200
committerDavid Bremner <david@tethera.net>2015-05-23 20:28:06 +0200
commitccd7c0b0e6222ca41670eb9a29cc1f9346dad772 (patch)
treea5b1157dac6519a7209f7a12ac137700168e16ef
parentc5ef2dc448659110adc8ab324ae166683d21988f (diff)
configure: Add sanity checking for environment variables
Passing in environment variables incompatible with the compiler may cause other parts of the configure script to fail in hard to understand ways, so we abort early.
-rwxr-xr-xconfigure32
1 files changed, 30 insertions, 2 deletions
diff --git a/configure b/configure
index 4af7ba94..2065fcdf 100755
--- a/configure
+++ b/configure
@@ -47,6 +47,7 @@ CC=${CC:-cc}
CXX=${CXX:-c++}
CFLAGS=${CFLAGS:--g -O2}
CPPFLAGS=${CPPFLAGS:-}
+CXXFLAGS_for_sh=${CXXFLAGS:-${CFLAGS}}
CXXFLAGS=${CXXFLAGS:-\$(CFLAGS)}
LDFLAGS=${LDFLAGS:-}
XAPIAN_CONFIG=${XAPIAN_CONFIG:-xapian-config}
@@ -269,6 +270,35 @@ dependencies are available:
EOF
errors=0
+printf "int main(void){return 0;}\n" > minimal.c
+
+printf "Sanity checking C compilation environment... "
+if ${CC} ${CFLAGS} ${CPPFLAGS} minimal.c ${LDFLAGS} -o minimal > /dev/null 2>&1
+then
+ printf "OK.\n"
+else
+ printf "Fail.\n"
+ errors=$((errors + 1))
+fi
+
+printf "Sanity checking C++ compilation environment... "
+if ${CXX} ${CXXFLAGS_for_sh} ${CPPFLAGS} minimal.c ${LDFLAGS} -o minimal > /dev/null 2>&1
+then
+ printf "OK.\n"
+else
+ printf "Fail.\n"
+ errors=$((errors + 1))
+fi
+
+if [ $errors -gt 0 ]; then
+ cat <<EOF
+*** Error: Initial sanity checking of environment failed. Please try
+running configure in a clean environment, and if the problem persists,
+report a bug.
+EOF
+ rm -f minimal minimal.c
+ exit 1
+fi
if pkg-config --version > /dev/null 2>&1; then
have_pkg_config=1
@@ -690,8 +720,6 @@ else
fi
rm -f compat/check_asctime
-printf "int main(void){return 0;}\n" > minimal.c
-
printf "Checking for rpath support... "
if ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1
then