diff options
author | Daniel Jacobowitz <dan@codesourcery.com> | 2007-01-04 04:22:37 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@gcc.gnu.org> | 2007-01-04 04:22:37 +0000 |
commit | fa9585134f6f58fa0d3da3ca4ad5493855aea2dc (patch) | |
tree | ecf7edd5c93f496f2642ef1338e111c0d7a42345 /libgcc/config | |
parent | de43c613ab910ecc5c551e1646cc6a4241a00035 (diff) | |
download | gcc-fa9585134f6f58fa0d3da3ca4ad5493855aea2dc.zip gcc-fa9585134f6f58fa0d3da3ca4ad5493855aea2dc.tar.gz gcc-fa9585134f6f58fa0d3da3ca4ad5493855aea2dc.tar.bz2 |
Makefile.def (target_modules): Add libgcc.
./ * 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.
Co-Authored-By: Paolo Bonzini <bonzini@gnu.org>
From-SVN: r120429
Diffstat (limited to 'libgcc/config')
-rw-r--r-- | libgcc/config/alpha/t-crtfm | 6 | ||||
-rw-r--r-- | libgcc/config/i386/t-crtfm | 2 | ||||
-rw-r--r-- | libgcc/config/i386/t-darwin | 1 | ||||
-rw-r--r-- | libgcc/config/i386/t-darwin64 | 1 | ||||
-rw-r--r-- | libgcc/config/i386/t-nwld | 31 | ||||
-rw-r--r-- | libgcc/config/ia64/t-ia64 | 18 | ||||
-rw-r--r-- | libgcc/config/rs6000/t-darwin | 1 | ||||
-rw-r--r-- | libgcc/config/rs6000/t-ldbl128 | 7 | ||||
-rw-r--r-- | libgcc/config/rs6000/t-ppccomm | 36 | ||||
-rw-r--r-- | libgcc/config/sparc/t-crtfm | 2 | ||||
-rw-r--r-- | libgcc/config/t-slibgcc-darwin | 122 |
11 files changed, 227 insertions, 0 deletions
diff --git a/libgcc/config/alpha/t-crtfm b/libgcc/config/alpha/t-crtfm new file mode 100644 index 0000000..48c21d8 --- /dev/null +++ b/libgcc/config/alpha/t-crtfm @@ -0,0 +1,6 @@ +# FIXME drow/20061228 - I have preserved this -frandom-seed option +# while migrating this rule from the GCC directory, but I do not +# know why it is necessary if no other crt file uses it. +crtfastmath.o: $(gcc_srcdir)/config/alpha/crtfastmath.c + $(gcc_compile) -frandom-seed=gcc-crtfastmath -c \ + $(gcc_srcdir)/config/alpha/crtfastmath.c diff --git a/libgcc/config/i386/t-crtfm b/libgcc/config/i386/t-crtfm new file mode 100644 index 0000000..fbe7d12 --- /dev/null +++ b/libgcc/config/i386/t-crtfm @@ -0,0 +1,2 @@ +crtfastmath.o: $(gcc_srcdir)/config/i386/crtfastmath.c + $(gcc_compile) -msse -c $(gcc_srcdir)/config/i386/crtfastmath.c diff --git a/libgcc/config/i386/t-darwin b/libgcc/config/i386/t-darwin new file mode 100644 index 0000000..4578f74 --- /dev/null +++ b/libgcc/config/i386/t-darwin @@ -0,0 +1 @@ +SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc diff --git a/libgcc/config/i386/t-darwin64 b/libgcc/config/i386/t-darwin64 new file mode 100644 index 0000000..4578f74 --- /dev/null +++ b/libgcc/config/i386/t-darwin64 @@ -0,0 +1 @@ +SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc diff --git a/libgcc/config/i386/t-nwld b/libgcc/config/i386/t-nwld new file mode 100644 index 0000000..4085872 --- /dev/null +++ b/libgcc/config/i386/t-nwld @@ -0,0 +1,31 @@ +# Build a shared libgcc library for NetWare. + +SHLIB_EXT = .nlm +SHLIB_NAME = @shlib_base_name@.nlm +SHLIB_SLIBDIR_QUAL = @shlib_slibdir_qual@ +SHLIB_DEF = $(gcc_srcdir)/config/i386/netware-libgcc.def +SHLIB_MAP = $(gcc_srcdir)/config/i386/netware-libgcc.exp +SHLIB_SRC = $(gcc_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 build; \ + echo "build $$(expr $$(<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; \ + $(CC) $(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 $$(<build) + 1 >build + +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)/ diff --git a/libgcc/config/ia64/t-ia64 b/libgcc/config/ia64/t-ia64 new file mode 100644 index 0000000..d9c7566 --- /dev/null +++ b/libgcc/config/ia64/t-ia64 @@ -0,0 +1,18 @@ +CUSTOM_CRTSTUFF = yes + +# Assemble startup files. +crtbegin.o: $(gcc_srcdir)/config/ia64/crtbegin.asm + $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \ + -o $@ $(gcc_srcdir)/config/ia64/crtbegin.asm +crtend.o: $(gcc_srcdir)/config/ia64/crtend.asm + $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \ + -o $@ $(gcc_srcdir)/config/ia64/crtend.asm +crtbeginS.o: $(gcc_srcdir)/config/ia64/crtbegin.asm + $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \ + -o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtbegin.asm +crtendS.o: $(gcc_srcdir)/config/ia64/crtend.asm + $(CC) $(compile_deps) -I. -I$(gcc_objdir) -c -x assembler-with-cpp \ + -o $@ -DSHARED $(gcc_srcdir)/config/ia64/crtend.asm + +crtfastmath.o: $(gcc_srcdir)/config/ia64/crtfastmath.c + $(gcc_compile) -c $(gcc_srcdir)/config/ia64/crtfastmath.c diff --git a/libgcc/config/rs6000/t-darwin b/libgcc/config/rs6000/t-darwin new file mode 100644 index 0000000..0afe837 --- /dev/null +++ b/libgcc/config/rs6000/t-darwin @@ -0,0 +1 @@ +SHLIB_VERPFX = $(gcc_srcdir)/config/rs6000/darwin-libgcc diff --git a/libgcc/config/rs6000/t-ldbl128 b/libgcc/config/rs6000/t-ldbl128 new file mode 100644 index 0000000..96e242b --- /dev/null +++ b/libgcc/config/rs6000/t-ldbl128 @@ -0,0 +1,7 @@ +SHLIB_MAPFILES += $(gcc_srcdir)/config/rs6000/libgcc-ppc-glibc.ver + +# Use -mlong-double-128 only when not compiling nof libgcc. +predefined-macros := $(shell true | $(CC) $(CFLAGS) -x c -dD -E -) +ifeq ($(findstring _SOFT_FLOAT,$(predefined-macros)),) +HOST_LIBGCC2_CFLAGS += -mlong-double-128 +endif diff --git a/libgcc/config/rs6000/t-ppccomm b/libgcc/config/rs6000/t-ppccomm new file mode 100644 index 0000000..d883682 --- /dev/null +++ b/libgcc/config/rs6000/t-ppccomm @@ -0,0 +1,36 @@ +EXTRA_PARTS += ecrti$(objext) ecrtn$(objext) ncrti$(objext) ncrtn$(objext) \ + crtsavres$(objext) + +# We build {e,n}crti.o and {e,n}crtn.o, which serve to add begin and +# end labels to all of the special sections used when we link using gcc. + +# Assemble startup files. +ecrti.S: $(gcc_srcdir)/config/rs6000/eabi-ci.asm + cat $(gcc_srcdir)/config/rs6000/eabi-ci.asm >ecrti.S + +ecrtn.S: $(gcc_srcdir)/config/rs6000/eabi-cn.asm + cat $(gcc_srcdir)/config/rs6000/eabi-cn.asm >ecrtn.S + +ncrti.S: $(gcc_srcdir)/config/rs6000/sol-ci.asm + cat $(gcc_srcdir)/config/rs6000/sol-ci.asm >ncrti.S + +ncrtn.S: $(gcc_srcdir)/config/rs6000/sol-cn.asm + cat $(gcc_srcdir)/config/rs6000/sol-cn.asm >ncrtn.S + +crtsavres.S: $(gcc_srcdir)/config/rs6000/crtsavres.asm + cat $(gcc_srcdir)/config/rs6000/crtsavres.asm >crtsavres.S + +ecrti$(objext): ecrti.S + $(crt_compile) -c ecrti.S + +ecrtn$(objext): ecrtn.S + $(crt_compile) -c ecrtn.S + +ncrti$(objext): ncrti.S + $(crt_compile) -c ncrti.S + +ncrtn$(objext): ncrtn.S + $(crt_compile) -c ncrtn.S + +crtsavres$(objext): crtsavres.S + $(crt_compile) -c crtsavres.S diff --git a/libgcc/config/sparc/t-crtfm b/libgcc/config/sparc/t-crtfm new file mode 100644 index 0000000..d6d616f --- /dev/null +++ b/libgcc/config/sparc/t-crtfm @@ -0,0 +1,2 @@ +crtfastmath.o: $(gcc_srcdir)/config/sparc/crtfastmath.c + $(gcc_compile) -c $(gcc_srcdir)/config/sparc/crtfastmath.c diff --git a/libgcc/config/t-slibgcc-darwin b/libgcc/config/t-slibgcc-darwin new file mode 100644 index 0000000..507821d --- /dev/null +++ b/libgcc/config/t-slibgcc-darwin @@ -0,0 +1,122 @@ +# 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 the versioned members of $(INSTALL_FILES). +SHLIB_LINK = $(CC) $(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) + +SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk +SHLIB_MKMAP_OPTS = -v leading_underscore=1 +SHLIB_MAPFILES += $(gcc_srcdir)/libgcc-std.ver + +INSTALL_FILES=libgcc_s.10.4.dylib libgcc_s.10.5.dylib libgcc_s.1.dylib + +# For the toplevel multilib, build a fat archive including all the multilibs. +ifeq ($(MULTIBUILDTOP),) + +SHLIB_INSTALL = \ + $(mkinstalldirs) $(DESTDIR)$(slibdir); \ + $(INSTALL_DATA) $(SHLIB_SONAME) \ + $(DESTDIR)$(slibdir)/$(SHLIB_SONAME) + +ifeq ($(enable_shared),yes) +all: $(INSTALL_FILES) +install: install-darwin-libgcc-stubs +endif + +# 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 libgcc_s$(SHLIB_EXT) all-multi + $(STRIP) -o $(@)_T \ + -s $(SHLIB_VERPFX).$(*).ver -c -u \ + ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp + MLIBS=`$(CC) --print-multi-lib \ + | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ + for mlib in $$MLIBS ; do \ + $(STRIP) -o $(@)_T$${mlib} \ + -s $(SHLIB_VERPFX).$(*).ver -c -u \ + ../$${mlib}/libgcc/$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp || exit 1 ; \ + done + $(LIPO) -output $@ -create $(@)_T* + rm $(@)_T* + +libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_s$(SHLIB_EXT) \ + libgcc_s.10.4.dylib libgcc_s.10.5.dylib + cp libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \ + ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_ || exit 1 ; \ + MLIBS=`$(CC) --print-multi-lib \ + | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ + for mlib in $$MLIBS ; do \ + cp ../$${mlib}/libgcc/$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \ + ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \ + done + $(LIPO) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \ + -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* + rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* + +install-darwin-libgcc-stubs : $(INSTALL_FILES) + $(mkinstalldirs) $(DESTDIR)$(slibdir) + 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 + +else + +# Do not install shared libraries for any other multilibs. Unless +# we're putting them in the gcc directory during a build, for +# compatibility with the pre-top-level layout. In that case we +# need symlinks. +SHLIB_INSTALL = + +ifeq ($(enable_shared),yes) +all: install-darwin-libgcc-links +endif + +install-darwin-libgcc-links: + $(mkinstalldirs) $(gcc_objdir)$(MULTISUBDIR) + for file in $(INSTALL_FILES); do \ + rm -f $(gcc_objdir)$(MULTISUBDIR)/$$file; \ + $(LN_S) ../$$file $(gcc_objdir)$(MULTISUBDIR)/; \ + done + + rm -f $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_x86_64.1.dylib + $(LN_S) libgcc_s.1.dylib \ + $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_x86_64.1.dylib + + rm -f $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_ppc64.1.dylib + $(LN_S) libgcc_s.1.dylib \ + $(gcc_objdir)$(MULTISUBDIR)/libgcc_s_ppc64.1.dylib + +endif |