From d337ceb76d898935560dc264cf2ad36b17017db7 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 26 Oct 2015 09:41:10 +0100 Subject: 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. --- ChangeLog | 6 ++++++ configure | 25 +++++++++++++++++++++++++ configure.ac | 17 +++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/ChangeLog b/ChangeLog index 041a6eb4f0..30d6dd9c8d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2015-10-26 Florian Weimer + + * configure.ac (CXX): Clear the variable if the C++ toolchain does + not support static linking. + * configure: Regenerate. + 2015-10-23 Joseph Myers * 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 + +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 + +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=]) -- cgit 1.4.1