From 6164db68dced67c1aa16ec8bb6831140df312797 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Wed, 21 Oct 2026 12:42:33 +0000 Subject: docs(agents): split ARCH.md into topic files under AGENTS/ARCH Co-Authored-By: Claude Sonnet 5.5 --- AGENTS/ARCH/DEPENDENCIES.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 AGENTS/ARCH/DEPENDENCIES.md (limited to 'AGENTS/ARCH/DEPENDENCIES.md') diff --git a/AGENTS/ARCH/DEPENDENCIES.md b/AGENTS/ARCH/DEPENDENCIES.md new file mode 100644 index 0000000..7a8b07f --- /dev/null +++ b/AGENTS/ARCH/DEPENDENCIES.md @@ -0,0 +1,34 @@ +# Build dependencies and toolchain + +`doc/build.md` recommends which packages to install and which to download; +CMake does not enforce that split. The modular `cmake/LocalDependencies.cmake` +entry point extracts Debian, MSYS2 and Homebrew binary packages from the build +directory's `deps/packages/` into `deps/root/`. Standard bin/lib/include layouts +under the build directory are also searched. The shared +`cmake/FindDependency.cmake` helper searches locally first, then the system, and +reports missing required dependencies. Compilers, make, LLVM, support libraries, +Pandoc, Git and installer/relocation tools use the same lookup policy. System-only +and mixed installations are supported. Local dependencies override cached system +paths except for supplied compilers. Cached or explicit CMake compiler paths and +initial CC/CXX selections are preserved and validated; default discovery prefers +clang-23/clang++-23, then unversioned clang/clang++. Build tools are resolved before +`project()` enables compiler checks; compiler information is refreshed when the +selected executable changes. +Platform modules relocate package paths only inside the extraction directory; +Homebrew bottles also receive local Cellar/opt links and Mach-O relocation/signing. +Package hashes skip unchanged extractions; a changed package set rebuilds the +managed root. Downloads belong to the explicit dependency commands and static LLD +helper in `doc/build.md`, not to CMake. The Windows Pandoc ZIP is downloaded directly from its official +release because MSYS2 has no Pandoc package. + + +Windows build instructions retain MSYS2 MINGW64. Its LLVM/Clang package names +and compiler executable names are unversioned; CMake still requires major 23. +The build guide explicitly selects `/mingw64/bin/clang.exe` and `clang++.exe` +through `cygpath -m`. MINGW64 retains the GNU C++ runtime; cpsc links with LLD. Switching to +CLANG64 would change the C/C++ runtime and is a separate task. + +Build pin: **LLVM 23 and upstream Clang 23** (any 23.x release); 23.1.3 is verified +on Linux. LLVM 23 uses `CreateGlobalString` for opaque string pointers, +`hasTerminator()` for block termination checks (its `getTerminator()` requires an +existing terminator), and an explicit `llvm::Triple` for the embedded target. -- cgit v1.3.1-4-g156e