xref: /minix3/sys/external/bsd/compiler_rt/dist/test/Unit/test (revision 4684ddb6aab0b36791c8099bc705d6140b3d05d0)
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