blob: e67c3ab30baab3356334b4e7c87dbba8dac5591c (
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
#!/bin/env bash
cc="gcc"
ld="gcc"
ar="ar"
cflags="-std=c99 -fPIC -Wall -Wno-unused-function -Wextra -g -Wno-error -pedantic -lm -ffast-math"
proc=$(nproc)
rm -rf ./include/
rm -rf ./lib/
rm -rf ./bin/
rm -rf ./obj/
mkdir ./include/
mkdir ./lib/
mkdir ./bin/
mkdir ./obj/
echo "[BUILD] ungrateful.c"
$cc $cflags \
-c -o obj/ungrateful.o \
-g src/ungrateful.c
if [[ $? -ne 0 ]]; then
exit
fi
echo "[BUILD] cynic.c"
$cc $cflags -Isrc/ \
-c -o obj/cynic.o \
-g src/cynic.c
if [[ $? -ne 0 ]]; then
exit
fi
echo "[BUILD] cynic.c"
$cc $cflags -Isrc/ \
-c -o obj/disgrace.o \
-g src/disgrace.c
if [[ $? -ne 0 ]]; then
exit
fi
$ar rcs lib/libungrateful.a obj/ungrateful.o
$ar rcs lib/libcynic.a obj/cynic.o
$ar rcs lib/libdisgrace.a obj/disgrace.o
cp src/ungrateful.h include/ungrateful.h
cp src/cynic.h include/cynic.h
cp src/disgrace.h include/disgrace.h
# ------------ Tests from here
#
if [[ $1 == "no_tests" ]]; then
exit
fi
echo
echo "---- Ungrateful tests ----"
for test in tests/un/*.c; do
fname=$(basename -- "$test")
fname="${fname%.*}"
echo "[BUILD] $test"
$cc $cflags -o bin/$fname $test -Llib/ -Iinclude/ -lungrateful &
if [[ $(jobs -r -p | wc -l) -ge $proc ]]; then
wait
fi
done
echo
echo "---- Cynic tests ----"
for test in tests/cyn/*.c; do
fname=$(basename -- "$test")
fname="${fname%.*}"
echo "[BUILD] $test"
$cc $cflags -o bin/$fname $test -Llib/ -Iinclude/ -lungrateful -lcynic &
if [[ $(jobs -r -p | wc -l) -ge $proc ]]; then
wait
fi
done
echo "---- Disgrace tests ----"
for test in tests/d/*.c; do
fname=$(basename -- "$test")
fname="${fname%.*}"
echo "[BUILD] $test"
$cc $cflags -o bin/$fname $test -Llib/ -Iinclude/ -lungrateful -lcynic -ldisgrace &
if [[ $(jobs -r -p | wc -l) -ge $proc ]]; then
wait
fi
done
wait
echo "---- Compiled ----"
echo
echo "---- Running tests ----"
passed=0
failed=0
for case in bin/*; do
if [[ $1 == "quiet" ]]; then
$case > /dev/null 2>&1
else
$case
fi
if [[ $? -eq 0 ]]; then
let "passed++"
echo "[DONE] $case"
else
let "failed++"
echo "[FAIL] $case"
fi
done
echo
echo "---- Done ----"
echo "Passed: $passed, Failed: $failed"
|