Index: compiler-rt/trunk/make/platform/clang_darwin.mk =================================================================== --- compiler-rt/trunk/make/platform/clang_darwin.mk +++ compiler-rt/trunk/make/platform/clang_darwin.mk @@ -17,23 +17,23 @@ result=""; \ if [ "X$(3)" != X ]; then \ for arch in $(1); do \ - if $(CC) -arch $$arch -c \ + 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 \ - if $(LD) -v 2>&1 | grep "configured to support" \ - | tr ' ' '\n' | grep "^$$arch$$" >/dev/null 2>/dev/null; then \ - result="$$result$$arch "; \ + result="$$result$$arch "; \ else \ printf 1>&2 \ - "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'";\ - printf 1>&2 " (ld does not support it)\n"; \ + "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 " (clang does not support it)\n"; \ + "warning: clang_darwin.mk: dropping arch '$$arch' from lib '$(2)'";\ + printf 1>&2 " (ld does not support it)\n"; \ fi; \ done; \ fi; \ Index: compiler-rt/trunk/make/platform/clang_darwin_test_input.c =================================================================== --- compiler-rt/trunk/make/platform/clang_darwin_test_input.c +++ compiler-rt/trunk/make/platform/clang_darwin_test_input.c @@ -4,3 +4,12 @@ #include #include #include +#include + +// Force us to link at least one symbol in a system library +// to detect systems where we don't have those for a given +// architecture. +int main(int argc, const char **argv) { + int x; + memcpy(&x,&argc,sizeof(int)); +}