#!/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) 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