CMake+CI: Use the same preset names on every platform

Starting with CMake 3.30 and CMakePresets version 9, the include field
supports interesting macro expansions. We can now define platform
specific presets in separate files and include them in the top-level
CMakePresets.json, while keeping the same preset names across all
platforms. This avoids some preset explosion at the cost of some mostly
empty json files for each unix platform.

The CMake minimum required in the top-level and Lagom CMakeLists.txt
have not been adjusted in this patch, as that would have the effect of
changing the default policy versions and is a bit out of scope.
This commit is contained in:
Andrew Kaster
2026-01-16 14:43:13 -07:00
committed by Andrew Kaster
parent 8eec7d4585
commit f71b909bed
Notes: github-actions[bot] 2026-01-17 19:19:38 +00:00
14 changed files with 364 additions and 339 deletions

View File

@@ -60,7 +60,7 @@ jobs:
- os_name: 'Windows' - os_name: 'Windows'
arch: 'x86_64' arch: 'x86_64'
build_preset: 'Windows_Experimental_Sanitizer' build_preset: 'Sanitizer'
toolchain: 'ClangCL' toolchain: 'ClangCL'
clang_plugins: false clang_plugins: false
runner_labels: '["blacksmith-16vcpu-windows-2025"]' runner_labels: '["blacksmith-16vcpu-windows-2025"]'

View File

@@ -193,7 +193,7 @@ jobs:
# === TEST === # === TEST ===
- name: Test - name: Test
if: ${{ contains(inputs.build_preset, 'Sanitizer') }} if: ${{ inputs.build_preset == 'Sanitizer' }}
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: ctest --preset ${{ inputs.build_preset }} --output-on-failure --test-dir Build --timeout 1800 run: ctest --preset ${{ inputs.build_preset }} --output-on-failure --test-dir Build --timeout 1800
env: env:
@@ -203,7 +203,7 @@ jobs:
UBSAN_OPTIONS: 'log_path="${{ github.workspace }}/ubsan.log"' UBSAN_OPTIONS: 'log_path="${{ github.workspace }}/ubsan.log"'
- name: Test - name: Test
if: ${{ inputs.build_preset != 'Fuzzers' && inputs.build_preset != 'All_Debug' && !contains(inputs.build_preset, 'Sanitizer') }} if: ${{ inputs.build_preset != 'Fuzzers' && inputs.build_preset != 'All_Debug' && inputs.build_preset != 'Sanitizer' }}
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: ctest --output-on-failure --test-dir Build --timeout 1800 run: ctest --output-on-failure --test-dir Build --timeout 1800
env: env:
@@ -219,7 +219,7 @@ jobs:
if-no-files-found: ignore if-no-files-found: ignore
- name: Sanitizer Output - name: Sanitizer Output
if: ${{ !cancelled() && inputs.build_preset == 'Sanitizer' }} if: ${{ !cancelled() && inputs.os_name != 'Windows' && inputs.build_preset == 'Sanitizer' }}
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
log_output=$(find . -maxdepth 1 \( -name 'asan.log.*' -o -name 'ubsan.log.*' \) -exec cat {} \; ) log_output=$(find . -maxdepth 1 \( -name 'asan.log.*' -o -name 'ubsan.log.*' \) -exec cat {} \; )

View File

@@ -63,7 +63,7 @@ jobs:
- os_name: 'Windows' - os_name: 'Windows'
arch: 'x86_64' arch: 'x86_64'
build_preset: 'Windows_Experimental_Sanitizer' build_preset: 'Sanitizer'
toolchain: 'ClangCL' toolchain: 'ClangCL'
clang_plugins: false clang_plugins: false
runner_labels: '["blacksmith-8vcpu-windows-2025"]' runner_labels: '["blacksmith-8vcpu-windows-2025"]'

View File

