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.
This commit is contained in:
Florian Weimer 2015-10-26 09:41:10 +01:00
parent 6d834d2216
commit d337ceb76d
3 changed files with 48 additions and 0 deletions

View File

@ -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

25
configure vendored
View File

@ -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'

View File

@ -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=])