CMake: Simplify preset structure for Windows
Some checks are pending
CI / macOS, arm64, Sanitizer_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, Clang (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

As we now are only officially supporting the Ninja generator for
Windows, the old preset structure can now be simplified. Also, we
now follow the naming conventions of the non-hidden presets.
This commit is contained in:
ayeteadoe 2025-05-30 23:21:46 -07:00 committed by Andrew Kaster
commit f2a10bda32
Notes: github-actions[bot] 2025-06-10 17:30:35 +00:00
3 changed files with 136 additions and 158 deletions

View file

@ -45,19 +45,19 @@ jobs:
os: Windows os: Windows
arch: x86_64 arch: x86_64
toolchain: ClangCL toolchain: ClangCL
cache_key_extra: windows_ci_ninja cache_key_extra: Windows_CI
download_cache_path: ${{ github.workspace }}/Build/caches download_cache_path: ${{ github.workspace }}/Build/caches
vcpkg_cache_path: ${{ github.workspace }}/Build/caches/vcpkg-binary-cache vcpkg_cache_path: ${{ github.workspace }}/Build/caches/vcpkg-binary-cache
- name: Create Build Environment - name: Create Build Environment
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
cmake --preset windows_ci_ninja cmake --preset Windows_CI
- name: Build - name: Build
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: | run: |
cmake --build --preset windows_ci_ninja cmake --build --preset Windows_CI
- name: Save Caches - name: Save Caches
uses: ./.github/actions/cache-save uses: ./.github/actions/cache-save
@ -69,6 +69,6 @@ jobs:
- name: Test - name: Test
working-directory: ${{ github.workspace }} working-directory: ${{ github.workspace }}
run: ctest --preset windows_ci_ninja --timeout 1800 run: ctest --preset Windows_CI --timeout 1800
env: env:
TESTS_ONLY: 1 TESTS_ONLY: 1

View file

@ -8,8 +8,9 @@
"configurePresets": [ "configurePresets": [
{ {
"hidden": true, "hidden": true,
"name": "default_base", "name": "base",
"displayName": "Default Config", "displayName": "Default Config",
"generator": "Ninja",
"binaryDir": "${fileDir}/Build/release", "binaryDir": "${fileDir}/Build/release",
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo", "CMAKE_BUILD_TYPE": "RelWithDebInfo",
@ -31,13 +32,26 @@
}, },
{ {
"hidden": true, "hidden": true,
"name": "windows", "name": "unix_base",
"description": "Visual Studio IDE config (experimental)", "inherits": "base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "windows_base",
"inherits": "base",
"description": "Visual Studio via Clang/LLVM Toolchain",
"architecture": { "architecture": {
"value": "x64", "value": "x64",
"strategy": "external" "strategy": "external"
}, },
"cacheVariables": { "cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl",
"ENABLE_QT": "OFF", "ENABLE_QT": "OFF",
"ENABLE_GUI_TARGETS": "OFF" "ENABLE_GUI_TARGETS": "OFF"
}, },
@ -53,73 +67,37 @@
} }
}, },
{ {
"hidden": true, "name": "Release",
"name": "windows_ci", "inherits": "unix_base",
"binaryDir": "${fileDir}/Build/release", "displayName": "Release Config"
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"ENABLE_WINDOWS_CI": "ON"
}
}, },
{ {
"hidden": true, "name": "Debug",
"name": "windows_dev", "inherits": "unix_base",
"displayName": "Debug Config",
"binaryDir": "${fileDir}/Build/debug", "binaryDir": "${fileDir}/Build/debug",
"cacheVariables": { "cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug", "CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets"
}
},
{
"name": "Windows_Experimental",
"inherits": "windows_base",
"displayName": "Windows Experimental Config",
"description": "Experimental windows configuration that builds all targets, allowing for gradual increase in support",
"binaryDir": "${fileDir}/Build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets",
"ENABLE_WINDOWS_CI": "OFF" "ENABLE_WINDOWS_CI": "OFF"
} }
}, },
{
"name": "default",
"description": "Default build using Ninja generator",
"generator": "Ninja",
"inherits": "default_base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"hidden": true,
"name": "windows_ninja",
"inherits": [
"default_base",
"windows"
],
"generator": "Ninja",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
}
},
{
"hidden": false,
"name": "windows_ci_ninja",
"displayName": "Windows Continuous Integration (ClangCL and Ninja)",
"description": "Windows continuous integration build using Ninja (experimental)",
"inherits": [
"windows_ninja",
"windows_ci"
]
},
{
"hidden": false,
"name": "windows_dev_ninja",
"displayName": "Windows Development (ClangCL and Ninja)",
"description": "Windows development build using Ninja (experimental)",
"inherits": [
"windows_ninja",
"windows_dev"
]
},
{ {
"name": "Distribution", "name": "Distribution",
"inherits": "default", "inherits": "unix_base",
"displayName": "Distribution Config", "displayName": "Distribution Config",
"description": "Distribution build with static libraries using Ninja generator", "description": "Distribution build with static libraries",
"binaryDir": "${fileDir}/Build/distribution", "binaryDir": "${fileDir}/Build/distribution",
"cacheVariables": { "cacheVariables": {
"BUILD_SHARED_LIBS": "OFF", "BUILD_SHARED_LIBS": "OFF",
@ -127,22 +105,14 @@
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/distribution-triplets" "VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/distribution-triplets"
} }
}, },
{
"name": "Debug",
"inherits": "default",
"displayName": "Debug Config",
"description": "Debug build using Ninja generator",
"binaryDir": "${fileDir}/Build/debug",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/debug-triplets"
}
},
{ {
"name": "Sanitizer", "name": "Sanitizer",
"inherits": "default", "inherits": [
"unix_base",
"Release"
],
"displayName": "Sanitizer Config", "displayName": "Sanitizer Config",
"description": "Sanitizer build using Ninja generator", "description": "Sanitizer build",
"binaryDir": "${fileDir}/Build/sanitizers", "binaryDir": "${fileDir}/Build/sanitizers",
"cacheVariables": { "cacheVariables": {
"ENABLE_UNDEFINED_SANITIZER": "ON", "ENABLE_UNDEFINED_SANITIZER": "ON",
@ -157,11 +127,19 @@
}, },
{ {
"name": "CI", "name": "CI",
"displayName": "Non-Sanitizer CI Config",
"inherits": [ "inherits": [
"vcpkg_ci", "vcpkg_ci",
"default" "unix_base"
], ]
"displayName": "Non-Sanitizer CI Config" },
{
"name": "Windows_CI",
"inherits": "windows_base",
"displayName": "Windows CI Config",
"cacheVariables": {
"ENABLE_WINDOWS_CI": "ON"
}
}, },
{ {
"name": "Distribution_CI", "name": "Distribution_CI",
@ -182,7 +160,7 @@
}, },
{ {
"name": "Fuzzers", "name": "Fuzzers",
"inherits": "default", "inherits": "unix_base",
"displayName": "Fuzzers Config", "displayName": "Fuzzers Config",
"description": "Fuzzers build", "description": "Fuzzers build",
"binaryDir": "${fileDir}/Build/fuzzers", "binaryDir": "${fileDir}/Build/fuzzers",
@ -207,7 +185,16 @@
"buildPresets": [ "buildPresets": [
{ {
"hidden": true, "hidden": true,
"name": "unix", "name": "base",
"targets": [
"all"
]
},
{
"hidden": true,
"name": "unix_base",
"inherits": "base",
"configurePreset": "unix_base",
"condition": { "condition": {
"type": "notEquals", "type": "notEquals",
"lhs": "${hostSystemName}", "lhs": "${hostSystemName}",
@ -216,7 +203,9 @@
}, },
{ {
"hidden": true, "hidden": true,
"name": "windows", "name": "windows_base",
"inherits": "base",
"configurePreset": "windows_base",
"condition": { "condition": {
"type": "equals", "type": "equals",
"lhs": "${hostSystemName}", "lhs": "${hostSystemName}",
@ -224,70 +213,52 @@
} }
}, },
{ {
"name": "default", "name": "Release",
"inherits": "unix", "inherits": "unix_base",
"configurePreset": "default", "configurePreset": "Release",
"displayName": "Build", "displayName": "Build",
"description": "Build the project", "description": "Build the project in release"
"targets": [
"all"
]
},
{
"name": "windows_dev_ninja",
"inherits": "windows",
"configurePreset": "windows_dev_ninja",
"displayName": "Build",
"description": "Build the project",
"targets": [
"all"
]
},
{
"name": "windows_ci_ninja",
"inherits": "windows",
"configurePreset": "windows_ci_ninja",
"displayName": "Build",
"description": "Build the project",
"targets": [
"all"
]
},
{
"name": "Distribution",
"inherits": "unix",
"configurePreset": "Distribution",
"displayName": "Build",
"description": "Build the project for distribution",
"targets": [
"all"
]
}, },
{ {
"name": "Debug", "name": "Debug",
"inherits": "unix", "inherits": "unix_base",
"configurePreset": "Debug", "configurePreset": "Debug",
"displayName": "Build", "displayName": "Build",
"description": "Build the project in debug", "description": "Build the project in debug"
"targets": [ },
"all" {
] "name": "Windows_Experimental",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental",
"displayName": "Build",
"description": "Build the project"
},
{
"name": "Distribution",
"inherits": "unix_base",
"configurePreset": "Distribution",
"displayName": "Build",
"description": "Build the project for distribution"
}, },
{ {
"name": "Sanitizer", "name": "Sanitizer",
"inherits": "unix", "inherits": "unix_base",
"configurePreset": "Sanitizer", "configurePreset": "Sanitizer",
"displayName": "Build with Sanitizers", "displayName": "Build with Sanitizers",
"description": "Build the project with Sanitizers", "description": "Build the project with Sanitizers"
"targets": [ },
"all" {
] "name": "Windows_CI",
"inherits": "windows_base",
"configurePreset": "Windows_CI",
"displayName": "Build",
"description": "Build the project"
} }
], ],
"testPresets": [ "testPresets": [
{ {
"hidden": true, "hidden": true,
"name": "default_base", "name": "base",
"output": { "output": {
"outputOnFailure": true "outputOnFailure": true
}, },
@ -301,8 +272,9 @@
}, },
{ {
"hidden": true, "hidden": true,
"name": "default_windows", "name": "windows_base",
"inherits": "default_base", "configurePreset": "windows_base",
"inherits": "base",
"condition": { "condition": {
"type": "equals", "type": "equals",
"lhs": "${hostSystemName}", "lhs": "${hostSystemName}",
@ -310,18 +282,39 @@
} }
}, },
{ {
"name": "default", "hidden": true,
"configurePreset": "default", "name": "unix_base",
"inherits": "default_base", "configurePreset": "unix_base",
"inherits": "base",
"condition": { "condition": {
"type": "notEquals", "type": "notEquals",
"lhs": "${hostSystemName}", "lhs": "${hostSystemName}",
"rhs": "Windows" "rhs": "Windows"
} }
}, },
{
"name": "Release",
"inherits": "unix_base",
"configurePreset": "Release"
},
{
"name": "Debug",
"inherits": "unix_base",
"configurePreset": "Debug"
},
{
"name": "Windows_Experimental",
"inherits": "windows_base",
"configurePreset": "Windows_Experimental"
},
{
"name": "Distribution",
"inherits": "unix_base",
"configurePreset": "Distribution"
},
{ {
"name": "Sanitizer", "name": "Sanitizer",
"inherits": "default", "inherits": "unix_base",
"configurePreset": "Sanitizer", "configurePreset": "Sanitizer",
"environment": { "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}", "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}",
@ -329,24 +322,9 @@
} }
}, },
{ {
"name": "Debug", "name": "Windows_CI",
"inherits": "default", "inherits": "windows_base",
"configurePreset": "Debug" "configurePreset": "Windows_CI"
},
{
"name": "Distribution",
"inherits": "default",
"configurePreset": "Distribution"
},
{
"name": "windows_dev_ninja",
"inherits": "default_windows",
"configurePreset": "windows_dev_ninja"
},
{
"name": "windows_ci_ninja",
"inherits": "default_windows",
"configurePreset": "windows_ci_ninja"
} }
] ]
} }

View file

@ -37,7 +37,7 @@ def main():
"--preset", "--preset",
required=False, required=False,
default=os.environ.get( default=os.environ.get(
"BUILD_PRESET", "windows_dev_ninja" if platform.host_system == HostSystem.Windows else "default" "BUILD_PRESET", "Windows_Experimental" if platform.host_system == HostSystem.Windows else "Release"
), ),
) )
@ -247,12 +247,12 @@ def configure_build_env(preset: str) -> tuple[Path, Path]:
build_root_dir = ladybird_source_dir / "Build" build_root_dir = ladybird_source_dir / "Build"
known_presets = { known_presets = {
"default": build_root_dir / "release",
"Debug": build_root_dir / "debug", "Debug": build_root_dir / "debug",
"Distribution": build_root_dir / "distribution", "Distribution": build_root_dir / "distribution",
"Release": build_root_dir / "release",
"Sanitizer": build_root_dir / "sanitizers", "Sanitizer": build_root_dir / "sanitizers",
"windows_ci_ninja": build_root_dir / "release", "Windows_CI": build_root_dir / "release",
"windows_dev_ninja": build_root_dir / "debug", "Windows_Experimental": build_root_dir / "debug",
} }
build_preset_dir = known_presets.get(preset, None) build_preset_dir = known_presets.get(preset, None)