This guide defines the supported installation and validation paths for the current CCT toolchain, including the historical host-compiler installation flow, the promoted self-hosted wrapper model, and the validated release-facing baseline through FASE 40.
- POSIX shell environment
- C compiler (
gccorclang) make
Platform note:
- Linux and macOS are the supported validation targets for the current toolchain.
- The current repository baseline is working and tested on Linux.
- Native Windows usage is not fully addressed and should be treated as experimental.
- Known Windows issues remain in shell/process behavior, path semantics, packaging, and some runtime-backed workflows.
- If you need a stable installation path, use Linux, macOS, or WSL2 rather than native Windows.
Current release note:
- validated baseline: FASE 40
- immediate publication target:
v0.40
makeExpected result: ./cct binary available in project root.
make testExpected result: all tests pass.
make distExpected layout:
dist/cct/
├── bin/
│ ├── cct
│ └── cct.bin
├── lib/
│ └── cct/
├── docs/
└── examples/
dist/cct/bin/cct is a wrapper that sets CCT_STDLIB_DIR to the bundle-local stdlib path by default.
./dist/cct/bin/cct --version
./dist/cct/bin/cct --check tests/integration/stdlib_resolution_basic_11a.cct
./dist/cct/bin/cct tests/integration/showcase_string_11g.cct && ./tests/integration/showcase_string_11gInstall under default prefix (/usr/local):
make installInstall under custom prefix:
make install PREFIX="$HOME/.local"This installs:
- wrapper:
<prefix>/bin/cct - binary:
<prefix>/bin/cct.bin - stdlib:
<prefix>/lib/cct/
make uninstallOr with custom prefix:
make uninstall PREFIX="$HOME/.local"If needed, stdlib resolution can be overridden explicitly:
export CCT_STDLIB_DIR=/path/to/lib/cct
./cct --check file.cctResolver order:
CCT_STDLIB_DIRenvironment variable (if set)- build-time canonical stdlib path
ADVOCARE target not found in Bibliotheca Canonica:- check
CCT_STDLIB_DIR - verify
<stdlib>/cct/<module>.cctexists
- check
Input file must have .cct extension:- ensure positional file ends with
.cct
- ensure positional file ends with
- packaging smoke fails:
- rebuild with
makethenmake dist
- rebuild with
- Windows-specific failures:
- do not assume parity with Linux/macOS
- prefer WSL2 first
- if native Windows is required, expect unsupported gaps and partial failures in some workflows
Additional repository-level validation targets now exist beyond the historical baseline:
make test-legacy-full
make test-legacy-rebased
make test-all-0-30
make test-all-0-31
make test-bootstrap
make test-bootstrap-selfhost
make test-phase30-final
make test-phase31-finalFor publication or release validation, use:
make test-all-0-31The repository also exposes explicit self-host stages:
make bootstrap-stage0
make bootstrap-stage1
make bootstrap-stage2
make bootstrap-stage-identityThese targets remain part of the supported operational toolchain after bootstrap closure and compiler promotion.
After a fresh build, verify the wrapper state explicitly:
./cct --which-compiler
./cct-host --which-compiler
./cct-selfhost --which-compilerCurrent repository baseline:
./cctis the default user-facing compiler entrypoint./cct-hostis the explicit host fallback./cct-selfhostis the explicit self-hosted entrypoint- the repository baseline is validated through FASE 40
- Linux is part of the tested baseline
If you want to force the default wrapper mode explicitly after install:
make bootstrap-promote
# or
make bootstrap-demoteIn bundled or installed layouts, the user should still call cct first. FASE 31 changes the compiler mode behind that wrapper, not the top-level command name users are expected to memorize.
Wrapper roles in installed layouts:
cct: default operational wrappercct-host: explicit host path where installed or packagedcct-selfhost: explicit self-host path where installed or packaged
Daily validation after installation:
./cct --which-compiler
make bootstrap-stage-identity
make testRelease-oriented validation after installation:
make test-host-legacy
make test-all-0-31
make test-phase30-final
make test-phase31-finalFor the current release baseline, interpret this sequence as the minimum public-release validation path before publishing v0.40.