jolt build: default output under target/{debug,release}, resolved against the project

Build output landed in the CLI's cwd (the jolt repo, since bin/joltc cd's
there), not the project — so a bare -o path or the default binary appeared
in the wrong place. Resolve output against JOLT_PWD, and default it cargo-
style under the project's target/: target/release for release/--opt,
target/debug for --dev, named after the project dir. The <name>.build scratch
dir sits beside the binary, so it lands under the same target dir. -o is
honored — absolute as-is, relative against the project.
This commit is contained in:
Yogthos 2026-06-23 13:45:41 -04:00
parent d9d55fd533
commit 56d5707bfe
2 changed files with 24 additions and 5 deletions

View file

@ -74,10 +74,15 @@ project inherits its dependencies' `:jolt/native`.
## Standalone binaries
`joltc build -m NS -o OUT` compiles the app and every library into one
executable (the runtime + compiler are baked in). It loads the resolved
`:jolt/native` libs at startup, so an FFI app — sockets, SQLite — runs with no
jolt or Chez on the path.
`joltc build -m NS` compiles the app and every library into one executable (the
runtime + compiler are baked in). It loads the resolved `:jolt/native` libs at
startup, so an FFI app — sockets, SQLite — runs with no jolt or Chez on the path.
Output goes under the project's `target/`, cargo-style: `target/release/<project>`
by default and with `--opt`, `target/debug/<project>` with `--dev` (the
`<name>.build` scratch dir sits beside it). `-o PATH` overrides — absolute as-is,
relative against the project dir. Paths resolve against the project (`JOLT_PWD`),
not the CLI's cwd, since `bin/joltc` runs from the jolt repo.
`:jolt/build {:embed ["resources" …]}` bakes those directories' files into the
binary; `io/resource` serves them from the image with no files on disk. Resources