head	1.1;
branch	1.1.1;
access;
symbols
	RELENG_8_4:1.1.1.3.0.30
	RELENG_9_1_0_RELEASE:1.1.1.3
	RELENG_9_1:1.1.1.3.0.28
	RELENG_9_1_BP:1.1.1.3
	RELENG_8_3_0_RELEASE:1.1.1.3
	RELENG_8_3:1.1.1.3.0.26
	RELENG_8_3_BP:1.1.1.3
	RELENG_9_0_0_RELEASE:1.1.1.3
	RELENG_9_0:1.1.1.3.0.24
	RELENG_9_0_BP:1.1.1.3
	RELENG_9:1.1.1.3.0.22
	RELENG_9_BP:1.1.1.3
	RELENG_7_4_0_RELEASE:1.1.1.3
	RELENG_8_2_0_RELEASE:1.1.1.3
	RELENG_7_4:1.1.1.3.0.20
	RELENG_7_4_BP:1.1.1.3
	RELENG_8_2:1.1.1.3.0.18
	RELENG_8_2_BP:1.1.1.3
	RELENG_8_1_0_RELEASE:1.1.1.3
	RELENG_8_1:1.1.1.3.0.16
	RELENG_8_1_BP:1.1.1.3
	RELENG_7_3_0_RELEASE:1.1.1.3
	RELENG_7_3:1.1.1.3.0.14
	RELENG_7_3_BP:1.1.1.3
	RELENG_8_0_0_RELEASE:1.1.1.3
	RELENG_8_0:1.1.1.3.0.12
	RELENG_8_0_BP:1.1.1.3
	RELENG_8:1.1.1.3.0.10
	RELENG_8_BP:1.1.1.3
	RELENG_7_2_0_RELEASE:1.1.1.3
	RELENG_7_2:1.1.1.3.0.8
	RELENG_7_2_BP:1.1.1.3
	RELENG_7_1_0_RELEASE:1.1.1.3
	RELENG_6_4_0_RELEASE:1.1.1.2
	RELENG_7_1:1.1.1.3.0.6
	RELENG_7_1_BP:1.1.1.3
	RELENG_6_4:1.1.1.2.0.12
	RELENG_6_4_BP:1.1.1.2
	RELENG_7_0_0_RELEASE:1.1.1.3
	RELENG_6_3_0_RELEASE:1.1.1.2
	RELENG_7_0:1.1.1.3.0.4
	RELENG_7_0_BP:1.1.1.3
	RELENG_6_3:1.1.1.2.0.10
	RELENG_6_3_BP:1.1.1.2
	RELENG_7:1.1.1.3.0.2
	RELENG_7_BP:1.1.1.3
	gcc_4_2_1_20070718_SVN126787:1.1.1.3
	gcc_4_2_0_20070514_SVN124707:1.1.1.3
	RELENG_6_2_0_RELEASE:1.1.1.2
	RELENG_6_2:1.1.1.2.0.8
	RELENG_6_2_BP:1.1.1.2
	gcc_3_4_6_20060825_SVN116475:1.1.1.2
	RELENG_5_5_0_RELEASE:1.1.1.1
	RELENG_5_5:1.1.1.1.0.8
	RELENG_5_5_BP:1.1.1.1
	RELENG_6_1_0_RELEASE:1.1.1.2
	RELENG_6_1:1.1.1.2.0.6
	RELENG_6_1_BP:1.1.1.2
	RELENG_6_0_0_RELEASE:1.1.1.2
	RELENG_6_0:1.1.1.2.0.4
	RELENG_6_0_BP:1.1.1.2
	RELENG_6:1.1.1.2.0.2
	RELENG_6_BP:1.1.1.2
	gcc_3_4_4_20050518:1.1.1.2
	RELENG_5_4_0_RELEASE:1.1.1.1
	RELENG_5_4:1.1.1.1.0.6
	RELENG_5_4_BP:1.1.1.1
	RELENG_5_3_0_RELEASE:1.1.1.1
	RELENG_5_3:1.1.1.1.0.4
	RELENG_5_3_BP:1.1.1.1
	RELENG_5:1.1.1.1.0.2
	RELENG_5_BP:1.1.1.1
	gcc_3_4_2_20040728:1.1.1.1
	FSF:1.1.1;
