summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Wilson <bob.wilson@apple.com>2013-11-03 07:06:29 +0000
committerBob Wilson <bob.wilson@apple.com>2013-11-03 07:06:29 +0000
commitf7e6f383d9c661ccbcd986fc1478336f57f4ce7c (patch)
treebd4c752eb8b566a8cfbcf819651befd7896f6dc9
parente4f9f8a1296768a7a6b6646a3b241a379f4a5e15 (diff)
downloadcompiler-rt-f7e6f383d9c661ccbcd986fc1478336f57f4ce7c.tar.gz
compiler-rt-f7e6f383d9c661ccbcd986fc1478336f57f4ce7c.tar.bz2
compiler-rt-f7e6f383d9c661ccbcd986fc1478336f57f4ce7c.tar.xz
Push back various changes for building Apple's compiler-rt dylib.
These changes had accumulated internally at Apple for no good reason. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@193944 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/apple_versioning.c25
-rw-r--r--make/AppleBI.mk46
-rw-r--r--make/platform/darwin_bni.mk12
3 files changed, 61 insertions, 22 deletions
diff --git a/lib/apple_versioning.c b/lib/apple_versioning.c
index 09f149f1..3797a1ab 100644
--- a/lib/apple_versioning.c
+++ b/lib/apple_versioning.c
@@ -9,19 +9,20 @@
*/
-
#if __APPLE__
- #if __arm__
+ #include <Availability.h>
+
+ #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/make/AppleBI.mk b/make/AppleBI.mk
index d3d47713..b2361521 100644
--- a/make/AppleBI.mk
+++ b/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/make/platform/darwin_bni.mk b/make/platform/darwin_bni.mk
index afd04313..03e8d290 100644
--- a/make/platform/darwin_bni.mk
+++ b/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),)