1*4684ddb6SLionel Sambuc#!/usr/bin/env bash 2*4684ddb6SLionel Sambuc 3*4684ddb6SLionel SambucARCHS='<host>' 4*4684ddb6SLionel SambucREMOTE=0 5*4684ddb6SLionel Sambucif test `uname` = "Darwin"; then 6*4684ddb6SLionel Sambuc if test "$1" = "armv6"; then 7*4684ddb6SLionel Sambuc ARCHS="armv6" 8*4684ddb6SLionel Sambuc LIBS="-lSystem" 9*4684ddb6SLionel Sambuc REMOTE=1 10*4684ddb6SLionel Sambuc mkdir -p remote 11*4684ddb6SLionel Sambuc else 12*4684ddb6SLionel Sambuc ARCHS="i386 x86_64 ppc" 13*4684ddb6SLionel Sambuc LIBS="-lSystem" 14*4684ddb6SLionel Sambuc fi 15*4684ddb6SLionel Sambucelse 16*4684ddb6SLionel Sambuc LIBS="-lc -lm" 17*4684ddb6SLionel Sambucfi 18*4684ddb6SLionel Sambuc 19*4684ddb6SLionel Sambucfor ARCH in $ARCHS; do 20*4684ddb6SLionel Sambuc CFLAGS="-Os -nodefaultlibs -I../../lib" 21*4684ddb6SLionel Sambuc if test "$ARCH" != '<host>'; then 22*4684ddb6SLionel Sambuc CFLAGS="-arch $ARCH $CFLAGS" 23*4684ddb6SLionel Sambuc fi 24*4684ddb6SLionel Sambuc for FILE in $(ls *.c); do 25*4684ddb6SLionel Sambuc # Use -nodefaultlibs to avoid using libgcc.a 26*4684ddb6SLionel Sambuc # Use -lSystem to link with libSystem.dylb. 27*4684ddb6SLionel Sambuc # Note -lSystem is *after* libcompiler_rt.Optimized.a so that linker will 28*4684ddb6SLionel Sambuc # prefer our implementation over the ones in libSystem.dylib 29*4684ddb6SLionel Sambuc EXTRA= 30*4684ddb6SLionel Sambuc if test $FILE = gcc_personality_test.c 31*4684ddb6SLionel Sambuc then 32*4684ddb6SLionel Sambuc # the gcc_personality_test.c requires a helper C++ program 33*4684ddb6SLionel Sambuc EXTRA="-fexceptions gcc_personality_test_helper.cxx -lstdc++ /usr/lib/libgcc_s.1.dylib" 34*4684ddb6SLionel Sambuc # the libgcc_s.1.dylib use at the end is a hack until libSystem contains _Unwind_Resume 35*4684ddb6SLionel Sambuc fi 36*4684ddb6SLionel Sambuc if test $FILE = trampoline_setup_test.c 37*4684ddb6SLionel Sambuc then 38*4684ddb6SLionel Sambuc # this test requires an extra compiler option 39*4684ddb6SLionel Sambuc EXTRA="-fnested-functions" 40*4684ddb6SLionel Sambuc fi 41*4684ddb6SLionel Sambuc if test "$REMOTE" = "1" 42*4684ddb6SLionel Sambuc then 43*4684ddb6SLionel Sambuc if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA -o ./remote/$FILE.exe 44*4684ddb6SLionel Sambuc then 45*4684ddb6SLionel Sambuc echo "Built $FILE.exe for $ARCH" 46*4684ddb6SLionel Sambuc else 47*4684ddb6SLionel Sambuc echo "$FILE failed to compile" 48*4684ddb6SLionel Sambuc fi 49*4684ddb6SLionel Sambuc else 50*4684ddb6SLionel Sambuc if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA 51*4684ddb6SLionel Sambuc then 52*4684ddb6SLionel Sambuc echo "Testing $FILE for $ARCH" 53*4684ddb6SLionel Sambuc if ./a.out 54*4684ddb6SLionel Sambuc then 55*4684ddb6SLionel Sambuc rm ./a.out 56*4684ddb6SLionel Sambuc else 57*4684ddb6SLionel Sambuc echo "fail" 58*4684ddb6SLionel Sambuc exit 1 59*4684ddb6SLionel Sambuc fi 60*4684ddb6SLionel Sambuc else 61*4684ddb6SLionel Sambuc echo "$FILE failed to compile" 62*4684ddb6SLionel Sambuc exit 1 63*4684ddb6SLionel Sambuc fi 64*4684ddb6SLionel Sambuc fi 65*4684ddb6SLionel Sambuc done 66*4684ddb6SLionel Sambucdone 67*4684ddb6SLionel Sambucecho "pass" 68*4684ddb6SLionel Sambucexit 69