1#!/usr/bin/env bash
2
3DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4
5DEFAULT_TOOLPATH="$DIR/toolpaths.default"
6if [ -e "$DEFAULT_TOOLPATH" ]
7then
8  source $DEFAULT_TOOLPATH
9fi
10
11function HELP {
12    echo "help:"
13    echo "-c cmpctmalloc instead of dlmalloc"
14    echo "-M miniheap instead of dlmalloc"
15    echo "-h for help"
16    echo "all arguments after -- are passed to qemu directly"
17    exit 1
18}
19
20DO_CMPCTMALLOC=0
21DO_MINIHEAP=0
22MEMSIZE=8
23
24while getopts bdhm:cMnt6 FLAG; do
25    case $FLAG in
26        c) DO_CMPCTMALLOC=1;;
27        M) DO_MINIHEAP=1;;
28        M) DO_MINIHEAP=1;;
29        h) HELP;;
30        \?)
31            echo unrecognized option
32            HELP
33    esac
34done
35
36shift $((OPTIND-1))
37
38if [ -z "$QEMUM4" ]; then
39    echo "QEMUM4 is not defined. Set QEMUM4='path/to/qemu-m4' inside scripts/toolpaths.local"
40    exit 1
41fi
42
43PROJECT="qemu-m4-test"
44
45ARGS=" -serial tcp::12345,server,nowait "       # Logs
46ARGS+=" -serial tcp::12344,server,nowait "      # Debug
47ARGS+=" -serial stdio"                        # Console
48ARGS+=" -machine pebble-s4-bb -cpu cortex-m4"
49ARGS+=" -pflash build-${PROJECT}/lk.bin "
50ARGS+=" -monitor tcp::12346,server,nowait"
51
52if [ $DO_CMPCTMALLOC == 1 ]; then
53	MAKE_VARS=LK_HEAP_IMPLEMENTATION=cmpctmalloc
54elif [ $DO_MINIHEAP == 1 ]; then
55	MAKE_VARS=LK_HEAP_IMPLEMENTATION=miniheap
56fi
57
58$DIR/make-parallel $MAKE_VARS $PROJECT &&
59echo $QEMUM4 $ARGS $@ &&
60$QEMUM4 $ARGS $@
61