{
    "$schema": "https://cmake.org/cmake/help/latest/_downloads/3e2d73bff478d88a7de0de736ba5e361/schema.json",
    "version": 8,
    "configurePresets": [
        {
            "name": "base",
            "displayName": "base preset",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/build-${presetName}",
            "installDir": "$env{KF6}",
            "hidden": true
        },
        {
            "name": "generate-doc",
            "displayName": "Build as debug + using mold linker + generate doc",
            "cacheVariables": {
                "DOC_DESTDIR": "$env{GENERATE_DOCDIR}"
            },
            "inherits": [
                "dev-mold"
            ]
        },
        {
            "name": "check-cmake",
            "displayName": "Configure with strict warning",
            "inherits": [
                "dev-mold"
            ],
            "errors": {
                "dev": true
            },
            "warnings": {
                "uninitialized": true
            }
        },
        {
            "name": "all_installed_library_check",
            "displayName": "Build as debug + using mold linker + generate doc (need for check libs)",
            "inherits": [
                "dev-mold"
            ]
        },
        {
            "name": "dev-mold",
            "displayName": "Build as debug + using mold linker",
            "cacheVariables": {
                "CMAKE_SHARED_LINKER_FLAGS": "-fuse-ld=mold"
            },
            "inherits": [
                "dev"
            ]
        },
        {
            "name": "dev",
            "displayName": "Build as debug",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "asan",
            "displayName": "Build with Asan support.",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "ECM_ENABLE_SANITIZERS": "'address;undefined'"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "dev-clang",
            "displayName": "dev-clang",
            "environment": {
                "CXX": "clang++",
                "CCACHE_DISABLE": "ON"
            },
            "inherits": [
                "dev"
            ]
        },
        {
            "name": "unity",
            "displayName": "Build with CMake unity support.",
            "cacheVariables": {
                "USE_UNITY_CMAKE_SUPPORT": "ON"
            },
            "inherits": [
                "dev"
            ]
        },
        {
            "name": "release",
            "displayName": "Build as release mode.",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release",
                "BUILD_TESTING": "OFF"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "profile",
            "displayName": "profile",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "RelWithDebInfo"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "coverage",
            "displayName": "coverage",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "USE_UNITY_CMAKE_SUPPORT": "OFF",
                "BUILD_COVERAGE": "ON"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "clazy",
            "displayName": "clazy",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug"
            },
            "environment": {
                "CXX": "clazy",
                "CCACHE_DISABLE": "ON"
            },
            "inherits": [
                "base"
            ]
        },
        {
            "name": "ftime-trace",
            "displayName": "ftime-trace",
            "cacheVariables": {
                "CMAKE_C_FLAGS_INIT": "-ftime-trace",
                "CMAKE_CXX_FLAGS_INIT": "-ftime-trace"
            },
            "environment": {
                "CC": "/usr/bin/clang",
                "CXX": "/usr/bin/clang++",
                "CCACHE_DISABLE": "ON"
            },
            "inherits": [
                "dev"
            ]
        }
    ],
    "buildPresets": [
        {
            "name": "generate-doc",
            "configurePreset": "generate-doc",
            "targets": [
                "prepare_docs",
                "generate_docs"
            ]
        },
        {
            "name": "all_installed_library_check",
            "configurePreset": "all_installed_library_check",
            "targets": [
                "all_installed_library_check"
            ]
        },
        {
            "name": "dev",
            "configurePreset": "dev"
        },
        {
            "name": "ftime-trace",
            "configurePreset": "ftime-trace"
        },
        {
            "name": "dev-mold",
            "configurePreset": "dev-mold"
        },
        {
            "name": "dev-clang",
            "configurePreset": "dev-clang"
        },
        {
            "name": "release",
            "configurePreset": "release"
        },
        {
            "name": "unity",
            "configurePreset": "unity"
        },
        {
            "name": "coverage",
            "configurePreset": "coverage"
        },
        {
            "name": "asan",
            "configurePreset": "asan"
        },
        {
            "name": "clazy",
            "configurePreset": "clazy",
            "environment": {
                "CLAZY_CHECKS": "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
                "CCACHE_DISABLE": "ON"
            }
        }
    ],
    "testPresets": [
        {
            "name": "dev",
            "configurePreset": "dev",
            "output": {
                "outputOnFailure": true
            },
            "execution": {
                "noTestsAction": "error",
                "stopOnFailure": false
            }
        },
        {
            "name": "asan",
            "configurePreset": "asan",
            "output": {
                "outputOnFailure": true
            },
            "execution": {
                "noTestsAction": "error",
                "stopOnFailure": true
            }
        },
        {
            "name": "unity",
            "configurePreset": "unity",
            "output": {
                "outputOnFailure": true
            },
            "execution": {
                "noTestsAction": "error",
                "stopOnFailure": true
            }
        },
        {
            "name": "coverage",
            "configurePreset": "coverage",
            "output": {
                "outputOnFailure": true
            },
            "execution": {
                "noTestsAction": "error",
                "stopOnFailure": true
            }
        }
    ]
}
