# # Make rules to build compiler_rt in Apple B&I infrastructure # # set ProjSrcRoot appropriately ProjSrcRoot := $(SRCROOT) # set ProjObjRoot appropriately ifdef OBJROOT ProjObjRoot := $(OBJROOT) else ProjObjRoot := $(ProjSrcRoot) endif ifeq (,$(RC_PURPLE)) INSTALL_TARGET = install-MacOSX else ifeq (,$(RC_INDIGO)) INSTALL_TARGET = install-iOS else INSTALL_TARGET = install-iOS-Simulator endif endif # Log full compile lines in B&I logs and omit summary lines. Verb := Summary := @true # List of functions needed for each architecture. # Copies any public headers to DSTROOT. installhdrs: # Copies source code to SRCROOT. installsrc: cp -r . $(SRCROOT) install: $(INSTALL_TARGET) # Copy results to DSTROOT. install-MacOSX : $(SYMROOT)/libcompiler_rt.dylib \ $(SYMROOT)/libcompiler_rt-dyld.a mkdir -p $(DSTROOT)/usr/local/lib/dyld cp $(SYMROOT)/libcompiler_rt-dyld.a \ $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a mkdir -p $(DSTROOT)/usr/lib/system $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \ -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib cd $(DSTROOT)/usr/lib/system; \ ln -s libcompiler_rt.dylib libcompiler_rt_profile.dylib; \ ln -s libcompiler_rt.dylib libcompiler_rt_debug.dylib # Rule to make each dylib slice $(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c $(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \ $(OBJROOT)/version.c -arch $* -dynamiclib \ -install_name /usr/lib/system/libcompiler_rt.dylib \ -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \ -nodefaultlibs -umbrella System -dead_strip \ -Wl,-upward-lunwind \ -Wl,-upward-lsystem_m \ -Wl,-upward-lsystem_c \ -Wl,-upward-lsystem_kernel \ -Wl,-upward-lsystem_platform \ -Wl,-ldyld \ -L$(SDKROOT)/usr/lib/system \ $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ # Rule to make fat dylib $(SYMROOT)/libcompiler_rt.dylib: $(foreach arch,$(filter-out armv4t,$(RC_ARCHS)), \ $(OBJROOT)/libcompiler_rt-$(arch).dylib) $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ $(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@ # Copy results to DSTROOT. install-iOS: $(SYMROOT)/libcompiler_rt-static.a \ $(SYMROOT)/libcompiler_rt-dyld.a \ $(SYMROOT)/libcompiler_rt.dylib mkdir -p $(DSTROOT)/usr/local/lib cp $(SYMROOT)/libcompiler_rt-static.a \ $(DSTROOT)/usr/local/lib/libcompiler_rt-static.a mkdir -p $(DSTROOT)/usr/local/lib/dyld cp $(SYMROOT)/libcompiler_rt-dyld.a \ $(DSTROOT)/usr/local/lib/dyld/libcompiler_rt.a mkdir -p $(DSTROOT)/usr/lib/system $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt.dylib \ -o $(DSTROOT)/usr/lib/system/libcompiler_rt.dylib # Rule to make fat archive $(SYMROOT)/libcompiler_rt-static.a : $(foreach arch,$(RC_ARCHS), \ $(OBJROOT)/darwin_bni/Static/$(arch)/libcompiler_rt.a) $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ # rule to make each archive slice for dyld (which removes a few archive members) $(OBJROOT)/libcompiler_rt-dyld-%.a : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a cp $^ $@ DEL_LIST=`$(AR) -t $@ | egrep 'apple_versioning|gcc_personality_v0|eprintf' | xargs echo` ; \ if [ -n "$${DEL_LIST}" ] ; \ then \ $(call GetCNAVar,AR,Platform.darwin_bni,Release,) -d $@ $${DEL_LIST}; \ $(call GetCNAVar,RANLIB,Platform.darwin_bni,Release,) $@ ; \ fi # rule to make make archive for dyld $(SYMROOT)/libcompiler_rt-dyld.a : $(foreach arch,$(RC_ARCHS), \ $(OBJROOT)/libcompiler_rt-dyld-$(arch).a) $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ # Copy results to DSTROOT. install-iOS-Simulator: $(SYMROOT)/libcompiler_rt_sim.dylib \ $(SYMROOT)/libcompiler_rt-dyld.a mkdir -p $(DSTROOT)/$(SDKROOT)/usr/lib/system $(call GetCNAVar,STRIP,Platform.darwin_bni,Release,) -S $(SYMROOT)/libcompiler_rt_sim.dylib \ -o $(DSTROOT)/$(SDKROOT)/usr/lib/system/libcompiler_rt_sim.dylib mkdir -p $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld cp $(SYMROOT)/libcompiler_rt-dyld.a \ $(DSTROOT)/$(SDKROOT)/usr/local/lib/dyld/libcompiler_rt.a # Rule to make fat dylib $(SYMROOT)/libcompiler_rt_sim.dylib: $(foreach arch,$(RC_ARCHS), \ $(OBJROOT)/libcompiler_rt_sim-$(arch).dylib) $(call GetCNAVar,LIPO,Platform.darwin_bni,Release,) -create $^ -o $@ $(call GetCNAVar,DSYMUTIL,Platform.darwin_bni,Release,) $@ # Rule to make each dylib slice $(OBJROOT)/libcompiler_rt_sim-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_rt.a echo "const char vers[] = \"@(#) $(RC_ProjectName)-$(RC_ProjectSourceVersion)\"; " > $(OBJROOT)/version.c $(call GetCNAVar,CC,Platform.darwin_bni,Release,$*) \ $(OBJROOT)/version.c -arch $* -dynamiclib \ -install_name /usr/lib/system/libcompiler_rt_sim.dylib \ -compatibility_version 1 -current_version $(RC_ProjectSourceVersion) \ -Wl,-unexported_symbol,___enable_execute_stack \ -nostdlib \ -Wl,-upward-lunwind_sim \ -Wl,-upward-lsystem_sim_m \ -Wl,-upward-lsystem_sim_c \ -ldyld_sim \ -Wl,-upward-lSystem \ -umbrella System -Wl,-no_implicit_dylibs -L$(SDKROOT)/usr/lib/system -dead_strip \ $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@