Commit graph

29 commits

Author SHA1 Message Date
eaee502e8c V2: WASI, -r flag, CI pipeline, examples & tests cleanup
Some checks failed
CI / build-test-release (pull_request) Failing after 44s
WASI / wasm32 target support
- Auto-detect /usr/share/wasi-sysroot on Linux when target starts_with("wasm32")
- Skip -march/-mtune for wasm (clang rejects them)
- Apply -fno-exceptions -fno-c++-static-destructors -mllvm -wasm-enable-sjlj
  -D_WASI_EMULATED_SIGNAL to wasm builds (compile + std PCM, kept in sync)
- .wasm output extension in expectedOutputFor and link command
- EnableWasiBrowserRuntime(cfg): opt-in helper that drops index.html +
  runtime.js next to the .wasm; runtime.js reads window.CRAFTER_WASM_URL
  set in the templated index.html so a single shim handles any output name

-r run flag in the CLI: build then exec the artifact (host targets only;
  rejects libraries; auto .exe/.wasm extension handling)

CI pipeline (.forgejo/workflows/ci.yaml)
- Triggers: PR/push to master + manual dispatch
- Single arch-latest container job: install deps, bootstrap, self-rebuild,
  run tests, cross-compile mingw, package both archives, upload artifacts
- Rolling 'latest' release published only on push/dispatch to master

mingw cross-compile from Linux now works end-to-end:
- ExternalDependency cache key includes target so per-target glslang builds
  don't collide; CMAKE_BUILD_TYPE=Release pinned (otherwise glslang appends
  'd' to lib names and breaks linking); cross-compile cmake flags
  (CMAKE_SYSTEM_NAME=Windows, CMAKE_*_COMPILER_TARGET=...)
- project.cpp accepts --target=<triple>; Linux-only -Wl,--export-dynamic
  and -ldl are gated; mingw glslang skips the standalone exe (its libgcc_eh
  link pulls pthread which mingw doesn't link by default)
- mingw compile uses -femulated-tls so std::__once_callable etc reference
  the same emutls symbols libstdc++ provides
- mingw link auto-adds -lstdc++exp -lpthread

GetCrafterBuildHome() exposed from the Platform module; LoadProject (Linux
+ Windows) now both use it instead of duplicating the resolution.

Examples reorg: hello-world, library, with-module, wasi, tests — each with
its own README. Tests reorg: per-test directory with inner/ fixture, no
shared tests/fixtures/ tree. New Wasi test verifies .wasm magic bytes.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 23:24:46 +02:00
cdfdb976c8 test runner, cross-target runners, lib/exe split
- subprocess-isolated test runner (replaces V1 dlopen-RunTest);
  Pass/Fail/Crash/Timeout/Skipped outcomes via :Test partition
- TestRunner abstraction with command templates: Local, Ssh,
  SshWin (cmd.exe-shell), QemuUser, FromEnv; probe-based skip
  when runner unreachable
- transitive PCM-path propagation in Build(); resolveImport
  walks deps recursively; depResults cache keyed by PcmDir()
  so per-target builds don't collide
- cfg.sysroot threaded through BuildStdPcm + base compile/link
  command (enables aarch64 cross via Arch Linux ARM rootfs)
- lib + exe split: project.cpp defines crafterBuildLib
  (LibraryStatic) + crafterBuildExe (Executable depending on
  it); build.sh produces lib/libcrafter-build.a alongside
  bin/crafter-build for downstream static-link consumers
- Windows DLL+launcher: CRAFTER_API macro, /EXPORT flag for
  project.dll's CrafterBuildProject; Crafter::Run as the real
  entry point with main.cpp as a thin wrapper
- 18 tests: HelloWorld/WithModule/Defines/CrossProjectModule/
  Diamond × (Linux + sshwin:winvm), plus Incremental,
  BuildError, Libraries, RunnerClassification, QemuUser,
  SshRunner, WindowsViaSsh, CrossArchAarch64
- single ./bin/crafter-build test runs everything; Windows
  variants skip gracefully if winvm SSH alias unreachable

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 22:32:19 +02:00
f13671b2be v2 nearly done 2026-04-27 07:04:42 +02:00
5e1fcd8590 V2 progress 2026-04-23 01:57:25 +02:00
698665215b additional file fix 2025-11-09 20:08:23 +01:00
f90881b03d wasm 2025-11-09 18:56:24 +01:00
f8fc3836dd README update 2025-11-03 17:00:23 +01:00
0eed272765 rewrite 2025-10-31 16:50:47 +01:00
42756cf75e update README.md 2025-06-10 00:10:48 +02:00
fc0659207a test 2
Some checks failed
Main / build (push) Has been cancelled
2025-03-30 00:08:07 +01:00
445ad96c26 Merge branch 'master' of https://forgejo.catcrafts.net/Catcrafts/Crafter.Build 2025-03-30 00:07:58 +01:00
063285df6b test 2025-03-30 00:07:39 +01:00
The-Mighty-Cat
856de70133
Update README.md 2025-03-29 22:39:08 +01:00
c19a287fe2 readme changes 2025-02-03 22:18:56 +01:00
30b4182771 readme changes 2025-02-03 22:11:27 +01:00
dc3865ba6d march, flags, and git dependencies 2025-02-03 22:06:54 +01:00
914992cba9 added additional_files 2025-01-02 02:53:39 +01:00
The-Mighty-Cat
bcaaea4834
Update README.md 2024-12-30 22:08:31 +01:00
The-Mighty-Cat
168a1f381b
Update README.md 2024-12-29 20:20:06 +01:00
The-Mighty-Cat
55dac8ca59
Update README.md 2024-12-29 20:18:51 +01:00
The-Mighty-Cat
02465c2690
Update README.md 2024-12-29 20:17:19 +01:00
The-Mighty-Cat
dd3832a697
Update README.md 2024-12-29 20:16:53 +01:00
c5d6aa532c fixed readme 2024-12-29 17:54:57 +01:00
The-Mighty-Cat
40c9ef257a
Update README.md 2024-12-29 03:32:38 +01:00
98a73c0443 added wasm64 support 2024-12-29 03:30:22 +01:00
2f2ea03546 added wasm32-unknown-wasi target support via the wasi-sdk 2024-12-29 03:13:14 +01:00
be39501c5b added libraries 2024-12-29 01:38:25 +01:00
fbc13a9897 improved CLI 2024-12-29 00:51:02 +01:00
The-Mighty-Cat
23b23399f2
Create README.md 2024-12-28 22:13:21 +01:00