Mercurial > hg > CbC > CbC_gcc
comparison libgcc/config/t-slibgcc-darwin @ 55:77e2b8dfacca gcc-4.4.5
update it from 4.4.3 to 4.5.0
author | ryoma <e075725@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 12 Feb 2010 23:39:51 +0900 |
parents | a06113de4d67 |
children | b7f97abdc517 |
comparison
equal
deleted
inserted
replaced
52:c156f1bd5cd9 | 55:77e2b8dfacca |
---|---|
1 # Build a shared libgcc library with the darwin linker. | 1 # Build a shared libgcc library with the darwin linker. |
2 SHLIB_SOVERSION = 1 | 2 SHLIB_SOVERSION = 1 |
3 SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0 | 3 SHLIB_VERSTRING = -compatibility_version $(SHLIB_SOVERSION) -current_version $(SHLIB_SOVERSION).0 |
4 SHLIB_EXT = .dylib | 4 SHLIB_EXT = .dylib |
5 SHLIB_SUFFIX = `if test @multilib_dir@ = ppc64 ; then echo _@multilib_dir@ ; fi` | 5 SHLIB_INSTALL_NAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT) |
6 SHLIB_INSTALL_NAME = @shlib_base_name@$(SHLIB_SUFFIX).$(SHLIB_SOVERSION)$(SHLIB_EXT) | 6 SHLIB_SONAME = @shlib_base_name@$(SHLIB_EXT) |
7 SHLIB_SONAME = @shlib_base_name@.$(SHLIB_SOVERSION)$(SHLIB_EXT) | |
8 SHLIB_SOLINK = @shlib_base_name@.so | 7 SHLIB_SOLINK = @shlib_base_name@.so |
9 SHLIB_MAP = @shlib_map_file@ | 8 SHLIB_MAP = @shlib_map_file@ |
10 SHLIB_OBJS = @shlib_objs@ | 9 SHLIB_OBJS = @shlib_objs@ |
11 SHLIB_DIR = @multilib_dir@ | 10 SHLIB_DIR = @multilib_dir@ |
12 SHLIB_LC = -lc | 11 SHLIB_LC = -lc |
13 | 12 |
14 # Darwin only searches in /usr/lib for shared libraries, not in subdirectories, | 13 # Darwin only searches in /usr/lib for shared libraries, not in subdirectories, |
15 # so the libgcc variants have different names not different locations. | 14 # so the libgcc variants have different names not different locations. |
16 # Note that this version is used for the loader, not the linker; the linker | 15 # Note that this version is used for the loader, not the linker; the linker |
17 # uses the stub versions named by the versioned members of $(INSTALL_FILES). | 16 # uses the stub versions named by the versioned members of $(INSTALL_FILES). |
17 | |
18 SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ | 18 SHLIB_LINK = $(CC) $(LIBGCC2_CFLAGS) -dynamiclib -nodefaultlibs \ |
19 -install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \ | 19 -install_name @shlib_slibdir@/$(SHLIB_INSTALL_NAME) \ |
20 -single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \ | 20 -single_module -o $(SHLIB_DIR)/$(SHLIB_SONAME) \ |
21 -Wl,-exported_symbols_list,$(SHLIB_MAP) \ | 21 -Wl,-exported_symbols_list,$(SHLIB_MAP) \ |
22 $(SHLIB_VERSTRING) \ | 22 $(SHLIB_VERSTRING) \ |
23 @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) | 23 @multilib_flags@ $(SHLIB_OBJS) $(SHLIB_LC) |
24 | 24 |
25 SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk | 25 SHLIB_MKMAP = $(gcc_srcdir)/mkmap-flat.awk |
26 SHLIB_MKMAP_OPTS = -v leading_underscore=1 | 26 SHLIB_MKMAP_OPTS = -v leading_underscore=1 |
27 SHLIB_MAPFILES += $(gcc_srcdir)/libgcc-std.ver | 27 SHLIB_MAPFILES += $(gcc_srcdir)/libgcc-std.ver |
28 | 28 |
29 INSTALL_FILES=libgcc_s.10.4.dylib libgcc_s.10.5.dylib libgcc_s.1.dylib | 29 # we're only going to build the stubs if the target slib is /usr/lib |
30 # there is no other case in which they're useful in a live system. | |
31 ifeq (/usr/lib,$(shlib_slibdir)) | |
32 LGCC_STUBS = libgcc_s.10.4.dylib libgcc_s.10.5.dylib | |
33 else | |
34 LGCC_STUBS = | |
35 endif | |
36 | |
37 LGCC_FILES = libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) | |
38 LGCC_FILES += $(LGCC_STUBS) | |
39 LEXT_STUBS = libgcc_ext.10.4$(SHLIB_EXT) libgcc_ext.10.5$(SHLIB_EXT) | |
40 LGCC_FILES += $(LEXT_STUBS) | |
41 INSTALL_FILES=$(LGCC_FILES) | |
42 | |
43 # we do our own thing | |
44 SHLIB_INSTALL = | |
30 | 45 |
31 # For the toplevel multilib, build a fat archive including all the multilibs. | 46 # For the toplevel multilib, build a fat archive including all the multilibs. |
32 ifeq ($(MULTIBUILDTOP),) | 47 ifeq ($(MULTIBUILDTOP),) |
33 | |
34 SHLIB_INSTALL = \ | |
35 $(mkinstalldirs) $(DESTDIR)$(slibdir); \ | |
36 $(INSTALL_DATA) $(SHLIB_SONAME) \ | |
37 $(DESTDIR)$(slibdir)/$(SHLIB_SONAME) | |
38 | 48 |
39 ifeq ($(enable_shared),yes) | 49 ifeq ($(enable_shared),yes) |
40 all: $(INSTALL_FILES) | 50 all: $(INSTALL_FILES) |
41 install-leaf: install-darwin-libgcc-stubs | 51 install-leaf: install-darwin-libgcc-stubs |
42 endif | 52 endif |
46 # each system version supported. They are 'stub' libraries that | 56 # each system version supported. They are 'stub' libraries that |
47 # contain no code, just a list of exported symbols. | 57 # contain no code, just a list of exported symbols. |
48 # The actual use of the libraries is controlled by REAL_LIBGCC_SPEC. | 58 # The actual use of the libraries is controlled by REAL_LIBGCC_SPEC. |
49 # | 59 # |
50 # This assumes each multilib corresponds to a different architecture. | 60 # This assumes each multilib corresponds to a different architecture. |
51 libgcc_s.%.dylib : $(SHLIB_VERPFX).%.ver libgcc_s$(SHLIB_EXT) all-multi | 61 libgcc_s.%.dylib : all-multi $(SHLIB_VERPFX).%.ver libgcc_s$(SHLIB_EXT) |
52 $(STRIP) -o $(@)_T \ | 62 MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \ |
53 -s $(SHLIB_VERPFX).$(*).ver -c -u \ | |
54 ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp | |
55 MLIBS=`$(CC) --print-multi-lib \ | |
56 | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ | |
57 for mlib in $$MLIBS ; do \ | 63 for mlib in $$MLIBS ; do \ |
58 $(STRIP) -o $(@)_T$${mlib} \ | 64 $(STRIP) -o $(@)_T$${mlib} \ |
59 -s $(SHLIB_VERPFX).$(*).ver -c -u \ | 65 -s $(SHLIB_VERPFX).$(*).ver -c -u \ |
60 ../$${mlib}/libgcc/$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp || exit 1 ; \ | 66 ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT) || exit 1 ; \ |
61 done | 67 done |
62 $(LIPO) -output $@ -create $(@)_T* | 68 $(LIPO) -output $@ -create $(@)_T* |
63 rm $(@)_T* | 69 rm $(@)_T* |
64 | 70 |
65 libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_s$(SHLIB_EXT) \ | 71 libgcc_ext.%.dylib : all-multi $(SHLIB_VERPFX).%.ver libgcc_s$(SHLIB_EXT) |
66 libgcc_s.10.4.dylib libgcc_s.10.5.dylib | 72 MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \ |
67 cp libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \ | |
68 ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_ || exit 1 ; \ | |
69 MLIBS=`$(CC) --print-multi-lib \ | |
70 | sed -e 's/;.*$$//' -e '/^\.$$/d'` ; \ | |
71 for mlib in $$MLIBS ; do \ | 73 for mlib in $$MLIBS ; do \ |
72 cp ../$${mlib}/libgcc/$${mlib}/libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT).tmp \ | 74 $(STRIP) -o $(@)_T$${mlib} \ |
75 -R $(SHLIB_VERPFX).$(*).ver -c -urx \ | |
76 ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT) || exit 1 ; \ | |
77 done | |
78 $(LIPO) -output $@ -create $(@)_T* | |
79 rm $(@)_T* | |
80 | |
81 libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT): all-multi libgcc_s$(SHLIB_EXT) | |
82 MLIBS=`$(CC) --print-multi-lib | sed -e 's/;.*$$//'` ; \ | |
83 for mlib in $$MLIBS ; do \ | |
84 cp ../$${mlib}/libgcc/$${mlib}/libgcc_s$(SHLIB_EXT) \ | |
73 ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \ | 85 ./libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T_$${mlib} || exit 1 ; \ |
74 done | 86 done |
75 $(LIPO) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \ | 87 $(LIPO) -output libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT) \ |
76 -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* | 88 -create libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* |
77 rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* | 89 rm libgcc_s.$(SHLIB_SOVERSION)$(SHLIB_EXT)_T* |
78 | 90 |
79 install-darwin-libgcc-stubs : $(INSTALL_FILES) | 91 install-darwin-libgcc-stubs : |
80 $(mkinstalldirs) $(DESTDIR)$(slibdir) | 92 $(mkinstalldirs) $(DESTDIR)$(slibdir) |
81 for d in $(INSTALL_FILES) ; do \ | 93 for d in $(INSTALL_FILES) ; do \ |
82 $(INSTALL_DATA) $$d $(DESTDIR)$(slibdir)/$$d || exit 1 ; \ | 94 $(INSTALL_DATA) $$d $(DESTDIR)$(slibdir)/$$d || exit 1 ; \ |
83 done | 95 done |
84 if [ -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib ]; then \ | 96 if [ -f $(DESTDIR)$(slibdir)/libgcc_s_ppc64.1.dylib ]; then \ |
96 | 108 |
97 # Do not install shared libraries for any other multilibs. Unless | 109 # Do not install shared libraries for any other multilibs. Unless |
98 # we're putting them in the gcc directory during a build, for | 110 # we're putting them in the gcc directory during a build, for |
99 # compatibility with the pre-top-level layout. In that case we | 111 # compatibility with the pre-top-level layout. In that case we |
100 # need symlinks. | 112 # need symlinks. |
101 SHLIB_INSTALL = | |
102 | 113 |
103 ifeq ($(enable_shared),yes) | 114 ifeq ($(enable_shared),yes) |
104 all: install-darwin-libgcc-links | 115 all: install-darwin-libgcc-links |
105 endif | 116 endif |
106 | 117 |