@@ -153,4 +153,6 @@ libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
all-multi: $(libatomic_la_LIBADD)
$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+include $(srcdir)/empty.mk $(tmake_file)
+
include $(top_srcdir)/../multilib.am
@@ -376,6 +376,7 @@ target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
+tmake_file = @tmake_file@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
top_build_prefix = @top_build_prefix@
@@ -862,6 +863,8 @@ vpath % $(strip $(search_path))
all-multi: $(libatomic_la_LIBADD)
$(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE)
+include $(srcdir)/empty.mk $(tmake_file)
+
# GNU Make needs to see an explicit $(MAKE) variable in the command it
# runs to enable its job server during parallel builds. Hence the
# comments below.
new file mode 100644
@@ -0,0 +1,10 @@
+ifeq ($(MULTIBUILDTOP),)
+BITS=$(shell if test -z "`ar -X64 t .libs/$(PACKAGE).a`" ; then \
+ echo '64'; else echo '32'; fi)
+#MAJOR=$(firstword $(subst :, ,$(libtool_VERSION)))
+MAJOR=1
+all-local:
+ ar -X$(BITS) rc .libs/$(PACKAGE).a ../ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+ ar -X$(BITS) rc ../pthread/$(PACKAGE)/.libs/$(PACKAGE).a ../pthread/ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+endif
+
@@ -643,6 +643,7 @@ ARCH_AARCH64_LINUX_FALSE
ARCH_AARCH64_LINUX_TRUE
HAVE_IFUNC_FALSE
HAVE_IFUNC_TRUE
+tmake_file
SIZES
XLDFLAGS
XCFLAGS
@@ -11387,7 +11388,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11390 "configure"
+#line 11391 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11493,7 +11494,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11496 "configure"
+#line 11497 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -15668,6 +15669,19 @@ XCFLAGS="$XCFLAGS $XPCFLAGS"
+# 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_}"
+
+
+
if test x$libat_cv_have_ifunc = xyes; then
HAVE_IFUNC_TRUE=
HAVE_IFUNC_FALSE='#'
@@ -268,6 +268,19 @@ AC_SUBST(XLDFLAGS)
AC_SUBST(LIBS)
AC_SUBST(SIZES)
+# 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)
+
+
AM_CONDITIONAL(HAVE_IFUNC, test x$libat_cv_have_ifunc = xyes)
AM_CONDITIONAL(ARCH_AARCH64_LINUX,
[expr "$config_path" : ".* linux/aarch64 .*" > /dev/null])
@@ -117,6 +117,7 @@ if test -d ${srcdir}/config/$ARCH ; then
config_path="$ARCH"
fi
+tmake_file=
# Other system configury
case "${target}" in
aarch64*-*-linux*)
@@ -134,6 +135,11 @@ case "${target}" in
config_path="${config_path} s390 posix"
;;
+ powerpc*-*-aix*)
+ config_path="${config_path} posix"
+ tmake_file="t-aix"
+ ;;
+
*-*-linux* | *-*-gnu* | *-*-k*bsd*-gnu \
| *-*-netbsd* | *-*-freebsd* | *-*-openbsd* | *-*-dragonfly* \
| *-*-solaris2* | *-*-sysv4* | *-*-irix6* | *-*-osf* | *-*-hpux11* \
new file mode 100644
@@ -0,0 +1,2 @@
+# Empty. This file exists to suppress errors in the parent Makefile
+# when a variable (e.g. LIB2ADD) is empty.
@@ -1236,4 +1236,6 @@ endif
EXTRA_DIST = $(m4_files)
+include $(srcdir)/empty.mk $(tmake_file)
+
include $(top_srcdir)/../multilib.am
@@ -707,6 +707,7 @@ target_noncanonical = @target_noncanonical@
target_os = @target_os@
target_subdir = @target_subdir@
target_vendor = @target_vendor@
+tmake_file = @tmake_file@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
top_build_prefix = @top_build_prefix@
@@ -7190,6 +7191,8 @@ fpu-target.inc: fpu-target.h $(srcdir)/libgfortran.h
@MAINTAINER_MODE_TRUE@$(gfor_misc_specifics): m4/misc_specifics.m4 m4/head.m4
@MAINTAINER_MODE_TRUE@ $(M4) -Dfile=$@ -I$(srcdir)/m4 misc_specifics.m4 > $@
+include $(srcdir)/empty.mk $(tmake_file)
+
# GNU Make needs to see an explicit $(MAKE) variable in the command it
# runs to enable its job server during parallel builds. Hence the
# comments below.
new file mode 100644
@@ -0,0 +1,10 @@
+ifeq ($(MULTIBUILDTOP),)
+BITS=$(shell if test -z "`ar -X64 t .libs/$(PACKAGE).a`" ; then \
+ echo '64'; else echo '32'; fi)
+#MAJOR=$(firstword $(subst :, ,$(libtool_VERSION)))
+MAJOR=5
+all-local:
+ ar -X$(BITS) rc .libs/$(PACKAGE).a ../ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+ ar -X$(BITS) rc ../pthread/$(PACKAGE)/.libs/$(PACKAGE).a ../pthread/ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+endif
+
@@ -639,6 +639,7 @@ LIBOBJS
get_gcc_base_ver
HAVE_AVX128_FALSE
HAVE_AVX128_TRUE
+tmake_file
IEEE_FLAGS
IEEE_SUPPORT
IEEE_SUPPORT_FALSE
@@ -12723,7 +12724,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12726 "configure"
+#line 12727 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12829,7 +12830,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12832 "configure"
+#line 12833 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -26533,6 +26534,18 @@ fi
IEEE_FLAGS="${ieee_flags}"
+# 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_}"
+
+
# Check for POSIX getpwuid_r
#
@@ -601,6 +601,18 @@ AC_SUBST(IEEE_SUPPORT)
IEEE_FLAGS="${ieee_flags}"
AC_SUBST(IEEE_FLAGS)
+# 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)
+
# Check for POSIX getpwuid_r
#
@@ -15,6 +15,9 @@
# 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
@@ -57,3 +60,18 @@ case "${host_cpu}" in
sh*)
ieee_flags="-mieee" ;;
esac
+
+tmake_file=
+# Other system configury
+case "${target}" in
+
+ *-*-aix*)
+ # Create AIX-style "FAT" libraries.
+ tmake_file="t-aix"
+ ;;
+
+ *)
+ ;;
+
+esac
+
new file mode 100644
@@ -0,0 +1,2 @@
+# Empty. This file exists to suppress errors in the parent Makefile
+# when a variable (e.g. LIB2ADD) is empty.
@@ -141,4 +141,6 @@ stamp-build-info: libgomp.texi
CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO)
MAINTAINERCLEANFILES = $(srcdir)/libgomp.info
+include $(srcdir)/empty.mk $(tmake_file)
+
include $(top_srcdir)/../multilib.am
@@ -16,7 +16,7 @@
# Plugins for offload execution, Makefile.am fragment.
#
-# Copyright (C) 2014-2019 Free Software Foundation, Inc.
+# Copyright (C) 2014-2020 Free Software Foundation, Inc.
#
# Contributed by Mentor Embedded.
#
@@ -530,6 +530,7 @@ target_alias = @target_alias@
target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
+tmake_file = @tmake_file@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
top_build_prefix = @top_build_prefix@
@@ -573,8 +574,8 @@ libgomp_la_SOURCES = alloc.c atomic.c barrier.c critical.c env.c \
affinity.c target.c splay-tree.c libgomp-plugin.c \
oacc-parallel.c oacc-host.c oacc-init.c oacc-mem.c \
oacc-async.c oacc-plugin.c oacc-cuda.c priority_queue.c \
- affinity-fmt.c teams.c allocator.c oacc-profiling.c oacc-target.c \
- $(am__append_4)
+ affinity-fmt.c teams.c allocator.c oacc-profiling.c \
+ oacc-target.c $(am__append_4)
# Nvidia PTX OpenACC plugin.
@PLUGIN_NVPTX_TRUE@libgomp_plugin_nvptx_version_info = -version-info $(libtool_VERSION)
@@ -1438,6 +1439,8 @@ stamp-build-info: libgomp.texi
$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi
@touch $@
+include $(srcdir)/empty.mk $(tmake_file)
+
# GNU Make needs to see an explicit $(MAKE) variable in the command it
# runs to enable its job server during parallel builds. Hence the
# comments below.
new file mode 100644
@@ -0,0 +1,9 @@
+ifeq ($(MULTIBUILDTOP),)
+BITS=$(shell if test -z "`ar -X64 t .libs/$(PACKAGE).a`" ; then \
+ echo '64'; else echo '32'; fi)
+MAJOR=$(firstword $(subst :, ,$(libtool_VERSION)))
+all-local:
+ ar -X$(BITS) rc .libs/$(PACKAGE).a ../ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+ ar -X$(BITS) rc ../pthread/$(PACKAGE)/.libs/$(PACKAGE).a ../pthread/ppc$(BITS)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR)
+endif
+
@@ -650,6 +650,7 @@ OMP_LOCK_SIZE
USE_FORTRAN_FALSE
USE_FORTRAN_TRUE
link_gomp
+tmake_file
XLDFLAGS
XCFLAGS
config_path
@@ -11432,7 +11433,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11435 "configure"
+#line 11436 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -11538,7 +11539,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 11541 "configure"
+#line 11542 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -16747,6 +16748,7 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CET support" >&5
$as_echo_n "checking for CET support... " >&6; }
+# NB: Avoid nested save_CFLAGS and save_LDFLAGS.
case "$host" in
i[34567]86-*-linux* | x86_64-*-linux*)
case "$enable_cet" in
@@ -16822,6 +16824,18 @@ FCFLAGS="$FCFLAGS $CET_FLAGS"
+# 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_}"
+
+
# Cleanup and exit.
CFLAGS="$save_CFLAGS"
cat >confcache <<\_ACEOF
@@ -348,6 +348,18 @@ AC_SUBST(config_path)
AC_SUBST(XCFLAGS)
AC_SUBST(XLDFLAGS)
+# 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)
+
# Cleanup and exit.
CFLAGS="$save_CFLAGS"
AC_CACHE_SAVE
@@ -9,6 +9,8 @@
# config subdirectory of the source tree.
# XCFLAGS Add extra compile flags to use.
# XLDFLAGS Add extra link flags to use.
+# tmake_file A list of machine-description-specific
+# makefile fragments.
# Optimize TLS usage by avoiding the overhead of dynamic allocation.
if test $gcc_cv_have_tls = yes ; then
@@ -30,6 +32,7 @@ if test $gcc_cv_have_tls = yes ; then
esac
fi
+tmake_file=
# Since we require POSIX threads, assume a POSIX system by default.
config_path="posix"
@@ -154,6 +157,8 @@ case "${target}" in
XLDFLAGS="${XLDFLAGS} -lpthread"
# AIX needs -frandom-seed for bootstrap compare.
XCFLAGS="${XCFLAGS} -frandom-seed=\$@"
+ # Create AIX-style "FAT" libraries.
+ tmake_file="t-aix"
;;
nvptx*-*-*)
new file mode 100644
@@ -0,0 +1,2 @@
+# Empty. This file exists to suppress errors in the parent Makefile
+# when a variable (e.g. LIB2ADD) is empty.
@@ -173,4 +173,6 @@ AM_MAKEFLAGS = \
# Subdir rules rely on $(FLAGS_TO_PASS)
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
+include $(srcdir)/empty.mk $(tmake_file)
+
include $(top_srcdir)/../multilib.am
@@ -377,6 +377,7 @@ target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
thread_header = @thread_header@
+tmake_file = @tmake_file@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
@@ -817,6 +818,8 @@ install-dvi:
# automake-generated TAGS rule. Make a simple one here.
TAGS: tags-recursive $(LISP)
+include $(srcdir)/empty.mk $(tmake_file)
+
# GNU Make needs to see an explicit $(MAKE) variable in the command it
# runs to enable its job server during parallel builds. Hence the
# comments below.
new file mode 100644
@@ -0,0 +1,9 @@
+ifeq ($(MULTIBUILDTOP),)
+BITS=$(shell if test -z "`ar -X64 t src/.libs/$(PACKAGE).a`" ; then \
+ echo '64'; else echo '32'; fi)
+MAJOR=$(firstword $(subst :, ,$(libtool_VERSION)))
+all-local:
+ ar -X$(BITS) rc src/.libs/$(PACKAGE).a ../ppc$(BITS)/$(PACKAGE)-v3/src/.libs/$(PACKAGE).so.$(MAJOR)
+ ar -X$(BITS) rc ../pthread/$(PACKAGE)-v3/src/.libs/$(PACKAGE).a ../pthread/ppc$(BITS)/$(PACKAGE)-v3/src/.libs/$(PACKAGE).so.$(MAJOR)
+endif
+
@@ -643,6 +643,7 @@ glibcxx_toolexecdir
gxx_include_dir
glibcxx_prefixdir
EXTRA_CFLAGS
+tmake_file
CPU_OPT_BITS_RANDOM
CPU_OPT_EXT_RANDOM
ERROR_CONSTANTS_SRCDIR
@@ -12059,7 +12060,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12062 "configure"
+#line 12063 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -12165,7 +12166,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 12168 "configure"
+#line 12169 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -15857,7 +15858,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
-#line 15860 "configure"
+#line 15861 "configure"
int main()
{
typedef bool atomic_type;
@@ -15892,7 +15893,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15895 "configure"
+#line 15896 "configure"
int main()
{
typedef short atomic_type;
@@ -15927,7 +15928,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15930 "configure"
+#line 15931 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@@ -15963,7 +15964,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 15966 "configure"
+#line 15967 "configure"
int main()
{
typedef long long atomic_type;
@@ -16116,7 +16117,7 @@ $as_echo "mutex" >&6; }
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16119 "configure"
+#line 16120 "configure"
int main()
{
_Decimal32 d1;
@@ -16158,7 +16159,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
-#line 16161 "configure"
+#line 16162 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -16192,7 +16193,7 @@ $as_echo "$enable_int128" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
-#line 16195 "configure"
+#line 16196 "configure"
template<typename T1, typename T2>
struct same
{ typedef T2 type; };
@@ -77719,6 +77720,17 @@ CPU_OPT_BITS_RANDOM=config/${cpu_opt_bits_random}
+# 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_}"
+
# Add CET specific flags if Intel CET is enabled.
# Check whether --enable-cet was given.
@@ -528,6 +528,17 @@ AC_SUBST(ERROR_CONSTANTS_SRCDIR)
AC_SUBST(CPU_OPT_EXT_RANDOM)
AC_SUBST(CPU_OPT_BITS_RANDOM)
+# 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)
# Add CET specific flags if Intel CET is enabled.
GCC_CET_FLAGS(CET_FLAGS)
@@ -70,6 +70,9 @@
# additional symbols to export from the shared
# library, when symbol versioning is in use
#
+# tmake_file A list of machine-description-specific
+# makefile fragments.
+#
#
# If the defaults will not work for your platform, you need only change the
# variables that won't work, i.e., you do not need to explicitly set a
@@ -91,6 +94,7 @@ try_cpu=generic
abi_baseline_subdir_switch=--print-multi-directory
abi_tweaks_dir="cpu/generic"
error_constants_dir="os/generic"
+tmake_file=
# HOST-SPECIFIC OVERRIDES
# Set any CPU-dependent bits.
@@ -206,17 +210,7 @@ case "${host_os}" in
# Newer versions of AIX only support PowerPC architecture, so use
# atomic instructions directly.
os_include_dir="os/aix"
- ;;
- aix4.[3456789]*)
- # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
- # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
- # explicitly duplicate the directory for 4.[<3].
- os_include_dir="os/aix"
- atomicity_dir="os/aix"
- ;;
- aix4.*)
- os_include_dir="os/generic"
- atomicity_dir="os/aix"
+ tmake_file="os/aix/t-aix"
;;
aix*)
os_include_dir="os/generic"
new file mode 100644
@@ -0,0 +1,2 @@
+# Empty. This file exists to suppress errors in the parent Makefile
+# when a variable (e.g. LIB2ADD) is empty.
[I'll start by repeating what I wrote about a similar libgcc change to provide background and context.] When AIX added 64 bit support, it implemented what Apple MacOS Darwin calls "FAT" libraries for its equivalent functionality -- both 32 bit and 64 bit objects (or shared objects) are co-located in the same archive. GCC on AIX historically has followed the GCC multilib directory hierarchy approach with separate directories and archives for each multilib. We now are working to support GCC on AIX in 64 bit mode. To retain the directory hierarchy, it is beneficial to shift (or at least initially augment) the GCC multilib mechanism with AIX-style "FAT" libraries. It is beneficial for the "FAT" libraries to be created consistently for GCC in both 32 bit mode and 64 bit mode. When all of the libraries are converted, the multilib rules will look for 32 bit and 64 bit multilibs in the top-level library. All target multilibs need to be enabled at the same time, but the build can start the creation of the "FAT" libraries without utilizing them. The goal is to 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 have to be correct at the end of each target library build stage, not solely an install recipe. After trying various options, the best solution seems to be the inclusion of target-specific Makefile fragments. Directly adding the rules to the Makefiles conflicts with Automake conditionals syntax. And Makefile fragments are easily extendible to other targets, such as Darwin. It avoids regenerating Makefile.in or configure for each change. The rhythm of the fragment is the same for each library, but each library is slightly different: package name versus directory name, sub-directory, location of version info. I didn't see the benefit of trying to rationalize all of the GCC target libraries as part of this effort. One global issue: I copied empty.mk into each library because Make needs to include something by default. Alternatively, I can move empty.mk to the top-level of the source tree and include a common copy everywhere. Bootstrapped on powerpc-ibm-aix7.2.0.0 and powerpc64le-unknown-gnu-linux. Is this okay with each maintainer for the respective target libraries? Thanks, David libgomp/ * 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. * empty.mk: New file. libstdc++-v3/ * 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. * empty.mk: New file. libatomic/ * 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. * empty.mk: New file. libgfortran/ * 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. * empty.mk: New file. From cf96afed42fcda9debb1351e86b511316ee4d781 Mon Sep 17 00:00:00 2001 From: David Edelsohn <dje.gcc@gmail.com> Date: Fri, 15 May 2020 17:46:08 -0400 Subject: [PATCH] FAT target library support libgomp/ * 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. * empty.mk: New file. libstdc++-v3/ * 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. * empty.mk: New file. libatomic/ * 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. * empty.mk: New file. libgfortran/ * 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. * empty.mk: New file. --- libatomic/Makefile.am | 2 + libatomic/Makefile.in | 3 + libatomic/config/t-aix | 10 ++++ libatomic/configure | 18 +++++- libatomic/configure.ac | 13 +++++ libatomic/configure.tgt | 6 ++ libatomic/empty.mk | 2 + libgfortran/Makefile.am | 2 + libgfortran/Makefile.in | 3 + libgfortran/config/t-aix | 10 ++++ libgfortran/configure | 17 +++++- libgfortran/configure.ac | 12 ++++ libgfortran/configure.host | 18 ++++++ libgfortran/empty.mk | 2 + libgomp/Makefile.am | 2 + libgomp/Makefile.in | 9 ++- libgomp/config/t-aix | 9 +++ libgomp/configure | 18 +++++- libgomp/configure.ac | 12 ++++ libgomp/configure.tgt | 5 ++ libgomp/empty.mk | 2 + libstdc++-v3/Makefile.am | 2 + libstdc++-v3/Makefile.in | 3 + libstdc++-v3/config/os/aix/t-aix | 9 +++ libstdc++-v3/configure | 30 +++++++--- libstdc++-v3/configure.ac | 11 ++++ libstdc++-v3/configure.host | 16 ++---- libstdc++-v3/empty.mk | 2 + 35 files changed, 409 insertions(+), 75 deletions(-) create mode 100644 libatomic/config/t-aix create mode 100644 libatomic/empty.mk create mode 100644 libgfortran/config/t-aix create mode 100644 libgfortran/empty.mk create mode 100644 libgomp/config/t-aix create mode 100644 libgomp/empty.mk create mode 100644 libstdc++-v3/config/os/aix/t-aix create mode 100644 libstdc++-v3/empty.mk