blob: 114dbf2777687b649b5c7711d310319074900c6d (
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
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
|
#!/bin/sh
# The road to hell is paved with Makefile generators.
#
# Each test is compiled statically linked with a single collector.
#
# OBJDEPS: Dependencies for an object file.
# DEPS: Dependencies for an executable file.
TEST_TARGETS=""
GENERATED_OBJS=""
gen_test() { # test_name, collector_name, exec_deps, obj_file_deps
local NAME COLLECTOR TARGET TEST_IMPL DEPS OBJDEPS
NAME=$1
COLLECTOR=$2
TARGET="$NAME"_"$COLLECTOR".test
TEST_IMPL="$NAME.c"
DEPS="$1.o uns.o $3"
OBJDEPS="include/uns.h $1.c $4"
echo "
$TARGET: $DEPS
\${CC} \${TEST_LDFLAGS} $DEPS -o $TARGET
\${TEST_WRAPPER} ./$TARGET
"
TEST_TARGETS="$TEST_TARGETS $TARGET"
GENERATED_OBJS="$GENERATED_OBJS $NAME.o"
}
gen_string_test() { # collector_name, exec_deps
local COLLECTOR DEPS OBJDEPS
COLLECTOR=$1
DEPS="$2 examples/test_$COLLECTOR.o examples/string/uns_string.o"
OBJDEPS="examples/string/uns_string.h"
gen_test 'examples/string/test_small' "$COLLECTOR" \
"$DEPS" "$OBJDEPS"
gen_test 'examples/string/test_large' "$COLLECTOR" \
"$DEPS" "$OBJDEPS"
gen_test 'examples/string/test_inefficient' "$COLLECTOR" \
"$DEPS" "$OBJDEPS"
}
gen_hashtable_test() { # collector_name, exec_deps
local COLLECTOR DEPS OBJDEPS
COLLECTOR=$1
DEPS="$2 examples/test_$COLLECTOR.o examples/hashtable/uns_hashtable.o"
OBJDEPS="examples/hashtable/uns_hashtable.h examples/hashtable/testnames.h"
gen_test 'examples/hashtable/test_insert' "$COLLECTOR" \
"$DEPS" "$OBJDEPS"
gen_test 'examples/hashtable/test_insert_delete' "$COLLECTOR" \
"$DEPS" "$OBJDEPS"
}
gen_lisp_test() { #collector_name, exec_deps
local COLLECTOR SHIM_OBJ TARGET DEPS OBJDEPS
COLLECTOR=$1
TARGET="examples/lisp/uns_lisp_$COLLECTOR"
SHIM_OBJ="$TARGET.o"
OBJDEPS="examples/lisp/uns_lisp_$COLLECTOR.c include/uns.h include/$COLLECTOR.h"
DEPS="$2 $SHIM_OBJ uns.o "'${UNS_LISP_OBJS}'
echo "
$SHIM_OBJ: $OBJDEPS
$TARGET: $DEPS
\${CC} \${TEST_LDFLAGS} $DEPS -o $TARGET
"
TEST_TARGETS="$TEST_TARGETS $TARGET"
GENERTATED_OBJS="$GENERATED_OBJS $SHIM_OBJ"
}
gen_tests() {
echo "examples/test_$1.o: include/uns.h $2"
GENERATED_OBJS="$GENERATED_OBJS examples/test_$1.o"
gen_string_test "$1" '${CHENEY_C89_OBJS}'
gen_hashtable_test "$1" '${CHENEY_C89_OBJS}'
gen_lisp_test "$1" '${CHENEY_C89_OBJS}'
}
gen_tests cheney_c89 "include/cheney_c89.h"
echo
printf "tests: %s\n" "$TEST_TARGETS"
printf 'clean_tests:\n\t${RM} -f %s %s\n' "$TEST_TARGETS" "$GENERATED_OBJS"
|