Commit fa958513 by Daniel Jacobowitz Committed by Daniel Jacobowitz

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
parent de43c613
2007-01-03 Daniel Jacobowitz <dan@codesourcery.com>
* 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.
2006-12-29 Paolo Bonzini <bonzini@gnu.org>
* configure.in: Reorganize recognition of languages. Add
......
......@@ -119,6 +119,7 @@ target_modules = { module= libstdc++-v3; lib_path=.libs; raw_cxx=true; };
target_modules = { module= libmudflap; lib_path=.libs; };
target_modules = { module= libssp; lib_path=.libs; };
target_modules = { module= newlib; };
target_modules = { module= libgcc; bootstrap=true; no_check=true; };
target_modules = { module= libgfortran; };
target_modules = { module= libobjc; };
target_modules = { module= libtermcap; no_check=true;
......@@ -439,18 +440,17 @@ dependencies = { module=all-tar; on=all-build-texinfo; };
dependencies = { module=all-uudecode; on=all-build-texinfo; };
// Target modules. These can also have dependencies on the language
// environment (e.g. on libstdc++).
lang_env_dependencies = { module=boehm-gc; };
// environment (e.g. on libstdc++). By default target modules depend
// on libgcc and newlib/libgloss.
lang_env_dependencies = { module=gperf; cxx=true; };
lang_env_dependencies = { module=libada; };
lang_env_dependencies = { module=libgfortran; };
lang_env_dependencies = { module=libffi; };
lang_env_dependencies = { module=libjava; cxx=true; };
lang_env_dependencies = { module=libmudflap; };
lang_env_dependencies = { module=libobjc; };
lang_env_dependencies = { module=libssp; };
lang_env_dependencies = { module=libstdc++-v3; };
lang_env_dependencies = { module=zlib; };
lang_env_dependencies = { module=newlib; no_c=true; };
lang_env_dependencies = { module=libgloss; no_c=true; };
lang_env_dependencies = { module=libgcc; no_gcc=true; no_c=true; };
// libiberty does not depend on newlib or libgloss because it must be
// built newlib on some targets (e.g. Cygwin). It still needs
// a dependency on libgcc for native targets to configure.
lang_env_dependencies = { module=libiberty; no_c=true; };
dependencies = { module=configure-target-boehm-gc; on=configure-target-qthreads; };
dependencies = { module=configure-target-fastjar; on=configure-target-zlib; };
......
......@@ -611,11 +611,6 @@ maintainer-clean: local-maintainer-clean do-maintainer-clean local-clean
maintainer-clean: local-distclean
realclean: maintainer-clean
# Extra dependency for clean-target, owing to the mixed nature of gcc.
clean-target: clean-target-libgcc
clean-target-libgcc:
if test -f gcc/Makefile; then cd gcc && $(MAKE) $@; else :; fi
# Check target.
.PHONY: check do-check
......@@ -1400,18 +1395,12 @@ configure-target-[+module+]: stage_last[+
ENDIF bootstrap +][+ ENDFOR target_modules +]
@endif gcc-bootstrap
@if gcc-no-bootstrap[+ FOR target_modules +][+ IF bootstrap
+][+ ELSE +]
@if gcc-no-bootstrap[+ FOR target_modules +]
configure-target-[+module+]: maybe-all-gcc[+
ENDIF bootstrap +][+ ENDFOR target_modules +]
ENDFOR target_modules +]
@endif gcc-no-bootstrap
[+ FOR lang_env_dependencies +]
configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
[+ IF cxx +]configure-target-[+module+]: maybe-all-target-libstdc++-v3
[+ ENDIF cxx +][+ ENDFOR lang_env_dependencies +]
# There are two types of dependencies here: 'hard' dependencies, where one
# module simply won't build without the other; and 'soft' dependencies, where
# if the depended-on module is missing, the depending module will do without
......@@ -1507,6 +1496,48 @@ configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss
[+ ESAC +][+
ENDFOR dependencies +]
# Dependencies for target modules on other target modules are
# described by lang_env_dependencies; the defaults apply to anything
# not mentioned there.
[+
;; Predicate for whether LANG was specified in lang_env_dependencies.
(define lang-dep (lambda (lang)
(hash-ref lang-env-deps (string-append (get "module") "-" lang))))
;; Build the hash table we will need.
(define lang-env-deps (make-hash-table 7))
+][+ FOR lang_env_dependencies +][+
(if (exist? "cxx")
(hash-create-handle! lang-env-deps
(string-append (get "module") "-" "cxx") #t))
(if (exist? "no_c")
(hash-create-handle! lang-env-deps
(string-append (get "module") "-" "no_c") #t))
(if (exist? "no_gcc")
(hash-create-handle! lang-env-deps
(string-append (get "module") "-" "no_gcc") #t))
"" +][+ ENDFOR lang_env_dependencies +]
@if gcc-bootstrap[+ FOR target_modules +][+ IF (not (lang-dep "no_gcc"))
+][+ IF bootstrap +][+ FOR bootstrap_stage +]
configure-stage[+id+]-target-[+module+]: maybe-all-stage[+id+]-target-libgcc[+
ENDFOR +][+ ENDIF bootstrap +][+ ENDIF +][+ ENDFOR target_modules +]
@endif gcc-bootstrap
@if gcc-no-bootstrap[+ FOR target_modules +][+ IF (not (lang-dep "no_gcc")) +]
configure-target-[+module+]: maybe-all-target-libgcc[+
ENDIF +][+ ENDFOR target_modules +]
@endif gcc-no-bootstrap
[+ FOR target_modules +][+ IF (not (lang-dep "no_c")) +]
configure-target-[+module+]: maybe-all-target-newlib maybe-all-target-libgloss[+
ENDIF +][+ IF (lang-dep "cxx") +]
configure-target-[+module+]: maybe-all-target-libstdc++-v3[+
ENDIF +]
[+ ENDFOR target_modules +]
CONFIGURE_GDB_TK = @CONFIGURE_GDB_TK@
GDB_TK = @GDB_TK@
INSTALL_GDB_TK = @INSTALL_GDB_TK@
......
......@@ -142,6 +142,7 @@ libgcj="target-libffi \
# the host libraries and the host tools (which may be a cross compiler)
#
target_libraries="target-libiberty \
target-libgcc \
target-libgloss \
target-newlib \
target-libstdc++-v3 \
......
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
......
......@@ -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:
#
......
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
......@@ -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
......
# 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
......@@ -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.
......
......@@ -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
......
SHLIB_VERPFX = $(srcdir)/config/i386/darwin-libgcc
MULTILIB_OPTIONS = m64
MULTILIB_DIRNAMES = x86_64
LIB2_SIDITI_CONV_FUNCS=yes
......
SHLIB_VERPFX = $(srcdir)/config/i386/darwin-libgcc
LIB2_SIDITI_CONV_FUNCS=yes
LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c
......@@ -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
......@@ -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.
......
......@@ -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 \
......
......@@ -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
......@@ -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
......
......@@ -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
......@@ -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
......
......@@ -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
# 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
......@@ -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.
......
......@@ -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.
......
......@@ -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.
......
2007-01-03 Daniel Jacobowitz <dan@codesourcery.com>
Paolo Bonzini <bonzini@gnu.org>
* 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.
# 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
crtfastmath.o: $(gcc_srcdir)/config/i386/crtfastmath.c
$(gcc_compile) -msse -c $(gcc_srcdir)/config/i386/crtfastmath.c
SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc
SHLIB_VERPFX = $(gcc_srcdir)/config/i386/darwin-libgcc
# 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)/
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
SHLIB_VERPFX = $(gcc_srcdir)/config/rs6000/darwin-libgcc
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
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
crtfastmath.o: $(gcc_srcdir)/config/sparc/crtfastmath.c
$(gcc_compile) -c $(gcc_srcdir)/config/sparc/crtfastmath.c
# 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
This source diff could not be displayed because it is too large. You can view the blob instead.
dnl Process this file with autoconf to produce a configure script.
sinclude(../config/acx.m4)
sinclude(../config/no-executables.m4)
AC_PREREQ(2.59)
AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
AC_CONFIG_SRCDIR([static-object.mk])
AC_ARG_WITH(target-subdir,
[ --with-target-subdir=SUBDIR Configuring in a subdirectory for target])
AC_ARG_WITH(cross-host,
[ --with-cross-host=HOST Configuring with a cross compiler])
AC_ARG_WITH(ld,
[ --with-ld arrange to use the specified ld (full pathname)])
if test "${srcdir}" = "."; then
if test -n "${with_build_subdir}"; then
libgcc_topdir="${srcdir}/../.."
with_target_subdir=
elif test -z "${with_target_subdir}"; then
libgcc_topdir="${srcdir}/.."
else
if test "${with_target_subdir}" != "."; then
libgcc_topdir="${srcdir}/${with_multisrctop}../.."
else
libgcc_topdir="${srcdir}/${with_multisrctop}.."
fi
fi
else
libgcc_topdir="${srcdir}/.."
fi
AC_SUBST(libgcc_topdir)
AC_CONFIG_AUX_DIR($libgcc_topdir)
AC_ARG_ENABLE(shared,
[ --disable-shared don't provide a shared libgcc],
[
case $enable_shared in
yes | no) ;;
*)
enable_shared=no
IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
for pkg in $enableval; do
if test "X$pkg" = "Xgcc" || test "X$pkg" = "Xlibgcc"; then
enable_shared=yes
fi
done
IFS="$ac_save_ifs"
;;
esac
], [enable_shared=yes])
AC_SUBST(enable_shared)
AC_ARG_WITH(slibdir,
[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]],
slibdir="$with_slibdir",
if test "${enable_version_specific_runtime_libs+set}" = set; then
slibdir='$(libsubdir)'
elif test "$host" != "$target"; then
slibdir='$(build_tooldir)/lib'
else
slibdir='$(libdir)'
fi)
AC_SUBST(slibdir)
AC_PROG_INSTALL
AC_PROG_AWK
# We need awk; bail out if it's missing.
case ${AWK} in
"") AC_MSG_ERROR([can't build without awk, bailing out]) ;;
esac
AC_CANONICAL_HOST
ACX_NONCANONICAL_HOST
dnl These must be called before AM_PROG_LIBTOOL, because it may want
dnl to call AC_CHECK_PROG.
AC_CHECK_TOOL(AR, ar)
AC_CHECK_TOOL(LIPO, lipo, :)
AC_CHECK_TOOL(NM, nm)
AC_CHECK_TOOL(RANLIB, ranlib, :)
AC_CHECK_TOOL(STRIP, strip, :)
AC_PROG_LN_S
GCC_NO_EXECUTABLES
AC_PROG_CC
AC_PROG_CPP_WERROR
# Check for decimal float support.
AC_CACHE_CHECK([whether decimal floating point is supported], [libgcc_cv_dfp],
[AC_COMPILE_IFELSE([_Decimal32 x;], [libgcc_cv_dfp=yes],
[libgcc_cv_dfp=no])])
decimal_float=$libgcc_cv_dfp
AC_SUBST(decimal_float)
# Collect host-machine-specific information.
. ${srcdir}/config.host
# Check for visibility support. This is after config.host so that
# we can check for asm_hidden_op.
AC_CACHE_CHECK([for __attribute__((visibility("hidden")))],
libgcc_cv_hidden_visibility_attribute, [
echo 'int __attribute__ ((visibility ("hidden"))) foo (void) { return 1; }' > conftest.c
libgcc_cv_hidden_visibility_attribute=no
if AC_TRY_COMMAND(${CC-cc} -Werror -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD); then
if grep "\\$asm_hidden_op.*foo" conftest.s >/dev/null; then
libgcc_cv_hidden_visibility_attribute=yes
fi
fi
rm -f conftest.*
])
if test $libgcc_cv_hidden_visibility_attribute = yes; then
vis_hide='-fvisibility=hidden -DHIDE_EXPORTS'
else
vis_hide=
fi
AC_SUBST(vis_hide)
# 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)
# Substitute configuration variables
AC_SUBST(extra_parts)
AC_SUBST(asm_hidden_op)
# We need multilib support.
AC_CONFIG_FILES([Makefile])
AC_CONFIG_COMMANDS([default],
[[test -z "$CONFIG_HEADERS" || echo timestamp > stamp-h
if test -n "$CONFIG_FILES"; then
# FIXME: We shouldn't need to set ac_file
ac_file=Makefile
. ${libgcc_topdir}/config-ml.in
fi]],
[[srcdir=${srcdir}
host=${host}
target=${target}
with_target_subdir=${with_target_subdir}
with_multisubdir=${with_multisubdir}
ac_configure_args="--enable-multilib ${ac_configure_args}"
CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
libgcc_topdir=${libgcc_topdir}
CC="${CC}"
]])
AC_OUTPUT
# Empty. This file exists to suppress errors in the parent Makefile
# when a variable (e.g. LIB2ADD) is empty.
# This file is included several times in a row, once for each element of
# $(iter-items). On each inclusion, we advance $o to the next element.
o := $(firstword $(iter-items))
iter-items := $(filter-out $o,$(iter-items))
base := $(basename $(notdir $o))
ifeq ($(suffix $o),.c)
$(base)$(objext): $o
$(gcc_compile) $(c_flags) -c $< $(vis_hide)
$(base)_s$(objext): $o
$(gcc_s_compile) $(c_flags) -c $<
else
ifneq ($(suffix $o),.S)
ifneq ($(suffix $o),.asm)
$(error Unsupported file type: $o)
endif
endif
$(base)$(objext): $o $(base).vis
$(gcc_compile) -c -xassembler-with-cpp -include $*.vis $<
$(base).vis: $(base)_s$(objext)
$(gen-hide-list)
$(base)_s$(objext): $o
$(gcc_s_compile) -c -xassembler-with-cpp $<
endif
# This file is included several times in a row, once for each element of
# $(iter-items). On each inclusion, we advance $o to the next element.
# $(iter-labels) and $(iter-sizes) are also advanced.
o := $(firstword $(iter-items))
iter-items := $(filter-out $o,$(iter-items))
$o-label := $(firstword $(iter-labels))
iter-labels := $(wordlist 2,$(words $(iter-labels)),$(iter-labels))
$o-size := $(firstword $(iter-sizes))
iter-sizes := $(wordlist 2,$(words $(iter-sizes)),$(iter-sizes))
$o$(objext): %$(objext): $(gcc_srcdir)/libgcc2.c
$(gcc_compile) -DL$($*-label) -c $(gcc_srcdir)/libgcc2.c $(vis_hide) \
-DLIBGCC2_UNITS_PER_WORD=$($*-size)
ifeq ($(enable_shared),yes)
$(o)_s$(objext): %_s$(objext): $(gcc_srcdir)/libgcc2.c
$(gcc_s_compile) -DL$($*-label) -c $(gcc_srcdir)/libgcc2.c \
-DLIBGCC2_UNITS_PER_WORD=$($*-size)
endif
# This file is included several times in a row, once for each element of
# $(iter-items). On each inclusion, we advance $o to the next element.
o := $(firstword $(iter-items))
iter-items := $(filter-out $o,$(iter-items))
base := $(basename $(notdir $o))
ifeq ($(suffix $o),.c)
$(base)$(objext): $o
$(gcc_compile) $(c_flags) -c $< $(vis_hide)
else
ifneq ($(suffix $o),.S)
ifneq ($(suffix $o),.asm)
$(error Unsupported file type: $o)
endif
endif
$(base)$(objext): $o
$(gcc_compile) -c -xassembler-with-cpp $<
endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment