build(cmake): clean up presets, add release/apple presets, cross-platform triplets
Rationalize the preset set to match the project's actual state (past M5): - Rename dev->skeleton (no-deps stub smoke), m1-dev->dev (default dev preset) - Drop m2-dev (cache-identical to m1-dev) - Add release preset (optimized + tests on, symbols kept) - Strip server-release binaries (-s linker flag) - Add apple-dev/apple-ios/apple-ios-sim scaffolding presets for XCFramework Add cmake/voicecat-toolchain.cmake wrapper that auto-resolves the vcpkg triplet from the host platform (x64-mingw-static/x64-linux/arm64-osx) so the main presets work on Windows/Linux/macOS without per-OS variants. Update all docs (building.md, CLAUDE.md, README.md, AGENTS.md, deployment.md, tech-stack.md, client READMEs) and stale preset-name references in code comments. No C++ behavior changes — the core was already portable.
This commit is contained in:
72
cmake/voicecat-toolchain.cmake
Normal file
72
cmake/voicecat-toolchain.cmake
Normal file
@@ -0,0 +1,72 @@
|
||||
# cmake/voicecat-toolchain.cmake — vcpkg toolchain wrapper with auto-triplet.
|
||||
#
|
||||
# Wraps vcpkg's toolchain to auto-resolve VCPKG_HOST_TRIPLET and VCPKG_TARGET_TRIPLET
|
||||
# from the host platform, so the main presets (dev, release, server-release) build on
|
||||
# Windows/MinGW, Linux, and macOS without per-OS preset variants.
|
||||
#
|
||||
# Triplet mapping (auto):
|
||||
# Windows → x64-mingw-static (the project's toolchain is MSYS2/UCRT64 — see
|
||||
# clients/windows/README.md; MSVC users must set
|
||||
# VCPKG_TARGET_TRIPLET=x64-windows explicitly)
|
||||
# Linux x64 → x64-linux
|
||||
# Linux arm64 → arm64-linux
|
||||
# macOS arm64 → arm64-osx (Apple Silicon)
|
||||
# macOS x64 → x64-osx (Intel)
|
||||
#
|
||||
# Cross-compile presets (apple-ios, apple-ios-sim) set VCPKG_TARGET_TRIPLET explicitly
|
||||
# in their cacheVariables; the DEFINED guards below preserve those. VCPKG_HOST_TRIPLET
|
||||
# is always the host's (e.g. arm64-osx when cross-compiling iOS on Apple Silicon).
|
||||
#
|
||||
# Requires VCPKG_ROOT in the environment (set by the inheriting preset).
|
||||
|
||||
# ── Host triplet (the platform running vcpkg / the build) ─────────────────────
|
||||
if(NOT DEFINED VCPKG_HOST_TRIPLET)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(_voicecat_host "x64-mingw-static")
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
||||
set(_voicecat_host "arm64-linux")
|
||||
else()
|
||||
set(_voicecat_host "x64-linux")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
||||
set(_voicecat_host "arm64-osx")
|
||||
else()
|
||||
set(_voicecat_host "x64-osx")
|
||||
endif()
|
||||
endif()
|
||||
if(_voicecat_host)
|
||||
set(VCPKG_HOST_TRIPLET "${_voicecat_host}" CACHE STRING "vcpkg host triplet (auto-resolved)")
|
||||
endif()
|
||||
unset(_voicecat_host)
|
||||
endif()
|
||||
|
||||
# ── Target triplet (the platform being built for) ─────────────────────────────
|
||||
# Auto-resolve only when not explicitly set. Cross-compile presets (apple-ios,
|
||||
# apple-ios-sim) set VCPKG_TARGET_TRIPLET in their cacheVariables; the DEFINED
|
||||
# guard preserves those so they win over the auto-detection.
|
||||
if(NOT DEFINED VCPKG_TARGET_TRIPLET)
|
||||
if(CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
|
||||
set(_voicecat_target "x64-mingw-static")
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
||||
set(_voicecat_target "arm64-linux")
|
||||
else()
|
||||
set(_voicecat_target "x64-linux")
|
||||
endif()
|
||||
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL "Darwin")
|
||||
if(CMAKE_HOST_SYSTEM_PROCESSOR MATCHES "aarch64|arm64")
|
||||
set(_voicecat_target "arm64-osx")
|
||||
else()
|
||||
set(_voicecat_target "x64-osx")
|
||||
endif()
|
||||
endif()
|
||||
if(_voicecat_target)
|
||||
set(VCPKG_TARGET_TRIPLET "${_voicecat_target}" CACHE STRING "vcpkg target triplet (auto-resolved)")
|
||||
endif()
|
||||
unset(_voicecat_target)
|
||||
endif()
|
||||
|
||||
# ── Hand off to the real vcpkg toolchain ──────────────────────────────────────
|
||||
include("$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake")
|
||||
Reference in New Issue
Block a user