#!/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 $(tr -d '\r' < src/compiler/parts | sed 's|^|src/compiler/|')" 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