47ddb895df
This patch adds the ability to configure GCC on AIX to build as a 64 bit application and to build target libraries "FAT" libraries in both 32 bit and 64 bit mode. The patch adds makefile fragment hooks to target libraries that allows them to include target-specific rules. The target specific rules for AIX place both 32 bit and 64 bit objects and shared objects in archives at the top-level, not multilib subdirectories. The multilibs are built in subdirectories, but must be combined during the last parts of the target library build process. Because of the way that GCC bootstrap works, the libraries must be combined during the multiple stages of GCC bootstrap, not solely when installed in the final destination, so the libraries are correct at the end of each target library build stage, not solely an install recipe. gcc/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * config.gcc: Use t-aix64, biarch64 and default64 for cpu_is_64bit. * config/rs6000/aix72.h (ASM_SPEC): Remove aix64 option. (ASM_SPEC32): New. (ASM_SPEC64): New. (ASM_CPU_SPEC): Remove vsx and altivec options. (CPP_SPEC_COMMON): Rename from CPP_SPEC. (CPP_SPEC32): New. (CPP_SPEC64): New. (CPLUSPLUS_CPP_SPEC): Rename to CPLUSPLUS_CPP_SPEC_COMMON.. (TARGET_DEFAULT): Only define if not BIARCH. (LIB_SPEC_COMMON): Rename from LIB_SPEC. (LIB_SPEC32): New. (LIB_SPEC64): New. (LINK_SPEC_COMMON): Rename from LINK_SPEC. (LINK_SPEC32): New. (LINK_SPEC64): New. (STARTFILE_SPEC): Add 64 bit version of crtcxa and crtdbase. (ASM_SPEC): Define 32 and 64 bit alternatives using DEFAULT_ARCH64_P. (CPP_SPEC): Same. (CPLUSPLUS_CPP_SPEC): Same. (LIB_SPEC): Same. (LINK_SPEC): Same. (SUBTARGET_EXTRA_SPECS): Add new 32/64 specs. * config/rs6000/defaultaix64.h: New file. * config/rs6000/t-aix64: New file. libgcc/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * config.host (extra_parts): Add crtcxa_64 and crtdbase_64. * config/rs6000/t-aix-cxa: Explicitly compile 32 bit with -maix32 and 64 bit with -maix64. * config/rs6000/t-slibgcc-aix: Remove extra @multilib_dir@ level. Build and install AIX-style FAT libraries. libgomp/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * Makefile.am (tmake_file): Build and install AIX-style FAT libraries. * Makefile.in: Regenerate * configure.ac (tmake_file): Substitute. * configure: Regenerate. * configure.tgt (powerpc-ibm-aix*): Define tmake_file. * config/t-aix: New file. libstdc++-v3/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * Makefile.am (tmake_file): Build and install AIX-style FAT libraries. * Makefile.in: Regenerate. * configure.ac (tmake_file): Substitute. * configure: Regenerate. * configure.host (aix*): Define tmake_file. * config/os/aix/t-aix: New file. libatomic/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * Makefile.am (tmake_file): Build and install AIX-style FAT libraries. * Makefile.in: Regenerate. * configure.ac (tmake_file): Substitute. * configure: Regenerate. * configure.tgt (powerpc-ibm-aix*): Define tmake_file. * config/t-aix: New file. libgfortran/ChangeLog 2020-06-21 David Edelsohn <dje.gcc@gmail.com> * Makefile.am (tmake_file): Build and install AIX-style FAT libraries. * Makefile.in: Regenerate. * configure.ac (tmake_file): Substitute. * configure: Regenerate. * configure.host: Add system configury stanza. Define tmake_file. * config/t-aix: New file.
78 lines
1.7 KiB
Plaintext
78 lines
1.7 KiB
Plaintext
# configure.host
|
|
#
|
|
# This shell script handles all host based configuration for libgfortran.
|
|
# It sets various shell variables based on the the host triplet.
|
|
# You can modify this shell script without rerunning autoconf/aclocal/etc.
|
|
# This file is "sourced", not executed.
|
|
#
|
|
#
|
|
# It uses the following shell variables as set by config.guess:
|
|
# host The configuration host (full CPU-vendor-OS triplet)
|
|
# host_cpu The configuration host CPU
|
|
# host_os The configuration host OS
|
|
#
|
|
#
|
|
# It sets the following shell variables:
|
|
#
|
|
# fpu_host FPU-specific code file, defaults to fpu-generic.
|
|
# tmake_file A list of machine-description-specific
|
|
# makefile fragments.
|
|
|
|
|
|
|
|
# DEFAULTS
|
|
fpu_host='fpu-generic'
|
|
ieee_support='no'
|
|
|
|
if test "x${have_fp_enable}" = "xyes" && test "x${have_fp_trap}" = "xyes"; then
|
|
fpu_host='fpu-aix'
|
|
ieee_support='yes'
|
|
fi
|
|
|
|
if test "x${have_fpsetmask}" = "xyes"; then
|
|
fpu_host='fpu-sysv'
|
|
ieee_support='yes'
|
|
fi
|
|
|
|
if test "x${have_feenableexcept}" = "xyes"; then
|
|
fpu_host='fpu-glibc'
|
|
ieee_support='yes'
|
|
fi
|
|
|
|
# x86 asm should be used instead of glibc, since glibc doesn't support
|
|
# the x86 denormal exception.
|
|
case "${host_cpu}" in
|
|
i?86 | x86_64)
|
|
if test "x${have_soft_float}" = "xyes"; then
|
|
fpu_host='fpu-generic'
|
|
else
|
|
fpu_host='fpu-387'
|
|
fi
|
|
ieee_support='yes'
|
|
;;
|
|
esac
|
|
|
|
# Some targets require additional compiler options for NaN/Inf.
|
|
ieee_flags=
|
|
case "${host_cpu}" in
|
|
alpha*)
|
|
ieee_flags="-mieee" ;;
|
|
sh*)
|
|
ieee_flags="-mieee" ;;
|
|
esac
|
|
|
|
tmake_file=
|
|
# Other system configury
|
|
case "${target}" in
|
|
|
|
*-*-aix*)
|
|
# Create AIX-style "FAT" libraries.
|
|
tmake_file="t-aix"
|
|
;;
|
|
|
|
*)
|
|
;;
|
|
|
|
esac
|
|
|