summaryrefslogtreecommitdiffhomepage
path: root/contrib/all.sh
blob: e7bdd720a604e46e9b39fa51431529cf4f77f615 (plain)
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
68
69
70
71
72
73
#!/bin/sh

set -eu -o pipefail
beep() { printf \\a >&2; }
test -z "$MAGNUM_LOG" && export MAGNUM_LOG=default

trap 'cleanup $?' exit
cleanup() {
    local i ret=$1
    set +x
    for i in {1..5}; do beep; sleep 0.2; done
    exit $ret
}

bold="\033[1m"
unbold="\033[0m"

bprintf() {
    printf "$bold" &&
    printf "$@" &&
    printf "$unbold" ||
    return 0
}

run_test() {
    local dir="$(basename -- "$PWD")"
    cd install/bin &&
    if test -e floormat-test-asan; then
        ./floormat-test-asan "$@"
    else
        ./floormat-test "$@"
    fi
}

#cd "$(dirname -- "$0" || exit $?)"
cd f:/build/floormat
#set -x

configurations='
clang64 clang
mingw64 gcc
msvc64  msvc-debug
clang64 clang-asan

clang64 clang-release
msvc64  msvc
mingw64 gcc-release
'

printf "%s\\n" "$configurations" |
while read wrapper configs; do
    for i in $configs; do
        (
            cd $i
            bprintf -- "***** Entering directory %s\\n" "$i"
            "$wrapper" cmake c:/repos/floormat >/dev/null
            if test $# -eq 0; then
                printf -- "> Running ninja for %s\\n" "$i"
            else
                printf -- "> Running ninja %s\\n" "$*"
            fi
            #printf -- "> Running cmake . for %s\\n" "$i"
            "$wrapper" ninja "$@"
            printf -- "> Running ninja install for %s\\n" "$i"
            "$wrapper" ninja install
            printf -- "> Running tests for %s\\n" "$i"
            run_test
            printf -- "\\n***** Exiting directory %s\\n\\n" "$i"
        )
    done
done

exit 0