1b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
2b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#
3b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# Make rules to build compiler_rt in Apple B&I infrastructure
4b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar#
5b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
6b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# set ProjSrcRoot appropriately
7b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarProjSrcRoot := $(SRCROOT)
8b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar# set ProjObjRoot appropriately
9b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarifdef OBJROOT
10b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar  ProjObjRoot := $(OBJROOT)
11b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarelse
12b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar  ProjObjRoot := $(ProjSrcRoot)
13b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarendif
14b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
15f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilsonifeq (,$(RC_PURPLE))
16afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik	INSTALL_TARGET = install-MacOSX
17afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikelse
18f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson  ifeq (,$(RC_INDIGO))
19f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson    INSTALL_TARGET = install-iOS
20f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson  else
21f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson    INSTALL_TARGET = install-iOS-Simulator
22f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson  endif
23afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikendif
24afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
25afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
269435c40640a531a49e6b43850b431f20061f225cNick Kledzik
27557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Log full compile lines in B&I logs and omit summary lines.
28557a6eace292091d14419a334e8d62d9ec9e772bDaniel DunbarVerb :=
29b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarSummary := @true
30b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
31557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# List of functions needed for each architecture.
32b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
33557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copies any public headers to DSTROOT.
34b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinstallhdrs:
35b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
36b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
37557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copies source code to SRCROOT.
38b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinstallsrc:
393c2a776b59f0c349b7ba8ec716266e6691f9df6fDaniel Dunbar	cp -r . $(SRCROOT)
40b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
41b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
42afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikinstall:  $(INSTALL_TARGET)
43afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
44557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copy results to DSTROOT.
457956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzikinstall-MacOSX : $(SYMROOT)/libcompiler_rt.dylib \
467956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik                 $(SYMROOT)/libcompiler_rt-dyld.a 
477956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib/dyld
487956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-dyld.a  \
497956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik				    $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
501f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	mkdir -p $(DSTROOT)/usr/lib/system
519435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
521f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
531f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	cd $(DSTROOT)/usr/lib/system; \
541f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \
551f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib
561f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik
571f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik# Rule to make each dylib slice
581f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik$(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
591f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c
609435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \
619435c40640a531a49e6b43850b431f20061f225cNick Kledzik	   $(OBJROOT)/version.c -arch $* -dynamiclib \
621f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	   -install_name /usr/lib/system/libcompiler_rt.dylib \
631f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	   -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
64ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -nodefaultlibs -umbrella System -dead_strip \
65ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -Wl,-upward-lunwind \
66ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -Wl,-upward-lsystem_m \
67ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -Wl,-upward-lsystem_c \
68f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -Wl,-upward-lsystem_kernel \
69e04a1fdc5d173586408421144a0cd79d1767f918Nick Kledzik	   -Wl,-upward-lsystem_platform \
70ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -Wl,-ldyld \
71ef3667a97978c037684f604118a5b9eaf68ee231Nick Kledzik	   -L$(SDKROOT)/usr/lib/system \
729435c40640a531a49e6b43850b431f20061f225cNick Kledzik	   $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ 
731f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik
741f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik# Rule to make fat dylib
75a11b52f4527d2b3f0a9ac10c9aa7a67aa1ff8272Nick Kledzik$(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(filter-out armv4t,$(RC_ARCHS)), \
76afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik                                        $(OBJROOT)/libcompiler_rt-$(arch).dylib)
779435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
78c0973d683aca4dad4cefbb23bb0134f01f804016Nick Kledzik	$(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@
79afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
80afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
81afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik# Copy results to DSTROOT.
823d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzikinstall-iOS: $(SYMROOT)/libcompiler_rt-static.a \
837956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik             $(SYMROOT)/libcompiler_rt-dyld.a \
843d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik             $(SYMROOT)/libcompiler_rt.dylib
853d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib
86afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-static.a  \
87dc0b559909e05c7296de455393657b2b62eee11bNick Kledzik				    $(DSTROOT)/usr/local/lib/libcompiler_rt-static.a
887956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib/dyld
897956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-dyld.a  \
907956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik				    $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
913d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	mkdir -p $(DSTROOT)/usr/lib/system
929435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
933d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	    -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
94afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
95afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik# Rule to make fat archive
96afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik$(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \
97afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik                         $(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a)
989435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
99b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
1009435c40640a531a49e6b43850b431f20061f225cNick Kledzik# rule to make each archive slice for dyld (which removes a few archive members)
1017956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik$(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
1027956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $^ $@
1039435c40640a531a49e6b43850b431f20061f225cNick Kledzik	DEL_LIST=`$(AR)  -t $@ | egrep 'apple_versioning|gcc_personality_v0|eprintf' | xargs echo` ; \
1049435c40640a531a49e6b43850b431f20061f225cNick Kledzik	if [ -n "$${DEL_LIST}" ] ; \
1059435c40640a531a49e6b43850b431f20061f225cNick Kledzik	then  \
1069435c40640a531a49e6b43850b431f20061f225cNick Kledzik		$(call GetCNAVar,AR,Platform.darwin_bni,Release,) -d $@ $${DEL_LIST}; \
1079435c40640a531a49e6b43850b431f20061f225cNick Kledzik		$(call GetCNAVar,RANLIB,Platform.darwin_bni,Release,) $@ ; \
1089435c40640a531a49e6b43850b431f20061f225cNick Kledzik	fi
1097956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik
1107956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik# rule to make make archive for dyld
1117956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik$(SYMROOT)/libcompiler_rt-dyld.a : $(foreach arch,$(RC_ARCHS), \
1127956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik                         $(OBJROOT)/libcompiler_rt-dyld-$(arch).a)
1139435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
1147956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik
115f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson
116f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson
117f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson# Copy results to DSTROOT.
118f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilsoninstall-iOS-Simulator: $(SYMROOT)/libcompiler_rt_sim.dylib \
119f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson                       $(SYMROOT)/libcompiler_rt-dyld.a
120f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	mkdir -p $(DSTROOT)/$(SDKROOT)/usr/lib/system
121f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	$(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt_sim.dylib \
122f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	    -o $(DSTROOT)/$(SDKROOT)/usr/lib/system/libcompiler_rt_sim.dylib
123f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	mkdir -p $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld
124f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	cp $(SYMROOT)/libcompiler_rt-dyld.a  \
125f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson				    $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld/libcompiler_rt.a
126f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson  
127f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson# Rule to make fat dylib
128f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson$(SYMROOT)/libcompiler_rt_sim.dylib: $(foreach arch,$(RC_ARCHS), \
129f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson                                        $(OBJROOT)/libcompiler_rt_sim-$(arch).dylib)
130f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
131f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	$(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@
132f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson
133f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson# Rule to make each dylib slice
134f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson$(OBJROOT)/libcompiler_rt_sim-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
135f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c
136f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	$(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \
137f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   $(OBJROOT)/version.c -arch $* -dynamiclib \
138f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -install_name /usr/lib/system/libcompiler_rt_sim.dylib \
139f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
140f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson     -Wl,-unexported_symbol,___enable_execute_stack \
141f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -nostdlib \
142f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -Wl,-upward-lunwind_sim \
143f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -Wl,-upward-lsystem_sim_m \
144f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -Wl,-upward-lsystem_sim_c \
145f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -ldyld_sim \
146f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -Wl,-upward-lSystem \
147f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   -umbrella System -Wl,-no_implicit_dylibs -L$(SDKROOT)/usr/lib/system -dead_strip \
148f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson	   $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ 
149f7e6f383d9c661ccbcd986fc1478336f57f4ce7cBob Wilson
150