mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-27 22:03:57 +08:00
f68e90a0fe
Support for Solaris 11.3 had already been obsoleted in GCC 13. However, since the only Solaris system in the cfarm was running 11.3, I've kept it in tree until now when both Solaris 11.4/SPARC and x86 systems have been added. This patch actually removes the Solaris 11.3 support. Apart from several minor simplifications, there are two more widespread changes: * In Solaris 11.4, libsocket and libnsl were folded into libc, so there's no longer a need to link them explictly. * Since Solaris 11.4, Solaris includes all crts needed by gcc (like crt1.o and gcrt1.o) with the base system. All workarounds to provide fallbacks can thus go. Bootstrapped without regressions on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (as/ld, gas/ld, and gas/gld) as well as Solaris 11.3/x86 to ascertain that version is actually rejected. 2024-04-30 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> c++tools: * configure.ac (ax_lib_socket_nsl.m4): Don't sinclude. (AX_LIB_SOCKET_NSL): Don't call. (NETLIBS): Remove. * configure: Regenerate. * Makefile.in (NETLIBS): Remove. (g++-mapper-server$(exeext)): Remove $(NETLIBS). gcc: * config.gcc: Move *-*-solaris2.11.[0-3]* to unsupported list. <*-*-solaris2*> (default_use_cxa_atexit): Set unconditionally. * configure.ac (AX_LIB_SOCKET_NSL): Don't call. (NETLIBS): Remove. (gcc_cv_ld_aligned_shf_merge): Remove. (hidden_linkonce) <i?86-*-solaris2* | x86_64-*-solaris2*>: Remove. (gcc_cv_target_dl_iterate_phdr) <*-*-solaris2*>: Always set to yes. * Makefile.in (NETLIBS): Remove. * configure, config.in, aclocal.m4: Regenerate. * config/sol2.h: Don't check HAVE_SOLARIS_CRTS. (STARTFILE_SPEC): Remove !HAVE_SOLARIS_CRTS case. [USE_GLD] (LINK_EH_SPEC): Remove TARGET_DL_ITERATE_PHDR guard. * config/i386/i386.cc (USE_HIDDEN_LINKONCE): Remove guard. * varasm.cc (mergeable_string_section): Remove HAVE_LD_ALIGNED_SHF_MERGE handling. (mergeable_constant_section): Likewise. * doc/install.texi (Specific,i?86-*-solaris2*): Reference Solaris 11.4 only. (Specific, *-*-solaris2*): Document Solaris 11.3 removal. Remove 11.3 references and caveats. Update for 11.4. gcc/cp: * Make-lang.in (cc1plus$(exeext)): Remove $(NETLIBS). gcc/objcp: * Make-lang.in (cc1objplus$(exeext)): Remove $(NETLIBS). gcc/testsuite: * lib/target-supports.exp (check_effective_target_pie): Always enable on *-*-solaris2*. libgcc: * configure.ac <*-*-solaris2*> (libgcc_cv_solaris_crts): Remove. * config.host <*-*-solaris2*>: Remove !libgcc_cv_solaris_crts support. * configure, config.in: Regenerate. * config/sol2/gmon.c (internal_mcount) [!HAVE_SOLARIS_CRTS]: Remove. * config/i386/sol2-c1.S, config/sparc/sol2-c1.S: Remove. * config/sol2/t-sol2 (crt1.o, gcrt1.o): Remove. libstdc++-v3: * testsuite/lib/dg-options.exp (add_options_for_net_ts) <*-*-solaris2*>: Don't link with -lsocket -lnsl.
753 lines
22 KiB
Plaintext
753 lines
22 KiB
Plaintext
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
sinclude(../config/enable.m4)
|
|
sinclude(../config/tls.m4)
|
|
sinclude(../config/toolexeclibdir.m4)
|
|
sinclude(../config/acx.m4)
|
|
sinclude(../config/no-executables.m4)
|
|
sinclude(../config/lib-ld.m4)
|
|
sinclude(../config/override.m4)
|
|
sinclude(../config/picflag.m4)
|
|
sinclude(../config/dfp.m4)
|
|
sinclude(../config/unwind_ipinfo.m4)
|
|
sinclude(../config/gthr.m4)
|
|
sinclude(../config/sjlj.m4)
|
|
sinclude(../config/cet.m4)
|
|
|
|
AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
|
|
AC_CONFIG_SRCDIR([static-object.mk])
|
|
|
|
# The libgcc should not depend on any header files
|
|
AC_DEFUN([_AC_INCLUDES_DEFAULT_REQUIREMENTS],
|
|
[m4_divert_text([DEFAULTS],
|
|
[ac_includes_default='/* none */'])])
|
|
|
|
AC_ARG_WITH(target-subdir,
|
|
[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target])
|
|
AC_ARG_WITH(cross-host,
|
|
[ --with-cross-host=HOST Configuring with a cross compiler])
|
|
AC_ARG_WITH(ld,
|
|
[ --with-ld arrange to use the specified ld (full pathname)])
|
|
|
|
if test "${srcdir}" = "."; then
|
|
if test -n "${with_build_subdir}"; then
|
|
libgcc_topdir="${srcdir}/../.."
|
|
with_target_subdir=
|
|
elif test -z "${with_target_subdir}"; then
|
|
libgcc_topdir="${srcdir}/.."
|
|
else
|
|
if test "${with_target_subdir}" != "."; then
|
|
libgcc_topdir="${srcdir}/${with_multisrctop}../.."
|
|
else
|
|
libgcc_topdir="${srcdir}/${with_multisrctop}.."
|
|
fi
|
|
fi
|
|
else
|
|
libgcc_topdir="${srcdir}/.."
|
|
fi
|
|
AC_SUBST(libgcc_topdir)
|
|
AC_CONFIG_AUX_DIR($libgcc_topdir)
|
|
AC_CONFIG_HEADER(auto-target.h:config.in)
|
|
|
|
AC_ARG_ENABLE(shared,
|
|
[ --disable-shared don't provide a shared libgcc],
|
|
[
|
|
case $enable_shared in
|
|
yes | no) ;;
|
|
*)
|
|
enable_shared=no
|
|
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
|
|
for pkg in $enableval; do
|
|
if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
|
|
enable_shared=yes
|
|
fi
|
|
done
|
|
IFS="$ac_save_ifs"
|
|
;;
|
|
esac
|
|
], [enable_shared=yes])
|
|
AC_SUBST(enable_shared)
|
|
|
|
AC_ARG_ENABLE(vtable-verify,
|
|
[ --enable-vtable-verify Enable vtable verification feature ],
|
|
[case "$enableval" in
|
|
yes) enable_vtable_verify=yes ;;
|
|
no) enable_vtable_verify=no ;;
|
|
*) enable_vtable_verify=no;;
|
|
esac],
|
|
[enable_vtable_verify=no])
|
|
AC_SUBST(enable_vtable_verify)
|
|
|
|
AC_ARG_WITH(aix-soname,
|
|
[AS_HELP_STRING([--with-aix-soname=aix|svr4|both],
|
|
[shared library versioning (aka "SONAME") variant to provide on AIX])],
|
|
[case "${host}:${enable_shared}" in
|
|
power*-*-aix[[5-9]]*:yes)
|
|
AC_MSG_CHECKING([which variant of shared library versioning to provide for shared libgcc])
|
|
case ${withval} in
|
|
aix|svr4|both) ;;
|
|
*) AC_MSG_ERROR([Unknown argument to --with-aix-soname]);;
|
|
esac
|
|
AC_MSG_RESULT($withval)
|
|
;;
|
|
*) with_aix_soname=aix ;;
|
|
esac
|
|
], [with_aix_soname=aix])
|
|
AC_SUBST(with_aix_soname)
|
|
|
|
GCC_PICFLAG
|
|
AC_SUBST(PICFLAG)
|
|
|
|
AC_MSG_CHECKING([for --enable-version-specific-runtime-libs])
|
|
AC_ARG_ENABLE(version-specific-runtime-libs,
|
|
[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ],
|
|
[case "$enableval" in
|
|
yes) version_specific_libs=yes ;;
|
|
no) version_specific_libs=no ;;
|
|
*) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);;
|
|
esac],
|
|
[version_specific_libs=no])
|
|
AC_MSG_RESULT($version_specific_libs)
|
|
|
|
GCC_WITH_TOOLEXECLIBDIR
|
|
|
|
AC_ARG_WITH(slibdir,
|
|
[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
|
|
slibdir="$with_slibdir",
|
|
[if test "${version_specific_libs}" = yes; then
|
|
slibdir='$(libsubdir)'
|
|
elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then
|
|
case ${with_toolexeclibdir} in
|
|
no)
|
|
slibdir='$(exec_prefix)/$(host_noncanonical)/lib'
|
|
;;
|
|
*)
|
|
slibdir=${with_toolexeclibdir}
|
|
;;
|
|
esac
|
|
else
|
|
slibdir='$(libdir)'
|
|
fi])
|
|
AC_SUBST(slibdir)
|
|
|
|
# Command-line options.
|
|
# Very limited version of AC_MAINTAINER_MODE.
|
|
AC_ARG_ENABLE([maintainer-mode],
|
|
[AC_HELP_STRING([--enable-maintainer-mode],
|
|
[enable make rules and dependencies not useful (and
|
|
sometimes confusing) to the casual installer])],
|
|
[case ${enable_maintainer_mode} in
|
|
yes) MAINT='' ;;
|
|
no) MAINT='#' ;;
|
|
*) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;;
|
|
esac
|
|
maintainer_mode=${enableval}],
|
|
[MAINT='#'])
|
|
AC_SUBST([MAINT])dnl
|
|
|
|
AC_PROG_INSTALL
|
|
|
|
AC_PROG_AWK
|
|
# We need awk; bail out if it's missing.
|
|
case ${AWK} in
|
|
"") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
|
|
esac
|
|
|
|
AC_CANONICAL_HOST
|
|
ACX_NONCANONICAL_HOST
|
|
ACX_NONCANONICAL_TARGET
|
|
GCC_TOPLEV_SUBDIRS
|
|
|
|
AC_ARG_ENABLE(gcov,
|
|
[ --disable-gcov don't provide libgcov and related host tools],
|
|
[], [case $target in
|
|
bpf-*-*)
|
|
enable_gcov=no
|
|
;;
|
|
*)
|
|
enable_gcov=yes
|
|
;;
|
|
esac])
|
|
AC_SUBST(enable_gcov)
|
|
|
|
# Calculate toolexeclibdir
|
|
# Also toolexecdir, though it's only used in toolexeclibdir
|
|
case ${version_specific_libs} in
|
|
yes)
|
|
# Need the gcc compiler version to know where to install libraries
|
|
# and header files if --enable-version-specific-runtime-libs option
|
|
# is selected.
|
|
toolexecdir='$(libdir)/gcc/$(target_noncanonical)'
|
|
toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)'
|
|
;;
|
|
no)
|
|
if test -n "$with_cross_host" &&
|
|
test x"$with_cross_host" != x"no"; then
|
|
# Install a library built with a cross compiler in tooldir, not libdir.
|
|
toolexecdir='$(exec_prefix)/$(target_noncanonical)'
|
|
case ${with_toolexeclibdir} in
|
|
no)
|
|
toolexeclibdir='$(toolexecdir)/lib'
|
|
;;
|
|
*)
|
|
toolexeclibdir=${with_toolexeclibdir}
|
|
;;
|
|
esac
|
|
else
|
|
toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)'
|
|
toolexeclibdir='$(libdir)'
|
|
fi
|
|
multi_os_directory=`$CC -print-multi-os-directory`
|
|
case $multi_os_directory in
|
|
.) ;; # Avoid trailing /.
|
|
*) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;;
|
|
esac
|
|
;;
|
|
esac
|
|
AC_SUBST(toolexecdir)
|
|
AC_SUBST(toolexeclibdir)
|
|
|
|
dnl These must be called before AM_PROG_LIBTOOL, because it may want
|
|
dnl to call AC_CHECK_PROG.
|
|
AC_CHECK_TOOL(AR, ar)
|
|
AC_CHECK_TOOL(LIPO, lipo, :)
|
|
AC_CHECK_TOOL(NM, nm)
|
|
AC_CHECK_TOOL(RANLIB, ranlib, :)
|
|
AC_CHECK_TOOL(STRIP, strip, :)
|
|
AC_PROG_LN_S
|
|
|
|
GCC_NO_EXECUTABLES
|
|
AC_PROG_CC
|
|
AC_PROG_CPP_WERROR
|
|
|
|
AC_SYS_LARGEFILE
|
|
|
|
AC_CHECK_SIZEOF([double])
|
|
AC_CHECK_SIZEOF([long double])
|
|
AS_VAR_ARITH([double_type_size], [$ac_cv_sizeof_double \* 8])
|
|
AS_VAR_ARITH([long_double_type_size], [$ac_cv_sizeof_long_double \* 8])
|
|
AC_SUBST(double_type_size)
|
|
AC_SUBST(long_double_type_size)
|
|
|
|
AC_CHECK_HEADERS(inttypes.h stdint.h stdlib.h ftw.h \
|
|
unistd.h sys/stat.h sys/types.h \
|
|
string.h strings.h memory.h sys/auxv.h sys/mman.h)
|
|
AC_HEADER_STDC
|
|
|
|
# Check for decimal float support.
|
|
AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp],
|
|
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <fenv.h>
|
|
]], [[
|
|
_Decimal32 x;
|
|
int fe_except =
|
|
FE_INVALID|FE_DIVBYZERO|FE_OVERFLOW|FE_UNDERFLOW|FE_INEXACT;
|
|
]])],
|
|
[libgcc_cv_dfp=yes],
|
|
[libgcc_cv_dfp=no])])
|
|
decimal_float=$libgcc_cv_dfp
|
|
AC_SUBST(decimal_float)
|
|
|
|
GCC_AC_ENABLE_DECIMAL_FLOAT([$host])
|
|
|
|
# Check for fixed-point support.
|
|
AC_CACHE_CHECK([whether fixed-point is supported], [libgcc_cv_fixed_point],
|
|
[AC_COMPILE_IFELSE([AC_LANG_SOURCE([_Sat _Fract x;])],
|
|
[libgcc_cv_fixed_point=yes],
|
|
[libgcc_cv_fixed_point=no])])
|
|
fixed_point=$libgcc_cv_fixed_point
|
|
AC_SUBST(fixed_point)
|
|
|
|
# For platforms with the unwind ABI which includes an unwind library,
|
|
# libunwind, we can choose to use the system libunwind.
|
|
# config.gcc also contains tests of with_system_libunwind.
|
|
GCC_CHECK_UNWIND_GETIPINFO
|
|
|
|
# Check if the compiler is configured for setjmp/longjmp exceptions.
|
|
GCC_CHECK_SJLJ_EXCEPTIONS
|
|
|
|
GCC_CET_FLAGS(CET_FLAGS)
|
|
AC_SUBST(CET_FLAGS)
|
|
|
|
AC_ARG_ENABLE([explicit-exception-frame-registration],
|
|
[AC_HELP_STRING([--enable-explicit-exception-frame-registration],
|
|
[register exception tables explicitly at module start, for use
|
|
e.g. for compatibility with installations without PT_GNU_EH_FRAME support])],
|
|
[
|
|
force_explicit_eh_registry=
|
|
if test "$enable_explicit_exception_frame_registration" = yes; then
|
|
if test $ac_cv_sjlj_exceptions = yes; then
|
|
AC_MSG_ERROR([Can't --enable-explicit-exception-frame-registration
|
|
with setjmp/longjmp exceptions])
|
|
fi
|
|
force_explicit_eh_registry=-DUSE_EH_FRAME_REGISTRY_ALWAYS
|
|
fi
|
|
])
|
|
AC_SUBST([force_explicit_eh_registry])
|
|
|
|
AC_ARG_ENABLE([tm-clone-registry],
|
|
[ --disable-tm-clone-registry disable TM clone registry],
|
|
[
|
|
use_tm_clone_registry=
|
|
if test "$enable_tm_clone_registry" = no; then
|
|
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
|
fi
|
|
],
|
|
[
|
|
use_tm_clone_registry=
|
|
case $target in
|
|
msp430*elfbare)
|
|
use_tm_clone_registry=-DUSE_TM_CLONE_REGISTRY=0
|
|
;;
|
|
esac
|
|
])
|
|
AC_SUBST([use_tm_clone_registry])
|
|
|
|
AC_LIB_PROG_LD_GNU
|
|
|
|
AC_MSG_CHECKING([for thread model used by GCC])
|
|
target_thread_file=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
|
|
AC_MSG_RESULT([$target_thread_file])
|
|
|
|
# Check for assembler CFI support.
|
|
AC_CACHE_CHECK([whether assembler supports CFI directives], [libgcc_cv_cfi],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([asm("\n\
|
|
.text\n\
|
|
.cfi_startproc\n\
|
|
.cfi_personality 0, symbol\n\
|
|
.cfi_endproc");])],
|
|
[libgcc_cv_cfi=yes],
|
|
[libgcc_cv_cfi=no])])
|
|
|
|
# Check 32bit or 64bit. In the case of MIPS, this really determines the
|
|
# word size rather than the address size.
|
|
cat > conftest.c <<EOF
|
|
#if defined(__x86_64__) || (!defined(__i386__) && defined(__LP64__)) \
|
|
|| defined(__mips64) || defined(__loongarch64)
|
|
host_address=64
|
|
#else
|
|
host_address=32
|
|
#endif
|
|
EOF
|
|
eval `${CC-cc} -E conftest.c | grep host_address=`
|
|
rm -f conftest.c
|
|
|
|
case ${host} in
|
|
mips*-*-*)
|
|
AC_CACHE_CHECK([whether the target is hard-float],
|
|
[libgcc_cv_mips_hard_float],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([#ifndef __mips_hard_float
|
|
#error FOO
|
|
#endif
|
|
])],
|
|
[libgcc_cv_mips_hard_float=yes],
|
|
[libgcc_cv_mips_hard_float=no])])
|
|
esac
|
|
|
|
# Determine the version of glibc, if any, used on the target.
|
|
AC_MSG_CHECKING([for target glibc version])
|
|
AC_ARG_WITH([glibc-version],
|
|
[AS_HELP_STRING([--with-glibc-version=M.N],
|
|
[assume GCC used with glibc version M.N or later])], [
|
|
if [echo "$with_glibc_version" | grep '^[0-9][0-9]*\.[0-9][0-9]*$']; then
|
|
glibc_version_major=`echo "$with_glibc_version" | sed -e 's/\..*//'`
|
|
glibc_version_minor=`echo "$with_glibc_version" | sed -e 's/.*\.//'`
|
|
else
|
|
AC_MSG_ERROR([option --with-glibc-version requires a version number M.N])
|
|
fi], [
|
|
AC_COMPUTE_INT([glibc_version_major], [__GLIBC__],
|
|
[#include <features.h>],
|
|
[glibc_version_major=0])
|
|
AC_COMPUTE_INT([glibc_version_minor], [__GLIBC_MINOR__],
|
|
[#include <features.h>],
|
|
[glibc_version_minor=0])])
|
|
AC_MSG_RESULT([$glibc_version_major.$glibc_version_minor])
|
|
|
|
# Determine floating-point type for powerpc*-*-linux* or vxworks7*.
|
|
# Single-precision-only FPRs are not a supported configuration for
|
|
# this target, so are not allowed for in this test.
|
|
case ${host} in
|
|
powerpc*-*-linux* | powerpc*-*-vxworks7*)
|
|
cat > conftest.c <<EOF
|
|
#ifdef __powerpc64__
|
|
ppc_fp_type=64
|
|
#elif defined _SOFT_FLOAT
|
|
ppc_fp_type=soft
|
|
#elif defined _SOFT_DOUBLE
|
|
ppc_fp_type=e500v1
|
|
#elif defined __NO_FPRS__
|
|
ppc_fp_type=e500v2
|
|
#else
|
|
ppc_fp_type=hard
|
|
#endif
|
|
EOF
|
|
eval `${CC-cc} -E conftest.c | grep ppc_fp_type=`
|
|
rm -f conftest.c
|
|
# glibc 2.19 and later provide all the soft-fp functions, with proper
|
|
# interactions with <fenv.h> exception and rounding mode handling, so
|
|
# make libgcc's versions into compat symbols if a recent enough glibc
|
|
# version is being used.
|
|
ppc_fp_compat=
|
|
case ${ppc_fp_type} in
|
|
soft|e500v1|e500v2)
|
|
if test $glibc_version_major -gt 2 \
|
|
|| ( test $glibc_version_major -eq 2 \
|
|
&& test $glibc_version_minor -ge 19 ); then
|
|
ppc_fp_compat="t-softfp-compat"
|
|
fi
|
|
;;
|
|
esac
|
|
;;
|
|
esac
|
|
|
|
case ${host} in
|
|
# At present, we cannot turn -mfloat128 on via #pragma GCC target, so just
|
|
# check if we have VSX (ISA 2.06) support to build the software libraries, and
|
|
# whether the assembler can handle xsaddqp for hardware support. Also check if
|
|
# a new glibc is being used so that __builtin_cpu_supports can be used.
|
|
powerpc*-*-linux*)
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS -mabi=altivec -mvsx -mfloat128"
|
|
AC_CACHE_CHECK([for PowerPC ISA 2.06 to build __float128 libraries],
|
|
[libgcc_cv_powerpc_float128],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([vector double dadd (vector double a, vector double b) { return a + b; }])],
|
|
[libgcc_cv_powerpc_float128=yes],
|
|
[libgcc_cv_powerpc_float128=no])])
|
|
|
|
CFLAGS="$CFLAGS -mcpu=power9 -mfloat128-hardware"
|
|
AC_CACHE_CHECK([for PowerPC ISA 3.0 to build hardware __float128 libraries],
|
|
[libgcc_cv_powerpc_float128_hw],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([#include <sys/auxv.h>
|
|
#ifndef AT_PLATFORM
|
|
#error "AT_PLATFORM is not defined"
|
|
#endif
|
|
#ifndef __BUILTIN_CPU_SUPPORTS__
|
|
#error "__builtin_cpu_supports is not available"
|
|
#endif
|
|
vector unsigned char add (vector unsigned char a, vector unsigned char b)
|
|
{
|
|
vector unsigned char ret;
|
|
__asm__ ("xsaddqp %0,%1,%2" : "=v" (ret) : "v" (a), "v" (b));
|
|
return ret;
|
|
}
|
|
void *add_resolver (void) { return (void *) add; }
|
|
__float128 add_ifunc (__float128, __float128)
|
|
__attribute__ ((__ifunc__ ("add_resolver")));])],
|
|
[libgcc_cv_powerpc_float128_hw=yes],
|
|
[libgcc_cv_powerpc_float128_hw=no])])
|
|
CFLAGS="$saved_CFLAGS"
|
|
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS -mcpu=power10 -mfloat128-hardware"
|
|
AC_CACHE_CHECK([for PowerPC ISA 3.1 to build hardware __float128 libraries],
|
|
[libgcc_cv_powerpc_3_1_float128_hw],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([#include <sys/auxv.h>
|
|
#ifndef AT_PLATFORM
|
|
#error "AT_PLATFORM is not defined"
|
|
#endif
|
|
#ifndef __BUILTIN_CPU_SUPPORTS__
|
|
#error "__builtin_cpu_supports is not available"
|
|
#endif
|
|
vector unsigned char conv (vector unsigned char qs)
|
|
{
|
|
vector unsigned char ret;
|
|
__asm__ ("xscvsqqp %0,%1" : "=v" (ret) : "v" (qs));
|
|
return ret;
|
|
}
|
|
void *conv_resolver (void) { return (void *) conv; }
|
|
__float128 conv_ifunc (__float128)
|
|
__attribute__ ((__ifunc__ ("conv_resolver")));])],
|
|
[libgcc_cv_powerpc_3_1_float128_hw=yes],
|
|
[libgcc_cv_powerpc_3_1_float128_hw=no])])
|
|
CFLAGS="$saved_CFLAGS"
|
|
esac
|
|
|
|
# Collect host-machine-specific information.
|
|
. ${srcdir}/config.host
|
|
|
|
# Used for constructing correct paths for offload compilers.
|
|
accel_dir_suffix=
|
|
real_host_noncanonical=${host_noncanonical}
|
|
if test x"$enable_as_accelerator_for" != x; then
|
|
accel_dir_suffix=/accel/${target_noncanonical}
|
|
real_host_noncanonical=${enable_as_accelerator_for}
|
|
fi
|
|
AC_SUBST(accel_dir_suffix)
|
|
AC_SUBST(real_host_noncanonical)
|
|
|
|
if test x"$enable_offload_targets" != x; then
|
|
extra_parts="${extra_parts} crtoffloadbegin.o crtoffloadend.o crtoffloadtable.o"
|
|
fi
|
|
|
|
# Check if Solaris/x86 linker supports ZERO terminator unwind entries.
|
|
# This is after config.host so we can augment tmake_file.
|
|
# Link with -nostartfiles -nodefaultlibs since neither are present while
|
|
# building libgcc.
|
|
case ${host} in
|
|
i?86-*-solaris2* | x86_64-*-solaris2*)
|
|
cat > conftest.s <<EOF
|
|
.section .eh_frame,"a",@unwind
|
|
.zero 4
|
|
.section .jcr,"aw",@progbits
|
|
.zero 8
|
|
EOF
|
|
if AC_TRY_COMMAND(${CC-cc} -shared -nostartfiles -nodefaultlibs -o conftest.so conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
|
tmake_file="${tmake_file} i386/t-crtstuff"
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# Check if Solaris linker support v2 linker mapfile syntax.
|
|
# Link with -nostartfiles -nodefaultlibs since neither are present while
|
|
# building libgcc.
|
|
case ${host} in
|
|
*-*-solaris2*)
|
|
solaris_ld_v2_maps=no
|
|
echo 'int main(void) {return 0;}' > conftest.c
|
|
echo '$mapfile_version 2' > conftest.map
|
|
if AC_TRY_COMMAND([${CC-cc} -nostartfiles -nodefaultlibs -Wl,-M,conftest.map -o conftest conftest.c 1>&AS_MESSAGE_LOG_FD]); then
|
|
solaris_ld_v2_maps=yes
|
|
fi
|
|
;;
|
|
esac
|
|
AC_SUBST(solaris_ld_v2_maps)
|
|
|
|
# Check if xtensa target is configured for windowed ABI and thus needs to use
|
|
# custom unwind code.
|
|
# This is after config.host so we can augment tmake_file.
|
|
case ${host} in
|
|
xtensa*-*)
|
|
AC_COMPILE_IFELSE([AC_LANG_SOURCE(
|
|
[#ifdef __XTENSA_CALL0_ABI__
|
|
#error
|
|
#endif
|
|
])],
|
|
[tmake_file="${tmake_file} xtensa/t-windowed"])
|
|
;;
|
|
esac
|
|
|
|
# Check for visibility support. This is after config.host so that
|
|
# we can check for asm_hidden_op.
|
|
AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
|
|
libgcc_cv_hidden_visibility_attribute, [
|
|
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
|
|
libgcc_cv_hidden_visibility_attribute=no
|
|
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
|
if grep "\\$asm_hidden_op.*foo" conftest.s >/dev/null; then
|
|
libgcc_cv_hidden_visibility_attribute=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.*
|
|
])
|
|
|
|
if test $libgcc_cv_hidden_visibility_attribute = yes; then
|
|
vis_hide='-fvisibility=hidden -DHIDE_EXPORTS'
|
|
AC_DEFINE_UNQUOTED(AS_HIDDEN_DIRECTIVE, $asm_hidden_op, [Define to the .hidden-like directive if it exists.])
|
|
else
|
|
vis_hide=
|
|
fi
|
|
AC_SUBST(vis_hide)
|
|
|
|
# Check for .cfi_sections .debug_frame support.
|
|
AC_CACHE_CHECK([for .cfi_sections .debug_frame],
|
|
libgcc_cv_cfi_sections_directive, [
|
|
echo 'int foo (int, char *);' > conftest.c
|
|
echo 'int bar (int x) { char *y = __builtin_alloca (x); return foo (x + 1, y) + 1; }' >> conftest.c
|
|
libgcc_cv_cfi_sections_directive=no
|
|
if AC_TRY_COMMAND(${CC-cc} -Werror -g -fno-asynchronous-unwind-tables -fno-unwind-tables -fno-exceptions -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
|
|
if grep "\\.cfi_sections.*\\.debug_frame" conftest.s >/dev/null; then
|
|
libgcc_cv_cfi_sections_directive=yes
|
|
fi
|
|
fi
|
|
rm -f conftest.*
|
|
])
|
|
if test $libgcc_cv_cfi_sections_directive = yes; then
|
|
AC_DEFINE(HAVE_AS_CFI_SECTIONS, 1, [Define to 1 if the assembler supports .cfi_sections .debug_frame directive.])
|
|
fi
|
|
|
|
# See if we have thread-local storage. We can only test assembler
|
|
# since link-time and run-time tests require the newly built
|
|
# gcc, which can't be used to build executable due to that libgcc
|
|
# is yet to be built here.
|
|
GCC_CHECK_CC_TLS
|
|
set_have_cc_tls=
|
|
if test "$enable_tls $gcc_cv_have_cc_tls" = "yes yes"; then
|
|
set_have_cc_tls="-DHAVE_CC_TLS"
|
|
fi
|
|
AC_SUBST(set_have_cc_tls)
|
|
|
|
# See if we have emulated thread-local storage.
|
|
GCC_CHECK_EMUTLS
|
|
set_use_emutls=
|
|
if test "$enable_tls $gcc_cv_use_emutls" = "yes yes"; then
|
|
set_use_emutls="-DUSE_EMUTLS"
|
|
fi
|
|
AC_SUBST(set_use_emutls)
|
|
|
|
dnl Check if as supports AVX instructions.
|
|
AC_DEFUN([LIBGCC_CHECK_AS_AVX], [
|
|
case "${target}" in
|
|
i[[34567]]86-*-* | x86_64-*-*)
|
|
AC_CACHE_CHECK([if the assembler supports AVX], libgcc_cv_as_avx, [
|
|
AC_TRY_COMPILE([], [asm("vzeroupper");],
|
|
[libgcc_cv_as_avx=yes], [libgcc_cv_as_avx=no])
|
|
])
|
|
if test x$libgcc_cv_as_avx = xyes; then
|
|
AC_DEFINE(HAVE_AS_AVX, 1, [Define to 1 if the assembler supports AVX.])
|
|
fi
|
|
;;
|
|
esac])
|
|
LIBGCC_CHECK_AS_AVX
|
|
|
|
dnl Check if as supports LSE instructions.
|
|
AC_DEFUN([LIBGCC_CHECK_AS_LSE], [
|
|
case "${target}" in
|
|
aarch64*-*-*)
|
|
AC_CACHE_CHECK([if the assembler supports LSE], libgcc_cv_as_lse, [
|
|
AC_TRY_COMPILE([],
|
|
changequote(,)dnl
|
|
asm(".arch armv8-a+lse\n\tcas w0, w1, [x2]");
|
|
changequote([,])dnl
|
|
,
|
|
[libgcc_cv_as_lse=yes], [libgcc_cv_as_lse=no])
|
|
])
|
|
if test x$libgcc_cv_as_lse = xyes; then
|
|
AC_DEFINE(HAVE_AS_LSE, 1, [Define to 1 if the assembler supports LSE.])
|
|
fi
|
|
;;
|
|
esac])
|
|
LIBGCC_CHECK_AS_LSE
|
|
|
|
dnl Check if as supports .variant_pcs.
|
|
AC_DEFUN([LIBGCC_CHECK_AS_VARIANT_PCS], [
|
|
case "${target}" in
|
|
aarch64*-*-*)
|
|
AC_CACHE_CHECK([if as supports .variant_pcs], libgcc_cv_as_variant_pcs, [
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
|
|
[[asm (".variant_pcs foobar");]])],
|
|
[libgcc_cv_as_variant_pcs=yes], [libgcc_cv_as_variant_pcs=no])
|
|
])
|
|
if test x$libgcc_cv_as_variant_pcs = xyes; then
|
|
AC_DEFINE(HAVE_AS_VARIANT_PCS, 1,
|
|
[Define to 1 if the assembler supports .variant_pcs.])
|
|
fi
|
|
;;
|
|
esac])
|
|
LIBGCC_CHECK_AS_VARIANT_PCS
|
|
|
|
# Check __getauxval ABI symbol for CPU feature detection.
|
|
case ${target} in
|
|
aarch64*-linux-*)
|
|
# No link check because the libc may not be present.
|
|
AC_CACHE_CHECK([for __getauxval],
|
|
[libgcc_cv_have___getauxval],
|
|
[case ${target} in
|
|
*-linux-gnu*)
|
|
libgcc_cv_have___getauxval=yes
|
|
;;
|
|
*)
|
|
libgcc_cv_have___getauxval=no
|
|
esac])
|
|
if test x$libgcc_cv_have___getauxval = xyes; then
|
|
AC_DEFINE(HAVE___GETAUXVAL, 1,
|
|
[Define to 1 if __getauxval is available.])
|
|
fi
|
|
esac
|
|
|
|
dnl Check if as supports RTM instructions.
|
|
AC_CACHE_CHECK(for init priority support, libgcc_cv_init_priority, [
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,
|
|
[[void ip (void) __attribute__ ((constructor (1)));]])],
|
|
[libgcc_cv_init_priority=yes],[libgcc_cv_init_priority=no])])
|
|
if test $libgcc_cv_init_priority = yes; then
|
|
AC_DEFINE(HAVE_INIT_PRIORITY, 1,
|
|
[Define if the compiler supports init priority.])
|
|
fi
|
|
|
|
# Conditionalize the sfp-machine.h header for this target machine.
|
|
if test -z "${sfp_machine_header}"; then
|
|
sfp_machine_header=$cpu_type/sfp-machine.h
|
|
if test -f ${srcdir}/config/${sfp_machine_header}; then
|
|
:
|
|
else
|
|
sfp_machine_header=no-sfp-machine.h
|
|
fi
|
|
fi
|
|
AC_SUBST(sfp_machine_header)
|
|
|
|
# Conditionalize the makefile for this target machine.
|
|
tmake_file_=
|
|
for f in ${tmake_file}
|
|
do
|
|
if test -f ${srcdir}/config/$f
|
|
then
|
|
tmake_file_="${tmake_file_} \$(srcdir)/config/$f"
|
|
fi
|
|
done
|
|
tmake_file="${tmake_file_}"
|
|
AC_SUBST(tmake_file)
|
|
|
|
# Likewise export definitions for libgcc_tm.h
|
|
tm_file_=
|
|
for f in ${tm_file}
|
|
do
|
|
tm_file_="${tm_file_} \$(srcdir)/config/$f"
|
|
done
|
|
tm_file="${tm_file_}"
|
|
AC_SUBST(tm_file)
|
|
AC_SUBST(tm_defines)
|
|
|
|
# Map from thread model to thread header.
|
|
GCC_AC_THREAD_HEADER([$target_thread_file])
|
|
|
|
AC_CACHE_CHECK([for strub support],
|
|
[libgcc_cv_strub_support],
|
|
[AC_COMPILE_IFELSE(
|
|
[AC_LANG_SOURCE([void __attribute__ ((__strub__)) fn (void) {}])],
|
|
[libgcc_cv_strub_support=yes],
|
|
[libgcc_cv_strub_support=no])])
|
|
if test "x$libgcc_cv_strub_support" != xno; then
|
|
HAVE_STRUB_SUPPORT=
|
|
else
|
|
HAVE_STRUB_SUPPORT='# '
|
|
fi
|
|
AC_SUBST(HAVE_STRUB_SUPPORT)
|
|
|
|
# Determine what GCC version number to use in filesystem paths.
|
|
GCC_BASE_VER
|
|
|
|
# Substitute configuration variables
|
|
AC_SUBST(cpu_type)
|
|
AC_SUBST(extra_parts)
|
|
AC_SUBST(asm_hidden_op)
|
|
AC_SUBST(enable_execute_stack)
|
|
AC_SUBST(unwind_header)
|
|
AC_SUBST(md_unwind_header)
|
|
AC_SUBST(sfp_machine_header)
|
|
AC_SUBST(thread_header)
|
|
|
|
# We need multilib support.
|
|
AC_CONFIG_FILES([Makefile])
|
|
AC_CONFIG_COMMANDS([default],
|
|
[[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
|
|
if test -n "$CONFIG_FILES"; then
|
|
# FIXME: We shouldn't need to set ac_file
|
|
ac_file=Makefile
|
|
. ${libgcc_topdir}/config-ml.in
|
|
fi]],
|
|
[[srcdir=${srcdir}
|
|
host=${host}
|
|
with_target_subdir=${with_target_subdir}
|
|
with_multisubdir=${with_multisubdir}
|
|
ac_configure_args="--enable-multilib ${ac_configure_args}"
|
|
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
|
|
libgcc_topdir=${libgcc_topdir}
|
|
CC="${CC}"
|
|
]])
|
|
AC_OUTPUT
|