summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2015-10-26 09:41:10 +0100
committerFlorian Weimer <fweimer@redhat.com>2015-10-26 09:41:10 +0100
commitd337ceb76d898935560dc264cf2ad36b17017db7 (patch)
tree84cb919ecbbd180c08340109d723ecf84ec198b3
parent6d834d2216bcc733fa04c5a59b5ac6f6f1134f2b (diff)
Use the CXX compiler only if it can create dynamic and static programs
* configure.ac (CXX): Clear the variable if the C++ toolchain does not support static linking. * configure: Regenerate.
-rw-r--r--ChangeLog6
-rwxr-xr-xconfigure25
-rw-r--r--configure.ac17
3 files changed, 48 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 041a6eb4f0..30d6dd9c8d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-26 Florian Weimer <fweimer@redhat.com>
+
+ * configure.ac (CXX): Clear the variable if the C++ toolchain does
+ not support static linking.
+ * configure: Regenerate.
+
2015-10-23 Joseph Myers <joseph@codesourcery.com>
* math/libm-test.inc (check_float_internal): Do not special-case
diff --git a/configure b/configure
index 8aea9925aa..ff3ad55b1d 100755
--- a/configure
+++ b/configure
@@ -3173,6 +3173,7 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+# Default, dynamic case.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -3191,6 +3192,30 @@ else
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+# Static case.
+old_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <iostream>
+
+int
+main()
+{
+ std::cout << "Hello, world!";
+ return 0;
+}
+
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+
+else
+ libc_cv_cxx_link_ok=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LDFLAGS="$old_LDFLAGS"
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
diff --git a/configure.ac b/configure.ac
index e502aa5db2..3c7f6c0096 100644
--- a/configure.ac
+++ b/configure.ac
@@ -57,9 +57,26 @@ AC_PROG_CXX
# It's useless to us if it can't link programs (e.g. missing -lstdc++).
AC_CACHE_CHECK([whether $CXX can link programs], libc_cv_cxx_link_ok, [dnl
AC_LANG_PUSH([C++])
+# Default, dynamic case.
AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])],
[libc_cv_cxx_link_ok=yes],
[libc_cv_cxx_link_ok=no])
+# Static case.
+old_LDFLAGS="$LDFLAGS"
+LDFLAGS="$LDFLAGS -static"
+AC_LINK_IFELSE([AC_LANG_SOURCE([
+#include <iostream>
+
+int
+main()
+{
+ std::cout << "Hello, world!";
+ return 0;
+}
+])],
+ [],
+ [libc_cv_cxx_link_ok=no])
+LDFLAGS="$old_LDFLAGS"
AC_LANG_POP([C++])])
AS_IF([test $libc_cv_cxx_link_ok != yes], [CXX=])