@@ -1,365 +1,63 @@
{ {
"version": 6, "version": 9,
"cmakeMinimumRequired": { "cmakeMinimumRequired": {
"major": 3, "major": 3,
"minor": 25, "minor": 30,
"patch": 0 "patch": 0
}, },
"configurePresets": [ "include": [
{ "Meta/CMake/presets/CMake${hostSystemName}Presets.json"
"hidden": true,
"name": "base",
"displayName": "Default Config",
"generator": "Ninja",
"binaryDir": "${fileDir}/Build/release",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"LADYBIRD_CACHE_DIR": "${fileDir}/Build/caches",
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"VCPKG_INSTALL_OPTIONS": "--no-print-usage",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/release-triplets"
},
"environment": {
"LADYBIRD_SOURCE_DIR": "${fileDir}",
"VCPKG_ROOT": "${fileDir}/Build/vcpkg",
"VCPKG_BINARY_SOURCES": "clear;files,${fileDir}/Build/caches/vcpkg-binary-cache,readwrite;$penv{VCPKG_BINARY_SOURCES}",
"X_VCPKG_ASSET_SOURCES": "clear;x-azurl,https://vcpkg-cache.app.ladybird.org/ladybird/source-assets/,$penv{VCPKG_CACHE_SAS},read$penv{VCPKG_CACHE_MODE}"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Default"
}
}
},
{
"hidden": true,
"name": "unix_base",
"inherits": "base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "windows_base",
"inherits": "base",
"description": "Visual Studio via Clang/LLVM Toolchain",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "Release",
"inherits": "unix_base",
"displayName": "Release Config",
"description": "Release Unix build"
},
{
"name": "Debug",
"inherits": "unix_base",
"displayName": "Debug Config",
"description": "Debug Unix build",
"binaryDir": "${fileDir}/Build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets"
}
},
{
"name": "All_Debug",
"inherits": "unix_base",
"displayName": "All Debug Config",
"description": "All Debug Unix build",
"binaryDir": "${fileDir}/Build/alldebug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets",
"ENABLE_ALL_THE_DEBUG_MACROS": "ON"
}
},
{
"name": "Windows_Experimental_Release",
"inherits": "windows_base",
"displayName": "Windows Experimental Release Config",
"description": "Experimental Windows Release build. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Windows_Experimental_Debug",
"inherits": "windows_base",
"displayName": "Windows Experimental Debug Config",
"description": "Experimental Windows Debug build. Not all targets in this preset are built and there is minimal runtime support",
"binaryDir": "${fileDir}/Build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets"
}
},
{
"name": "Distribution",
"inherits": "unix_base",
"displayName": "Distribution Config",
"description": "Distribution build with static libraries",
"binaryDir": "${fileDir}/Build/distribution",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/distribution-triplets"
}
},
{
"name": "Sanitizer",
"inherits": [
"unix_base",
"Release"
],
"displayName": "Sanitizer Config",
"description": "Sanitizer Unix build",
"binaryDir": "${fileDir}/Build/sanitizers",
"cacheVariables": {
"ENABLE_UNDEFINED_SANITIZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/sanitizer-triplets"
}
},
{
"name": "Windows_Experimental_Sanitizer",
"inherits": "windows_base",
"displayName": "Windows Experimental Sanitizer Config",
"description": "Experimental Windows Sanitizer build. Not all targets in this preset are built and there is minimal runtime support",
"binaryDir": "${fileDir}/Build/sanitizers",
"cacheVariables": {
"ENABLE_UNDEFINED_SANITIZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON",
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/sanitizer-triplets"
}
},
{
"name": "Fuzzers",
"inherits": "unix_base",
"displayName": "Fuzzers Config",
"description": "Fuzzers Unix build",
"binaryDir": "${fileDir}/Build/fuzzers",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"ENABLE_QT": "OFF",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/distribution-triplets",
"ENABLE_FUZZERS_LIBFUZZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON"
}
},
{
"name": "Swift_Release",
"inherits": "unix_base",
"displayName": "Swift Release Config",
"description": "Swift-enabled Unix release build",
"binaryDir": "${fileDir}/Build/swift",
"cacheVariables": {
"ENABLE_SWIFT": "ON",
"CMAKE_C_COMPILER": "MustBeSetManually",
"CMAKE_CXX_COMPILER": "MustBeSetManually++"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Swift"
}
}
}
], ],
"buildPresets": [ "buildPresets": [
{
"hidden": true,
"name": "base",
"targets": [
"all"
]
},
{
"hidden": true,
"name": "unix_base",
"inherits": "base",
"configurePreset": "unix_base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "windows_base",
"inherits": "base",
"configurePreset": "windows_base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{ {
"name": "Release", "name": "Release",
"inherits": "unix_base", "inherits": "base",
"configurePreset": "Release", "configurePreset": "Release",
"displayName": "Release Build", "displayName": "Release Build",
"description": "Build the project in release on Unix" "description": "Build the project in release"
}, },
{ {
"name": "Debug", "name": "Debug",
"inherits": "unix_base", "inherits": "base",
"configurePreset": "Debug", "configurePreset": "Debug",
"displayName": "Debug Build", "displayName": "Debug Build",
"description": "Build the project in debug on Unix" "description": "Build the project in debug"
},
{
"name": "Windows_Experimental_Release",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental_Release",
"displayName": "Windows Experimental Release Build",
"description": "Build the project in release on Windows. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Windows_Experimental_Debug",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental_Debug",
"displayName": "Windows Experimental Debug Build",
"description": "Build the project in debug on Windows. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Distribution",
"inherits": "unix_base",
"configurePreset": "Distribution",
"displayName": "Distribution Build",
"description": "Build the project for distribution on Unix"
}, },
{ {
"name": "Sanitizer", "name": "Sanitizer",
"inherits": "unix_base", "inherits": "base",
"configurePreset": "Sanitizer", "configurePreset": "Sanitizer",
"displayName": "Sanitizer Build", "displayName": "Sanitizer Build",
"description": "Build the project with Sanitizers on Unix" "description": "Build the project with Sanitizers on Unix"
},
{
"name": "Windows_Experimental_Sanitizer",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental_Sanitizer",
"displayName": "Windows Experimental Sanitizer Build",
"description": "Build the project with Sanitizers on Windows. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Swift_Release",
"inherits": "unix_base",
"configurePreset": "Swift_Release",
"displayName": "Swift Release Build",
"description": "Build the project for Swift release on Unix"
} }
], ],
"testPresets": [ "testPresets": [
{ {
"hidden": true, "hidden": true,
"name": "base", "name": "root_base",
"output": { "inherits": "base",
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": true
},
"environment": { "environment": {
"LADYBIRD_SOURCE_DIR": "${fileDir}" "LADYBIRD_SOURCE_DIR": "${fileDir}"
} }
}, },
{
"hidden": true,
"name": "windows_base",
"configurePreset": "windows_base",
"inherits": "base",
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "unix_base",
"configurePreset": "unix_base",
"inherits": "base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "sanitizer_base",
"environment": {
"ASAN_OPTIONS": "strict_string_checks=1:check_initialization_order=1:strict_init_order=1:detect_stack_use_after_return=1:allocator_may_return_null=1:$penv{ASAN_OPTIONS}",
"UBSAN_OPTIONS": "print_stacktrace=1:print_summary=1:halt_on_error=1:$penv{UBSAN_OPTIONS}"
}
},
{ {
"name": "Release", "name": "Release",
"inherits": "unix_base", "inherits": "root_base",
"configurePreset": "Release" "configurePreset": "Release"
}, },
{ {
"name": "Debug", "name": "Debug",
"inherits": "unix_base", "inherits": "root_base",
"configurePreset": "Debug" "configurePreset": "Debug"
}, },
{
"name": "Windows_Experimental_Release",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental_Release"
},
{
"name": "Windows_Experimental_Debug",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental_Debug"
},
{
"name": "Distribution",
"inherits": "unix_base",
"configurePreset": "Distribution"
},
{ {
"name": "Sanitizer", "name": "Sanitizer",
"inherits": [ "inherits": "root_base",
"unix_base", "configurePreset": "Sanitizer",
"sanitizer_base" "environment": {
], "ASAN_OPTIONS": "strict_string_checks=1:check_initialization_order=1:strict_init_order=1:detect_stack_use_after_return=1:allocator_may_return_null=1:$penv{ASAN_OPTIONS}",
"configurePreset": "Sanitizer" "UBSAN_OPTIONS": "print_stacktrace=1:print_summary=1:halt_on_error=1:$penv{UBSAN_OPTIONS}"
}, }
{
"name": "Windows_Experimental_Sanitizer",
"inherits": [
"windows_base",
"sanitizer_base"
],
"configurePreset": "Windows_Experimental_Sanitizer"
},
{
"name": "Swift_Release",
"inherits": "unix_base",
"configurePreset": "Swift_Release"
} }
] ]
} }