locks; strict;
comment	@# @;


1.1
date	2004.07.28.03.11.35;	author kan;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2004.07.28.03.11.35;	author kan;	state Exp;
branches;
next	1.1.1.2;

1.1.1.2
date	2005.06.03.03.28.41;	author kan;	state Exp;
branches;
next	1.1.1.3;

1.1.1.3
date	2007.05.19.01.16.22;	author kan;	state Exp;
branches
	1.1.1.3.30.1;
next	;

1.1.1.3.30.1
date	2007.05.19.01.16.22;	author svnexp;	state dead;
branches;
next	1.1.1.3.30.2;

1.1.1.3.30.2
date	2013.03.28.13.00.54;	author svnexp;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@# Build a shared libgcc library with the darwin linker.
SHLIB_MINOR = 1
SHLIB_REVISION = 0
SHLIB_VERSTRING = -compatibility_version $(SHLIB_MINOR) -current_version $(SHLIB_MINOR).$(SHLIB_REVISION)
SHLIB_EXT = .dylib
SHLIB_SOLINK = @@shlib_base_name@@.dylib
SHLIB_SONAME = @@shlib_so_name@@.$(SHLIB_MINOR).$(SHLIB_REVISION).dylib
SHLIB_NAME = @@shlib_dir@@@@shlib_so_name@@.$(SHLIB_MINOR).$(SHLIB_REVISION).dylib
SHLIB_MAP = @@shlib_map_file@@
SHLIB_OBJS = @@shlib_objs@@
SHLIB_SLIBDIR_QUAL = @@shlib_slibdir_qual@@

SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \
	-Wl,-install_name,$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME) \
	-Wl,-flat_namespace -o $(SHLIB_NAME) \
	$(SHLIB_VERSTRING) \
	@@multilib_flags@@ $(SHLIB_OBJS) -lc && \
	rm -f $(SHLIB_SOLINK) && \
	$(LN_S) $(SHLIB_NAME) $(SHLIB_SOLINK)
# $(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 $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL); \
	$(INSTALL_DATA) $(SHLIB_NAME) \
	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SONAME); \
	rm -f $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK); \
	$(LN_S) $(SHLIB_SONAME) \
	  $$(DESTDIR)$$(slibdir)$(SHLIB_SLIBDIR_QUAL)/$(SHLIB_SOLINK)
SHLIB_MKMAP = $(srcdir)/mkmap-symver.awk
SHLIB_MAPFILES = $(srcdir)/libgcc-darwin.ver
@


1.1.1.1
log
@Gcc 3.4.2 20040728.
@
text
@@


1.1.1.2
log
@Gcc 3.4.4 release.
@
text
@d15 1
a15 1
	-Wl,-flat_namespace -o $(SHLIB_NAME).tmp \
a18 4
	if [ -f $(SHLIB_NAME) ]; then \
	  mv -f $(SHLIB_NAME) $(SHLIB_NAME).backup; \
	else true; fi && \
	mv $(SHLIB_NAME).tmp $(SHLIB_NAME) && \
@


1.1.1.3
log
@GCC 4.2.0 release.
@
text
@d2 3
a4 2
SHLIB_SOVERSION = 1
SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0
d6 3
a8 4
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
d11 1
a11 2
SHLIB_DIR = @@multilib_dir@@
SHLIB_LC = -lc
a12 4
# 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).
d14 2
a15 3
	-Wl,-install_name,$(slibdir)/$(SHLIB_INSTALL_NAME) \
	-single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
	-Wl,-exported_symbols_list,$(SHLIB_MAP) \
d17 7
a23 2
	@@multilib_flags@@ $(SHLIB_OBJS) $(SHLIB_LC)

d27 8
a34 74
	$$(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
@


1.1.1.3.30.1
log
@file t-slibgcc-darwin was added on branch RELENG_8_4 on 2013-03-28 13:00:54 +0000
@
text
@d1 101
@


1.1.1.3.30.2
log
@## SVN ## Exported commit - http://svnweb.freebsd.org/changeset/base/248810
## SVN ## CVS IS DEPRECATED: http://wiki.freebsd.org/CvsIsDeprecated
@
text
@a0 101
# 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 \
	-Wl,-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
@


