summaryrefslogtreecommitdiff
path: root/device/non-free/lib/pic14/libdev/testall.sh
blob: f25d7ef90c7958542dc19357c46fe9c499eaa97f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/bin/sh

BASE="$(pwd)";
BUILD_LOG="$BASE/build.log";
BUILD_LOG2="$BASE/build.log2";
BUILD_DIR="$BASE/__tests";

CC="sdcc";
CPPFLAGS="";
CFLAGS="--use-non-free";
LDFLAGS="";
LIBS="";

cleanup()
{
  rm -f "$BUILD_LOG2";
  rm -rf "$BUILD_DIR";
}

if [ -e "$BUILD_DIR" ]; then
    echo "$BUILD_DIR already there -- exiting.";
    exit 1;
fi;
{ mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"; } || exit 1;
trap "cleanup" INT;

cat > sample.c <<EOT
#include <pic14regs.h>

void foo(char *c)
{
  if (*c)
    *c = 1;
}

void main()
{
  OPTION_REG = PCLATH;
  INTCON = 0;
}
EOT

sed -e 's/\s*#.*$//' ../devices.txt | grep -v '^\s*$' | while read PROC; do
    printf "### Compiling for $PROC: ";
    OK="FAILED";
    echo "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic14 -p$PROC -o test-$PROC sample.c $LIBS > "$BUILD_LOG2";
    "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic14 -p$PROC -o test-$PROC sample.c $LIBS >> "$BUILD_LOG2" 2>&1 && OK="ok";
    cat "$BUILD_LOG2" >> "$BUILD_LOG";
    printf "$OK\n";
    case "$OK" in
        ok)
            ;;
        *)
            cat "$BUILD_LOG2";
            printf "\n";
            ;;
    esac;
done;

cd "$BASE";
cleanup;