ladybird/CMakePresets.json
Timothy Flynn 0447d05d52 Meta: Support fully static distribution release builds
This adds the vcpkg triplets and CMake preset to perform release
builds for distribution. These builds are fully static, and currently
intended to be used for the `js` ESVU release.

In the future, linking everything statically into the final binary is
probably not what we will do for released Ladybird builds. Instead, we
may have a "libladybird.so", which is then linked into the binary. But
this should be fine for `js` for now.
2024-11-08 11:29:18 -07:00

252 lines
6.6 KiB
JSON

{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 25,
"patch": 0
},
"configurePresets": [
{
"hidden": true,
"name": "default_base",
"displayName": "Default Config",
"binaryDir": "${fileDir}/Build/release",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"SERENITY_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}"
},
"vendor": {
"jetbrains.com/clion": {
"toolchain": "Default"
}
}
},
{
"hidden": true,
"name": "windows",
"description": "Visual Studio IDE config (experimental)",
"architecture": {
"value": "x64",
"strategy": "external"
},
"cacheVariables": {
"ENABLE_QT": "OFF"
},
"vendor": {
"microsoft.com/VisualStudioSettings/CMake/1.0": {
"intelliSenseMode": "windows-clang-x64"
}
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "default",
"description": "Default build using Ninja generator",
"generator": "Ninja",
"inherits": "default_base",
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"name": "windows_ninja",
"displayName": "Default with ClangCL and Ninja",
"description": "Windows build using Ninja generator (experimental)",
"inherits": [
"default_base",
"windows"
],
"generator": "Ninja",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang-cl",
"CMAKE_CXX_COMPILER": "clang-cl"
}
},
{
"name": "windows_msbuild",
"displayName": "Default with ClangCL and MSBuild",
"description": "Default build using Visual Studio generator (experimental)",
"inherits": [
"default_base",
"windows"
],
"generator": "Visual Studio 17 2022",
"toolset": "ClangCL"
},
{
"name": "Distribution",
"inherits": "default",
"displayName": "Distribution Config",
"description": "Distribution build with static libraries using Ninja generator",
"binaryDir": "${fileDir}/Build/distribution",
"cacheVariables": {
"BUILD_SHARED_LIBS": "OFF",
"CMAKE_BUILD_TYPE": "Release",
"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",
"inherits": "default",
"displayName": "Sanitizer Config",
"description": "Sanitizer build using Ninja generator",
"binaryDir": "${fileDir}/Build/sanitizers",
"cacheVariables": {
"ENABLE_UNDEFINED_SANITIZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON",
"VCPKG_OVERLAY_TRIPLETS": "${fileDir}/Meta/CMake/vcpkg/sanitizer-triplets"
}
},
{
"hidden": true,
"name": "vcpkg_ci",
"description": "Use the GitHub Actions vcpkg cache",
"environment": {
"VCPKG_BINARY_SOURCES": "clear;x-gha,readwrite"
}
},
{
"name": "CI",
"inherits": [
"vcpkg_ci",
"default"
],
"displayName": "Non-Sanitizer CI Config"
},
{
"name": "Distribution_CI",
"inherits": [
"vcpkg_ci",
"Distribution"
],
"displayName": "Distribution CI Config",
"description": "Distribution build with GitHub Actions cache"
},
{
"name": "Sanitizer_CI",
"inherits": [
"vcpkg_ci",
"Sanitizer"
],
"displayName": "Sanitizer CI Config",
"cacheVariables": {
"CMAKE_BUILD_TYPE": ""
}
},
{
"name": "Fuzzers",
"inherits": "default",
"displayName": "Fuzzers Config",
"description": "Fuzzers build",
"binaryDir": "${fileDir}/Build/fuzzers",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "",
"ENABLE_QT": "OFF",
"ENABLE_FUZZERS_LIBFUZZER": "ON",
"ENABLE_ADDRESS_SANITIZER": "ON"
}
},
{
"name": "Fuzzers_CI",
"inherits": [
"vcpkg_ci",
"Fuzzers"
],
"displayName": "Fuzzers CI Config",
"description": "Fuzzers build with GitHub Actions cache"
}
],
"buildPresets": [
{
"name": "default",
"configurePreset": "default",
"displayName": "Build",
"description": "Build the project",
"targets": [
"all"
]
},
{
"name": "windows_msbuild",
"configurePreset": "windows_msbuild",
"displayName": "Build",
"description": "Build the project",
"targets": [
"ALL_BUILD"
]
},
{
"name": "windows_ninja",
"configurePreset": "windows_ninja",
"displayName": "Build",
"description": "Build the project",
"targets": [
"all"
]
},
{
"name": "Sanitizer",
"configurePreset": "Sanitizer",
"displayName": "Build with Sanitizers",
"description": "Build the project with Sanitizers",
"targets": [
"all"
]
}
],
"testPresets": [
{
"name": "default",
"configurePreset": "default",
"output": {
"outputOnFailure": true
},
"execution": {
"noTestsAction": "error",
"stopOnFailure": true
},
"environment": {
"LADYBIRD_SOURCE_DIR": "${fileDir}"
}
},
{
"name": "Sanitizer",
"inherits": "default",
"configurePreset": "Sanitizer",
"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",
"UBSAN_OPTIONS": "print_stacktrace=1:print_summary=1:halt_on_error=1"
}
},
{
"name": "Debug",
"inherits": "default",
"configurePreset": "Debug"
}
]
}