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