Build joltc as a self-contained binary (make joltc-release / joltc-debug)
host/chez/build-joltc.ss builds joltc into target/<profile>/joltc: it emits a flat source of the full runtime + compiler image + inlined build.ss + every jolt-core/stdlib file as a baked string literal + a cli.ss-style launcher, then (in a fresh Chez, so the inlined runtime's redefinition of error doesn't strand early references and runtime eval still sees the runtime's top-level procedures) compiles it and cc-links it with the Chez petite/scheme boots and the launcher stub embedded as C arrays. The launcher reads those arrays via FFI on (jolt-materialize-bundles!) and registers them so build-self-contained can spill them. joltc itself is cc-linked (clean signature for Homebrew); only the apps it later builds use the appended-stub path. build.ss: skip the csv toolchain check on the self-contained path and create the build dir with a subprocess-free bld-mkdir-p, so a from the distributed binary shells out to nothing. release = optimize-level 3 + no inspector info + compressed; debug = optimize-level 0 + inspector + procedure source + debug-on-exception. joltc-selfbuild-smoke.sh (make joltcsmoke) builds joltc and, with an empty environment (no chez/cc/PATH), drives it through the build-app fixture, asserting the produced binary's output. .gitignore ignores target/.
This commit is contained in:
parent
0420cd4d79
commit
242eeac5c6
5 changed files with 320 additions and 14 deletions
19
Makefile
19
Makefile
|
|
@ -4,7 +4,7 @@
|
|||
# build step. `make test` is the full gate. `make remint` rebuilds the seed after a
|
||||
# source change.
|
||||
|
||||
.PHONY: test ci values corpus unit smoke buildsmoke selfhost sci certify ffi transient infer wp devirt fieldread numwp fieldnum protoret narrow directlink numeric inline shakesmoke remint
|
||||
.PHONY: test ci values corpus unit smoke buildsmoke selfhost sci certify ffi transient infer wp devirt fieldread numwp fieldnum protoret narrow directlink numeric inline shakesmoke remint joltc joltc-release joltc-debug joltcsmoke
|
||||
|
||||
# Full gate (dev machine). Includes the self-host byte-fixpoint, which only holds
|
||||
# on the same Chez that minted the seed.
|
||||
|
|
@ -42,6 +42,23 @@ smoke:
|
|||
buildsmoke:
|
||||
@sh host/chez/build-smoke.sh
|
||||
|
||||
# Build joltc as a self-contained native binary into target/<profile>/joltc. The
|
||||
# binary bundles the runtime, compiler, jolt-core + stdlib source, the Chez boots,
|
||||
# and a launcher stub, so it runs AND compiles jolt apps with no Chez or cc on the
|
||||
# machine. Built on a dev/CI host that HAS Chez + cc. release = optimize-level 3,
|
||||
# no inspector info, compressed; debug = optimize-level 0 + inspector + debug info.
|
||||
joltc-release:
|
||||
@chez --script host/chez/build-joltc.ss release target/release/joltc
|
||||
joltc-debug:
|
||||
@chez --script host/chez/build-joltc.ss debug target/debug/joltc
|
||||
# Re-mint the seed first so the embedded compiler image is current, then both builds.
|
||||
joltc: selfhost joltc-release joltc-debug
|
||||
@echo "OK: target/release/joltc and target/debug/joltc built"
|
||||
|
||||
# Self-build smoke: the distributed joltc compiles an app with Chez + cc removed.
|
||||
joltcsmoke:
|
||||
@sh host/chez/joltc-selfbuild-smoke.sh
|
||||
|
||||
# SCI conformance: load borkdude/sci's source through joltc (floor-gated).
|
||||
sci:
|
||||
@chez --script host/chez/run-sci.ss
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue