diff options
author | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-04 04:22:37 +0000 |
---|---|---|
committer | drow <drow@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-04 04:22:37 +0000 |
commit | 894a47b43cc5eb4302f36c91b9d611b79256e98a (patch) | |
tree | ecf7edd5c93f496f2642ef1338e111c0d7a42345 /gcc | |
parent | 2fadd1c8e8c9aa4e32c06e62db0e7a6d6961ddb0 (diff) | |
download | gcc-894a47b43cc5eb4302f36c91b9d611b79256e98a.tar.gz |
./
* Makefile.def (target_modules): Add libgcc.
(lang_env_dependencies): Remove default items. Use no_c and no_gcc.
* Makefile.tpl (clean-target-libgcc): Delete.
(configure-target-[+module+]): Emit --disable-bootstrap dependencies
on gcc even for bootstrapped modules. Rewrite handling of
lang_env_dependencies to loop over target_modules.
* configure.in (target_libraries): Add target-libgcc.
* Makefile.in, configure: Regenerated.
gcc/
* config.gcc: Mention libgcc/config.host.
* Makefile.in: Update comments mentioning libgcc.
(LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete.
(all.cross, start.encap, rest.encap, rest.cross): Update
dependencies for libgcc move.
(libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib)
(clean-target, clean-target-libgcc): Delete.
(srcdirify, GCC_EXTRA_PARTS): New macros.
(libgcc-support, libgcc.mvars): New rules.
(distclean): Remove mention of mklibgcc.
(install): Don't reference INSTALL_LIBGCC.
(install-common): Don't reference EXTRA_PARTS.
(install-libgcc, install-multilib): Delete rules.
* mklibgcc.in: Delete file.
* doc/configfiles.texi: Don't mention mklibgcc.
* config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc).
* config/i386/t-darwin64 (SHLIB_VERPFX): Likewise.
* config/rs6000/t-darwin (SHLIB_VERPFX): Likewise.
* config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES)
(mklibgcc, ldblspecs): Likewise.
* config/i386/t-nwld (libgcc.def, libc.def, libpcre.def)
(posixpre.def): Use $(T).
(SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP)
(SHLIB_SRC, SHLIB_INSTALL): Delete.
(SHLIB_LINK): Make dummy.
* config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK.
* config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear.
* config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS.
* config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30,
config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos,
config/rs6000/t-newas, config/sparc/t-elf: Likewise.
* configure.ac (all_outputs): Remove mklibgcc.
* configure: Regenerated.
libgcc/
* Makefile.in, config/i386/t-darwin, config/i386/t-darwin64,
config/i386/t-nwld, config/rs6000/t-darwin, config/rs6000/t-ldbl128,
config/i386/t-crtfm, config/alpha/t-crtfm, config/ia64/t-ia64,
config/sparc/t-crtfm, config/t-slibgcc-darwin,
config/rs6000/t-ppccomm, config.host, configure.ac, empty.mk,
shared-object.mk, siditi-object.mk, static-object.mk: New files.
* configure: Generated.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120429 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 41 | ||||
-rw-r--r-- | gcc/Makefile.in | 205 | ||||
-rw-r--r-- | gcc/config.gcc | 3 | ||||
-rw-r--r-- | gcc/config/alpha/t-crtfm | 4 | ||||
-rw-r--r-- | gcc/config/alpha/t-vms | 12 | ||||
-rw-r--r-- | gcc/config/alpha/t-vms64 | 8 | ||||
-rw-r--r-- | gcc/config/fr30/t-fr30 | 8 | ||||
-rw-r--r-- | gcc/config/frv/t-linux | 3 | ||||
-rw-r--r-- | gcc/config/i386/t-darwin | 1 | ||||
-rw-r--r-- | gcc/config/i386/t-darwin64 | 1 | ||||
-rw-r--r-- | gcc/config/i386/t-nwld | 43 | ||||
-rw-r--r-- | gcc/config/i386/t-rtems-i386 | 8 | ||||
-rw-r--r-- | gcc/config/ia64/t-ia64 | 20 | ||||
-rw-r--r-- | gcc/config/rs6000/t-beos | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/t-darwin | 2 | ||||
-rw-r--r-- | gcc/config/rs6000/t-newas | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/t-ppccomm | 12 | ||||
-rw-r--r-- | gcc/config/sparc/t-elf | 8 | ||||
-rw-r--r-- | gcc/config/t-slibgcc-darwin | 103 | ||||
-rwxr-xr-x | gcc/configure | 2 | ||||
-rw-r--r-- | gcc/configure.ac | 2 | ||||
-rw-r--r-- | gcc/doc/configfiles.texi | 3 | ||||
-rw-r--r-- | gcc/mklibgcc.in | 935 |
23 files changed, 166 insertions, 1270 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index be703c7f9ab..b2a3b22d390 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,44 @@ +2007-01-03 Daniel Jacobowitz <dan@codesourcery.com> + + * config.gcc: Mention libgcc/config.host. + * Makefile.in: Update comments mentioning libgcc. + (LIBGCC, INSTALL_LIBGCC, GCC_PARTS, mklibgcc): Delete. + (all.cross, start.encap, rest.encap, rest.cross): Update + dependencies for libgcc move. + (libgcc.mk, LIBGCC_DEPS, libgcov.a, libgcc.a, stmp-multilib) + (clean-target, clean-target-libgcc): Delete. + (srcdirify, GCC_EXTRA_PARTS): New macros. + (libgcc-support, libgcc.mvars): New rules. + (distclean): Remove mention of mklibgcc. + (install): Don't reference INSTALL_LIBGCC. + (install-common): Don't reference EXTRA_PARTS. + (install-libgcc, install-multilib): Delete rules. + * mklibgcc.in: Delete file. + * doc/configfiles.texi: Don't mention mklibgcc. + + * config/i386/t-darwin (SHLIB_VERPFX): Delete (moved to libgcc). + * config/i386/t-darwin64 (SHLIB_VERPFX): Likewise. + * config/rs6000/t-darwin (SHLIB_VERPFX): Likewise. + * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS, SHLIB_MAPFILES) + (mklibgcc, ldblspecs): Likewise. + + * config/i386/t-nwld (libgcc.def, libc.def, libpcre.def) + (posixpre.def): Use $(T). + (SHLIB_EXT, SHLIB_NAME, SHLIB_SLIBDIR_QUAL, SHLIB_DEF, SHLIB_MAP) + (SHLIB_SRC, SHLIB_INSTALL): Delete. + (SHLIB_LINK): Make dummy. + * config/t-slibgcc-darwin: Delete contents except for dummy SHLIB_LINK. + + * config/frv/t-linux (EXTRA_MULTILIB_PARTS): Clear. + + * config/alpha/t-crtfm: Use $(T) in rules for EXTRA_PARTS. + * config/alpha/t-vms, config/alpha/t-vms64, config/fr30/t-fr30, + config/i386/t-rtems-i386, config/ia64/t-ia64, config/rs6000/t-beos, + config/rs6000/t-newas, config/sparc/t-elf: Likewise. + + * configure.ac (all_outputs): Remove mklibgcc. + * configure: Regenerated. + 2007-01-03 Josh Conner <jconner@apple.com> PR middle-end/29683 diff --git a/gcc/Makefile.in b/gcc/Makefile.in index f14088b86cf..cd1182d8776 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in @@ -330,9 +330,9 @@ USER_H = $(srcdir)/ginclude/decfloat.h \ UNWIND_H = $(srcdir)/unwind-generic.h -# The GCC to use for compiling libgcc.a and crt*.o. +# The GCC to use for compiling crt*.o. # Usually the one we just built. -# Don't use this as a dependency--use $(GCC_PASSES) or $(GCC_PARTS). +# Don't use this as a dependency--use $(GCC_PASSES). GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -L$(objdir)/../ld # This is used instead of ALL_CFLAGS when compiling with GCC_FOR_TARGET. @@ -537,11 +537,6 @@ GGC=@GGC@.o # If a supplementary library is being used for the GC. GGC_LIB= -# libgcc.a may be built directly or via stmp-multilib, -# and installed likewise. Overridden by t-fragment. -LIBGCC = libgcc.a -INSTALL_LIBGCC = install-libgcc - # "true" if the target C library headers are unavailable; "false" # otherwise. inhibit_libc = @inhibit_libc@ @@ -655,10 +650,6 @@ COMPILERS = cc1$(exeext) @all_compilers@ # to compile anything (without linking). GCC_PASSES=xgcc$(exeext) cc1$(exeext) specs $(EXTRA_PASSES) -# List of things which should already be built whenever we try to use xgcc -# to link anything. -GCC_PARTS=$(GCC_PASSES) $(LIBGCC) $(EXTRA_PROGRAMS) $(COLLECT2) $(EXTRA_PARTS) - # Directory to link to, when using the target `maketest'. DIR = ../gcc @@ -701,7 +692,7 @@ CRT0STUFF_T_CFLAGS = # "t" or nothing, for building multilibbed versions of, say, crtbegin.o. T = -# Should T contain a `=', libgcc.mk will make T_TARGET, setting +# Should T contain a `=', libgcc/Makefile will make T_TARGET, setting # $(T_TARGET) to the name of the actual target filename. T_TARGET = T_TARGET : $(T_TARGET) @@ -1230,9 +1221,6 @@ $(srcdir)/configure: @MAINT@ $(srcdir)/configure.ac $(srcdir)/aclocal.m4 \ gccbug: $(srcdir)/gccbug.in CONFIG_FILES=gccbug CONFIG_HEADERS= ./config.status -mklibgcc: $(srcdir)/mklibgcc.in - CONFIG_FILES=mklibgcc CONFIG_HEADERS= ./config.status - # cstamp-h.in controls rebuilding of config.in. # It is named cstamp-h.in and not stamp-h.in so the mostlyclean rule doesn't # delete it. A stamp file is needed as autoheader won't update the file if @@ -1274,12 +1262,12 @@ config.status: $(srcdir)/configure $(srcdir)/config.gcc all.internal: start.encap rest.encap doc # This is what to compile if making a cross-compiler. all.cross: native gcc-cross$(exeext) cpp$(exeext) specs \ - $(LIBGCC) $(EXTRA_PARTS) lang.all.cross doc @GENINSRC@ srcextra + libgcc-support lang.all.cross doc @GENINSRC@ srcextra # This is what must be made before installing GCC and converting libraries. start.encap: native xgcc$(exeext) cpp$(exeext) specs \ - xlimits.h lang.start.encap @GENINSRC@ srcextra + libgcc-support xlimits.h lang.start.encap @GENINSRC@ srcextra # These can't be made until after GCC can run. -rest.encap: $(STMP_FIXPROTO) $(LIBGCC) $(EXTRA_PARTS) lang.rest.encap +rest.encap: $(STMP_FIXPROTO) lang.rest.encap # This is what is made with the host's compiler # whether making a cross compiler or not. native: config.status auto-host.h build-@POSUB@ $(LANGUAGES) \ @@ -1293,7 +1281,7 @@ c: cc1$(exeext) # On the target machine, finish building a cross compiler. # This does the things that can't be done on the host machine. -rest.cross: $(LIBGCC) specs +rest.cross: specs # Recompile all the language-independent object files. # This is used only if the user explicitly asks for it. @@ -1415,75 +1403,66 @@ xlimits.h: glimits.h limitx.h limity.h LIB2ADD = $(LIB2FUNCS_EXTRA) LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA) -libgcc.mk: config.status Makefile mklibgcc $(LIB2ADD) $(LIB2ADD_ST) specs \ +# All source files for libgcc are either in the source directory (in +# which case they will start with $(srcdir)), or generated into the build +# directory (in which case they will be relative paths). +srcdirify = $(patsubst $(srcdir)%,$$(gcc_srcdir)%,$(filter $(srcdir)%,$(1))) \ + $(patsubst %,$$(gcc_objdir)/%,$(filter-out $(srcdir)%,$(1))) + +# The distinction between these two variables is no longer relevant, +# so we combine them. Sort removes duplicates. +GCC_EXTRA_PARTS := $(sort $(EXTRA_MULTILIB_PARTS) $(EXTRA_PARTS)) + +libgcc-support: libgcc.mvars stmp-int-hdrs $(STMP_FIXPROTO) $(TCONFIG_H) \ + $(MACHMODE_H) $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \ + $(LIB2ADD_ST) $(LIB2ADDEH) gcov-iov.h $(SFP_MACHINE) + +libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \ xgcc$(exeext) stamp-as stamp-collect-ld stamp-nm - objext='$(objext)' \ - LIB1ASMFUNCS='$(LIB1ASMFUNCS)' \ - LIB2FUNCS_ST='$(LIB2FUNCS_ST)' \ - LIB2FUNCS_EXCLUDE='$(LIB2FUNCS_EXCLUDE)' \ - LIBGCOV='$(LIBGCOV)' \ - LIB2ADD='$(LIB2ADD)' \ - LIB2ADD_ST='$(LIB2ADD_ST)' \ - LIB2ADDEH='$(LIB2ADDEH)' \ - LIB2ADDEHSTATIC='$(LIB2ADDEHSTATIC)' \ - LIB2ADDEHSHARED='$(LIB2ADDEHSHARED)' \ - LIB2ADDEHDEP='$(LIB2ADDEHDEP)' \ - LIB2_SIDITI_CONV_FUNCS='$(LIB2_SIDITI_CONV_FUNCS)' \ - LIBUNWIND='$(LIBUNWIND)' \ - LIBUNWINDDEP='$(LIBUNWINDDEP)' \ - SHLIBUNWIND_LINK='$(SHLIBUNWIND_LINK)' \ - SHLIBUNWIND_INSTALL='$(SHLIBUNWIND_INSTALL)' \ - FPBIT='$(FPBIT)' \ - FPBIT_FUNCS='$(FPBIT_FUNCS)' \ - LIB2_DIVMOD_FUNCS='$(LIB2_DIVMOD_FUNCS)' \ - DPBIT='$(DPBIT)' \ - DPBIT_FUNCS='$(DPBIT_FUNCS)' \ - TPBIT='$(TPBIT)' \ - TPBIT_FUNCS='$(TPBIT_FUNCS)' \ - DFP_ENABLE='$(DFP_ENABLE)' \ - DFP_CFLAGS='$(DFP_CFLAGS)' \ - D32PBIT='$(D32PBIT)' \ - D32PBIT_FUNCS='$(D32PBIT_FUNCS)' \ - D64PBIT='$(D64PBIT)' \ - D64PBIT_FUNCS='$(D64PBIT_FUNCS)' \ - D128PBIT='$(D128PBIT)' \ - D128PBIT_FUNCS='$(D128PBIT_FUNCS)' \ - MULTILIBS=`$(GCC_FOR_TARGET) --print-multi-lib` \ - EXTRA_MULTILIB_PARTS='$(EXTRA_MULTILIB_PARTS)' \ - SHLIB_LINK='$(SHLIB_LINK)' \ - SHLIB_INSTALL='$(SHLIB_INSTALL)' \ - SHLIB_EXT='$(SHLIB_EXT)' \ - SHLIB_MULTILIB='$(SHLIB_MULTILIB)' \ - SHLIB_MKMAP='$(SHLIB_MKMAP)' \ - SHLIB_MKMAP_OPTS='$(SHLIB_MKMAP_OPTS)' \ - SHLIB_MAPFILES='$(SHLIB_MAPFILES)' \ - SHLIB_NM_FLAGS='$(SHLIB_NM_FLAGS)' \ - MULTILIB_OSDIRNAMES='$(MULTILIB_OSDIRNAMES)' \ - ASM_HIDDEN_OP='$(ASM_HIDDEN_OP)' \ - GCC_FOR_TARGET='$(GCC_FOR_TARGET)' \ - mkinstalldirs='$(mkinstalldirs)' \ - $(SHELL) mklibgcc > tmp-libgcc.mk - mv tmp-libgcc.mk libgcc.mk - -# All the things that might cause us to want to recompile bits of libgcc. -LIBGCC_DEPS = $(GCC_PASSES) stmp-int-hdrs $(STMP_FIXPROTO) \ - libgcc.mk $(srcdir)/libgcc2.c $(srcdir)/libgcov.c $(TCONFIG_H) \ - $(MACHMODE_H) longlong.h gbl-ctors.h config.status $(srcdir)/libgcc2.h \ - tsystem.h $(FPBIT) $(DPBIT) $(TPBIT) $(LIB2ADD) \ - config/dfp-bit.h config/dfp-bit.c \ - $(LIB2ADD_ST) $(LIB2ADDEH) $(LIB2ADDEHDEP) $(EXTRA_PARTS) \ - $(srcdir)/config/$(LIB1ASMSRC) \ - $(srcdir)/gcov-io.h $(srcdir)/gcov-io.c gcov-iov.h $(SFP_MACHINE) - -libgcov.a: libgcc.a; @true - -libgcc.a: $(LIBGCC_DEPS) - $(MAKE) \ - CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ - CONFIG_H="$(TCONFIG_H)" TM_H="$(TM_H)" \ - INCLUDES="$(INCLUDES)" \ - MAKEOVERRIDES= \ - -f libgcc.mk all + : > tmp-libgcc.mvars + echo LIB1ASMFUNCS = '$(LIB1ASMFUNCS)' >> tmp-libgcc.mvars + echo LIB1ASMSRC = '$(LIB1ASMSRC)' >> tmp-libgcc.mvars + echo LIB2FUNCS_ST = '$(LIB2FUNCS_ST)' >> tmp-libgcc.mvars + echo LIB2FUNCS_EXCLUDE = '$(LIB2FUNCS_EXCLUDE)' >> tmp-libgcc.mvars + echo LIBGCOV = '$(LIBGCOV)' >> tmp-libgcc.mvars + echo LIB2ADD = '$(call srcdirify,$(LIB2ADD))' >> tmp-libgcc.mvars + echo LIB2ADD_ST = '$(call srcdirify,$(LIB2ADD_ST))' >> tmp-libgcc.mvars + echo LIB2ADDEH = '$(call srcdirify,$(LIB2ADDEH))' >> tmp-libgcc.mvars + echo LIB2ADDEHSTATIC = '$(call srcdirify,$(LIB2ADDEHSTATIC))' >> tmp-libgcc.mvars + echo LIB2ADDEHSHARED = '$(call srcdirify,$(LIB2ADDEHSHARED))' >> tmp-libgcc.mvars + echo LIB2_SIDITI_CONV_FUNCS = '$(LIB2_SIDITI_CONV_FUNCS)' >> tmp-libgcc.mvars + echo LIBUNWIND = '$(call srcdirify,$(LIBUNWIND))' >> tmp-libgcc.mvars + echo SHLIBUNWIND_LINK = '$(SHLIBUNWIND_LINK)' >> tmp-libgcc.mvars + echo SHLIBUNWIND_INSTALL = '$(SHLIBUNWIND_INSTALL)' >> tmp-libgcc.mvars + echo FPBIT = '$(FPBIT)' >> tmp-libgcc.mvars + echo FPBIT_FUNCS = '$(FPBIT_FUNCS)' >> tmp-libgcc.mvars + echo LIB2_DIVMOD_FUNCS = '$(LIB2_DIVMOD_FUNCS)' >> tmp-libgcc.mvars + echo DPBIT = '$(DPBIT)' >> tmp-libgcc.mvars + echo DPBIT_FUNCS = '$(DPBIT_FUNCS)' >> tmp-libgcc.mvars + echo TPBIT = '$(TPBIT)' >> tmp-libgcc.mvars + echo TPBIT_FUNCS = '$(TPBIT_FUNCS)' >> tmp-libgcc.mvars + echo DFP_ENABLE = '$(DFP_ENABLE)' >> tmp-libgcc.mvars + echo DFP_CFLAGS='$(DFP_CFLAGS)' >> tmp-libgcc.mvars + echo D32PBIT='$(D32PBIT)' >> tmp-libgcc.mvars + echo D32PBIT_FUNCS='$(D32PBIT_FUNCS)' >> tmp-libgcc.mvars + echo D64PBIT='$(D64PBIT)' >> tmp-libgcc.mvars + echo D64PBIT_FUNCS='$(D64PBIT_FUNCS)' >> tmp-libgcc.mvars + echo D128PBIT='$(D128PBIT)' >> tmp-libgcc.mvars + echo D128PBIT_FUNCS='$(D128PBIT_FUNCS)' >> tmp-libgcc.mvars + echo GCC_EXTRA_PARTS = '$(GCC_EXTRA_PARTS)' >> tmp-libgcc.mvars + echo SHLIB_LINK = '$(subst $(GCC_FOR_TARGET),$$(GCC_FOR_TARGET),$(SHLIB_LINK))' >> tmp-libgcc.mvars + echo SHLIB_INSTALL = '$(SHLIB_INSTALL)' >> tmp-libgcc.mvars + echo SHLIB_EXT = '$(SHLIB_EXT)' >> tmp-libgcc.mvars + echo SHLIB_MKMAP = '$(call srcdirify,$(SHLIB_MKMAP))' >> tmp-libgcc.mvars + echo SHLIB_MKMAP_OPTS = '$(SHLIB_MKMAP_OPTS)' >> tmp-libgcc.mvars + echo SHLIB_MAPFILES = '$(call srcdirify,$(SHLIB_MAPFILES))' >> tmp-libgcc.mvars + echo SHLIB_NM_FLAGS = '$(SHLIB_NM_FLAGS)' >> tmp-libgcc.mvars + echo LIBGCC2_CFLAGS = '$(LIBGCC2_CFLAGS)' >> tmp-libgcc.mvars + echo CRTSTUFF_CFLAGS = '$(CRTSTUFF_CFLAGS)' >> tmp-libgcc.mvars + echo CRTSTUFF_T_CFLAGS = '$(CRTSTUFF_T_CFLAGS)' >> tmp-libgcc.mvars + echo CRTSTUFF_T_CFLAGS_S = '$(CRTSTUFF_T_CFLAGS_S)' >> tmp-libgcc.mvars + + mv tmp-libgcc.mvars libgcc.mvars # Use the genmultilib shell script to generate the information the gcc # driver program needs to select the library directory based on the @@ -1509,15 +1488,6 @@ s-mlib: $(srcdir)/genmultilib Makefile $(SHELL) $(srcdir)/../move-if-change tmp-mlib.h multilib.h $(STAMP) s-mlib -# Build multiple copies of libgcc.a, one for each target switch. -stmp-multilib: $(LIBGCC_DEPS) - $(MAKE) \ - CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ - CONFIG_H="$(CONFIG_H)" \ - MAKEOVERRIDES= \ - -f libgcc.mk all - $(STAMP) stmp-multilib - # Compile two additional files that are linked with every program # linked using GCC on systems using COFF or ELF, for the sake of C++ # constructors. @@ -3538,18 +3508,6 @@ fsf-funding.pod: funding.texi -$(TEXI2POD) $< > $@ # -# clean-target removes all files made by compilation. -# This can be added to over time. - -clean-target: clean-target-libgcc - -clean-target-libgcc: - test ! -d libgcc || \ - (cd libgcc && find . -type d -print) | \ - while read d; do rm -f $$d/libgcc.a || : ; done - test ! -d libgcc || rm -r libgcc - test ! -f stmp-dirs || rm stmp-dirs - # Deletion of files made during compilation. # There are four levels of this: # `mostlyclean', `clean', `distclean' and `maintainer-clean'. @@ -3646,7 +3604,7 @@ distclean: clean lang.distclean -cd testsuite && rm -f *.out *.gcov *$(coverageexts) -rm -rf ${QMTEST_DIR} stamp-qmtest -rm -f cxxmain.c - -rm -f mklibgcc gccbug .gdbinit configargs.h + -rm -f gccbug .gdbinit configargs.h -rm -f gcov.pod # Delete po/*.gmo only if we are not building in the source directory. -if [ ! -f po/exgettext ]; then rm -f po/*.gmo; fi @@ -3668,7 +3626,7 @@ maintainer-clean: # Copy the compiler files into directories where they will be run. # Install the driver last so that the window when things are # broken is small. -install: install-common $(INSTALL_HEADERS) $(INSTALL_LIBGCC) \ +install: install-common $(INSTALL_HEADERS) \ install-cpp install-man install-info install-@POSUB@ \ install-driver @@ -3694,7 +3652,7 @@ installdirs: $(mkinstalldirs) $(DESTDIR)$(man7dir) # Install the compiler executables built during cross compilation. -install-common: native $(EXTRA_PARTS) lang.install-common installdirs +install-common: native lang.install-common installdirs for file in $(COMPILERS); do \ if [ -f $$file ] ; then \ rm -f $(DESTDIR)$(libexecsubdir)/$$file; \ @@ -3708,13 +3666,6 @@ install-common: native $(EXTRA_PARTS) lang.install-common installdirs $(INSTALL_PROGRAM) $$file $(DESTDIR)$(libexecsubdir)/$$file; \ else true; fi; \ done - for file in $(EXTRA_PARTS) ..; do \ - if [ x"$$file" != x.. ]; then \ - rm -f $(DESTDIR)$(libsubdir)/$$file; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(libsubdir)/$$file; \ - chmod a-x $(DESTDIR)$(libsubdir)/$$file; \ - else true; fi; \ - done # We no longer install the specs file because its presence makes the # driver slower, and because people who need it can recreate it by # using -dumpspecs. We remove any old version because it would @@ -3833,24 +3784,6 @@ $(DESTDIR)$(man1dir)/$(GCOV_INSTALL_NAME)$(man1ext): doc/gcov.1 installdirs -$(INSTALL_DATA) $< $@ -chmod a-x $@ -# Install the library. -install-libgcc: libgcc.mk libgcc.a libgcov.a installdirs - $(MAKE) \ - CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ - CONFIG_H="$(TCONFIG_H)" \ - MAKEOVERRIDES= \ - mkinstalldirs='$(mkinstalldirs)' \ - -f libgcc.mk install - -# Install multiple versions of libgcc.a, libgcov.a. -install-multilib: stmp-multilib installdirs - $(MAKE) \ - CFLAGS="$(CFLAGS) $(WARN_CFLAGS)" \ - CONFIG_H="$(CONFIG_H)" \ - MAKEOVERRIDES= \ - mkinstalldirs='$(mkinstalldirs)' \ - -f libgcc.mk install - # Install all the header files built in the include subdirectory. install-headers: $(INSTALL_HEADERS_DIR) # Fix symlinks to absolute paths in the installed include directory to diff --git a/gcc/config.gcc b/gcc/config.gcc index e168a2e9740..e9739a54fde 100644 --- a/gcc/config.gcc +++ b/gcc/config.gcc @@ -25,6 +25,9 @@ # configure script. Putting it in a separate shell file lets us skip # running autoconf when modifying target-specific information. +# When you change the cases in the OS or target switches, consider +# updating ../libgcc/config.host also. + # This file switches on the shell variable ${target}, and also uses the # following shell variables: # diff --git a/gcc/config/alpha/t-crtfm b/gcc/config/alpha/t-crtfm index 5ca8c3f747d..b4103834aca 100644 --- a/gcc/config/alpha/t-crtfm +++ b/gcc/config/alpha/t-crtfm @@ -1,5 +1,5 @@ EXTRA_PARTS += crtfastmath.o -crtfastmath.o: $(srcdir)/config/alpha/crtfastmath.c $(GCC_PASSES) +$(T)crtfastmath.o: $(srcdir)/config/alpha/crtfastmath.c $(GCC_PASSES) $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -frandom-seed=gcc-crtfastmath -c \ - -o crtfastmath.o $(srcdir)/config/alpha/crtfastmath.c + -o $(T)crtfastmath.o $(srcdir)/config/alpha/crtfastmath.c diff --git a/gcc/config/alpha/t-vms b/gcc/config/alpha/t-vms index 516d3ec6ec1..d1a98e2a5f8 100644 --- a/gcc/config/alpha/t-vms +++ b/gcc/config/alpha/t-vms @@ -7,18 +7,18 @@ EXTRA_PARTS = vms-dwarf2.o vms-dwarf2eh.o $(VMS_EXTRA_PARTS) # This object must be linked with in order to make the executable debuggable. # vms-ld handles it automatically when passed -g. -vms-dwarf2.o : $(srcdir)/config/alpha/vms-dwarf2.asm +$(T)vms-dwarf2.o : $(srcdir)/config/alpha/vms-dwarf2.asm gcc -c -x assembler $< -o $@ -vms-dwarf2eh.o : $(srcdir)/config/alpha/vms-dwarf2eh.asm +$(T)vms-dwarf2eh.o : $(srcdir)/config/alpha/vms-dwarf2eh.asm gcc -c -x assembler $< -o $@ # Assemble startup files. -vcrt0.o: $(CRT0_S) $(GCC_PASSES) - decc -c /names=as_is $(srcdir)/config/alpha/vms-crt0.c -o vcrt0.o +$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES) + decc -c /names=as_is $(srcdir)/config/alpha/vms-crt0.c -o $(T)vcrt0.o -pcrt0.o: $(CRT0_S) $(GCC_PASSES) - decc -c /names=as_is $(srcdir)/config/alpha/vms-psxcrt0.c -o pcrt0.o +$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES) + decc -c /names=as_is $(srcdir)/config/alpha/vms-psxcrt0.c -o $(T)pcrt0.o MULTILIB_OPTIONS = mcpu=ev6 MULTILIB_DIRNAMES = ev6 diff --git a/gcc/config/alpha/t-vms64 b/gcc/config/alpha/t-vms64 index e3fc3be6435..38503a96429 100644 --- a/gcc/config/alpha/t-vms64 +++ b/gcc/config/alpha/t-vms64 @@ -1,8 +1,8 @@ # Assemble startup files. -vcrt0.o: $(CRT0_S) $(GCC_PASSES) +$(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES) decc -c /names=as_is /pointer_size=64 \ - $(srcdir)/config/alpha/vms-crt0-64.c -o vcrt0.o + $(srcdir)/config/alpha/vms-crt0-64.c -o $(T)vcrt0.o -pcrt0.o: $(CRT0_S) $(GCC_PASSES) +$(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES) decc -c /names=as_is /pointer_size=64 \ - $(srcdir)/config/alpha/vms-psxcrt0-64.c -o pcrt0.o + $(srcdir)/config/alpha/vms-psxcrt0-64.c -o $(T)pcrt0.o diff --git a/gcc/config/fr30/t-fr30 b/gcc/config/fr30/t-fr30 index 5ee0808e0da..ede5cb79c3c 100644 --- a/gcc/config/fr30/t-fr30 +++ b/gcc/config/fr30/t-fr30 @@ -2,11 +2,11 @@ LIB1ASMSRC = fr30/lib1funcs.asm LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 # Assemble startup files. -crti.o: $(srcdir)/config/fr30/crti.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -c -o crti.o -x assembler $(srcdir)/config/fr30/crti.asm +$(T)crti.o: $(srcdir)/config/fr30/crti.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -c -o $(T)crti.o -x assembler $(srcdir)/config/fr30/crti.asm -crtn.o: $(srcdir)/config/fr30/crtn.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -c -o crtn.o -x assembler $(srcdir)/config/fr30/crtn.asm +$(T)crtn.o: $(srcdir)/config/fr30/crtn.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -c -o $(T)crtn.o -x assembler $(srcdir)/config/fr30/crtn.asm # We want fine grained libraries, so use the new code to build the # floating point emulation libraries. diff --git a/gcc/config/frv/t-linux b/gcc/config/frv/t-linux index 298f59b0b4d..38cea1b58c4 100644 --- a/gcc/config/frv/t-linux +++ b/gcc/config/frv/t-linux @@ -5,6 +5,9 @@ MULTILIB_MATCHES= MULTILIB_EXCEPTIONS= MULTILIB_EXTRA_OPTS= +# We don't use frvbegin.o or frvend.o. +EXTRA_MULTILIB_PARTS = + CRTSTUFF_T_CFLAGS = -fPIC TARGET_LIBGCC2_CFLAGS = -fPIC diff --git a/gcc/config/i386/t-darwin b/gcc/config/i386/t-darwin index e79f3355aaa..fb5bbe78c04 100644 --- a/gcc/config/i386/t-darwin +++ b/gcc/config/i386/t-darwin @@ -1,4 +1,3 @@ -SHLIB_VERPFX = $(srcdir)/config/i386/darwin-libgcc MULTILIB_OPTIONS = m64 MULTILIB_DIRNAMES = x86_64 LIB2_SIDITI_CONV_FUNCS=yes diff --git a/gcc/config/i386/t-darwin64 b/gcc/config/i386/t-darwin64 index e7875864b18..5143e3819dc 100644 --- a/gcc/config/i386/t-darwin64 +++ b/gcc/config/i386/t-darwin64 @@ -1,3 +1,2 @@ -SHLIB_VERPFX = $(srcdir)/config/i386/darwin-libgcc LIB2_SIDITI_CONV_FUNCS=yes LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c diff --git a/gcc/config/i386/t-nwld b/gcc/config/i386/t-nwld index 6f6905541ec..db5b905b7e3 100644 --- a/gcc/config/i386/t-nwld +++ b/gcc/config/i386/t-nwld @@ -4,18 +4,18 @@ CRT0STUFF_T_CFLAGS = -mpreferred-stack-boundary=2 $(INCLUDES) CRT0_S = $(srcdir)/config/i386/netware-crt0.c MCRT0_S = $(srcdir)/config/i386/netware-crt0.c -libgcc.def: $(srcdir)/config/i386/t-nwld +$(T)libgcc.def: $(srcdir)/config/i386/t-nwld echo "module libgcc_s" >$@ -libc.def: $(srcdir)/config/i386/t-nwld +$(T)libc.def: $(srcdir)/config/i386/t-nwld echo "module libc" >$@ -libcpre.def: $(srcdir)/config/i386/t-nwld +$(T)libcpre.def: $(srcdir)/config/i386/t-nwld echo "start _LibCPrelude" >$@ echo "exit _LibCPostlude" >>$@ echo "check _LibCCheckUnload" >>$@ -posixpre.def: $(srcdir)/config/i386/t-nwld +$(T)posixpre.def: $(srcdir)/config/i386/t-nwld echo "start POSIX_Start" >$@ echo "exit POSIX_Stop" >>$@ echo "check POSIX_CheckUnload" >>$@ @@ -26,36 +26,5 @@ nwld.o: $(srcdir)/config/i386/nwld.c $(RTL_H) $(TREE_H) $(CONFIG_H) $(TM_P_H) s-crt0: $(srcdir)/unwind-dw2-fde.h -# Build a shared libgcc library for NetWare. - -SHLIB_EXT = .nlm -SHLIB_NAME = @shlib_base_name@.nlm -SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ -SHLIB_DEF = $(srcdir)/config/i386/netware-libgcc.def -SHLIB_MAP = $(srcdir)/config/i386/netware-libgcc.exp -SHLIB_SRC = $(srcdir)/config/i386/netware-libgcc.c - -SHLIB_LINK = set -e; \ - cat $(SHLIB_DEF) >@shlib_base_name@.def; \ - echo "name $(SHLIB_NAME)" >>@shlib_base_name@.def; \ - echo "version $(version)" | sed "s!\.!,!g" >>@shlib_base_name@.def; \ - touch libgcc/build; \ - echo "build $$$$(expr $$$$(<libgcc/build) + 0)" >>@shlib_base_name@.def; \ - echo "export @$(SHLIB_MAP)" >>@shlib_base_name@.def; \ - if mpkxdc -n -p @shlib_base_name@.xdc; \ - then echo "xdcdata @shlib_base_name@.xdc" >>@shlib_base_name@.def; \ - else echo "WARNING: $(SHLIB_NAME) built without XDC data will not work well." 1>&2; \ - fi; \ - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -o $(SHLIB_NAME) \ - $(SHLIB_SRC) -posix -static-libgcc -lnetware \ - -Wl,--Map,--map-info,full,--strip-all,--def-file,@shlib_base_name@.def; \ - rm -f @shlib_base_name@.imp; $(LN_S) $(SHLIB_MAP) @shlib_base_name@.imp; \ - rm -f libgcc.imp; $(LN_S) @shlib_base_name@.imp libgcc.imp; \ - expr $$$$(<libgcc/build) + 1 >libgcc/build - -# $(slibdir) double quoted to protect it from expansion while building -# libgcc.mk. We want this delayed until actual install time. -SHLIB_INSTALL = \ - $$(SHELL) $(srcdir)/mkinstalldirs $$(slibdir)$(SHLIB_SLIBDIR_QUAL); \ - $$(INSTALL_DATA) $(SHLIB_NAME) $$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_NAME); \ - $$(INSTALL_DATA) @shlib_base_name@.imp $$(DESTDIR)$$(libsubdir)/ +# To keep DRIVER_DEFINES correct. +SHLIB_LINK = dummy diff --git a/gcc/config/i386/t-rtems-i386 b/gcc/config/i386/t-rtems-i386 index 9400be8f508..6486e09f222 100644 --- a/gcc/config/i386/t-rtems-i386 +++ b/gcc/config/i386/t-rtems-i386 @@ -5,12 +5,12 @@ # version of these files. # -crti.o: $(srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES) +$(T)crti.o: $(srcdir)/config/i386/sol2-ci.asm $(GCC_PASSES) sed -e '/^!/d' <$(srcdir)/config/i386/sol2-ci.asm >crti.s - $(GCC_FOR_TARGET) -c -o crti.o crti.s -crtn.o: $(srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -c -o $(T)crti.o crti.s +$(T)crtn.o: $(srcdir)/config/i386/sol2-cn.asm $(GCC_PASSES) sed -e '/^!/d' <$(srcdir)/config/i386/sol2-cn.asm >crtn.s - $(GCC_FOR_TARGET) -c -o crtn.o crtn.s + $(GCC_FOR_TARGET) -c -o $(T)crtn.o crtn.s # We want fine grained libraries, so use the new code to build the # floating point emulation libraries. diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64 index 60535882bb7..bba12fa9684 100644 --- a/gcc/config/ia64/t-ia64 +++ b/gcc/config/ia64/t-ia64 @@ -24,21 +24,21 @@ SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64.ver T = disable # Assemble startup files. -crtbegin.o: $(srcdir)/config/ia64/crtbegin.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -I. -c -o crtbegin.o -x assembler-with-cpp \ +$(T)crtbegin.o: $(srcdir)/config/ia64/crtbegin.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -I. -c -o $(T)crtbegin.o -x assembler-with-cpp \ $(srcdir)/config/ia64/crtbegin.asm -crtend.o: $(srcdir)/config/ia64/crtend.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -I. -c -o crtend.o -x assembler-with-cpp \ +$(T)crtend.o: $(srcdir)/config/ia64/crtend.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -I. -c -o $(T)crtend.o -x assembler-with-cpp \ $(srcdir)/config/ia64/crtend.asm -crtbeginS.o: $(srcdir)/config/ia64/crtbegin.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -I. -DSHARED -c -o crtbeginS.o \ +$(T)crtbeginS.o: $(srcdir)/config/ia64/crtbegin.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -I. -DSHARED -c -o $(T)crtbeginS.o \ -x assembler-with-cpp \ $(srcdir)/config/ia64/crtbegin.asm -crtendS.o: $(srcdir)/config/ia64/crtend.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -I. -DSHARED -c -o crtendS.o -x assembler-with-cpp \ +$(T)crtendS.o: $(srcdir)/config/ia64/crtend.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -I. -DSHARED -c -o $(T)crtendS.o -x assembler-with-cpp \ $(srcdir)/config/ia64/crtend.asm -crtfastmath.o: $(srcdir)/config/ia64/crtfastmath.c $(GCC_PASSES) - $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -c -o crtfastmath.o \ +$(T)crtfastmath.o: $(srcdir)/config/ia64/crtfastmath.c $(GCC_PASSES) + $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -c -o $(T)crtfastmath.o \ $(srcdir)/config/ia64/crtfastmath.c LIB2ADDEH = $(srcdir)/config/ia64/unwind-ia64.c $(srcdir)/unwind-sjlj.c \ diff --git a/gcc/config/rs6000/t-beos b/gcc/config/rs6000/t-beos index dc3b89dba57..ad9260fe7af 100644 --- a/gcc/config/rs6000/t-beos +++ b/gcc/config/rs6000/t-beos @@ -25,6 +25,6 @@ LIMITS_H_TEST = [ -f /boot/develop/headers/posix/limits.h ] # Aix 3.2.x needs milli.exp for -mcpu=common EXTRA_PARTS = milli.exp -milli.exp: $(srcdir)/config/rs6000/milli.exp - rm -f milli.exp - cp $(srcdir)/config/rs6000/milli.exp ./milli.exp +$(T)milli.exp: $(srcdir)/config/rs6000/milli.exp + rm -f $(T)milli.exp + cp $(srcdir)/config/rs6000/milli.exp $(T)milli.exp diff --git a/gcc/config/rs6000/t-darwin b/gcc/config/rs6000/t-darwin index 7ad4b8f5182..b742f763c9a 100644 --- a/gcc/config/rs6000/t-darwin +++ b/gcc/config/rs6000/t-darwin @@ -23,8 +23,6 @@ TARGET_LIBGCC2_CFLAGS = -Wa,-force_cpusubtype_ALL -pipe -mmacosx-version-min=10. # Export the _xlq* symbols from darwin-ldouble.c. SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc64.ver -SHLIB_VERPFX = $(srcdir)/config/rs6000/darwin-libgcc - LIB2ADDEH += $(srcdir)/config/rs6000/darwin-fallback.c darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-asm.h diff --git a/gcc/config/rs6000/t-newas b/gcc/config/rs6000/t-newas index d5d03a1c66f..eed66bf5f09 100644 --- a/gcc/config/rs6000/t-newas +++ b/gcc/config/rs6000/t-newas @@ -32,6 +32,6 @@ LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-ldouble.c # Aix 3.2.x needs milli.exp for -mcpu=common EXTRA_PARTS = milli.exp -milli.exp: $(srcdir)/config/rs6000/milli.exp - rm -f milli.exp - cp $(srcdir)/config/rs6000/milli.exp ./milli.exp +$(T)milli.exp: $(srcdir)/config/rs6000/milli.exp + rm -f $(T)milli.exp + cp $(srcdir)/config/rs6000/milli.exp $(T)milli.exp diff --git a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm index 1ca509cd59a..c7529d77d01 100644 --- a/gcc/config/rs6000/t-ppccomm +++ b/gcc/config/rs6000/t-ppccomm @@ -11,18 +11,6 @@ eabi.S: $(srcdir)/config/rs6000/eabi.asm tramp.S: $(srcdir)/config/rs6000/tramp.asm cat $(srcdir)/config/rs6000/tramp.asm > tramp.S -ifneq (,$findstring gnu,$(target)) -TARGET_LIBGCC2_CFLAGS += -specs=ldblspecs - -SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc-glibc.ver - -# Hack to use -mlong-double-128 only when not compiling nof libgcc -mklibgcc: ldblspecs - -ldblspecs: specs - sed -e '/cc1_options/{ n; s/$$/ %{!msoft-float:-mlong-double-128}/; }' < specs > $@ -endif - # Switch synonyms MULTILIB_MATCHES_ENDIAN = mlittle=mlittle-endian mbig=mbig-endian MULTILIB_MATCHES_SYSV = mcall-sysv=mcall-sysv-eabi mcall-sysv=mcall-sysv-noeabi mcall-sysv=mcall-linux mcall-sysv=mcall-netbsd diff --git a/gcc/config/sparc/t-elf b/gcc/config/sparc/t-elf index 6868736a178..50e674e5d20 100644 --- a/gcc/config/sparc/t-elf +++ b/gcc/config/sparc/t-elf @@ -23,7 +23,7 @@ LIBGCC = stmp-multilib INSTALL_LIBGCC = install-multilib # Assemble startup files. -crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -c -o crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm -crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES) - $(GCC_FOR_TARGET) -c -o crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm +$(T)crti.o: $(srcdir)/config/sparc/sol2-ci.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-ci.asm +$(T)crtn.o: $(srcdir)/config/sparc/sol2-cn.asm $(GCC_PASSES) + $(GCC_FOR_TARGET) -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/sparc/sol2-cn.asm diff --git a/gcc/config/t-slibgcc-darwin b/gcc/config/t-slibgcc-darwin index f41acae1b3f..b957b353296 100644 --- a/gcc/config/t-slibgcc-darwin +++ b/gcc/config/t-slibgcc-darwin @@ -1,101 +1,2 @@ -# Build a shared libgcc library with the darwin linker. -SHLIB_SOVERSION = 1 -SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0 -SHLIB_EXT = .dylib -SHLIB_SUFFIX = `if test @multilib_dir@ = ppc64 ; then echo _@multilib_dir@ ; fi` -SHLIB_INSTALL_NAME = @shlib_base_name@$(SHLIB_SUFFIX).$(SHLIB_SOVERSION)$(SHLIB_EXT) -SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT) -SHLIB_SOLINK = @shlib_base_name@.so -SHLIB_MAP = @shlib_map_file@ -SHLIB_OBJS = @shlib_objs@ -SHLIB_DIR = @multilib_dir@ -SHLIB_LC = -lc - -# Darwin only searches in /usr/lib for shared libraries, not in subdirectories, -# so the libgcc variants have different names not different locations. -# Note that this version is used for the loader, not the linker; the linker -# uses the stub versions named by $(LIBGCC). -SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ - -install_name $(slibdir)/$(SHLIB_INSTALL_NAME) \ - -single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \ - -Wl,-exported_symbols_list,$(SHLIB_MAP) \ - $(SHLIB_VERSTRING) \ - @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) - -# $(slibdir) double quoted to protect it from expansion while building -# libgcc.mk. We want this delayed until actual install time. -SHLIB_INSTALL = \ - $$(mkinstalldirs) $$(DESTDIR)$$(slibdir); \ - $(INSTALL_DATA) $(SHLIB_SONAME) \ - $$(DESTDIR)$$(slibdir)/$(SHLIB_SONAME) - -SHLIB_MKMAP = $(srcdir)/mkmap-flat.awk -SHLIB_MKMAP_OPTS = -v leading_underscore=1 -SHLIB_MAPFILES += $(srcdir)/libgcc-std.ver - -# Must use a different directive for hidden visibility in assembly sources. -ASM_HIDDEN_OP = .private_extern - -# In order to support -mmacosx-version-min, you need to have multiple -# different libgcc_s libraries that actually get linked against, one for -# each system version supported. They are 'stub' libraries that -# contain no code, just a list of exported symbols. -# The actual use of the libraries is controlled by REAL_LIBGCC_SPEC. -# -# This assumes each multilib corresponds to a different architecture. -libgcc_s.%.dylib : $(SHLIB_VERPFX).%.ver stmp-multilib - # When building multilibbed target libraries, all the required - # libraries are expected to exist in the multilib directory. - MLIBS=`$(GCC_FOR_TARGET) --print-multi-lib \ - | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ - for mlib in $$MLIBS ; do \ - rm -f $${mlib}/$@ || exit 1 ; \ - $(LN_S) ../$@ $${mlib}/$@ || exit 1 ; \ - done - MLIBS=`$(GCC_FOR_TARGET) --print-multi-lib \ - | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ - for mlib in '' $$MLIBS ; do \ - $(STRIP_FOR_TARGET) -o $(@)_T$${mlib} \ - -s $(SHLIB_VERPFX).$(*).ver -c -u \ - ./$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp || exit 1 ; \ - done - $(LIPO_FOR_TARGET) -output $@ -create $(@)_T* - rm $(@)_T* - -libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): stmp-multilib libgcc_s.10.4.dylib \ - libgcc_s.10.5.dylib - # When building multilibbed target libraries, all the required - # libraries are expected to exist in the multilib directory. - MLIBS=`$(GCC_FOR_TARGET) --print-multi-lib \ - | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ - for mlib in '' $$MLIBS ; do \ - cp ./$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \ - ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \ - done - $(LIPO_FOR_TARGET) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \ - -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* - rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* - -# From the point-of-view of the Makefiles, libgcc is built by the 'strip' -# and 'lipo' commands above. -LIBGCC=libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) libgcc_s.10.4.dylib \ - libgcc_s.10.5.dylib stmp-multilib - -INSTALL_FILES=libgcc_s.10.4.dylib libgcc_s.10.5.dylib libgcc_s.1.dylib - -install-darwin-libgcc-stubs : $(INSTALL_FILES) installdirs - for d in $(INSTALL_FILES) ; do \ - $(INSTALL_DATA) $$d $(DESTDIR)$(slibdir)/$$d || exit 1 ; \ - done - if [ -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib ]; then \ - rm -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib; \ - else true; fi - $(LN_S) libgcc_s.1.dylib \ - $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib - if [ -f $(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib ]; then \ - rm -f $(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib; \ - else true; fi - $(LN_S) libgcc_s.1.dylib \ - $(DESTDIR)$(slibdir)/libgcc_s_x86_64.1.dylib - -INSTALL_LIBGCC = install-darwin-libgcc-stubs install-multilib +# To keep DRIVER_DEFINES correct. +SHLIB_LINK = dummy diff --git a/gcc/configure b/gcc/configure index 62215f1f227..0a34b74c78d 100755 --- a/gcc/configure +++ b/gcc/configure @@ -16421,7 +16421,7 @@ all_languages= all_boot_languages= all_compilers= all_stagestuff= -all_outputs='Makefile gccbug mklibgcc libada-mk' +all_outputs='Makefile gccbug libada-mk' # List of language makefile fragments. all_lang_makefrags= # List of language subdirectory makefiles. Deprecated. diff --git a/gcc/configure.ac b/gcc/configure.ac index 228666d62e1..b7d019750f2 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -3470,7 +3470,7 @@ all_languages= all_boot_languages= all_compilers= all_stagestuff= -all_outputs='Makefile gccbug mklibgcc libada-mk' +all_outputs='Makefile gccbug libada-mk' # List of language makefile fragments. all_lang_makefrags= # List of language subdirectory makefiles. Deprecated. diff --git a/gcc/doc/configfiles.texi b/gcc/doc/configfiles.texi index f24b85d719a..726a76a5104 100644 --- a/gcc/doc/configfiles.texi +++ b/gcc/doc/configfiles.texi @@ -40,9 +40,6 @@ used. @item @file{intl/Makefile} is constructed from @file{intl/Makefile.in}. @item -@file{mklibgcc}, a shell script to create a Makefile to build libgcc, -is constructed from @file{mklibgcc.in}. -@item If a language @file{config-lang.in} file (@pxref{Front End Config, , The Front End @file{config-lang.in} File}) sets @code{outputs}, then the files listed in @code{outputs} there are also generated. diff --git a/gcc/mklibgcc.in b/gcc/mklibgcc.in deleted file mode 100644 index 8987ff9a2ad..00000000000 --- a/gcc/mklibgcc.in +++ /dev/null @@ -1,935 +0,0 @@ -#!/bin/sh -# Construct makefile for libgcc. -# Copyright (C) 2000, 2002, 2003, 2004, 2005, 2006 -# Free Software Foundation, Inc. -# -# This file is part of GCC. - -# Arguments, taken from the environment, since there are a lot -# of them, and positional args becomes quite ugly. -# -# objext -# LIB1ASMFUNCS -# LIB2FUNCS_ST -# LIB2FUNCS_EXCLUDE -# LIBGCOV -# LIB2ADD -# LIB2ADD_ST -# LIB2ADDEH -# LIB2ADDEHSTATIC -# LIB2ADDEHSHARED -# LIB2ADDEHDEP -# LIBUNWIND -# LIBUNWINDDEP -# SHLIBUNWIND_LINK -# SHLIBUNWIND_INSTALL -# FPBIT -# FPBIT_FUNCS -# LIB2_DIVMOD_FUNCS -# LIB2_SIDITI_CONV_FUNCS -# DFP_ENABLE -# DFP_CFLAGS -# DPBIT -# DPBIT_FUNCS -# TPBIT -# TPBIT_FUNCS -# D32PBIT -# D32PBIT_FUNCS -# D64PBIT -# D64PBIT_FUNCS -# D128PBIT -# D128PBIT_FUNCS -# LIBGCC -# MULTILIBS -# EXTRA_MULTILIB_PARTS -# SHLIB_EXT -# SHLIB_LINK -# SHLIB_MKMAP -# SHLIB_MKMAP_OPTS -# SHLIB_MAPFILES -# SHLIB_NM_FLAGS -# SHLIB_INSTALL -# MULTILIB_OSDIRNAMES -# ASM_HIDDEN_OP -# GCC_FOR_TARGET - -# Make needs VPATH to be literal. -echo 'srcdir = @srcdir@' -echo 'VPATH = @srcdir@' -echo 'EQ = =' -echo 'objects = $(filter %'$objext',$^)' -echo -echo '# Dependencies are accumulated as we go.' -echo 'all: stmp-dirs' -echo 'dirs = libgcc' -echo - -# Library members defined in libgcc2.c. - -# The floating-point conversion routines that involve a single-word integer. -# XX stands for the integer mode. -swfloatfuncs= -for mode in sf df xf; do - swfloatfuncs="$swfloatfuncs _fixuns${mode}XX" -done - -# Likewise double-word routines. -dwfloatfuncs= -for mode in sf df xf tf; do - dwfloatfuncs="$dwfloatfuncs _fix${mode}XX _fixuns${mode}XX" - dwfloatfuncs="$dwfloatfuncs _floatXX${mode} _floatunXX${mode}" -done - -# Entries of the form <objfile>:<func>:<wordsize> indicate that libgcc2.c -# should be compiled with L<func> defined and with LIBGCC2_UNITS_PER_WORD -# set to <wordsize>. <objfile> is the name of the associated object file - -lib2funcs='_muldi3 _negdi2 _lshrdi3 _ashldi3 _ashrdi3 - _cmpdi2 _ucmpdi2 _clear_cache - _enable_execute_stack _trampoline __main _absvsi2 _absvdi2 _addvsi3 - _addvdi3 _subvsi3 _subvdi3 _mulvsi3 _mulvdi3 _negvsi2 _negvdi2 _ctors - _ffssi2 _ffsdi2 _clz _clzsi2 _clzdi2 _ctzsi2 _ctzdi2 _popcount_tab - _popcountsi2 _popcountdi2 _paritysi2 _paritydi2 _powisf2 _powidf2 - _powixf2 _powitf2 _mulsc3 _muldc3 _mulxc3 _multc3 _divsc3 _divdc3 - _divxc3 _divtc3 _bswapsi2 _bswapdi2' - -if [ "$LIB2_SIDITI_CONV_FUNCS" ]; then - for func in $swfloatfuncs; do - sifunc=`echo $func | sed -e 's/XX/si/'` - lib2funcs="$lib2funcs $sifunc:$sifunc:4" - done - for func in $dwfloatfuncs; do - difunc=`echo $func | sed -e 's/XX/di/'` - tifunc=`echo $func | sed -e 's/XX/ti/'` - lib2funcs="$lib2funcs $difunc:$difunc:4 $tifunc:$difunc:8" - done -else - lib2funcs="$lib2funcs `echo $swfloatfuncs | sed -e 's/XX/si/g'`" - lib2funcs="$lib2funcs `echo $dwfloatfuncs | sed -e 's/XX/di/g'`" -fi - -# Disable SHLIB_LINK if shared libgcc not enabled. -if [ "@enable_shared@" = "no" ]; then - SHLIB_LINK="" -fi - -# Build lines. - -gcc_compile='$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES)' -gcc_s_compile="$gcc_compile -DSHARED" -make_compile='$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \ - AR_FOR_TARGET="$(AR_FOR_TARGET)" \ - AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \ - AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \ - AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \ - CC="$(CC)" CFLAGS="$(CFLAGS)" \ - BUILD_PREFIX="$(BUILD_PREFIX)" \ - BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \ - LANGUAGES="$(LANGUAGES)"' - -# Generic dependencies for libgcc -libgcc_dep='$(CONFIG_H) coretypes.h $(TM_H) $(MACHMODE_H) longlong.h config.status stmp-int-hdrs tsystem.h' - -# Dependencies for libgcc2.c -libgcc2_c_dep='stmp-dirs $(srcdir)/libgcc2.c $(srcdir)/libgcc2.h gbl-ctors.h'" $libgcc_dep" - -# Dependencies for libgcov.c -libgcov_c_dep='stmp-dirs $(srcdir)/libgcov.c $(srcdir)/gcov-io.h $(srcdir)/gcov-io.c gcov-iov.h'" $libgcc_dep" - -# Dependencies for fp-bit.c -fpbit_c_dep='stmp-dirs config.status tsystem.h' - -# Dependencies for decnumber and friends. This is an overzealous set, -# but at least we can be sure to recompile if anything gets modified. -decnumber_dep='stmp-dirs $(srcdir)/../libdecnumber/decContext.h $(srcdir)/../libdecnumber/decNumber.h - $(srcdir)/../libdecnumber/decNumberLocal.h $(srcdir)/../libdecnumber/decimal32.h $(srcdir)/../libdecnumber/decimal64.h - $(srcdir)/../libdecnumber/decimal128.h $(srcdir)/../libdecnumber/decDPD.h $(srcdir)/../libdecnumber/decUtility.h' - -# Dependencies for dfp-bit.c -dfpbit_c_dep='$(srcdir)/../libdecnumber/decRound.h'" $libgcc_dep $decnumber_dep" - -# Flag whether we need eh_dummy.c -need_eh_dummy= - -if [ "$SHLIB_LINK" ]; then - # Test -fvisibility=hidden. We need both a -fvisibility=hidden on - # the command line, and a #define to prevent libgcc2.h etc from - # overriding that with #pragmas. The dance with @ is to prevent - # echo from seeing anything it might take for an option. - # echo turns the \$\$\$\$ into $$$$ and when make sees it it - # becomes $$ and the shell substitutes the pid. Makes for a - # slightly safer temp file. - echo "vis_hide := \$(strip \$(subst @,-,\\" - echo " \$(shell if echo 'void foo(void); void foo(void) {}' | \\" - echo " $gcc_compile -fvisibility=hidden -Werror \\" - echo " -c -xc - -o vis_temp_file\$\$\$\$.o 2> /dev/null; \\" - echo " then echo @fvisibility=hidden @DHIDE_EXPORTS; \\" - echo " rm vis_temp_file\$\$\$\$.o 2> /dev/null; \\" - echo " fi)))" - echo - - # If we have -fvisibility=hidden, then we need to generate hide - # lists for object files implemented in assembly. The default - # pseudo-op for this is ".hidden", but can be overridden with - # ASM_HIDDEN_OP. - [ "$ASM_HIDDEN_OP" ] || ASM_HIDDEN_OP=".hidden" - - echo "ifneq (,\$(vis_hide))" - echo "define gen-hide-list" - echo "\$(NM_FOR_TARGET) ${SHLIB_NM_FLAGS} \$< | \\" - # non-GNU nm emits three fields even for undefined and typeless symbols, - # so explicitly omit them - echo " \$(AWK) 'NF == 3 && \$\$2 !~ /^[UN]\$\$/ { print \"\\t${ASM_HIDDEN_OP}\", \$\$3 }' > \$@T" - echo "mv -f \$@T \$@" - echo "endef" - echo "else" - echo "gen-hide-list = echo > \$@" - echo "endif" - echo -else - # It is too hard to guarantee that vis_hide and gen-hide-list will never - # be referenced if SHLIB_LINK is not set, so set them to the values they'd - # have if SHLIB_LINK were set and we didn't have visibility support. - echo "vis_hide =" - echo "gen-hide-list = echo > \$@" -fi - -# Remove any objects from lib2funcs and LIB2_DIVMOD_FUNCS that are -# defined as optimized assembly code in LIB1ASMFUNCS or as C code -# in LIB2FUNCS_EXCLUDE. -for name in $LIB1ASMFUNCS $LIB2FUNCS_EXCLUDE; do - lib2funcs=`echo $lib2funcs | sed -e 's/^'$name'[ :]//' \ - -e 's/ '$name'[ :]/ /' \ - -e 's/ '$name'$//'` - LIB2_DIVMOD_FUNCS=`echo $LIB2_DIVMOD_FUNCS | sed -e 's/^'$name' //' \ - -e 's/ '$name' / /' \ - -e 's/ '$name'$//'` -done - -# -# Rules to generate object files. -# - -for ml in $MULTILIBS; do - - # Work out relevant parameters that depend only on the multilib. - dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` - flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; - shlib_slibdir_qual= - libgcc_a=$dir/libgcc.a - libgcov_a=$dir/libgcov.a - libgcc_eh_a= - libgcc_s_so= - libunwind_a= - libunwind_so= - - if [ "$LIBUNWIND" ]; then - libunwind_a=$dir/libunwind.a - fi - if [ "$SHLIB_LINK" ]; then - libgcc_eh_a=$dir/libgcc_eh.a - libgcc_s_so=$dir/libgcc_s${SHLIB_EXT} - if [ "$LIBUNWIND" ]; then - libunwind_so=$dir/libunwind${SHLIB_EXT} - fi - os_multilib_dir=`$GCC_FOR_TARGET $flags --print-multi-os-directory` - if [ "$os_multilib_dir" != . ]; then - shlib_slibdir_qual="/$os_multilib_dir" - fi - fi - - libgcc_s_so_extra= - libunwind_so_extra= - - echo - echo \# - echo \# ml: $ml - echo \# dir: $dir - echo \# flags: $flags - echo \# libgcc_a: $libgcc_a - echo \# libgcov_a: $libgcov_a - echo \# libgcc_eh_a: $libgcc_eh_a - echo \# libunwind_a: $libunwind_a - echo \# - echo \# shlib_slibdir_qual: $shlib_slibdir_qual - echo \# libgcc_s_so: $libgcc_s_so - echo \# libunwind_so: $libunwind_so - echo \# - echo - - # Update list of directories. - if [ $dir != . ]; then - echo "dirs += ${dir} libgcc/${dir}" - echo - fi - - # - # Build libgcc1 components. - # - for name in $LIB1ASMFUNCS; do - if [ "$libgcc_s_so" ]; then - out="libgcc/${dir}/${name}${objext}" - outS="libgcc/${dir}/${name}_s${objext}" - outV="libgcc/${dir}/${name}.vis" - - echo ${outS}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)' - echo " $gcc_s_compile" $flags -DL$name -xassembler-with-cpp \ - -c '$(srcdir)/config/$(LIB1ASMSRC)' -o $outS - - echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)' ${outV} - echo " $gcc_compile" $flags -DL$name -xassembler-with-cpp \ - -c '$(srcdir)/config/$(LIB1ASMSRC)' -include $outV -o $out - - echo "${outV}: ${outS}; \$(gen-hide-list)" - - echo $libgcc_a: $out - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - else - out="libgcc/${dir}/${name}${objext}" - echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)' - echo " $gcc_compile" $flags -DL$name -xassembler-with-cpp \ - -c '$(srcdir)/config/$(LIB1ASMSRC)' -o $out - echo $libgcc_a: $out - fi - done - - # - # Build libgcc2 components. - # - - for name in $lib2funcs; do - case $name in - *:*:*) - defines=`echo $name | sed -e 's/.*:\(.*\):\(.*\)/-DL\1 -DLIBGCC2_UNITS_PER_WORD=\2/'` - name=`echo $name | sed -e 's/\(.*\):.*:.*/\1/'` - ;; - *) - defines="-DL$name" - ;; - esac - if [ "$libgcc_s_so" ]; then - out="libgcc/${dir}/${name}${objext}" - outS="libgcc/${dir}/${name}_s${objext}" - - echo $outS: $libgcc2_c_dep - echo " $gcc_s_compile" $flags $defines -c '$(srcdir)/libgcc2.c' \ - -o $outS - - echo $out: $libgcc2_c_dep - echo " $gcc_compile" $flags $defines '$(vis_hide)' \ - -c '$(srcdir)/libgcc2.c' -o $out - - echo $libgcc_a: $out - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - else - out="libgcc/${dir}/${name}${objext}" - echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)' - echo " $gcc_compile" $flags $defines -c '$(srcdir)/libgcc2.c' -o $out - echo $libgcc_a: $out - fi - done - - for name in $LIB2FUNCS_ST; do - out="libgcc/${dir}/${name}${objext}" - - echo $out: $libgcc2_c_dep - echo " $gcc_compile" $flags -DL$name '$(vis_hide)' \ - -c '$(srcdir)/libgcc2.c' -o $out - echo ${dir}/libgcc.a: $out - done - - for name in $LIB2_DIVMOD_FUNCS; do - if [ "$libgcc_s_so" ]; then - out="libgcc/${dir}/${name}${objext}" - outS="libgcc/${dir}/${name}_s${objext}" - - echo $outS: $libgcc2_c_dep - echo " $gcc_s_compile" $flags -DL$name \ - -fexceptions -fnon-call-exceptions -c '$(srcdir)/libgcc2.c' -o $outS - - echo $out: $libgcc2_c_dep - echo " $gcc_compile" $flags -DL$name '$(vis_hide)' \ - -fexceptions -fnon-call-exceptions -c '$(srcdir)/libgcc2.c' -o $out - - echo $libgcc_a: $out - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - else - out="libgcc/${dir}/${name}${objext}" - echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)' - echo " $gcc_compile" $flags -DL$name \ - -fexceptions -fnon-call-exceptions -c '$(srcdir)/libgcc2.c' -o $out - echo $libgcc_a: $out - fi - done - - # - # Build software floating point functions. - # - - for fpbit_var in FPBIT DPBIT TPBIT ; do - fpfuncs_var="${fpbit_var}_FUNCS" - eval fpbit=\$$fpbit_var - eval fpfuncs=\$$fpfuncs_var - - if [ "$fpbit" ] ; then - for name in $fpfuncs; do - case "$name" in - # _sf_to_tf and _df_to_tf require tp-bit.c - # being compiled in. - _[sd]f_to_tf) [ -z "$TPBIT" ] && continue;; - esac - if [ "$libgcc_s_so" ]; then - out="libgcc/${dir}/${name}${objext}" - outS="libgcc/${dir}/${name}_s${objext}" - - echo $outS: $fpbit $fpbit_c_dep - echo " $gcc_s_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \ - -c $fpbit -o $outS - - echo $out: $fpbit $fpbit_c_dep - echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \ - '$(vis_hide)' -c $fpbit -o $out - - echo $libgcc_a: $out - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - else - out="libgcc/${dir}/${name}${objext}" - echo $out: $fpbit $fpbit_c_dep - echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \ - -c $fpbit -o $out - - echo $libgcc_a: $out - fi - done - fi - done - - if [ "@enable_decimal_float@" = "yes" -a -z "$libgcc_so" ]; then - # If $DFP_ENABLE is set, then we want all data type sizes. - if [ "$DFP_ENABLE" ] ; then - D32PBIT=1; D64PBIT=1; D128PBIT=1 - fi - - # Bring in the DFP support code if D32PBIT, D64PBIT or D128PBIT are set. - if [ -n "$D32PBIT" -o -n "$D64PBIT" -o -n "$D128PBIT" ] ; then - dec_filenames="decContext decNumber decRound decLibrary decUtility" - fi - - # Only bring in decimal*.c files for types we support. - if [ -n "$D32PBIT" ] ; then - dec_filenames="$dec_filenames decimal32" - fi - if [ -n "$D64PBIT" ] ; then - dec_filenames="$dec_filenames decimal64" - fi - if [ -n "$D128PBIT" ] ; then - dec_filenames="$dec_filenames decimal128" - fi - - for name in $dec_filenames ; do - out="libgcc/${dir}/${name}${objext}" - echo $out: "\$(srcdir)/../libdecnumber/${name}.c" $decnumber_dep - echo " $gcc_compile" $flags -c "\$(srcdir)/../libdecnumber/${name}.c" -o $out - echo $libgcc_a: $out - done - - # For individual functions, loop over each variable by name. - for dpbit_var in D32PBIT D64PBIT D128PBIT ; do - dpfuncs_var="${dpbit_var}_FUNCS" - eval dpbit=\$$dpbit_var - eval dpfuncs=\$$dpfuncs_var - case "$dpbit_var" in - D32PBIT) dpwidth=32 ;; - D64PBIT) dpwidth=64 ;; - D128PBIT) dpwidth=128 ;; - esac - - if [ "$dpbit" ]; then - for name in $dpfuncs; do - out="libgcc/${dir}/${name}${objext}" - echo $out: config/dfp-bit.h config/dfp-bit.c $dfpbit_c_dep - echo " $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name -DWIDTH=$dpwidth \ - $DFP_CFLAGS -c $\(srcdir\)/config/dfp-bit.c -o $out - echo $libgcc_a: $out - done - fi - done - fi - - for file in $LIB2ADD; do - name=`echo $file | sed -e 's/[.][cS]$//' -e 's/[.]asm$//'` - oname=`echo $name | sed -e 's,.*/,,'` - - if [ "$libgcc_s_so" ]; then - out="libgcc/${dir}/${oname}${objext}" - outS="libgcc/${dir}/${oname}_s${objext}" - - case $file in - *.c) - echo $outS: stmp-dirs $file $libgcc_dep - echo " $gcc_s_compile" $flags -c $file -o $outS - - echo $out: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags '$(vis_hide)' -c $file -o $out - ;; - - *.asm | *.S) - outV="libgcc/${dir}/${oname}.vis" - - echo $outS: stmp-dirs $file $libgcc_dep - echo " $gcc_s_compile" $flags -xassembler-with-cpp \ - -c $file -o $outS - - echo $out: stmp-dirs $file $libgcc_dep $outV - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -include $outV -c $file -o $out - echo "${outV}: ${outS}; \$(gen-hide-list)" - ;; - - *) - echo "Unhandled extension: $file" >&2 - exit 1 - ;; - esac - - echo $libgcc_a: $out - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - else - out="libgcc/${dir}/${oname}${objext}" - case $file in - *.c) - echo $out: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags -c $file -o $out - ;; - - *.asm | *.S) - echo $out: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -c $file -o $out - ;; - - *) - echo "Unhandled extension: $file" >&2 - exit 1 - ;; - esac - - echo $libgcc_a: $out - fi - done - - - for file in $LIB2ADD_ST; do - name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` - oname=`echo $name | sed -e 's,.*/,,'` - out="libgcc/${dir}/${oname}${objext}" - - case $file in - *.c) - echo $out: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags '$(vis_hide)' -c $file -o $out - ;; - - *.asm | *.S) - # We may have to compile it twice in order to establish the list - # of symbols to be marked hidden. - if [ "$libgcc_so" ]; then - outV="libgcc/${dir}/${oname}.vis" - outT="libgcc/${dir}/${oname}_t${objext}" - echo ${outT}: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -c $file -o ${outT} - echo $out: stmp-dirs $file $libgcc_dep $outV - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -include $outV -c $file -o $out - echo "${outV}: ${outT}; \$(gen-hide-list)" - else - echo $out: stmp-dirs $file $libgcc_dep - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -c $file -o $out - fi - ;; - - *) - echo "Unhandled extension: $file" >&2 - exit 1 - ;; - esac - echo $libgcc_a: $out - done - - # If we don't have libgcc_eh.a, only LIB2ADDEH matters. If we do, only - # LIB2ADDEHSTATIC and LIB2ADDEHSHARED matter. (Usually all three are - # identical.) - - if [ "$libgcc_eh_a" ]; then - for file in $LIB2ADDEHSTATIC; do - name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` - oname=`echo $name | sed -e 's,.*/,,'` - out="libgcc/${dir}/${oname}${objext}" - - case $file in - *.c) - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags -fexceptions '$(vis_hide)' -c $file -o $out - ;; - *.asm | *.S) - # We have to compile it twice in order to establish the list - # of symbols to be marked hidden. - outV="libgcc/${dir}/${oname}.vis" - outT="libgcc/${dir}/${oname}_t${objext}" - echo ${outT}: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -c $file -o ${outT} - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep $outV - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -include $outV -c $file -o $out - echo "${outV}: ${outT}; \$(gen-hide-list)" - ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - echo $libgcc_eh_a: $out - done - - for file in $LIB2ADDEHSHARED; do - name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` - oname=`echo $name | sed -e 's,.*/,,'` - outS="libgcc/${dir}/${oname}_s${objext}" - - case $file in - *.c) - echo $outS: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_s_compile" $flags -fexceptions -c $file -o $outS - ;; - *.asm | *.S) - echo $outS: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_s_compile" $flags -xassembler-with-cpp -c $file -o $outS - ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - echo $libgcc_s_so: $outS - if [ "$SHLIB_MKMAP" ]; then - echo libgcc/${dir}/libgcc.map: $outS - fi - done - - # If nothing went into libgcc_eh.a, create a dummy object - - # some linkers don't like totally empty archives. - if [ -z "$LIB2ADDEHSTATIC" ]; then - file=eh_dummy.c - out="libgcc/${dir}/eh_dummy${objext}" - need_eh_dummy=1 - - echo $out: stmp-dirs $file - echo " $gcc_compile" $flags '$(vis_hide)' -fexceptions -c $file -o $out - echo $libgcc_eh_a: $out - fi - - - else # no libgcc_eh.a - for file in $LIB2ADDEH; do - name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//'` - oname=`echo $name | sed -e 's,.*/,,'` - out="libgcc/${dir}/${oname}${objext}" - - case $file in - *.c) - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags '$(vis_hide)' -fexceptions -c $file -o $out - ;; - *.asm | *.S) - echo $out: stmp-dirs $file $LIB2ADDEHDEP $libgcc_dep - echo " $gcc_compile" $flags -xassembler-with-cpp \ - -c $file -o $out - ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - echo $libgcc_a: $out - done - fi - - # We do _not_ handle assembly files in this context. - if [ "$LIBUNWIND" ]; then - for file in $LIBUNWIND; do - case $file in - *.c) ;; - *) echo "Unhandled extension: $file">&2; exit 1 ;; - esac - - name=`echo $file | sed -e 's/[.]c$//'` - oname=`echo $name | sed -e 's,.*/,,'` - - if [ "$libunwind_so" ]; then - out="libgcc/${dir}/${oname}${objext}" - outS="libgcc/${dir}/${oname}_s${objext}" - - echo $out: stmp-dirs $file $LIBUNWINDDEP - echo " $gcc_compile $flags -fexceptions \$(vis_hide) -c $file -o $out" - - echo $outS: stmp-dirs $file $LIBUNWINDDEP - echo " $gcc_s_compile $flags -fexceptions -c $file -o $outS" - - echo $libunwind_a: $out - echo $libunwind_so: $outS - else - out="libgcc/${dir}/${oname}${objext}" - echo $out: stmp-dirs $file $LIBUNWINDDEP - echo " $gcc_compile $flags -fexceptions \$(vis_hide) -c $file -o $out" - echo $libunwind_a: $out - fi - done - fi - - # - # build libgcov components - # - for name in $LIBGCOV; do - dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` - flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; - out="libgcc/${dir}/${name}${objext}" - - echo $out: $libgcov_c_dep - echo " $gcc_compile $flags -DL$name -c \$(srcdir)/libgcov.c -o $out" - echo $libgcov_a: $out - done - - # EXTRA_MULTILIB_PARTS. - if [ -n "$EXTRA_MULTILIB_PARTS" ]; then - # Each of the EXTRA_MULTILIB_PARTS is built by recursive invocation - # of the parent Makefile. We must do this just once for each - # multilib, passing it all the EXTRA_MULTILIB_PARTS as - # simultaneous goal targets, so that rules which cannot execute - # simultaneously are properly serialized. - - extra= - echo - for f in $EXTRA_MULTILIB_PARTS; do - case $dir in - .) out=$f ; t= ;; - *) out=$dir/$f ; t=$dir/ ;; - esac - case $out in - # Prevent `make' from interpreting $out as a macro assignment - *'$(EQ)'*) targ="T_TARGET=$out T_TARGET" ;; - *) targ=$out ;; - esac - extra="$extra $targ" - done - - if [ "$dir" = . ]; then - suffix= - else - suffix=`echo $dir | sed s,/,_,g` - fi - echo extra$suffix: stmp-dirs - echo " $make_compile" \\ - echo ' LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\ - echo ' MULTILIB_CFLAGS="'$flags'"' T=$t $extra - echo "all: extra$suffix" - - # Make libunwind.so and libgcc_s.so depend on these, since they - # are likely to be implicitly used by the link process. - if [ "$libgcc_s_so" ]; then - echo "$libgcc_s_so: extra$suffix" - fi - if [ "$libunwind_so" ]; then - echo "$libunwind_so: extra$suffix" - fi - fi - - # Library build rules. - dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` - flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; - - # Map-file generation. - if [ "$SHLIB_LINK" -a "$SHLIB_MKMAP" ]; then - mapfile="libgcc/${dir}/libgcc.map" - tmpmapfile="libgcc/${dir}/tmp-libgcc.map" - # This uses a here document instead of echos because some shells - # will convert the \1 in the second sed command to a control-A. - # The behavior of here documents is more predictable. - cat <<EOF - -${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES - { \$(NM_FOR_TARGET) $SHLIB_NM_FLAGS \$(objects); echo %%; \\ - cat $SHLIB_MAPFILES \\ - | sed -e '/^[ ]*#/d' \\ - -e 's/^%\(if\|else\|elif\|endif\|define\)/#\1/' \\ - | $gcc_compile $flags -E -xassembler-with-cpp -; \\ - } | \$(AWK) -f $SHLIB_MKMAP $SHLIB_MKMAP_OPTS > ${tmpmapfile} - mv '$tmpmapfile' \$@ -$libgcc_s_so: ${mapfile} -EOF - fi - - # Static libraries. - - # Each of these .a files depends on stmp-dirs. It would seem that - # this dependency is redundant, since each of the object files - # itself depends on stmp-dirs. However, it is possible that there - # are in fact no object files. In that case, the stmp-dirs - # dependency is required; the directory containing the archive must - # exist before the archive itself can be created. - echo "" - echo "$libgcc_a: stmp-dirs" - echo " -rm -f $libgcc_a" - echo ' $(AR_CREATE_FOR_TARGET)' $libgcc_a '$(objects)' - echo ' $(RANLIB_FOR_TARGET)' $libgcc_a - echo "all: $libgcc_a" - - echo "" - echo "$libgcov_a: stmp-dirs" - echo " -rm -f $libgcov_a" - echo ' $(AR_CREATE_FOR_TARGET)' $libgcov_a '$(objects)' - echo ' $(RANLIB_FOR_TARGET)' $libgcov_a - echo "all: $libgcov_a" - - # These libraries are not always built. - if [ "$libunwind_a" ]; then - echo "" - echo "$libunwind_a: stmp-dirs" - echo " -rm -f $libunwind_a" - echo ' $(AR_CREATE_FOR_TARGET)' $libunwind_a '$(objects)' - echo ' $(RANLIB_FOR_TARGET)' $libunwind_a - echo "all: $libunwind_a" - fi - - if [ "$libgcc_eh_a" ]; then - echo "" - echo "${dir}/libgcc_eh.a: stmp-dirs" - echo " -rm -f ${dir}/libgcc_eh.a" - echo ' $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc_eh.a '$(objects)' - echo ' $(RANLIB_FOR_TARGET)' ${dir}/libgcc_eh.a - echo "all: $libgcc_eh_a" - fi - - # Shared libraries. - if [ "$libgcc_s_so" ]; then - echo "" - echo "$libgcc_s_so: stmp-dirs $libunwind_so" - echo " $SHLIB_LINK" \ - | sed -e "s%@multilib_flags@%$flags%g" \ - -e "s%@multilib_dir@%$dir%g" \ - -e "s%@shlib_objs@%\$(objects)%g" \ - -e "s%@shlib_base_name@%libgcc_s%g" \ - -e "s%@shlib_map_file@%$mapfile%g" \ - -e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g" - echo "all: $libgcc_s_so" - fi - - if [ "$libunwind_so" ]; then - echo "" - echo "$libunwind_so: stmp-dirs" - echo " $SHLIBUNWIND_LINK" \ - | sed -e "s%@multilib_flags@%$flags%g" \ - -e "s%@multilib_dir@%$dir%g" \ - -e "s%@shlib_objs@%\$(objects)%g" \ - -e "s%@shlib_base_name@%libunwind%g" \ - -e "s%@shlib_slibdir_qual@%$shlib_dir_qual%g" - echo "all: $libunwind_so" - fi - -done # ml in MULTILIBS - -echo -echo "libgcc-stage-start:" -echo " for dir in \$(dirs); do \\" -echo " if [ -d \$(stage)/\$\$dir ]; then :; \\" -echo " else $mkinstalldirs \$(stage)/\$\$dir; fi; \\" -echo " done" -echo " -for dir in \$(dirs); do \\" -echo " mv \$\$dir/*${objext} \$(stage)/\$\$dir; \\" -echo " mv \$\$dir/*.vis \$(stage)/\$\$dir; \\" -echo " mv \$\$dir/*.map \$(stage)/\$\$dir; \\" -echo " test ! -f \$\$dir/libgcc.a || mv \$\$dir/lib* \$(stage)/\$\$dir; \\" -echo " done" - -echo -echo "stmp-dirs:" -echo " for d in \$(dirs); do \\" -echo " if [ -d \$\$d ]; then true; else $mkinstalldirs \$\$d; fi; \\" -echo " done" -echo " if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi" - -if [ "$need_eh_dummy" ]; then - echo "eh_dummy.c:" - echo " echo 'int __libgcc_eh_dummy;' > \$@" -fi - -echo "" -echo "install: all" -for ml in $MULTILIBS; do - dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` - flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; - if [ $dir != . ]; then - ldir='$(DESTDIR)$(libsubdir)'/$dir - echo " if [ -d $ldir ]; then true; else $mkinstalldirs $ldir; chmod a+rx $ldir; fi;" - else - ldir='$(DESTDIR)$(libsubdir)' - fi - echo ' $(INSTALL_DATA)' ${dir}/libgcc.a ${ldir}/ - echo ' chmod 644' ${ldir}/libgcc.a - echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc.a - echo ' $(INSTALL_DATA)' ${dir}/libgcov.a ${ldir}/ - echo ' chmod 644' ${ldir}/libgcov.a - echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcov.a - - if [ "$SHLIB_LINK" ]; then - echo ' $(INSTALL_DATA)' ${dir}/libgcc_eh.a ${ldir}/ - echo ' chmod 644' ${ldir}/libgcc_eh.a - echo ' $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_eh.a - - shlib_slibdir_qual= - os_multilib_dir=`$GCC_FOR_TARGET $flags --print-multi-os-directory` - if [ "$os_multilib_dir" != . ]; then - shlib_slibdir_qual="/$os_multilib_dir" - fi - echo " $SHLIB_INSTALL" \ - | sed -e "s%@multilib_dir@%$dir%g" \ - -e "s%@shlib_base_name@%libgcc_s%g" \ - -e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g" - if [ "$LIBUNWIND" ]; then - echo " $SHLIBUNWIND_INSTALL" \ - | sed -e "s%@multilib_dir@%$dir%g" \ - -e "s%@shlib_base_name@%libunwind%g" \ - -e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g" - libunwinddir='$(DESTDIR)$(slibdir)$(shlib_slibdir_qual)/$(shlib_dir)' - echo ' $(INSTALL_DATA)' ${dir}/libunwind.a ${libunwinddir}/ - echo ' chmod 644' ${dir}/libunwind.a - echo ' $(RANLIB_FOR_TARGET)' ${libunwinddir}/libunwind.a - fi - fi -done -for f in $EXTRA_MULTILIB_PARTS; do - for ml in $MULTILIBS; do - dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'` - if [ $dir != . ]; then - out=${dir}/$f - ldir='$(DESTDIR)$(libsubdir)'/$dir - else - out=$f - ldir='$(DESTDIR)$(libsubdir)' - fi - echo ' $(INSTALL_DATA)' $out $ldir/ - done -done - -echo '.PHONY: all install' |