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
This commit is contained in:
Bob Wilson 2013-11-03 07:06:29 +00:00
parent d8d92d90fa
commit 64b4abd07b
3 changed files with 61 additions and 22 deletions

View File

@ -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,

View File

@ -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 $@

View File

@ -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),)