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.
182 lines
4.0 KiB
Makefile
182 lines
4.0 KiB
Makefile
## Makefile for the toplevel directory of the GNU C++ Standard library.
|
|
##
|
|
## Copyright (C) 1997-2020 Free Software Foundation, Inc.
|
|
##
|
|
## This file is part of the libstdc++ version 3 distribution.
|
|
## Process this file with automake to produce Makefile.in.
|
|
|
|
## This file is part of the GNU ISO C++ Library. This library is free
|
|
## software; you can redistribute it and/or modify it under the
|
|
## terms of the GNU General Public License as published by the
|
|
## Free Software Foundation; either version 3, or (at your option)
|
|
## any later version.
|
|
|
|
## This library is distributed in the hope that it will be useful,
|
|
## but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
## GNU General Public License for more details.
|
|
|
|
## You should have received a copy of the GNU General Public License along
|
|
## with this library; see the file COPYING3. If not see
|
|
## <http://www.gnu.org/licenses/>.
|
|
|
|
include $(top_srcdir)/fragment.am
|
|
|
|
if GLIBCXX_HOSTED
|
|
## Note that python must come after src.
|
|
hosted_source = src doc po testsuite python
|
|
endif
|
|
|
|
## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
|
|
SUBDIRS = include libsupc++ $(hosted_source)
|
|
|
|
ACLOCAL_AMFLAGS = -I . -I .. -I ../config
|
|
|
|
# Testsuite/check forwarding targets.
|
|
check-%:
|
|
cd testsuite && $(MAKE) $@
|
|
|
|
# Documentation forwarding targets.
|
|
doc-%:
|
|
cd doc && $(MAKE) $@
|
|
|
|
# Documentation conditionals for output.
|
|
if BUILD_XML
|
|
STAMP_XML = doc-xml
|
|
STAMP_INSTALL_XML = doc-install-xml
|
|
else
|
|
STAMP_XML =
|
|
STAMP_INSTALL_XML =
|
|
endif
|
|
|
|
if BUILD_HTML
|
|
STAMP_HTML = doc-html
|
|
STAMP_INSTALL_HTML = doc-install-html
|
|
else
|
|
STAMP_HTML =
|
|
STAMP_INSTALL_HTML =
|
|
endif
|
|
|
|
if BUILD_MAN
|
|
STAMP_MAN = doc-man
|
|
STAMP_INSTALL_MAN = doc-install-man
|
|
else
|
|
STAMP_MAN =
|
|
STAMP_INSTALL_MAN =
|
|
endif
|
|
|
|
if BUILD_PDF
|
|
STAMP_PDF = doc-pdf
|
|
STAMP_INSTALL_PDF = doc-install-pdf
|
|
else
|
|
STAMP_PDF =
|
|
STAMP_INSTALL_PDF =
|
|
endif
|
|
|
|
if BUILD_EPUB
|
|
STAMP_EPUB = doc-epub
|
|
STAMP_INSTALL_EPUB = doc-install-epub
|
|
else
|
|
STAMP_EPUB = doc-epub
|
|
STAMP_INSTALL_EPUB = doc-install-epub
|
|
endif
|
|
|
|
# Documentation primary rules.
|
|
#
|
|
# xml:
|
|
# html:
|
|
# pdf:
|
|
# man:
|
|
# info:
|
|
# ps:
|
|
# dvi:
|
|
# epub:
|
|
# install-xml:
|
|
# install-html:
|
|
# install-pdf:
|
|
# install-man:
|
|
# install-info:
|
|
# install-ps:
|
|
# install-dvi:
|
|
# install-epub:
|
|
|
|
xml: $(STAMP_XML)
|
|
install-xml: $(STAMP_INSTALL_XML)
|
|
|
|
html: $(STAMP_HTML)
|
|
install-html: $(STAMP_INSTALL_HTML)
|
|
|
|
man: $(STAMP_MAN)
|
|
install-man: $(STAMP_INSTALL_MAN)
|
|
|
|
pdf: $(STAMP_PDF)
|
|
install-pdf: $(STAMP_INSTALL_PDF)
|
|
|
|
epub: $(STAMP_EPUB)
|
|
install-epub: $(STAMP_INSTALL_EPUB)
|
|
|
|
info:
|
|
install-info:
|
|
|
|
ps:
|
|
install-ps:
|
|
|
|
dvi:
|
|
install-dvi:
|
|
|
|
# Multilib support.
|
|
MAKEOVERRIDES=
|
|
|
|
# All the machinations with string instantiations messes up the
|
|
# automake-generated TAGS rule. Make a simple one here.
|
|
TAGS: tags-recursive $(LISP)
|
|
|
|
# Work around what appears to be a GNU make bug handling MAKEFLAGS
|
|
# values defined in terms of make variables, as is the case for CC and
|
|
# friends when we are called from the top level Makefile.
|
|
AM_MAKEFLAGS = \
|
|
"AR_FLAGS=$(AR_FLAGS)" \
|
|
"CC_FOR_BUILD=$(CC_FOR_BUILD)" \
|
|
"CC_FOR_TARGET=$(CC_FOR_TARGET)" \
|
|
"CFLAGS=$(CFLAGS)" \
|
|
"CXXFLAGS=$(CXXFLAGS)" \
|
|
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
|
|
"CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \
|
|
"INSTALL=$(INSTALL)" \
|
|
"INSTALL_DATA=$(INSTALL_DATA)" \
|
|
"INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \
|
|
"INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \
|
|
"LDFLAGS=$(LDFLAGS)" \
|
|
"LIBCFLAGS=$(LIBCFLAGS)" \
|
|
"LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \
|
|
"MAKE=$(MAKE)" \
|
|
"MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \
|
|
"SHELL=$(SHELL)" \
|
|
"RUNTESTFLAGS=$(RUNTESTFLAGS)" \
|
|
"exec_prefix=$(exec_prefix)" \
|
|
"infodir=$(infodir)" \
|
|
"libdir=$(libdir)" \
|
|
"includedir=$(includedir)" \
|
|
"prefix=$(prefix)" \
|
|
"tooldir=$(tooldir)" \
|
|
"gxx_include_dir=$(gxx_include_dir)" \
|
|
"AR=$(AR)" \
|
|
"AS=$(AS)" \
|
|
"LD=$(LD)" \
|
|
"RANLIB=$(RANLIB)" \
|
|
"NM=$(NM)" \
|
|
"NM_FOR_BUILD=$(NM_FOR_BUILD)" \
|
|
"NM_FOR_TARGET=$(NM_FOR_TARGET)" \
|
|
"DESTDIR=$(DESTDIR)" \
|
|
"WERROR=$(WERROR)"
|
|
|
|
# Subdir rules rely on $(FLAGS_TO_PASS)
|
|
FLAGS_TO_PASS = $(AM_MAKEFLAGS)
|
|
|
|
# target overrides
|
|
ifneq ($(tmake_file),)
|
|
include $(tmake_file)
|
|
endif
|
|
|
|
include $(top_srcdir)/../multilib.am
|