View File

@@ -7,7 +7,7 @@ Qt6 development packages, nasm, additional build tools, and a C++23 capable comp
We currently use gcc-14 and clang-20 in our CI pipeline. If these versions are not available on your system, see We currently use gcc-14 and clang-20 in our CI pipeline. If these versions are not available on your system, see
[`Meta/find_compiler.py`](../Meta/find_compiler.py) for the minimum compatible version. [`Meta/find_compiler.py`](../Meta/find_compiler.py) for the minimum compatible version.
CMake 3.25 or newer must be available in $PATH. CMake 3.30 or newer must be available in $PATH.
--- ---
@@ -18,9 +18,9 @@ CMake 3.25 or newer must be available in $PATH.
sudo apt install autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 git libdrm-dev libgl1-mesa-dev libtool nasm ninja-build pkg-config python3-venv qt6-base-dev qt6-tools-dev-tools qt6-wayland tar unzip zip sudo apt install autoconf autoconf-archive automake build-essential ccache cmake curl fonts-liberation2 git libdrm-dev libgl1-mesa-dev libtool nasm ninja-build pkg-config python3-venv qt6-base-dev qt6-tools-dev-tools qt6-wayland tar unzip zip
``` ```
#### CMake 3.25 or newer: #### CMake 3.30 or newer:
- Recommendation: Install `CMake 3.25` or newer from [Kitware's apt repository](https://apt.kitware.com/): - Recommendation: Install `CMake 3.30` or newer from [Kitware's apt repository](https://apt.kitware.com/):
> [!NOTE] > [!NOTE]
> This repository is Ubuntu-only > This repository is Ubuntu-only

View File

@@ -6,7 +6,7 @@ In case of an error, you might find an answer of how to deal with it here.
### CMake fails to configure the build because it's outdated ### CMake fails to configure the build because it's outdated
Ensure your CMake version is >= 3.25 with `cmake --version`. If your system doesn't provide a suitable Ensure your CMake version is >= 3.30 with `cmake --version`. If your system doesn't provide a suitable
version of CMake, you can download a binary release from the [CMake website](https://cmake.org/download). version of CMake, you can download a binary release from the [CMake website](https://cmake.org/download).
### GCC is missing or is outdated ### GCC is missing or is outdated

View File

@@ -0,0 +1,152 @@
{
"version": 6,
"configurePresets": [
{
"hidden": true,
"name": "base",
"displayName": "Default Config",
"generator": "Ninja",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/release",
"cacheVariables": {
"LADYBIRD_CACHE_DIR": "$env{LADYBIRD_SOURCE_DIR}/Build/caches",
"CMAKE_TOOLCHAIN_FILE": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake",
"VCPKG_INSTALL_OPTIONS": "--no-print-usage"
},
"environment": {
"LADYBIRD_SOURCE_DIR": "${fileDir}/../../..",
"VCPKG_ROOT": "$env{LADYBIRD_SOURCE_DIR}/Build/vcpkg",
"VCPKG_BINARY_SOURCES": "clear;files,$env{LADYBIRD_SOURCE_DIR}/Build/caches/vcpkg-binary-cache,readwrite;$penv{VCPKG_BINARY_SOURCES}",
"X_VCPKG_ASSET_SOURCES": "clear;x-azurl,https://vcpkg-cache.app.ladybird.org/ladybird/source-assets/,$penv{VCPKG_CACHE_SAS},read$penv{VCPKG_CACHE_MODE}"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Default"
}
}
},
{
"hidden": true,
"name": "Release_base",
"inherits": "base",
"displayName": "Release Config",
"description": "Release build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/release-triplets"
}
},
{
"hidden": true,
"name": "Debug_base",
"inherits": "base",
"displayName": "Debug Config",
"description": "Debug build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/debug-triplets"
}
},
{
"hidden": true,
"name": "Sanitizer_base",
"inherits": "base",
"displayName": "Sanitizer Config",
"description": "Sanitizer build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/sanitizers",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"ENABLE_UNDEFINED_SANITIZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/sanitizer-triplets"
}
},
{
"hidden": true,
"name": "All_Debug_base",
"inherits": "base",
"displayName": "All Debug Config",
"description": "All Debug build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/alldebug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/debug-triplets",
"ENABLE_ALL_THE_DEBUG_MACROS": "ON"
}
},
{
"hidden": true,
"name": "Distribution_base",
"inherits": "base",
"displayName": "Distribution Config",
"description": "Distribution build with static libraries",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/distribution",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/distribution-triplets"
}
},
{
"hidden": true,
"name": "Fuzzers_base",
"inherits": "base",
"displayName": "Fuzzers Config",
"description": "Fuzzers build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/fuzzers",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"ENABLE_QT": "OFF",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/distribution-triplets",
"ENABLE_FUZZERS_LIBFUZZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON"
}
},
{
"hidden": true,
"name": "Swift_Release_base",
"inherits": "base",
"displayName": "Swift Release Config",
"description": "Swift-enabled release build",
"binaryDir": "$env{LADYBIRD_SOURCE_DIR}/Build/swift",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"VCPKG_OVERLAY_TRIPLETS": "$env{LADYBIRD_SOURCE_DIR}/Meta/CMake/vcpkg/release-triplets",
"ENABLE_SWIFT": "ON",
"CMAKE_C_COMPILER": "MustBeSetManually",
"CMAKE_CXX_COMPILER": "MustBeSetManually++"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Swift"
}
}
}
],
"buildPresets": [
{
"hidden": true,
"name": "base",
"targets": [
"all"
]
}
],
"testPresets": [
{
"hidden": true,
"name": "base",
"output": {
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": true
},
"environment": {
"LADYBIRD_SOURCE_DIR": "${fileDir}/../../.."
}
}
]
}

