17edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar#!/usr/bin/env bash 27edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar 37edbe041a72d9663d612abe1d9a978d3b9c66444Daniel DunbarARCHS='<host>' 4d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick KledzikREMOTE=0 57edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbarif test `uname` = "Darwin"; then 6d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik if test "$1" = "armv6"; then 7d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik ARCHS="armv6" 84467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar LIBS="-lSystem" 94467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar REMOTE=1 104467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar mkdir -p remote 11d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik else 12d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik ARCHS="i386 x86_64 ppc" 13d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik LIBS="-lSystem" 14d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik fi 15172e105cf58333a1a55468095c51d22868296a68Daniel Dunbarelse 16172e105cf58333a1a55468095c51d22868296a68Daniel Dunbar LIBS="-lc -lm" 177edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbarfi 187edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar 197edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbarfor ARCH in $ARCHS; do 204467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar CFLAGS="-Os -nodefaultlibs -I../../lib" 217edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar if test "$ARCH" != '<host>'; then 227edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar CFLAGS="-arch $ARCH $CFLAGS" 237edbe041a72d9663d612abe1d9a978d3b9c66444Daniel Dunbar fi 24781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar for FILE in $(ls *.c); do 25781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # Use -nodefaultlibs to avoid using libgcc.a 26781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # Use -lSystem to link with libSystem.dylb. 27781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # Note -lSystem is *after* libcompiler_rt.Optimized.a so that linker will 28781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # prefer our implementation over the ones in libSystem.dylib 29781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar EXTRA= 30781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar if test $FILE = gcc_personality_test.c 31781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar then 32781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # the gcc_personality_test.c requires a helper C++ program 33781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar EXTRA="-fexceptions gcc_personality_test_helper.cxx -lstdc++ /usr/lib/libgcc_s.1.dylib" 34781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # the libgcc_s.1.dylib use at the end is a hack until libSystem contains _Unwind_Resume 35781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar fi 36781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar if test $FILE = trampoline_setup_test.c 37781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar then 38781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar # this test requires an extra compiler option 39781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar EXTRA="-fnested-functions" 40781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar fi 414467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar if test "$REMOTE" = "1" 424467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar then 4348464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA -o ./remote/$FILE.exe 44781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar then 45d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik echo "Built $FILE.exe for $ARCH" 464467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar else 47d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik echo "$FILE failed to compile" 484467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar fi 494467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar else 5048464e0ee1c2de5bcbf0d609348f55d0c301085dDaniel Dunbar if gcc $CFLAGS $FILE ../../darwin_fat/Release/libcompiler_rt.a $LIBS $EXTRA 51d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik then 52d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik echo "Testing $FILE for $ARCH" 53d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik if ./a.out 54d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik then 55d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik rm ./a.out 56d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik else 57d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik echo "fail" 58d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik exit 1 59d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik fi 60781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar else 61d47c2cfb86a7d9746f7665a73fa25a724c4ce354Nick Kledzik echo "$FILE failed to compile" 62781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar exit 1 63781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar fi 644467b65ff6e342ad4e8bef86f4e948f56e814bdfDaniel Dunbar fi 65781a3b3ee6e90277eba14fb0cc4f0de88ffec0b6Daniel Dunbar done 66b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbardone 67b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarecho "pass" 68b3a6901e66f55b35aa9e01bcb24134e6a65ea004Daniel Dunbarexit 69