From ba144c179eb12a6aff145582671cbb8b1045c5b9 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 20 Jun 2024 15:28:13 -0700 Subject: [PATCH] Add --disable-static-c++-tests option [BZ #31797] By default, if the C++ toolchain lacks support for static linking, configure fails to find the C++ header files and the glibc build fails. The --disable-static-c++-link-check option allows the glibc build to finish, but static C++ tests will fail if the C++ toolchain doesn't have the necessary static C++ libraries which may not be easily installed. Add --disable-static-c++-tests option to skip the static C++ link check and tests. This fixes BZ #31797. Signed-off-by: H.J. Lu --- INSTALL | 9 +++++++++ configure | 22 ++++++++++++++++++---- configure.ac | 15 +++++++++++---- manual/install.texi | 8 ++++++++ nptl/Makefile | 3 +++ 5 files changed, 49 insertions(+), 8 deletions(-) diff --git a/INSTALL b/INSTALL index 02151e6e99..4bd3d53676 100644 --- a/INSTALL +++ b/INSTALL @@ -224,6 +224,15 @@ if 'CFLAGS' is specified it must enable optimization. For example: By default for x86_64, the GNU C Library is built with the vector math library. Use this option to disable the vector math library. +'--disable-static-c++-tests' + By default, if the C++ toolchain lacks support for static linking, + configure fails to find the C++ header files and the glibc build + fails. '--disable-static-c++-link-check' allows the glibc build to + finish, but static C++ tests will fail if the C++ toolchain doesn't + have the necessary static C++ libraries. Use this option to skip + the static C++ tests. This option implies + '--disable-static-c++-link-check'. + '--disable-static-c++-link-check' By default, if the C++ toolchain lacks support for static linking, configure fails to find the C++ header files and the glibc build diff --git a/configure b/configure index e236b503fe..1bae55b45b 100755 --- a/configure +++ b/configure @@ -771,6 +771,7 @@ ac_user_opts=' enable_option_checking with_pkgversion with_bugurl +enable_static_c___tests enable_static_c___link_check with_gd with_gd_include @@ -1441,6 +1442,8 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-static-c++-tests + disable static C++ tests[default=no] --disable-static-c++-link-check disable static C++ link check [default=no] --disable-sanity-checks really do not use threads (should not be used except @@ -3858,6 +3861,20 @@ if test -z "$CPP"; then fi +# This will get text that should go into config.make. +config_vars= + +# Check whether --enable-static-c++-tests was given. +if test ${enable_static_c___tests+y} +then : + enableval=$enable_static_c___tests; static_cxx_tests=$enableval +else $as_nop + static_cxx_tests=yes +fi + +config_vars="$config_vars +static-cxx-tests = $static_cxx_tests" + # Check whether --enable-static-c++-link-check was given. if test ${enable_static_c___link_check+y} then : @@ -4291,7 +4308,7 @@ esac fi rm -f core conftest.err conftest.$ac_objext conftest.beam \ conftest$ac_exeext conftest.$ac_ext -if test $static_cxx_link_check = yes; then +if test $static_cxx_link_check$static_cxx_tests = yesyes; then # Static case. old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -static" @@ -4338,9 +4355,6 @@ if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then as_fn_error $? "you must configure in a separate build directory" "$LINENO" 5 fi -# This will get text that should go into config.make. -config_vars= - # Check for a --with-gd argument and set libgd-LDFLAGS in config.make. # Check whether --with-gd was given. diff --git a/configure.ac b/configure.ac index ee64d49b03..e48957f318 100644 --- a/configure.ac +++ b/configure.ac @@ -52,6 +52,16 @@ fi AC_SUBST(cross_compiling) AC_PROG_CPP +# This will get text that should go into config.make. +config_vars= + +AC_ARG_ENABLE([static-c++-tests], + AS_HELP_STRING([--disable-static-c++-tests], + [disable static C++ tests@<:@default=no@:>@]), + [static_cxx_tests=$enableval], + [static_cxx_tests=yes]) +LIBC_CONFIG_VAR([static-cxx-tests], [$static_cxx_tests]) + AC_ARG_ENABLE([static-c++-link-check], AS_HELP_STRING([--disable-static-c++-link-check], [disable static C++ link check @<:@default=no@:>@]), @@ -67,7 +77,7 @@ AC_LANG_PUSH([C++]) AC_LINK_IFELSE([AC_LANG_PROGRAM([], [])], [libc_cv_cxx_link_ok=yes], [libc_cv_cxx_link_ok=no]) -if test $static_cxx_link_check = yes; then +if test $static_cxx_link_check$static_cxx_tests = yesyes; then # Static case. old_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -static" @@ -92,9 +102,6 @@ if test "`cd $srcdir; pwd -P`" = "`pwd -P`"; then AC_MSG_ERROR([you must configure in a separate build directory]) fi -# This will get text that should go into config.make. -config_vars= - # Check for a --with-gd argument and set libgd-LDFLAGS in config.make. AC_ARG_WITH([gd], AS_HELP_STRING([--with-gd=DIR], diff --git a/manual/install.texi b/manual/install.texi index 6b6595ac91..a7847b02c0 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -252,6 +252,14 @@ configure with @option{--disable-werror}. By default for x86_64, @theglibc{} is built with the vector math library. Use this option to disable the vector math library. +@item --disable-static-c++-tests +By default, if the C++ toolchain lacks support for static linking, +configure fails to find the C++ header files and the glibc build fails. +@option{--disable-static-c++-link-check} allows the glibc build to finish, +but static C++ tests will fail if the C++ toolchain doesn't have the +necessary static C++ libraries. Use this option to skip the static C++ +tests. This option implies @option{--disable-static-c++-link-check}. + @item --disable-static-c++-link-check By default, if the C++ toolchain lacks support for static linking, configure fails to find the C++ header files and the glibc build fails. diff --git a/nptl/Makefile b/nptl/Makefile index 096eef54f2..c4c27e0d23 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -545,6 +545,9 @@ tests-static += \ # tests-static tests += tst-cancel24-static +ifeq ($(static-cxx-tests),no) +tests-unsupported += tst-cancel24-static +endif tests-internal += \ tst-sem11-static \ -- 2.11.4.GIT