View File

@@ -0,0 +1,6 @@
{
"version": 6,
"include": [
"CMakeUnixPresets.json"
]
}

View File

@@ -0,0 +1,6 @@
{
"version": 6,
"include": [
"CMakeUnixPresets.json"
]
}

View File

@@ -0,0 +1,6 @@
{
"version": 6,
"include": [
"CMakeUnixPresets.json"
]
}

View File

@@ -0,0 +1,6 @@
{
"version": 6,
"include": [
"CMakeUnixPresets.json"
]
}

View File

@@ -0,0 +1,95 @@
{
"version": 6,
"include": [
"CMakeBasePresets.json"
],
"configurePresets": [
{
"hidden": true,
"name": "unix_base",
"inherits": "base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "Release",
"inherits": [
"unix_base",
"Release_base"
]
},
{
"name": "Debug",
"inherits": [
"unix_base",
"Debug_base"
]
},
{
"name": "Sanitizer",
"inherits": [
"unix_base",
"Sanitizer_base"
]
},
{
"name": "Distribution",
"inherits": [
"unix_base",
"Distribution_base"
]
},
{
"name": "Fuzzers",
"inherits": [
"unix_base",
"Fuzzers_base"
]
},
{
"name": "All_Debug",
"inherits": [
"unix_base",
"All_Debug_base"
]
},
{
"name": "Swift_Release",
"inherits": [
"unix_base",
"Swift_Release_base"
]
}
],
"buildPresets": [
{
"name": "Distribution",
"inherits": "base",
"configurePreset": "Distribution",
"displayName": "Distribution Build",
"description": "Build the project for distribution"
},
{
"name": "Swift_Release",
"inherits": "base",
"configurePreset": "Swift_Release",
"displayName": "Swift Release Build",
"description": "Build the project for Swift release on Unix"
}
],
"testPresets": [
{
"name": "Distribution",
"inherits": "base",
"configurePreset": "Distribution"
},
{
"name": "Swift_Release",
"inherits": "base",
"configurePreset": "Swift_Release"
}
]
}

