blob: 7acd74cf50a860120c679b4789967411f79d9aca (
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
|
#!/bin/bash
# rebuild the bootstrap one stage and report what the compiler says about itself.
# zc0 (stage 0) compiles rt+core+compiler into build/s0, s0 becomes zy0, and zy0
# runs build.zc over the same sources to produce the image. ownership diagnostics
# come back in place of the image; mkgenome rejects them and prints them.
set -e
case "${1:-}" in
--help|-h) printf '%s\n' 'usage: src/tools/bootstrap-check.sh' 'runs the first two bootstrap stages and prints the compiler diagnostics on its own source, or the image size.'; exit 0 ;;
-*) echo "bootstrap-check: unknown option $1; use --help for usage" >&2; exit 2 ;;
esac
cd "$(dirname "$0")/../.."
make -s build/bin/zc0 build/bin/mkgenome
CC=${CC:-$(sh src/tools/findcc.sh)}
SRC="src/runtime/rt.zc src/core/core.zc src/compiler/compiler.zc"
mkdir -p build/s0 build/s1
cat $SRC | build/bin/zc0 > build/s0/g0.bin
build/bin/mkgenome < build/s0/g0.bin > build/s0/genome.bin
$CC -O2 -w -fwrapv -pthread -DJTYPE=int src/core/core.c src/core/io_linux.c -Isrc/core -Ibuild/core/map --embed-dir=build/s0 -o build/s0/zy0
(cat src/tools/build.zc; printf '`'; cat $SRC) | build/s0/zy0 > build/s1/g1.bin
if build/bin/mkgenome < build/s1/g1.bin > build/s1/check.bin; then
echo "image ok: $(wc -c < build/s1/g1.bin) bytes"
else
exit 1
fi
|