blob: b236152158ff4e213b9f9eb577c54aeee75cdcf2 [file] [log] [blame]
Daniel Dunbarb3a69012009-06-26 16:47:03 +00001
2#
3# Make rules to build compiler_rt in Apple B&I infrastructure
4#
5
6# set ProjSrcRoot appropriately
7ProjSrcRoot := $(SRCROOT)
8# set ProjObjRoot appropriately
9ifdef OBJROOT
10 ProjObjRoot := $(OBJROOT)
11else
12 ProjObjRoot := $(ProjSrcRoot)
13endif
14
Bob Wilsonf7e6f382013-11-03 07:06:29 +000015ifeq (,$(RC_PURPLE))
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000016 INSTALL_TARGET = install-MacOSX
17else
Bob Wilsonf7e6f382013-11-03 07:06:29 +000018 ifeq (,$(RC_INDIGO))
19 INSTALL_TARGET = install-iOS
20 else
21 INSTALL_TARGET = install-iOS-Simulator
22 endif
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000023endif
24
25
Nick Kledzik9435c402011-06-21 00:07:55 +000026
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000027# Log full compile lines in B&I logs and omit summary lines.
28Verb :=
Daniel Dunbarb3a69012009-06-26 16:47:03 +000029Summary := @true
30
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000031# List of functions needed for each architecture.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000032
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000033# Copies any public headers to DSTROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000034installhdrs:
35
36
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000037# Copies source code to SRCROOT.
Daniel Dunbarb3a69012009-06-26 16:47:03 +000038installsrc:
Daniel Dunbar3c2a7762010-01-18 06:49:42 +000039 cp -r . $(SRCROOT)
Daniel Dunbarb3a69012009-06-26 16:47:03 +000040
41
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000042install: $(INSTALL_TARGET)
43
Daniel Dunbar557a6ea2010-01-13 16:13:01 +000044# Copy results to DSTROOT.
Nick Kledzik7956ca92011-04-14 00:45:01 +000045install-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 Kledzik1f7ee1d2010-03-31 20:38:57 +000050 mkdir -p $(DSTROOT)/usr/lib/system
Nick Kledzik9435c402011-06-21 00:07:55 +000051 $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000052 -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 Dunbarb3a69012009-06-26 16:47:03 +000056
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000057# 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 Kledzik9435c402011-06-21 00:07:55 +000060 $(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \
61 $(OBJROOT)/version.c -arch $* -dynamiclib \
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000062 -install_name /usr/lib/system/libcompiler_rt.dylib \
63 -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
Nick Kledzikef3667a2013-03-05 00:16:52 +000064 -nodefaultlibs -umbrella System -dead_strip \
65 -Wl,-upward-lunwind \
66 -Wl,-upward-lsystem_m \
67 -Wl,-upward-lsystem_c \
Bob Wilsonf7e6f382013-11-03 07:06:29 +000068 -Wl,-upward-lsystem_kernel \
Nick Kledzike04a1fd2013-05-21 23:02:04 +000069 -Wl,-upward-lsystem_platform \
Nick Kledzikef3667a2013-03-05 00:16:52 +000070 -Wl,-ldyld \
Nick Kledzikef3667a2013-03-05 00:16:52 +000071 -L$(SDKROOT)/usr/lib/system \
Nick Kledzik9435c402011-06-21 00:07:55 +000072 $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000073
Nick Kledzik1f7ee1d2010-03-31 20:38:57 +000074# Rule to make fat dylib
Nick Kledzika11b52f2011-09-27 20:05:27 +000075$(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(filter-out armv4t,$(RC_ARCHS)), \
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000076 $(OBJROOT)/libcompiler_rt-$(arch).dylib)
Nick Kledzik9435c402011-06-21 00:07:55 +000077 $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@
Nick Kledzikc0973d62012-11-26 22:48:51 +000078 $(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000079
80
81# Copy results to DSTROOT.
Nick Kledzik3d407402011-03-05 02:15:16 +000082install-iOS: $(SYMROOT)/libcompiler_rt-static.a \
Nick Kledzik7956ca92011-04-14 00:45:01 +000083 $(SYMROOT)/libcompiler_rt-dyld.a \
Nick Kledzik3d407402011-03-05 02:15:16 +000084 $(SYMROOT)/libcompiler_rt.dylib
85 mkdir -p $(DSTROOT)/usr/local/lib
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000086 cp $(SYMROOT)/libcompiler_rt-static.a \
Nick Kledzikdc0b5592010-07-04 18:29:23 +000087 $(DSTROOT)/usr/local/lib/libcompiler_rt-static.a
Nick Kledzik7956ca92011-04-14 00:45:01 +000088 mkdir -p $(DSTROOT)/usr/local/lib/dyld
89 cp $(SYMROOT)/libcompiler_rt-dyld.a \
90 $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
Nick Kledzik3d407402011-03-05 02:15:16 +000091 mkdir -p $(DSTROOT)/usr/lib/system
Nick Kledzik9435c402011-06-21 00:07:55 +000092 $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
Nick Kledzik3d407402011-03-05 02:15:16 +000093 -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000094
Nick Kledzikafb7b6e2010-04-21 22:46:53 +000095# 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 Kledzik9435c402011-06-21 00:07:55 +000098 $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@
Daniel Dunbarb3a69012009-06-26 16:47:03 +000099
Nick Kledzik9435c402011-06-21 00:07:55 +0000100# rule to make each archive slice for dyld (which removes a few archive members)
Nick Kledzik7956ca92011-04-14 00:45:01 +0000101$(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
102 cp $^ $@
Nick Kledzik9435c402011-06-21 00:07:55 +0000103 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 Kledzik7956ca92011-04-14 00:45:01 +0000109
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 Kledzik9435c402011-06-21 00:07:55 +0000113 $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@
Nick Kledzik7956ca92011-04-14 00:45:01 +0000114
Bob Wilsonf7e6f382013-11-03 07:06:29 +0000115
116
117# Copy results to DSTROOT.
118install-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