{
  "version": 3,
  "configurePresets": [
    {
      "name": "base",
      "displayName": "base preset",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build-${presetName}",
      "installDir": "$env{KF6}",
      "hidden": true,
      "cacheVariables": {
        "BUILD_QCH": "ON"
      }
    },
    {
      "name": "dev-mold",
      "displayName": "Build as debug + using mold linker",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON",
        "CMAKE_SHARED_LINKER_FLAGS": "-fuse-ld=mold"
      },
      "inherits": [
        "base"
      ]
    },
    {
      "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",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
      },
      "environment": {
        "CXX": "clang++",
        "CCACHE_DISABLE": "ON"
      },
      "inherits": [
        "base"
      ]
    },
    {
      "name": "unity",
      "displayName": "Build with CMake unity support.",
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "USE_UNITY_CMAKE_SUPPORT": "ON"
      },
      "inherits": [
        "base"
      ]
    },
    {
      "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_BUILD_TYPE": "Debug",
        "USE_DEVELOPER_MODE": "ON",
        "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": [
        "base"
      ]
    }
  ],
  "buildPresets": [
    {
      "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
      }
    }
  ]
}
