1#!/bin/sh
2
3BASE="$(pwd)";
4BUILD_LOG="$BASE/build.log";
5BUILD_LOG2="$BASE/build.log2";
6BUILD_DIR="$BASE/__tests";
7
8CC="sdcc";
9CPPFLAGS="";
10CFLAGS="--use-non-free";
11LDFLAGS="";
12LIBS="";
13
14cleanup()
15{
16  rm -f "$BUILD_LOG2";
17  rm -rf "$BUILD_DIR";
18}
19
20if [ -e "$BUILD_DIR" ]; then
21    echo "$BUILD_DIR already there -- exiting.";
22    exit 1;
23fi;
24{ mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"; } || exit 1;
25trap "cleanup" INT;
26
27cat > sample.c <<EOT
28#include <pic14regs.h>
29
30void foo(char *c)
31{
32  if (*c)
33    *c = 1;
34}
35
36void main()
37{
38  OPTION_REG = PCLATH;
39  INTCON = 0;
40}
41EOT
42
43sed -e 's/\s*#.*$//' ../devices.txt | grep -v '^\s*$' | while read PROC; do
44    printf "### Compiling for $PROC: ";
45    OK="FAILED";
46    echo "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic14 -p$PROC -o test-$PROC sample.c $LIBS > "$BUILD_LOG2";
47    "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic14 -p$PROC -o test-$PROC sample.c $LIBS >> "$BUILD_LOG2" 2>&1 && OK="ok";
48    cat "$BUILD_LOG2" >> "$BUILD_LOG";
49    printf "$OK\n";
50    case "$OK" in
51        ok)
52            ;;
53        *)
54            cat "$BUILD_LOG2";
55            printf "\n";
56            ;;
57    esac;
58done;
59
60cd "$BASE";
61cleanup;
62