Files
yaze/CMakePresets.json
scawful 25a0fb6d3a chore: add Windows build presets and configurations to CMake
- Introduced multiple new CMake presets for Windows, including base presets for Ninja and Visual Studio generators, as well as specific configurations for Debug, Release, and Development builds.
- Added ARM64 support and various build options for AI development and z3ed CLI.
- Enhanced the build system's flexibility by allowing users to select from a range of configurations tailored for different development needs.

Benefits:
- Streamlines the build process for Windows environments, improving usability for developers.
- Provides comprehensive support for various build types and architectures, enhancing the overall development experience.
2025-11-01 11:07:02 -04:00

485 lines
13 KiB
JSON

{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 16,
"patch": 0
},
"configurePresets": [
{
"name": "base",
"hidden": true,
"description": "Base preset with common settings",
"binaryDir": "${sourceDir}/build",
"generator": "Ninja Multi-Config",
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"YAZE_BUILD_APP": "ON",
"YAZE_BUILD_LIB": "ON",
"YAZE_BUILD_EMU": "ON",
"YAZE_BUILD_CLI": "ON"
}
},
{
"name": "windows-base",
"hidden": true,
"description": "Base Windows preset with MSVC/clang-cl support",
"binaryDir": "${sourceDir}/build",
"generator": "Ninja Multi-Config",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$<CONFIG:Debug>:Debug>",
"YAZE_BUILD_APP": "ON",
"YAZE_BUILD_LIB": "ON",
"YAZE_BUILD_EMU": "ON",
"YAZE_BUILD_CLI": "ON",
"YAZE_SUPPRESS_WARNINGS": "ON"
},
"architecture": {
"value": "x64",
"strategy": "external"
}
},
{
"name": "windows-vs-base",
"hidden": true,
"description": "Base Windows preset for Visual Studio Generator",
"binaryDir": "${sourceDir}/build",
"generator": "Visual Studio 17 2022",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
},
"cacheVariables": {
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
"CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded$<$<CONFIG:Debug>:Debug>",
"YAZE_BUILD_APP": "ON",
"YAZE_BUILD_LIB": "ON",
"YAZE_BUILD_EMU": "ON",
"YAZE_BUILD_CLI": "ON",
"YAZE_SUPPRESS_WARNINGS": "ON"
},
"architecture": {
"value": "x64",
"strategy": "set"
}
},
{
"name": "dev",
"inherits": "base",
"displayName": "Developer Build",
"description": "Full development build with all features",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON",
"YAZE_ENABLE_ROM_TESTS": "ON"
}
},
{
"name": "ci",
"inherits": "base",
"displayName": "CI Build",
"description": "Continuous integration build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON",
"YAZE_ENABLE_ROM_TESTS": "OFF",
"YAZE_MINIMAL_BUILD": "OFF"
}
},
{
"name": "release",
"inherits": "base",
"displayName": "Release Build",
"description": "Optimized release build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"YAZE_BUILD_TESTS": "OFF",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON",
"YAZE_ENABLE_LTO": "ON"
}
},
{
"name": "minimal",
"inherits": "base",
"displayName": "Minimal Build",
"description": "Minimal build for CI (no gRPC/AI)",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_MINIMAL_BUILD": "ON"
}
},
{
"name": "coverage",
"inherits": "dev",
"displayName": "Coverage Build",
"description": "Debug build with code coverage",
"cacheVariables": {
"YAZE_ENABLE_COVERAGE": "ON",
"CMAKE_CXX_FLAGS": "--coverage -g -O0",
"CMAKE_C_FLAGS": "--coverage -g -O0",
"CMAKE_EXE_LINKER_FLAGS": "--coverage"
}
},
{
"name": "sanitizer",
"inherits": "dev",
"displayName": "Sanitizer Build",
"description": "Debug build with AddressSanitizer",
"cacheVariables": {
"YAZE_ENABLE_SANITIZERS": "ON",
"CMAKE_CXX_FLAGS": "-fsanitize=address -fno-omit-frame-pointer -g",
"CMAKE_C_FLAGS": "-fsanitize=address -fno-omit-frame-pointer -g",
"CMAKE_EXE_LINKER_FLAGS": "-fsanitize=address"
}
},
{
"name": "verbose",
"inherits": "dev",
"displayName": "Verbose Build",
"description": "Development build with all warnings",
"cacheVariables": {
"YAZE_SUPPRESS_WARNINGS": "OFF"
}
},
{
"name": "win-dbg",
"inherits": "windows-base",
"displayName": "Windows Debug (Ninja)",
"description": "Debug build for Windows with Ninja generator",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF"
}
},
{
"name": "win-dbg-v",
"inherits": "win-dbg",
"displayName": "Windows Debug Verbose",
"description": "Debug build with verbose warnings",
"cacheVariables": {
"YAZE_SUPPRESS_WARNINGS": "OFF"
}
},
{
"name": "win-rel",
"inherits": "windows-base",
"displayName": "Windows Release (Ninja)",
"description": "Release build for Windows with Ninja generator",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"YAZE_BUILD_TESTS": "OFF",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_LTO": "ON"
}
},
{
"name": "win-dev",
"inherits": "windows-base",
"displayName": "Windows Development",
"description": "Development build with ROM tests",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_ROM_TESTS": "ON"
}
},
{
"name": "win-ai",
"inherits": "windows-base",
"displayName": "Windows AI Development",
"description": "Full development build with AI features and gRPC",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON",
"YAZE_ENABLE_ROM_TESTS": "ON"
}
},
{
"name": "win-z3ed",
"inherits": "windows-base",
"displayName": "Windows z3ed CLI",
"description": "z3ed CLI with AI agent support",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"YAZE_BUILD_TESTS": "OFF",
"YAZE_BUILD_CLI": "ON",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON"
}
},
{
"name": "win-arm",
"inherits": "windows-base",
"displayName": "Windows ARM64 Debug",
"description": "Debug build for Windows ARM64",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF"
},
"architecture": {
"value": "ARM64",
"strategy": "external"
}
},
{
"name": "win-arm-rel",
"inherits": "win-arm",
"displayName": "Windows ARM64 Release",
"description": "Release build for Windows ARM64",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"YAZE_BUILD_TESTS": "OFF",
"YAZE_ENABLE_LTO": "ON"
}
},
{
"name": "win-vs-dbg",
"inherits": "windows-vs-base",
"displayName": "Windows Debug (Visual Studio)",
"description": "Debug build for Visual Studio IDE",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF"
}
},
{
"name": "win-vs-rel",
"inherits": "windows-vs-base",
"displayName": "Windows Release (Visual Studio)",
"description": "Release build for Visual Studio IDE",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release",
"YAZE_BUILD_TESTS": "OFF",
"YAZE_ENABLE_GRPC": "OFF",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "OFF",
"YAZE_ENABLE_LTO": "ON"
}
},
{
"name": "win-vs-ai",
"inherits": "windows-vs-base",
"displayName": "Windows AI Development (Visual Studio)",
"description": "Full development build with AI features for Visual Studio",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"YAZE_BUILD_TESTS": "ON",
"YAZE_ENABLE_GRPC": "ON",
"YAZE_ENABLE_JSON": "ON",
"YAZE_ENABLE_AI": "ON",
"YAZE_ENABLE_ROM_TESTS": "ON"
}
}
],
"buildPresets": [
{
"name": "dev",
"configurePreset": "dev",
"displayName": "Developer Build",
"jobs": 12
},
{
"name": "ci",
"configurePreset": "ci",
"displayName": "CI Build",
"jobs": 12
},
{
"name": "release",
"configurePreset": "release",
"displayName": "Release Build",
"jobs": 12
},
{
"name": "minimal",
"configurePreset": "minimal",
"displayName": "Minimal Build",
"jobs": 12
},
{
"name": "coverage",
"configurePreset": "coverage",
"displayName": "Coverage Build",
"jobs": 12
},
{
"name": "sanitizer",
"configurePreset": "sanitizer",
"displayName": "Sanitizer Build",
"jobs": 12
},
{
"name": "verbose",
"configurePreset": "verbose",
"displayName": "Verbose Build",
"jobs": 12
},
{
"name": "win-dbg",
"configurePreset": "win-dbg",
"displayName": "Windows Debug Build",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-dbg-v",
"configurePreset": "win-dbg-v",
"displayName": "Windows Debug Verbose Build",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-rel",
"configurePreset": "win-rel",
"displayName": "Windows Release Build",
"configuration": "Release",
"jobs": 12
},
{
"name": "win-dev",
"configurePreset": "win-dev",
"displayName": "Windows Development Build",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-ai",
"configurePreset": "win-ai",
"displayName": "Windows AI Development Build",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-z3ed",
"configurePreset": "win-z3ed",
"displayName": "Windows z3ed CLI Build",
"configuration": "Release",
"jobs": 12
},
{
"name": "win-arm",
"configurePreset": "win-arm",
"displayName": "Windows ARM64 Debug Build",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-arm-rel",
"configurePreset": "win-arm-rel",
"displayName": "Windows ARM64 Release Build",
"configuration": "Release",
"jobs": 12
},
{
"name": "win-vs-dbg",
"configurePreset": "win-vs-dbg",
"displayName": "Windows Debug Build (Visual Studio)",
"configuration": "Debug",
"jobs": 12
},
{
"name": "win-vs-rel",
"configurePreset": "win-vs-rel",
"displayName": "Windows Release Build (Visual Studio)",
"configuration": "Release",
"jobs": 12
},
{
"name": "win-vs-ai",
"configurePreset": "win-vs-ai",
"displayName": "Windows AI Development Build (Visual Studio)",
"configuration": "Debug",
"jobs": 12
}
],
"testPresets": [
{
"name": "all",
"configurePreset": "dev",
"displayName": "All Tests",
"description": "Run all tests including ROM-dependent tests"
},
{
"name": "stable",
"configurePreset": "ci",
"displayName": "Stable Tests",
"description": "Run stable tests only (no ROM dependency)",
"filter": {
"include": {
"label": "stable"
}
}
},
{
"name": "unit",
"configurePreset": "ci",
"displayName": "Unit Tests",
"description": "Run unit tests only",
"filter": {
"include": {
"label": "unit"
}
}
},
{
"name": "integration",
"configurePreset": "ci",
"displayName": "Integration Tests",
"description": "Run integration tests only",
"filter": {
"include": {
"label": "integration"
}
}
}
],
"packagePresets": [
{
"name": "release",
"configurePreset": "release",
"displayName": "Release Package"
},
{
"name": "minimal",
"configurePreset": "minimal",
"displayName": "Minimal Package"
}
]
}