View File

@@ -0,0 +1,62 @@
{
"version": 6,
"include": [
"CMakeBasePresets.json"
],
"configurePresets": [
{
"hidden": true,
"name": "windows_base",
"inherits": "base",
"description": "Visual Studio via Clang/LLVM Toolchain",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "Release",
"inherits": [
"windows_base",
"Release_base"
],
"displayName": "Windows Experimental Release Config",
"description": "Experimental Windows Release build. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Debug",
"inherits": [
"windows_base",
"Debug_base"
],
"displayName": "Windows Experimental Debug Config",
"description": "Experimental Windows Debug build. Not all targets in this preset are built and there is minimal runtime support"
},
{
"name": "Sanitizer",
"inherits": [
"windows_base",
"Sanitizer_base"
],
"displayName": "Windows Experimental Sanitizer Config",
"description": "Experimental Windows Sanitizer build. Not all targets in this preset are built and there is minimal runtime support",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
}
]
}

View File

@@ -37,9 +37,7 @@ def main():
preset_parser.add_argument( preset_parser.add_argument(
"--preset", "--preset",
required=False, required=False,
default=os.environ.get( default=os.environ.get("BUILD_PRESET", "Release"),
"BUILD_PRESET", "Windows_Experimental_Release" if platform.host_system == HostSystem.Windows else "Release"
),
) )
compiler_parser = argparse.ArgumentParser(add_help=False) compiler_parser = argparse.ArgumentParser(add_help=False)
@@ -276,9 +274,6 @@ def configure_build_env(platform: Platform, preset: str) -> tuple[Path, Path]:
"Release": build_root_dir / "release", "Release": build_root_dir / "release",
"Sanitizer": build_root_dir / "sanitizers", "Sanitizer": build_root_dir / "sanitizers",
"Swift_Release": build_root_dir / "swift", "Swift_Release": build_root_dir / "swift",
"Windows_Experimental_Debug": build_root_dir / "debug",
"Windows_Experimental_Release": build_root_dir / "release",
"Windows_Experimental_Sanitizer": build_root_dir / "sanitizers",
} }
build_preset_dir = known_presets.get(preset, None) build_preset_dir = known_presets.get(preset, None)
@@ -300,8 +295,7 @@ def configure_build_env(platform: Platform, preset: str) -> tuple[Path, Path]:
def validate_cmake_version(): def validate_cmake_version():
# FIXME: This 3.25+ CMake version check may not be needed anymore due to vcpkg downloading a newer version cmake_install_message = "Please install CMake version 3.30 or newer."
cmake_install_message = "Please install CMake version 3.25 or newer."
cmake_version_output = run_command(["cmake", "--version"], return_output=True, exit_on_failure=True) cmake_version_output = run_command(["cmake", "--version"], return_output=True, exit_on_failure=True)
assert cmake_version_output assert cmake_version_output
@@ -315,7 +309,7 @@ def validate_cmake_version():
minor = int(version_match.group(2)) minor = int(version_match.group(2))
patch = int(version_match.group(3)) patch = int(version_match.group(3))
if major < 3 or (major == 3 and minor < 25): if major < 3 or (major == 3 and minor < 30):
print(f"CMake version {major}.{minor}.{patch} is too old. {cmake_install_message}", file=sys.stderr) print(f"CMake version {major}.{minor}.{patch} is too old. {cmake_install_message}", file=sys.stderr)
sys.exit(1) sys.exit(1)