aboutsummaryrefslogtreecommitdiff
path: root/test/builtins/Unit/test
diff options
context:
space:
mode:
Diffstat (limited to 'test/builtins/Unit/test')
-rwxr-xr-xtest/builtins/Unit/test68
1 files changed, 68 insertions, 0 deletions
diff --git a/test/builtins/Unit/test b/test/builtins/Unit/test
new file mode 100755
index 000000000000..e2a39a92ed2f
--- /dev/null
+++ b/test/builtins/Unit/test
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+ARCHS='<host>'
+REMOTE=0
+if test `uname` = "Darwin"; then
+ if test "$1" = "armv6"; then
+ ARCHS="armv6"
+ LIBS="-lSystem"
+ REMOTE=1
+ mkdir -p remote
+ else
+ ARCHS="i386 x86_64 ppc"
+ LIBS="-lSystem"
+ fi
+else
+ LIBS="-lc -lm"
+fi
+
+for ARCH in $ARCHS; do
+ CFLAGS="-Os -nodefaultlibs -I../../lib"
+ if test "$ARCH" != '<host>'; then
+ CFLAGS="-arch $ARCH $CFLAGS"
+ fi
+ for FILE in $(ls *.c); do
+ # Use -nodefaultlibs to avoid using libgcc.a
+ # Use -lSystem to link with libSystem.dylb.
+ # Note -lSystem is *after* libcompiler_rt.Optimized.a so that linker will
+ # prefer our implementation over the ones in libSystem.dylib
+ EXTRA=
+ if test $FILE = gcc_personality_test.c
+ then
+ # the gcc_personality_test.c requires a helper C++ program
+ EXTRA="-fexceptions gcc_personality_test_helper.cxx -lstdc++ /usr/lib/libgcc_s.1.dylib"
+ # the libgcc_s.1.dylib use at the end is a hack until libSystem contains _Unwind_Resume
+ fi
+ if test $FILE = trampoline_setup_test.c
+ then
+ # this test requires an extra compiler option
+ EXTRA="-fnested-functions"
+ fi
+ if test "$REMOTE" = "1"
+ then
+ if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA -o ./remote/$FILE.exe
+ then
+ echo "Built $FILE.exe for $ARCH"
+ else
+ echo "$FILE failed to compile"
+ fi
+ else
+ if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA
+ then
+ echo "Testing $FILE for $ARCH"
+ if ./a.out
+ then
+ rm ./a.out
+ else
+ echo "fail"
+ exit 1
+ fi
+ else
+ echo "$FILE failed to compile"
+ exit 1
+ fi
+ fi
+ done
+done
+echo "pass"
+exit