summaryrefslogtreecommitdiff
path: root/make/platform/clang_darwin.mk
diff options
context:
space:
mode:
Diffstat (limited to 'make/platform/clang_darwin.mk')
-rw-r--r--make/platform/clang_darwin.mk468
1 files changed, 0 insertions, 468 deletions
diff --git a/make/platform/clang_darwin.mk b/make/platform/clang_darwin.mk
deleted file mode 100644
index ccbee8bf7adcf..0000000000000
--- a/make/platform/clang_darwin.mk
+++ /dev/null
@@ -1,468 +0,0 @@
-# These are the functions which clang needs when it is targeting a previous
-# version of the OS. The issue is that the backend may use functions which were
-# not present in the libgcc that shipped on the platform. In such cases, we link
-# with a version of the library which contains private_extern definitions of all
-# the extra functions which might be referenced.
-
-Description := Static runtime libraries for clang/Darwin.
-
-# A function that ensures we don't try to build for architectures and SDKs
-# that we don't have working toolchains for. Arguments:
-# (1): List of architectures
-# (2): Library name
-# (3): SDK path
-# The result is a possibly empty subset of the architectures from argument 1.
-CheckArches = \
- $(shell \
- result=""; \
- if [ "X$(3)" != X ]; then \
- for arch in $(1); do \
- if $(LD) -v 2>&1 | grep "configured to support" \
- | tr ' ' '\n' | grep "^$$arch$$" >/dev/null 2>/dev/null; then \
- if $(CC) -arch $$arch \
- -integrated-as \
- $(ProjSrcRoot)/make/platform/clang_darwin_test_input.c \
- -isysroot $(3) \
- -o /dev/null > /dev/null 2> /dev/null; then \
- result="$$result$$arch "; \
- else \
- printf 1>&2 \
- "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'"; \
- printf 1>&2 " (clang or system libraries do not support it)\n"; \
- fi; \
- else \
- printf 1>&2 \
- "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'";\
- printf 1>&2 " (ld does not support it)\n"; \
- fi; \
- done; \
- fi; \
- echo $$result)
-
-XCRun = \
- $(shell \
- result=`xcrun -find $(1) 2> /dev/null`; \
- if [ "$$?" != "0" ]; then result=$(1); fi; \
- echo $$result)
-# Prefer building with the internal SDKs.
-XCRunSdkPath = \
- $(shell \
- result=`xcrun --sdk $(1).internal --show-sdk-path 2> /dev/null`; \
- if [ "$$?" != "0" ]; then \
- result=`xcrun --sdk $(1) --show-sdk-path 2> /dev/null`; \
- if [ "$$?" != "0" ]; then result=""; fi; \
- fi; \
- echo $$result)
-###
-
-CC := $(call XCRun,clang)
-LD := $(shell $(CC) -print-prog-name=ld)
-AR := $(call XCRun,ar)
-RANLIB := $(call XCRun,ranlib)
-STRIP := $(call XCRun,strip)
-LIPO := $(call XCRun,lipo)
-DSYMUTIL := $(call XCRun,dsymutil)
-
-OSX_SDK := $(call XCRunSdkPath,macosx)
-IOS_SDK := $(call XCRunSdkPath,iphoneos)
-IOSSIM_SDK := $(call XCRunSdkPath,iphonesimulator)
-
-Configs :=
-UniversalArchs :=
-
-# Configuration solely for providing access to an eprintf symbol, which may
-# still be referenced from Darwin system headers. This symbol is only ever
-# needed on i386.
-Configs += eprintf
-UniversalArchs.eprintf := $(call CheckArches,i386,eprintf,$(OSX_SDK))
-
-# Configuration for targeting 10.4. We need a few functions missing from
-# libgcc_s.10.4.dylib. We only build x86 slices since clang doesn't really
-# support targeting PowerPC.
-Configs += 10.4
-UniversalArchs.10.4 := $(call CheckArches,i386 x86_64,10.4,$(OSX_SDK))
-
-# Configuration for targeting iOS for a couple of functions that didn't
-# make it into libSystem.
-Configs += ios
-UniversalArchs.ios := $(call CheckArches,i386 x86_64,ios,$(IOSSIM_SDK))
-UniversalArchs.ios += $(call CheckArches,armv7 arm64,ios,$(IOS_SDK))
-
-# Configuration for targeting OSX. These functions may not be in libSystem
-# so we should provide our own.
-Configs += osx
-UniversalArchs.osx := $(call CheckArches,i386 x86_64 x86_64h,osx,$(OSX_SDK))
-
-# Configuration for use with kernel/kexts.
-Configs += cc_kext
-UniversalArchs.cc_kext := $(call CheckArches,i386 x86_64 x86_64h,cc_kext,$(OSX_SDK))
-
-# Configuration for use with iOS kernel/kexts
-Configs += cc_kext_ios
-UniversalArchs.cc_kext_ios += $(call CheckArches,armv7,cc_kext_ios,$(IOS_SDK))
-
-# Darwin 10.6 has a bug in cctools that makes it unable to use ranlib on our ARM
-# object files. If we are on that platform, strip out all ARM archs. We still
-# build the libraries themselves so that Clang can find them where it expects
-# them, even though they might not have an expected slice.
-ifneq ($(shell test -x /usr/bin/sw_vers && sw_vers -productVersion | grep 10.6),)
-UniversalArchs.ios := $(filter-out armv7, $(UniversalArchs.ios))
-UniversalArchs.cc_kext_ios := $(filter-out armv7, $(UniversalArchs.cc_kext_ios))
-endif
-
-# If RC_SUPPORTED_ARCHS is defined, treat it as a list of the architectures we
-# are intended to support and limit what we try to build to that.
-ifneq ($(RC_SUPPORTED_ARCHS),)
-$(foreach config,$(Configs),\
- $(call Set,UniversalArchs.$(config),\
- $(filter $(RC_SUPPORTED_ARCHS),$(UniversalArchs.$(config)))))
-endif
-
-# Remove empty configs if we end up dropping all the requested
-# archs for a particular config.
-$(foreach config,$(Configs),\
- $(if $(strip $(UniversalArchs.$(config))),,\
- $(call Set,Configs,$(filter-out $(config),$(Configs)))))
-
-###
-
-# Forcibly strip off any -arch, as that totally breaks our universal support.
-override CC := $(subst -arch ,-arch_,$(CC))
-override CC := $(patsubst -arch_%,,$(CC))
-
-CFLAGS := -Wall -Werror -O3 -fomit-frame-pointer
-
-# Always set deployment target arguments for every build, these libraries should
-# never depend on the environmental overrides. We simply set them to minimum
-# supported deployment target -- nothing in the compiler-rt libraries should
-# actually depend on the deployment target.
-OSX_DEPLOYMENT_ARGS := -mmacosx-version-min=10.4
-IOS_DEPLOYMENT_ARGS := -mios-version-min=1.0
-IOS6_DEPLOYMENT_ARGS := -mios-version-min=6.0
-IOSSIM_DEPLOYMENT_ARGS := -mios-simulator-version-min=1.0
-
-OSX_DEPLOYMENT_ARGS += -isysroot $(OSX_SDK)
-IOS_DEPLOYMENT_ARGS += -isysroot $(IOS_SDK)
-IOS6_DEPLOYMENT_ARGS += -isysroot $(IOS_SDK)
-IOSSIM_DEPLOYMENT_ARGS += -isysroot $(IOSSIM_SDK)
-
-CFLAGS.eprintf := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.10.4 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-
-SANITIZER_MACOSX_DEPLOYMENT_ARGS := -mmacosx-version-min=10.7
-SANITIZER_IOSSIM_DEPLOYMENT_ARGS := -mios-simulator-version-min=7.0 \
- -isysroot $(IOSSIM_SDK)
-SANITIZER_CFLAGS := -fno-builtin -gline-tables-only -stdlib=libc++
-
-
-CFLAGS.ios.i386 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
-CFLAGS.ios.x86_64 := $(CFLAGS) $(IOSSIM_DEPLOYMENT_ARGS)
-CFLAGS.ios.armv7 := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
-CFLAGS.ios.armv7k := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
-CFLAGS.ios.armv7s := $(CFLAGS) $(IOS_DEPLOYMENT_ARGS)
-CFLAGS.ios.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
-CFLAGS.osx.i386 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.osx.x86_64 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.osx.x86_64h := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext.i386 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext.x86_64 := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext.x86_64h := $(CFLAGS) $(OSX_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext_ios.armv7 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext_ios.armv7k := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext_ios.armv7s := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
-CFLAGS.cc_kext_ios.arm64 := $(CFLAGS) $(IOS6_DEPLOYMENT_ARGS)
-
-SANITIZER_LDFLAGS := -stdlib=libc++ -lc++ -lc++abi
-
-ATOMIC_FUNCTIONS := \
- atomic_flag_clear \
- atomic_flag_clear_explicit \
- atomic_flag_test_and_set \
- atomic_flag_test_and_set_explicit \
- atomic_signal_fence \
- atomic_thread_fence
-
-FP16_FUNCTIONS := \
- extendhfsf2 \
- truncdfhf2 \
- truncsfhf2
-
-FUNCTIONS.eprintf := eprintf
-FUNCTIONS.10.4 := eprintf floatundidf floatundisf floatundixf
-
-FUNCTIONS.ios := divmodsi4 udivmodsi4 mulosi4 mulodi4 muloti4 \
- $(ATOMIC_FUNCTIONS) $(FP16_FUNCTIONS)
-# On x86, the divmod functions reference divsi.
-FUNCTIONS.ios.i386 := $(FUNCTIONS.ios) \
- divsi3 udivsi3
-FUNCTIONS.ios.x86_64 := $(FUNCTIONS.ios.i386)
-FUNCTIONS.ios.arm64 := mulsc3 muldc3 divsc3 divdc3 udivti3 umodti3 \
- $(ATOMIC_FUNCTIONS)
-
-FUNCTIONS.osx := mulosi4 mulodi4 muloti4 $(ATOMIC_FUNCTIONS) $(FP16_FUNCTIONS)
-
-CCKEXT_PROFILE_FUNCTIONS := \
- InstrProfiling \
- InstrProfilingBuffer \
- InstrProfilingPlatformDarwin
-
-CCKEXT_COMMON_FUNCTIONS := \
- $(CCKEXT_PROFILE_FUNCTIONS) \
- absvdi2 \
- absvsi2 \
- addvdi3 \
- addvsi3 \
- ashldi3 \
- ashrdi3 \
- bswapdi2 \
- bswapsi2 \
- clzdi2 \
- clzsi2 \
- cmpdi2 \
- ctzdi2 \
- ctzsi2 \
- divdc3 \
- divdi3 \
- divsc3 \
- divmodsi4 \
- udivmodsi4 \
- do_global_dtors \
- eprintf \
- extendhfsf2 \
- ffsdi2 \
- fixdfdi \
- fixsfdi \
- fixunsdfdi \
- fixunsdfsi \
- fixunssfdi \
- fixunssfsi \
- floatdidf \
- floatdisf \
- floatundidf \
- floatundisf \
- gcc_bcmp \
- lshrdi3 \
- moddi3 \
- muldc3 \
- muldi3 \
- mulsc3 \
- mulvdi3 \
- mulvsi3 \
- negdi2 \
- negvdi2 \
- negvsi2 \
- paritydi2 \
- paritysi2 \
- popcountdi2 \
- popcountsi2 \
- powidf2 \
- powisf2 \
- subvdi3 \
- subvsi3 \
- truncdfhf2 \
- truncsfhf2 \
- ucmpdi2 \
- udiv_w_sdiv \
- udivdi3 \
- udivmoddi4 \
- umoddi3
-
-CCKEXT_ARM_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
- adddf3 \
- addsf3 \
- aeabi_cdcmpeq \
- aeabi_cdrcmple \
- aeabi_cfcmpeq \
- aeabi_cfrcmple \
- aeabi_dcmpeq \
- aeabi_dcmpge \
- aeabi_dcmpgt \
- aeabi_dcmple \
- aeabi_dcmplt \
- aeabi_drsub \
- aeabi_fcmpeq \
- aeabi_fcmpge \
- aeabi_fcmpgt \
- aeabi_fcmple \
- aeabi_fcmplt \
- aeabi_frsub \
- aeabi_idivmod \
- aeabi_uidivmod \
- cmpdf2 \
- cmpsf2 \
- div0 \
- divdf3 \
- divsf3 \
- divsi3 \
- extendsfdf2 \
- ffssi2 \
- fixdfsi \
- fixsfsi \
- floatsidf \
- floatsisf \
- floatunsidf \
- floatunsisf \
- comparedf2 \
- comparesf2 \
- modsi3 \
- muldf3 \
- mulsf3 \
- mulodi4 \
- negdf2 \
- negsf2 \
- subdf3 \
- subsf3 \
- switch16 \
- switch32 \
- switch8 \
- switchu8 \
- truncdfsf2 \
- udivsi3 \
- umodsi3 \
- unorddf2 \
- unordsf2
-
-CCKEXT_ARMVFP_FUNCTIONS := $(CCKEXT_ARM_FUNCTIONS) \
- adddf3vfp \
- addsf3vfp \
- divdf3vfp \
- divsf3vfp \
- eqdf2vfp \
- eqsf2vfp \
- extendsfdf2vfp \
- fixdfsivfp \
- fixsfsivfp \
- fixunsdfsivfp \
- fixunssfsivfp \
- floatsidfvfp \
- floatsisfvfp \
- floatunssidfvfp \
- floatunssisfvfp \
- gedf2vfp \
- gesf2vfp \
- gtdf2vfp \
- gtsf2vfp \
- ledf2vfp \
- lesf2vfp \
- ltdf2vfp \
- ltsf2vfp \
- muldf3vfp \
- mulsf3vfp \
- nedf2vfp \
- nesf2vfp \
- subdf3vfp \
- subsf3vfp \
- truncdfsf2vfp \
- unorddf2vfp \
- unordsf2vfp
-
-CCKEXT_ARM64_FUNCTIONS := \
- $(CCKEXT_PROFILE_FUNCTIONS) \
- divdc3 \
- divsc3 \
- muldc3 \
- mulsc3 \
- udivti3 \
- umodti3
-
-FUNCTIONS.cc_kext_ios.armv7 := $(CCKEXT_ARMVFP_FUNCTIONS)
-FUNCTIONS.cc_kext_ios.armv7k := $(CCKEXT_ARMVFP_FUNCTIONS)
-FUNCTIONS.cc_kext_ios.armv7s := $(CCKEXT_ARMVFP_FUNCTIONS)
-FUNCTIONS.cc_kext_ios.arm64 := $(CCKEXT_ARM64_FUNCTIONS)
-
-CCKEXT_X86_FUNCTIONS := $(CCKEXT_COMMON_FUNCTIONS) \
- divxc3 \
- fixunsxfdi \
- fixunsxfsi \
- fixxfdi \
- floatdixf \
- floatundixf \
- mulxc3 \
- powixf2
-
-FUNCTIONS.cc_kext.i386 := $(CCKEXT_X86_FUNCTIONS) \
- ffssi2 \
- i686.get_pc_thunk.eax \
- i686.get_pc_thunk.ebp \
- i686.get_pc_thunk.ebx \
- i686.get_pc_thunk.ecx \
- i686.get_pc_thunk.edi \
- i686.get_pc_thunk.edx \
- i686.get_pc_thunk.esi
-
-FUNCTIONS.cc_kext.x86_64 := $(CCKEXT_X86_FUNCTIONS) \
- absvti2 \
- addvti3 \
- ashlti3 \
- ashrti3 \
- clzti2 \
- cmpti2 \
- ctzti2 \
- divti3 \
- ffsti2 \
- fixdfti \
- fixsfti \
- fixunsdfti \
- fixunssfti \
- fixunsxfti \
- fixxfti \
- floattidf \
- floattisf \
- floattixf \
- floatuntidf \
- floatuntisf \
- floatuntixf \
- lshrti3 \
- modti3 \
- multi3 \
- mulvti3 \
- negti2 \
- negvti2 \
- parityti2 \
- popcountti2 \
- subvti3 \
- ucmpti2 \
- udivmodti4 \
- udivti3 \
- umodti3
-
-FUNCTIONS.cc_kext.x86_64h := $(FUNCTIONS.cc_kext.x86_64)
-
-# FIXME: Currently, compiler-rt is missing implementations for a number of the
-# functions that need to go into libcc_kext.a. Filter them out for now.
-CCKEXT_MISSING_FUNCTIONS := \
- cmpdf2 cmpsf2 div0 \
- ffssi2 \
- udiv_w_sdiv unorddf2 unordsf2 bswapdi2 \
- bswapsi2 \
- gcc_bcmp \
- do_global_dtors \
- i686.get_pc_thunk.eax i686.get_pc_thunk.ebp i686.get_pc_thunk.ebx \
- i686.get_pc_thunk.ecx i686.get_pc_thunk.edi i686.get_pc_thunk.edx \
- i686.get_pc_thunk.esi \
- aeabi_cdcmpeq aeabi_cdrcmple aeabi_cfcmpeq aeabi_cfrcmple aeabi_dcmpeq \
- aeabi_dcmpge aeabi_dcmpgt aeabi_dcmple aeabi_dcmplt aeabi_drsub aeabi_fcmpeq \
- aeabi_fcmpge aeabi_fcmpgt aeabi_fcmple aeabi_fcmplt aeabi_frsub aeabi_idivmod \
- aeabi_uidivmod
-
-FUNCTIONS.cc_kext_ios.armv7 := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios.armv7))
-FUNCTIONS.cc_kext_ios.armv7k := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios.armv7k))
-FUNCTIONS.cc_kext_ios.armv7s := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios.armv7s))
-FUNCTIONS.cc_kext_ios.arm64 := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext_ios.arm64))
-FUNCTIONS.cc_kext.i386 := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.i386))
-FUNCTIONS.cc_kext.x86_64 := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64))
-FUNCTIONS.cc_kext.x86_64h := \
- $(filter-out $(CCKEXT_MISSING_FUNCTIONS),$(FUNCTIONS.cc_kext.x86_64h))
-
-KERNEL_USE.cc_kext := 1
-KERNEL_USE.cc_kext_ios := 1
-
-VISIBILITY_HIDDEN := 1
-
-SHARED_LIBRARY_SUFFIX := dylib