mirror of
https://github.com/Nexoniarz/Finch.git
synced 2026-11-03 00:44:27 +00:00
The compiler carries its runtime and std inside itself; host module for the system it runs on
src/embedded.fch (made by tools/pack.fch, checked by tests/run.sh) holds runtime/finch_rt.c and std/; when they aren't beside the binary they're written to the cache folder once. All the sh/cmd specifics of the driver (quoting, temp dir, mkdir, rm, mv, null device, path separator, cache dir, binary stdio) moved into host.fch / host_windows.fch. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015f73FesGZGYPkmDvUcj6QX
This commit is contained in:
parent
a0c54a1252
commit
837ad45177
12 changed files with 354 additions and 59 deletions
|
|
@ -6,8 +6,8 @@
|
|||
# bootstrap/build.sh seed also write bootstrap/<system>.ll anew (do this when the compiler got a feature
|
||||
# its own source uses, or the seed is old: the next build starts from it)
|
||||
#
|
||||
# Needs clang and libclang (the C headers are read through it). The compiler is then in build/finch; it looks for the
|
||||
# runtime and the standard library next to build/, in runtime/ and std/.
|
||||
# Needs clang and libclang (the C headers are read through it). The compiler is then in build/finch. It carries the
|
||||
# runtime and the standard library inside itself (src/embedded.fch), so it runs from anywhere.
|
||||
set -eu
|
||||
cd "$(dirname "$0")/.."
|
||||
mkdir -p build
|
||||
|
|
@ -28,6 +28,8 @@ export FINCH_RT=$PWD/runtime/finch_rt.c
|
|||
|
||||
echo "bootstrap: seed ($seed) -> build/finch0"
|
||||
$CLANG -O1 -w "bootstrap/$seed.ll" runtime/finch_rt.c -o build/finch0 -lm $LIBS
|
||||
echo "bootstrap: build/finch0 packs the runtime and std into src/embedded.fch"
|
||||
bootstrap/pack.sh build/finch0
|
||||
echo "bootstrap: build/finch0 builds the compiler -> build/finch1"
|
||||
build/finch0 build src/main.fch -o build/finch1
|
||||
echo "bootstrap: build/finch1 builds the compiler -> build/finch"
|
||||
|
|
|
|||
6
bootstrap/pack.sh
Executable file
6
bootstrap/pack.sh
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
#!/bin/sh
|
||||
# Writes src/embedded.fch: the runtime and the standard library as text, so the compiler can carry them inside itself.
|
||||
# bootstrap/pack.sh <a Finch compiler> [out.fch]
|
||||
set -eu
|
||||
cd "$(dirname "$0")/.."
|
||||
FINCH_RT=$PWD/runtime/finch_rt.c "$1" run tools/pack.fch "${2:-src/embedded.fch}" runtime/finch_rt.c std/*.fch std/*.h
|
||||
Loading…
Reference in a new issue