diff options
Diffstat (limited to 'libstdc++-v3/configure')
-rwxr-xr-x | libstdc++-v3/configure | 169 |
1 files changed, 155 insertions, 14 deletions
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 06504044fa0..90985426c50 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -623,6 +623,10 @@ GLIBCXX_LDBL_COMPAT_FALSE GLIBCXX_LDBL_COMPAT_TRUE ENABLE_VISIBILITY_FALSE ENABLE_VISIBILITY_TRUE +ENABLE_SYMVERS_SOL2_FALSE +ENABLE_SYMVERS_SOL2_TRUE +ENABLE_SYMVERS_SUN_FALSE +ENABLE_SYMVERS_SUN_TRUE ENABLE_SYMVERS_DARWIN_FALSE ENABLE_SYMVERS_DARWIN_TRUE ENABLE_SYMVERS_GNU_NAMESPACE_FALSE @@ -633,6 +637,7 @@ ENABLE_SYMVERS_FALSE ENABLE_SYMVERS_TRUE port_specific_symbol_files SYMVER_FILE +CXXFILT LTLIBICONV LIBICONV OPT_LDFLAGS @@ -852,7 +857,8 @@ CXX CXXFLAGS CCC CPP -CXXCPP' +CXXCPP +CXXFILT' # Initialize some variables set by options. @@ -1553,6 +1559,8 @@ Some influential environment variables: CXXFLAGS C++ compiler flags CPP C preprocessor CXXCPP C++ preprocessor + CXXFILT Location of GNU c++filt. Defaults to the first GNU version of + `c++filt', `gc++filt' on PATH. Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -11460,7 +11468,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11463 "configure" +#line 11471 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11566,7 +11574,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11569 "configure" +#line 11577 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -14906,7 +14914,7 @@ fi # # Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style. cat > conftest.$ac_ext << EOF -#line 14909 "configure" +#line 14917 "configure" struct S { ~S(); }; void bar(); void foo() @@ -15274,7 +15282,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } # Fake what AC_TRY_COMPILE does. cat > conftest.$ac_ext << EOF -#line 15277 "configure" +#line 15285 "configure" int main() { typedef bool atomic_type; @@ -15311,7 +15319,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15314 "configure" +#line 15322 "configure" int main() { typedef short atomic_type; @@ -15348,7 +15356,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15351 "configure" +#line 15359 "configure" int main() { // NB: _Atomic_word not necessarily int. @@ -15386,7 +15394,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } rm -f conftest* cat > conftest.$ac_ext << EOF -#line 15389 "configure" +#line 15397 "configure" int main() { typedef long long atomic_type; @@ -15462,7 +15470,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu # unnecessary for this test. cat > conftest.$ac_ext << EOF -#line 15465 "configure" +#line 15473 "configure" int main() { _Decimal32 d1; @@ -25538,7 +25546,7 @@ rm -f core conftest.err conftest.$ac_objext \ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling @@ -44476,7 +44484,7 @@ rm -f core conftest.err conftest.$ac_objext \ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling @@ -50561,7 +50569,7 @@ rm -f core conftest.err conftest.$ac_objext \ CFLAGS="$chktls_save_CFLAGS" if test "X$thread_CFLAGS" != Xfailed; then CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS" - if test "$cross_compiling" = yes; then : + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error "cannot run test program while cross compiling @@ -58082,12 +58090,53 @@ ac_config_commands="$ac_config_commands include/gstdint.h" # This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU c++filt" >&5 +$as_echo_n "checking for GNU c++filt... " >&6; } +if test "${ac_cv_path_CXXFILT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$CXXFILT"; then + ac_path_CXXFILT_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in c++filt gc++filt; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_CXXFILT="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_CXXFILT" && $as_test_x "$ac_path_CXXFILT"; } || continue +# Check for GNU $ac_path_CXXFILT +case `"$ac_path_CXXFILT" --version 2>&1` in +*GNU*) + ac_cv_path_CXXFILT=$ac_path_CXXFILT && ac_path_CXXFILT_found=:;; +esac + + $ac_path_CXXFILT_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_CXXFILT"; then + : + fi +else + ac_cv_path_CXXFILT=$CXXFILT +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_CXXFILT" >&5 +$as_echo "$ac_cv_path_CXXFILT" >&6; } + CXXFILT=$ac_cv_path_CXXFILT + + # Check whether --enable-symvers was given. if test "${enable_symvers+set}" = set; then : enableval=$enable_symvers; case "$enableval" in - yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export) ;; + yes|no|gnu|gnu-versioned-namespace|darwin|darwin-export|sun) ;; *) as_fn_error "Unknown argument to enable/disable symvers" "$LINENO" 5 ;; esac @@ -58100,6 +58149,9 @@ fi # If we never went through the GLIBCXX_CHECK_LINKER_FEATURES macro, then we # don't know enough about $LD to do tricks... +# Sun style symbol versions needs GNU c++filt for make_sunver.pl to work +# with extern "C++" in version scripts. + # Turn a 'yes' into a suitable default. if test x$enable_symvers = xyes ; then @@ -58117,6 +58169,23 @@ if test x$enable_symvers = xyes ; then case ${target_os} in darwin*) enable_symvers=darwin ;; + # Sun symbol versioning exists since Solaris 2.5. + solaris2.[5-9]* | solaris2.1[0-9]*) + # make_sunver.pl needs GNU c++filt to support extern "C++" in + # version scripts, so disable symbol versioning if none can be + # found. + if test -z "$ac_cv_path_CXXFILT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5 +$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === no GNU c++filt could be found." >&5 +$as_echo "$as_me: WARNING: === no GNU c++filt could be found." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + else + enable_symvers=sun + fi + ;; *) enable_symvers=no ;; esac @@ -58129,8 +58198,29 @@ if test x$enable_symvers = xdarwin-export ; then enable_symvers=darwin fi +# Check if 'sun' was requested on non-Solaris 2 platforms. +if test x$enable_symvers = xsun ; then + case ${target_os} in + solaris2*) + # All fine. + ;; + *) + # Unlikely to work. + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested Sun symbol versioning, but" >&5 +$as_echo "$as_me: WARNING: === You have requested Sun symbol versioning, but" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === you are not targetting Solaris 2." >&5 +$as_echo "$as_me: WARNING: === you are not targetting Solaris 2." >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 +$as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} + enable_symvers=no + ;; + esac +fi + # Check to see if 'gnu' can win. -if test $enable_symvers = gnu || test $enable_symvers = gnu-versioned-namespace; then +if test $enable_symvers = gnu || + test $enable_symvers = gnu-versioned-namespace || + test $enable_symvers = sun; then # Check to see if libgcc_s exists, indicating that shared libgcc is possible. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared libgcc" >&5 $as_echo_n "checking for shared libgcc... " >&6; } @@ -58207,6 +58297,8 @@ $as_echo "$as_me: WARNING: === you are not building a shared libgcc_s." >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === Symbol versioning will be disabled." >&5 $as_echo "$as_me: WARNING: === Symbol versioning will be disabled." >&2;} enable_symvers=no + elif test $with_gnu_ld != yes && test $enable_symvers = sun; then + : All interesting versions of Sun ld support sun style symbol versioning. elif test $with_gnu_ld != yes ; then # just fail for now { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: === You have requested GNU symbol versioning, but" >&5 @@ -58257,6 +58349,12 @@ $as_echo "#define _GLIBCXX_SYMVER_GNU_NAMESPACE 1" >>confdefs.h $as_echo "#define _GLIBCXX_SYMVER_DARWIN 1" >>confdefs.h ;; + sun) + SYMVER_FILE=config/abi/pre/gnu.ver + +$as_echo "#define _GLIBCXX_SYMVER_SUN 1" >>confdefs.h + + ;; esac if test x$enable_symvers != xno ; then @@ -58303,9 +58401,26 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: versioning on shared library symbols is $enable_symvers" >&5 $as_echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;} +if test $enable_symvers != no ; then + case ${target_os} in + # The Solaris 2 runtime linker doesn't support the GNU extension of + # binding the same symbol to different versions + solaris2*) + symvers_renaming=no ;; + # Other platforms with GNU symbol versioning (GNU/Linux, more?) do. + *) + +$as_echo "#define HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1" >>confdefs.h + + symvers_renaming=yes ;; + esac +fi + + # Now, set up compatibility support, if any. # In addition, need this to deal with std::size_t mangling in # src/compatibility.cc. In a perfect world, could use @@ -58911,6 +59026,24 @@ else fi + if test $enable_symvers = sun; then + ENABLE_SYMVERS_SUN_TRUE= + ENABLE_SYMVERS_SUN_FALSE='#' +else + ENABLE_SYMVERS_SUN_TRUE='#' + ENABLE_SYMVERS_SUN_FALSE= +fi + + + if test $symvers_renaming = no; then + ENABLE_SYMVERS_SOL2_TRUE= + ENABLE_SYMVERS_SOL2_FALSE='#' +else + ENABLE_SYMVERS_SOL2_TRUE='#' + ENABLE_SYMVERS_SOL2_FALSE= +fi + + if test $enable_visibility = yes; then ENABLE_VISIBILITY_TRUE= ENABLE_VISIBILITY_FALSE='#' @@ -59324,6 +59457,14 @@ if test -z "${ENABLE_SYMVERS_DARWIN_TRUE}" && test -z "${ENABLE_SYMVERS_DARWIN_F as_fn_error "conditional \"ENABLE_SYMVERS_DARWIN\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi +if test -z "${ENABLE_SYMVERS_SUN_TRUE}" && test -z "${ENABLE_SYMVERS_SUN_FALSE}"; then + as_fn_error "conditional \"ENABLE_SYMVERS_SUN\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_SYMVERS_SOL2_TRUE}" && test -z "${ENABLE_SYMVERS_SOL2_FALSE}"; then + as_fn_error "conditional \"ENABLE_SYMVERS_SOL2\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi if test -z "${ENABLE_VISIBILITY_TRUE}" && test -z "${ENABLE_VISIBILITY_FALSE}"; then as_fn_error "conditional \"ENABLE_VISIBILITY\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 |