make/clang_darwin: Tweak CheckArches function to force the integrated-as and use

the stub SDK to try and ensure we always pick up the right archs when they
should be able to be used.
 - Also, warn when we drop an architecture.

llvm-svn: 150232
This commit is contained in:
Daniel Dunbar 2012-02-10 06:00:35 +00:00
parent dc51baade4
commit d205200d41
1 changed files with 13 additions and 8 deletions

View File

@ -13,9 +13,14 @@ CheckArches = \
result=""; \
for arch in $(1); do \
if $(CC) -arch $$arch -c \
-integrated-as \
$(ProjSrcRoot)/make/platform/clang_darwin_test_input.c \
-isysroot $(ProjSrcRoot)/SDKs/darwin \
-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)'\n"; \
fi; \
done; \
echo $$result)
@ -31,40 +36,40 @@ UniversalArchs :=
# still be referenced from Darwin system headers. This symbol is only ever
# needed on i386.
Configs += eprintf
UniversalArchs.eprintf := $(call CheckArches,i386)
UniversalArchs.eprintf := $(call CheckArches,i386,eprintf)
# Configuration for targetting 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 targetting PowerPC.
Configs += 10.4
UniversalArchs.10.4 := $(call CheckArches,i386 x86_64)
UniversalArchs.10.4 := $(call CheckArches,i386 x86_64,10.4)
# Configuration for targetting iOS, for some ARMv6 functions, which must be
# in the same linkage unit, and for a couple of other functions that didn't
# make it into libSystem.
Configs += ios
UniversalArchs.ios := $(call CheckArches,i386 x86_64 armv6 armv7)
UniversalArchs.ios := $(call CheckArches,i386 x86_64 armv6 armv7,ios)
# Configuration for targetting OSX. These functions may not be in libSystem
# so we should provide our own.
Configs += osx
UniversalArchs.osx := $(call CheckArches,i386 x86_64)
UniversalArchs.osx := $(call CheckArches,i386 x86_64,osx)
# Configuration for use with kernel/kexts.
Configs += cc_kext
UniversalArchs.cc_kext := $(call CheckArches,armv6 armv7 i386 x86_64)
UniversalArchs.cc_kext := $(call CheckArches,armv6 armv7 i386 x86_64,cc_kext)
# Configurations which define the profiling support functions.
Configs += profile_osx
UniversalArchs.profile_osx := $(call CheckArches,i386 x86_64)
UniversalArchs.profile_osx := $(call CheckArches,i386 x86_64,profile_osx)
Configs += profile_ios
UniversalArchs.profile_ios := $(call CheckArches,i386 x86_64 armv6 armv7)
UniversalArchs.profile_ios := $(call CheckArches,i386 x86_64 armv6 armv7,profile_ios)
# Configurations which define the ASAN support functions.
#
# Note that ASAN doesn't appear to currently support i386.
Configs += asan_osx
UniversalArchs.asan_osx := $(call CheckArches,i386 x86_64)
UniversalArchs.asan_osx := $(call CheckArches,i386 x86_64,asan_osx)
# 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.