blob: 213d7875af2e47bbfea6638670f894c1b7582d2d (
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
|
#!/bin/sh
set -eu
src="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.c"
out="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.out"
dump="${TMPDIR-/tmp}/mcpu-cpp-stringify-$$.dump"
trap 'rm -f "$src" "$out" "$dump"' EXIT HUP INT TERM
cat > "$src" <<'EOT'
#define A 7
#define STR(X) #X
#define WSTR(X) # X
#define XSTR(X) STR(X)
#define MIX(X) #X | X
#define BAD(X, Y) X + Y
#define HASH(X) "#" X
#define EMPTY(X) <X>
STR(A)
WSTR(alpha)
XSTR(A)
STR( a + b )
STR(Привет мир)
STR("a\\b")
STR()
STR(BAD(1))
MIX(A)
HASH(A)
EMPTY()
#lang "diff"
#define DSTR(X) #X
DSTR(y' + z)
#endlang
EOT
"$MCPU_CPP" --no-config "$src" -o "$out"
grep -Fx '"A"' "$out" >/dev/null
grep -Fx '"alpha"' "$out" >/dev/null
grep -Fx '"7"' "$out" >/dev/null
grep -Fx '"a + b"' "$out" >/dev/null
grep -Fx '"Привет мир"' "$out" >/dev/null
grep -Fx '"\"a\\\\b\""' "$out" >/dev/null
grep -Fx '""' "$out" >/dev/null
grep -Fx '"BAD(1)"' "$out" >/dev/null
grep -Fx '"A" | 7' "$out" >/dev/null
grep -Fx '"#" 7' "$out" >/dev/null
grep -Fx '<>' "$out" >/dev/null
grep -Fx '"y'"'"' + z"' "$out" >/dev/null
"$MCPU_CPP" --no-config -dM "$src" > "$dump"
grep -Fx '#define STR(X) #X' "$dump" >/dev/null
|