summaryrefslogtreecommitdiff
path: root/device/non-free/lib/pic16/libdev/testall.sh
blob: 824eebc27525c945594e5017b13b88c9852a2334 (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
62
63
64
65
66
67
#!/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 <pic18fregs.h>
#include <stdio.h>
#pragma stack 0x00c0 0x40

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

void main()
{
  PORTA = INTCON;
  LATB = TRISB;
  printf_tiny("foo"); /* printf() is too large for the smallest devices ... */
}
EOT

for f in ./pic1*.c; do
    p="${f##*/pic}";
    p="${p%.c}";
    
    printf "### Compiling for $p: ";
    OK="FAILED";
    echo "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic16 -p$p -o test-$p sample.c $LIBS > "$BUILD_LOG2";
    "$CC" -V $CPPFLAGS $CFLAGS $LDFLAGS -mpic16 -p$p -o test-$p 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;