Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 1 | |
| 2 | # |
| 3 | # Make rules to build compiler_rt in Apple B&I infrastructure |
| 4 | # |
| 5 | |
| 6 | # set ProjSrcRoot appropriately |
| 7 | ProjSrcRoot := $(SRCROOT) |
| 8 | # set ProjObjRoot appropriately |
| 9 | ifdef OBJROOT |
| 10 | ProjObjRoot := $(OBJROOT) |
| 11 | else |
| 12 | ProjObjRoot := $(ProjSrcRoot) |
| 13 | endif |
| 14 | |
Bob Wilson | f7e6f38 | 2013-11-03 07:06:29 +0000 | [diff] [blame] | 15 | ifeq (,$(RC_PURPLE)) |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 16 | INSTALL_TARGET = install-MacOSX |
| 17 | else |
Bob Wilson | f7e6f38 | 2013-11-03 07:06:29 +0000 | [diff] [blame] | 18 | ifeq (,$(RC_INDIGO)) |
| 19 | INSTALL_TARGET = install-iOS |
| 20 | else |
| 21 | INSTALL_TARGET = install-iOS-Simulator |
| 22 | endif |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 23 | endif |
| 24 | |
| 25 | |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 26 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame] | 27 | # Log full compile lines in B&I logs and omit summary lines. |
| 28 | Verb := |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 29 | Summary := @true |
| 30 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame] | 31 | # List of functions needed for each architecture. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 32 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame] | 33 | # Copies any public headers to DSTROOT. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 34 | installhdrs: |
| 35 | |
| 36 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame] | 37 | # Copies source code to SRCROOT. |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 38 | installsrc: |
Daniel Dunbar | 3c2a776 | 2010-01-18 06:49:42 +0000 | [diff] [blame] | 39 | cp -r . $(SRCROOT) |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 40 | |
| 41 | |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 42 | install: $(INSTALL_TARGET) |
| 43 | |
Daniel Dunbar | 557a6ea | 2010-01-13 16:13:01 +0000 | [diff] [blame] | 44 | # Copy results to DSTROOT. |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 45 | install-MacOSX : $(SYMROOT)/libcompiler_rt.dylib \ |
| 46 | $(SYMROOT)/libcompiler_rt-dyld.a |
| 47 | mkdir -p $(DSTROOT)/usr/local/lib/dyld |
| 48 | cp $(SYMROOT)/libcompiler_rt-dyld.a \ |
| 49 | $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a |
Nick Kledzik | 1f7ee1d | 2010-03-31 20:38:57 +0000 | [diff] [blame] | 50 | mkdir -p $(DSTROOT)/usr/lib/system |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 51 | $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \ |
Nick Kledzik | 1f7ee1d | 2010-03-31 20:38:57 +0000 | [diff] [blame] | 52 | -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib |
| 53 | cd $(DSTROOT)/usr/lib/system; \ |
| 54 | ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \ |
| 55 | ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 56 | |
Nick Kledzik | 1f7ee1d | 2010-03-31 20:38:57 +0000 | [diff] [blame] | 57 | # Rule to make each dylib slice |
| 58 | $(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a |
| 59 | echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 60 | $(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \ |
| 61 | $(OBJROOT)/version.c -arch $* -dynamiclib \ |
Nick Kledzik | 1f7ee1d | 2010-03-31 20:38:57 +0000 | [diff] [blame] | 62 | -install_name /usr/lib/system/libcompiler_rt.dylib \ |
| 63 | -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \ |
Nick Kledzik | ef3667a | 2013-03-05 00:16:52 +0000 | [diff] [blame] | 64 | -nodefaultlibs -umbrella System -dead_strip \ |
| 65 | -Wl,-upward-lunwind \ |
| 66 | -Wl,-upward-lsystem_m \ |
| 67 | -Wl,-upward-lsystem_c \ |
Bob Wilson | f7e6f38 | 2013-11-03 07:06:29 +0000 | [diff] [blame] | 68 | -Wl,-upward-lsystem_kernel \ |
Nick Kledzik | e04a1fd | 2013-05-21 23:02:04 +0000 | [diff] [blame] | 69 | -Wl,-upward-lsystem_platform \ |
Nick Kledzik | ef3667a | 2013-03-05 00:16:52 +0000 | [diff] [blame] | 70 | -Wl,-ldyld \ |
Nick Kledzik | ef3667a | 2013-03-05 00:16:52 +0000 | [diff] [blame] | 71 | -L$(SDKROOT)/usr/lib/system \ |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 72 | $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 73 | |
Nick Kledzik | 1f7ee1d | 2010-03-31 20:38:57 +0000 | [diff] [blame] | 74 | # Rule to make fat dylib |
Nick Kledzik | a11b52f | 2011-09-27 20:05:27 +0000 | [diff] [blame] | 75 | $(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(filter-out armv4t,$(RC_ARCHS)), \ |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 76 | $(OBJROOT)/libcompiler_rt-$(arch).dylib) |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 77 | $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ |
Nick Kledzik | c0973d6 | 2012-11-26 22:48:51 +0000 | [diff] [blame] | 78 | $(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@ |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 79 | |
| 80 | |
| 81 | # Copy results to DSTROOT. |
Nick Kledzik | 3d40740 | 2011-03-05 02:15:16 +0000 | [diff] [blame] | 82 | install-iOS: $(SYMROOT)/libcompiler_rt-static.a \ |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 83 | $(SYMROOT)/libcompiler_rt-dyld.a \ |
Nick Kledzik | 3d40740 | 2011-03-05 02:15:16 +0000 | [diff] [blame] | 84 | $(SYMROOT)/libcompiler_rt.dylib |
| 85 | mkdir -p $(DSTROOT)/usr/local/lib |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 86 | cp $(SYMROOT)/libcompiler_rt-static.a \ |
Nick Kledzik | dc0b559 | 2010-07-04 18:29:23 +0000 | [diff] [blame] | 87 | $(DSTROOT)/usr/local/lib/libcompiler_rt-static.a |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 88 | mkdir -p $(DSTROOT)/usr/local/lib/dyld |
| 89 | cp $(SYMROOT)/libcompiler_rt-dyld.a \ |
| 90 | $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a |
Nick Kledzik | 3d40740 | 2011-03-05 02:15:16 +0000 | [diff] [blame] | 91 | mkdir -p $(DSTROOT)/usr/lib/system |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 92 | $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \ |
Nick Kledzik | 3d40740 | 2011-03-05 02:15:16 +0000 | [diff] [blame] | 93 | -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 94 | |
Nick Kledzik | afb7b6e | 2010-04-21 22:46:53 +0000 | [diff] [blame] | 95 | # Rule to make fat archive |
| 96 | $(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \ |
| 97 | $(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a) |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 98 | $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ |
Daniel Dunbar | b3a6901 | 2009-06-26 16:47:03 +0000 | [diff] [blame] | 99 | |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 100 | # rule to make each archive slice for dyld (which removes a few archive members) |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 101 | $(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a |
| 102 | cp $^ $@ |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 103 | DEL_LIST=`$(AR) -t $@ | egrep 'apple_versioning|gcc_personality_v0|eprintf' | xargs echo` ; \ |
| 104 | if [ -n "$${DEL_LIST}" ] ; \ |
| 105 | then \ |
| 106 | $(call GetCNAVar,AR,Platform.darwin_bni,Release,) -d $@ $${DEL_LIST}; \ |
| 107 | $(call GetCNAVar,RANLIB,Platform.darwin_bni,Release,) $@ ; \ |
| 108 | fi |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 109 | |
| 110 | # rule to make make archive for dyld |
| 111 | $(SYMROOT)/libcompiler_rt-dyld.a : $(foreach arch,$(RC_ARCHS), \ |
| 112 | $(OBJROOT)/libcompiler_rt-dyld-$(arch).a) |
Nick Kledzik | 9435c40 | 2011-06-21 00:07:55 +0000 | [diff] [blame] | 113 | $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ |
Nick Kledzik | 7956ca9 | 2011-04-14 00:45:01 +0000 | [diff] [blame] | 114 | |
Bob Wilson | f7e6f38 | 2013-11-03 07:06:29 +0000 | [diff] [blame] | 115 | |
| 116 | |
| 117 | # Copy results to DSTROOT. |
| 118 | install-iOS-Simulator: $(SYMROOT)/libcompiler_rt_sim.dylib \ |
| 119 | $(SYMROOT)/libcompiler_rt-dyld.a |
| 120 | mkdir -p $(DSTROOT)/$(SDKROOT)/usr/lib/system |
| 121 | $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt_sim.dylib \ |
| 122 | -o $(DSTROOT)/$(SDKROOT)/usr/lib/system/libcompiler_rt_sim.dylib |
| 123 | mkdir -p $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld |
| 124 | cp $(SYMROOT)/libcompiler_rt-dyld.a \ |
| 125 | $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld/libcompiler_rt.a |
| 126 | |
| 127 | # Rule to make fat dylib |
| 128 | $(SYMROOT)/libcompiler_rt_sim.dylib: $(foreach arch,$(RC_ARCHS), \ |
| 129 | $(OBJROOT)/libcompiler_rt_sim-$(arch).dylib) |
| 130 | $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ |
| 131 | $(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@ |
| 132 | |
| 133 | # Rule to make each dylib slice |
| 134 | $(OBJROOT)/libcompiler_rt_sim-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a |
| 135 | echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c |
| 136 | $(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \ |
| 137 | $(OBJROOT)/version.c -arch $* -dynamiclib \ |
| 138 | -install_name /usr/lib/system/libcompiler_rt_sim.dylib \ |
| 139 | -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \ |
| 140 | -Wl,-unexported_symbol,___enable_execute_stack \ |
| 141 | -nostdlib \ |
| 142 | -Wl,-upward-lunwind_sim \ |
| 143 | -Wl,-upward-lsystem_sim_m \ |
| 144 | -Wl,-upward-lsystem_sim_c \ |
| 145 | -ldyld_sim \ |
| 146 | -Wl,-upward-lSystem \ |
| 147 | -umbrella System -Wl,-no_implicit_dylibs -L$(SDKROOT)/usr/lib/system -dead_strip \ |
| 148 | $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ |
| 149 | |