mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-30 12:31:53 +08:00
b79f257533
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>
322 lines
9.7 KiB
Plaintext
Executable File
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
|
|
|