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
15afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikifeq (,$(SDKROOT))
16afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik	INSTALL_TARGET = install-MacOSX
17afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikelse
18dc0b559909e05c7296de455393657b2b62eee11bNick Kledzik	INSTALL_TARGET = install-iOS
19afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikendif
20afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
21afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
229435c40640a531a49e6b43850b431f20061f225cNick Kledzik
23557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Log full compile lines in B&I logs and omit summary lines.
24557a6eace292091d14419a334e8d62d9ec9e772bDaniel DunbarVerb :=
25b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel DunbarSummary := @true
26b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
27557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# List of functions needed for each architecture.
28b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
29557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copies any public headers to DSTROOT.
30b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinstallhdrs:
31b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
32b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
33557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copies source code to SRCROOT.
34b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarinstallsrc:
353c2a776b59f0c349b7ba8ec716266e6691f9df6fDaniel Dunbar	cp -r . $(SRCROOT)
36b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
37b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
38afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzikinstall:  $(INSTALL_TARGET)
39afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
40557a6eace292091d14419a334e8d62d9ec9e772bDaniel Dunbar# Copy results to DSTROOT.
417956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzikinstall-MacOSX : $(SYMROOT)/libcompiler_rt.dylib \
427956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik                 $(SYMROOT)/libcompiler_rt-dyld.a 
437956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib/dyld
447956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-dyld.a  \
457956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik				    $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
461f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	mkdir -p $(DSTROOT)/usr/lib/system
479435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
481f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
491f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	cd $(DSTROOT)/usr/lib/system; \
501f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \
511f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	    ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib
521f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik
531f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik# Rule to make each dylib slice
541f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik$(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
551f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c
569435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \
579435c40640a531a49e6b43850b431f20061f225cNick Kledzik	   $(OBJROOT)/version.c -arch $* -dynamiclib \
581f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	   -install_name /usr/lib/system/libcompiler_rt.dylib \
591f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	   -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \
601f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik	   -nodefaultlibs -lSystem -umbrella System -dead_strip \
619435c40640a531a49e6b43850b431f20061f225cNick Kledzik	   $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ 
621f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik
631f7ee1d663fc2c0f8760e5b78b1e5212b639964dNick Kledzik# Rule to make fat dylib
64a11b52f4527d2b3f0a9ac10c9aa7a67aa1ff8272Nick Kledzik$(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(filter-out armv4t,$(RC_ARCHS)), \
65afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik                                        $(OBJROOT)/libcompiler_rt-$(arch).dylib)
669435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
67afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
68afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
69afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
70afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
71afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik# Copy results to DSTROOT.
723d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzikinstall-iOS: $(SYMROOT)/libcompiler_rt-static.a \
737956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik             $(SYMROOT)/libcompiler_rt-dyld.a \
743d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik             $(SYMROOT)/libcompiler_rt.dylib
753d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib
76afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-static.a  \
77dc0b559909e05c7296de455393657b2b62eee11bNick Kledzik				    $(DSTROOT)/usr/local/lib/libcompiler_rt-static.a
787956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	mkdir -p $(DSTROOT)/usr/local/lib/dyld
797956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $(SYMROOT)/libcompiler_rt-dyld.a  \
807956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik				    $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a
813d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	mkdir -p $(DSTROOT)/usr/lib/system
829435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \
833d40740383d6b80ab071b0f645b80f533c9bd55dNick Kledzik	    -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib
84afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik
85afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik	
86afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik# Rule to make fat archive
87afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik$(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \
88afb7b6e421785106a7e13e13c2a5320e3f1d9bd3Nick Kledzik                         $(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a)
899435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
90b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbar
919435c40640a531a49e6b43850b431f20061f225cNick Kledzik# rule to make each archive slice for dyld (which removes a few archive members)
927956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik$(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a
937956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik	cp $^ $@
949435c40640a531a49e6b43850b431f20061f225cNick Kledzik	DEL_LIST=`$(AR)  -t $@ | egrep 'apple_versioning|gcc_personality_v0|eprintf' | xargs echo` ; \
959435c40640a531a49e6b43850b431f20061f225cNick Kledzik	if [ -n "$${DEL_LIST}" ] ; \
969435c40640a531a49e6b43850b431f20061f225cNick Kledzik	then  \
979435c40640a531a49e6b43850b431f20061f225cNick Kledzik		$(call GetCNAVar,AR,Platform.darwin_bni,Release,) -d $@ $${DEL_LIST}; \
989435c40640a531a49e6b43850b431f20061f225cNick Kledzik		$(call GetCNAVar,RANLIB,Platform.darwin_bni,Release,) $@ ; \
999435c40640a531a49e6b43850b431f20061f225cNick Kledzik	fi
1007956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik
1017956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik# rule to make make archive for dyld
1027956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik$(SYMROOT)/libcompiler_rt-dyld.a : $(foreach arch,$(RC_ARCHS), \
1037956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik                         $(OBJROOT)/libcompiler_rt-dyld-$(arch).a)
1049435c40640a531a49e6b43850b431f20061f225cNick Kledzik	$(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o  $@
1057956ca95b55c421c99cc97932ad8f4dc5eb0e377Nick Kledzik
106