glibc/sysdeps/x86_64/configure
H.J. Lu b79f257533 Add TEST_CC and TEST_CXX support
Support testing glibc build with a different C compiler or a different
C++ compiler with

$ ../glibc-VERSION/configure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1"

1. Add LIBC_TRY_CC_AND_TEST_CC_OPTION, LIBC_TRY_CC_AND_TEST_CC_COMMAND
and LIBC_TRY_CC_AND_TEST_LINK to test both CC and TEST_CC.
2. Add check and xcheck targets to Makefile.in and override build compiler
options with ones from TEST_CC and TEST_CXX.

Tested on Fedora 41/x86-64:

1. Building with GCC 14.2.1 and testing with GCC 6.4.1 and GCC 11.2.1.
2. Building with GCC 15 and testing with GCC 6.4.1.

Support for GCC versions older than GCC 6.2 may need to change the test
sources.  Other targets may need to update configure.ac under sysdeps and
modify Makefile.in to override target build compiler options.

Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Sam James <sam@gentoo.org>
2024-12-11 18:31:00 +08:00

322 lines
9.7 KiB
Plaintext
Executable File

# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/x86_64.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -mprefer-vector-width=128" >&5
printf %s "checking for -mprefer-vector-width=128... " >&6; }
if test ${libc_cv_cc_mprefer_vector_width+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} -mprefer-vector-width=128 -xc /dev/null -S -o /dev/null'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then :
libc_cv_cc_mprefer_vector_width=yes
else case e in #(
e) libc_cv_cc_mprefer_vector_width=no ;;
esac
fi ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_mprefer_vector_width" >&5
printf "%s\n" "$libc_cv_cc_mprefer_vector_width" >&6; }
if test "$TEST_CC" = "$CC"; then
libc_cv_test_cc_mprefer_vector_width=$libc_cv_cc_mprefer_vector_width
else
saved_CC="$CC"
CC="$TEST_CC"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -mprefer-vector-width=128 in testing" >&5
printf %s "checking for -mprefer-vector-width=128 in testing... " >&6; }
if test ${libc_cv_test_cc_mprefer_vector_width+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} -mprefer-vector-width=128 -xc /dev/null -S -o /dev/null'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then :
libc_cv_test_cc_mprefer_vector_width=yes
else case e in #(
e) libc_cv_test_cc_mprefer_vector_width=no ;;
esac
fi ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_cc_mprefer_vector_width" >&5
printf "%s\n" "$libc_cv_test_cc_mprefer_vector_width" >&6; }
CC="$saved_CC"
fi
config_vars="$config_vars
config-cflags-mprefer-vector-width = $libc_cv_cc_mprefer_vector_width"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for linker that supports -z mark-plt" >&5
printf %s "checking for linker that supports -z mark-plt... " >&6; }
libc_linker_feature=no
cat > conftest.c <<EOF
int _start (void) { return 42; }
EOF
if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp
-Wl,-z,mark-plt -nostdlib -nostartfiles
-fPIC -shared -o conftest.so conftest.c
1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
if ${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS $no_ssp -Wl,-z,mark-plt -nostdlib \
-nostartfiles -fPIC -shared -o conftest.so conftest.c 2>&1 \
| grep "warning: -z mark-plt ignored" > /dev/null 2>&1; then
true
else
libc_linker_feature=yes
fi
fi
rm -f conftest*
if test $libc_linker_feature = yes; then
libc_cv_z_mark_plt=yes
else
libc_cv_z_mark_plt=no
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_linker_feature" >&5
printf "%s\n" "$libc_linker_feature" >&6; }
config_vars="$config_vars
have-z-mark-plt = $libc_cv_z_mark_plt"
if test x"$build_mathvec" = xnotset; then
build_mathvec=yes
fi
test_enable_cet=$enable_cet
if test $enable_cet != no; then
# Check if CET can be enabled.
conftest_code="
#if !defined __CET__ || __CET__ != 3
# error CET is not available.
#endif
"
cat > conftest.c <<EOF
$conftest_code
EOF
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CET can be enabled" >&5
printf %s "checking whether CET can be enabled... " >&6; }
if test ${libc_cv_x86_cet_available+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c -fcf-protection -include cet.h conftest.c -o conftest 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
libc_cv_x86_cet_available=yes
else
libc_cv_x86_cet_available=no
fi
;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_available" >&5
printf "%s\n" "$libc_cv_x86_cet_available" >&6; }
if test "$TEST_CC" = "$CC"; then
libc_cv_test_x86_cet_available=$libc_cv_x86_cet_available
else
saved_CC="$CC"
CC="$TEST_CC"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CET can be enabled in testing" >&5
printf %s "checking whether CET can be enabled in testing... " >&6; }
if test ${libc_cv_test_x86_cet_available+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -c -fcf-protection -include cet.h conftest.c -o conftest 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
libc_cv_test_x86_cet_available=yes
else
libc_cv_test_x86_cet_available=no
fi ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_x86_cet_available" >&5
printf "%s\n" "$libc_cv_test_x86_cet_available" >&6; }
CC="$saved_CC"
fi
rm -f conftest*
test_enable_cet=$libc_cv_test_x86_cet_available
if test $libc_cv_x86_cet_available != yes; then
as_fn_error $? "$CC doesn't support CET" "$LINENO" 5
fi
fi
if test $enable_cet != no; then
# Check if assembler supports CET.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether assembler supports CET" >&5
printf %s "checking whether assembler supports CET... " >&6; }
if test ${libc_cv_x86_cet_as+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) cat > conftest.s <<EOF
incsspd %ecx
EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s -o conftest.o 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
libc_cv_x86_cet_as=yes
else
libc_cv_x86_cet_as=no
fi
rm -rf conftest* ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_as" >&5
printf "%s\n" "$libc_cv_x86_cet_as" >&6; }
if test $libc_cv_x86_cet_as = no; then
as_fn_error $? "$AS doesn't support CET" "$LINENO" 5
fi
fi
if test $enable_cet = yes; then
printf "%s\n" "#define DEFAULT_DL_X86_CET_CONTROL cet_elf_property" >>confdefs.h
elif test $enable_cet = permissive; then
printf "%s\n" "#define DEFAULT_DL_X86_CET_CONTROL cet_permissive" >>confdefs.h
fi
config_vars="$config_vars
enable-cet = $enable_cet"
# Check if -mamx-tile works properly.
check_x86_have_amx_tile ()
{
eval $1=no
if grep -q __builtin_ia32_ldtilecfg conftest; then
eval $1=yes
fi
}
conftest_code="
#include <x86intrin.h>
"
cat > conftest.c <<EOF
$conftest_code
EOF
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -mamx-tile works properly" >&5
printf %s "checking whether -mamx-tile works properly... " >&6; }
if test ${libc_cv_x86_have_amx_tile+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -E -mamx-tile conftest.c -o conftest 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
check_x86_have_amx_tile libc_cv_x86_have_amx_tile
else
libc_cv_x86_have_amx_tile=no
fi
;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_have_amx_tile" >&5
printf "%s\n" "$libc_cv_x86_have_amx_tile" >&6; }
if test "$TEST_CC" = "$CC"; then
libc_cv_test_x86_have_amx_tile=$libc_cv_x86_have_amx_tile
else
saved_CC="$CC"
CC="$TEST_CC"
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -mamx-tile works properly in testing" >&5
printf %s "checking whether -mamx-tile works properly in testing... " >&6; }
if test ${libc_cv_test_x86_have_amx_tile+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) if { ac_try='${CC-cc} $CFLAGS $CPPFLAGS -E -mamx-tile conftest.c -o conftest 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }
then
check_x86_have_amx_tile libc_cv_test_x86_have_amx_tile
else
libc_cv_test_x86_have_amx_tile=no
fi ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_test_x86_have_amx_tile" >&5
printf "%s\n" "$libc_cv_test_x86_have_amx_tile" >&6; }
CC="$saved_CC"
fi
rm -f conftest*
config_vars="$config_vars
have-mamx-tile = $libc_cv_x86_have_amx_tile"
# Check if -mapxf is enabled.
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether -mapxf is enabled" >&5
printf %s "checking whether -mapxf is enabled... " >&6; }
if test ${libc_cv_x86_have_apx+y}
then :
printf %s "(cached) " >&6
else case e in #(
e) cat > conftest.c <<EOF
#ifndef __APX_F__
# error APX isn't enabled
#endif
EOF
libc_cv_x86_have_apx=no
if { ac_try='${CC-cc} -c $CFLAGS conftest.c -o conftest.o 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
libc_cv_x86_have_apx=yes
fi
rm -rf conftest* ;;
esac
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_have_apx" >&5
printf "%s\n" "$libc_cv_x86_have_apx" >&6; }
if test $libc_cv_x86_have_apx = yes; then
printf "%s\n" "#define HAVE_X86_APX 1" >>confdefs.h
fi
config_vars="$config_vars
have-x86-apx = $libc_cv_x86_have_apx"
test -n "$critic_missing" && as_fn_error $? "
*** $critic_missing" "$LINENO" 5