This patch by Clément Chigot adds AIX FAT library support to libgo. This follows the same general idea as support in other GCC libraries like libgcc and libsdc++. Committed to mainline.
Ian
83cc5e2b2f887d4bb2305658da382a65fdcaab29 diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 878df0d233a..d23e7377306 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -2d105e65cca6b536320284273353b7c640b12c5f +587d4595e446c597efe97ccdc81b2f05cbc04a21 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/Makefile.am b/libgo/Makefile.am index 5b1807228ad..52a8330ed2a 100644 --- a/libgo/Makefile.am +++ b/libgo/Makefile.am @@ -1228,3 +1228,17 @@ distclean-local: find . -name '*.lo.dep' -print | xargs rm -f include $(top_srcdir)/../multilib.am + +if LIBGO_IS_AIX +ALL_LOCAL_DEPS = add-aix-fat-library +else +ALL_LOCAL_DEPS = +endif +all-local: $(ALL_LOCAL_DEPS) + +MAJOR=$(firstword $(subst :, ,$(libtool_VERSION))) +add-aix-fat-library: all-multi + @if test "$(MULTIBUILDTOP)" = ""; then \ + ${AR} -X$(AIX_DEFAULT_ARCH) rc .libs/$(PACKAGE).a ../ppc$(AIX_DEFAULT_ARCH)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR); \ + ${AR} -X$(AIX_DEFAULT_ARCH) rc ../pthread/$(PACKAGE)/.libs/$(PACKAGE).a ../pthread/ppc$(AIX_DEFAULT_ARCH)/$(PACKAGE)/.libs/$(PACKAGE).so.$(MAJOR); \ + fi diff --git a/libgo/configure.ac b/libgo/configure.ac index 235d867ccda..841cba1768e 100644 --- a/libgo/configure.ac +++ b/libgo/configure.ac @@ -36,6 +36,14 @@ case ${host} in # static hash tables crashes on AIX when libgo is built with O2 CFLAGS="$CFLAGS -fno-section-anchors" GOCFLAGS="$GOCFLAGS -fno-section-anchors" + + # Check default architecture for FAT library creation + if test -z "`$(CC) -x c -E /dev/null -g3 -o - | grep 64BIT`" ; then + AIX_DEFAULT_ARCH='64' + else + AIX_DEFAULT_ARCH='32' + fi + AC_SUBST(AIX_DEFAULT_ARCH) ;; esac