From 64b4abd07bf06544612a6482d9f77c2e927d98e2 Mon Sep 17 00:00:00 2001 From: Bob Wilson Date: Sun, 3 Nov 2013 07:06:29 +0000 Subject: [PATCH] Push back various changes for building Apple's compiler-rt dylib. These changes had accumulated internally at Apple for no good reason. llvm-svn: 193944 --- compiler-rt/lib/apple_versioning.c | 25 +++++++------- compiler-rt/make/AppleBI.mk | 46 ++++++++++++++++++++++--- compiler-rt/make/platform/darwin_bni.mk | 12 +++---- 3 files changed, 61 insertions(+), 22 deletions(-) diff --git a/compiler-rt/lib/apple_versioning.c b/compiler-rt/lib/apple_versioning.c index 09f149f14cf7..3797a1ab02da 100644 --- a/compiler-rt/lib/apple_versioning.c +++ b/compiler-rt/lib/apple_versioning.c @@ -9,19 +9,20 @@ */ - #if __APPLE__ - #if __arm__ + #include + + #if __IPHONE_OS_VERSION_MIN_REQUIRED #define NOT_HERE_BEFORE_10_6(sym) - #define NOT_HERE_IN_10_8_AND_EARLIER(sym) - #elif __ppc__ - #define NOT_HERE_BEFORE_10_6(sym) \ - extern const char sym##_tmp3 __asm("$ld$hide$os10.3$_" #sym ); \ - __attribute__((visibility("default"))) const char sym##_tmp3 = 0; \ - extern const char sym##_tmp4 __asm("$ld$hide$os10.4$_" #sym ); \ - __attribute__((visibility("default"))) const char sym##_tmp4 = 0; \ - extern const char sym##_tmp5 __asm("$ld$hide$os10.5$_" #sym ); \ - __attribute__((visibility("default"))) const char sym##_tmp5 = 0; + #define NOT_HERE_IN_10_8_AND_EARLIER(sym) \ + extern const char sym##_tmp61 __asm("$ld$hide$os6.1$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp61 = 0; \ + extern const char sym##_tmp60 __asm("$ld$hide$os6.0$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp60 = 0; \ + extern const char sym##_tmp51 __asm("$ld$hide$os5.1$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp51 = 0; \ + extern const char sym##_tmp50 __asm("$ld$hide$os5.0$_" #sym ); \ + __attribute__((visibility("default"))) const char sym##_tmp50 = 0; #else #define NOT_HERE_BEFORE_10_6(sym) \ extern const char sym##_tmp4 __asm("$ld$hide$os10.4$_" #sym ); \ @@ -35,7 +36,7 @@ __attribute__((visibility("default"))) const char sym##_tmp7 = 0; \ extern const char sym##_tmp6 __asm("$ld$hide$os10.6$_" #sym ); \ __attribute__((visibility("default"))) const char sym##_tmp6 = 0; - #endif /* __ppc__ */ + #endif /* Symbols in libSystem.dylib in 10.6 and later, diff --git a/compiler-rt/make/AppleBI.mk b/compiler-rt/make/AppleBI.mk index d3d4771309c4..b236152158ff 100644 --- a/compiler-rt/make/AppleBI.mk +++ b/compiler-rt/make/AppleBI.mk @@ -12,10 +12,14 @@ else ProjObjRoot := $(ProjSrcRoot) endif -ifeq (,$(SDKROOT)) +ifeq (,$(RC_PURPLE)) INSTALL_TARGET = install-MacOSX else - INSTALL_TARGET = install-iOS + ifeq (,$(RC_INDIGO)) + INSTALL_TARGET = install-iOS + else + INSTALL_TARGET = install-iOS-Simulator + endif endif @@ -61,9 +65,9 @@ $(OBJROOT)/libcompiler_rt-%.dylib : $(OBJROOT)/darwin_bni/Release/%/libcompiler_ -Wl,-upward-lunwind \ -Wl,-upward-lsystem_m \ -Wl,-upward-lsystem_c \ + -Wl,-upward-lsystem_kernel \ -Wl,-upward-lsystem_platform \ -Wl,-ldyld \ - -Wl,-lsystem_kernel \ -L$(SDKROOT)/usr/lib/system \ $(DYLIB_FLAGS) -Wl,-force_load,$^ -o $@ @@ -88,7 +92,6 @@ install-iOS: $(SYMROOT)/libcompiler_rt-static.a \ $(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) @@ -109,3 +112,38 @@ $(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 $@ + diff --git a/compiler-rt/make/platform/darwin_bni.mk b/compiler-rt/make/platform/darwin_bni.mk index afd04313e62d..03e8d290cffe 100644 --- a/compiler-rt/make/platform/darwin_bni.mk +++ b/compiler-rt/make/platform/darwin_bni.mk @@ -9,12 +9,12 @@ Configs := Debug Release Profile Static UniversalArchs := $(RC_ARCHS) ifneq (,$(SDKROOT)) - override CC := $(shell xcrun -sdk $(SDKROOT) -find clang) - AR := $(shell xcrun -sdk $(SDKROOT) -find ar) - RANLIB := $(shell xcrun -sdk $(SDKROOT) -find ranlib) - STRIP := $(shell xcrun -sdk $(SDKROOT) -find strip) - LIPO := $(shell xcrun -sdk $(SDKROOT) -find lipo) - DSYMUTIL := $(shell xcrun -sdk $(SDKROOT) -find dsymutil) + override CC := $(shell xcrun -sdk $(SDKROOT) -find clang || echo "false") + AR := $(shell xcrun -sdk $(SDKROOT) -find ar || echo "false") + RANLIB := $(shell xcrun -sdk $(SDKROOT) -find ranlib || echo "false") + STRIP := $(shell xcrun -sdk $(SDKROOT) -find strip || echo "false") + LIPO := $(shell xcrun -sdk $(SDKROOT) -find lipo || echo "false") + DSYMUTIL := $(shell xcrun -sdk $(SDKROOT) -find dsymutil || echo "false") endif ifneq ($(IPHONEOS_DEPLOYMENT_TARGET),)