{
  "version": 2,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 20,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "debug",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug",
        "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreadedDebug"
      }
    },
    {
      "name": "relwithdebinfo",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo",
        "CMAKE_MSVC_RUNTIME_LIBRARY": "MultiThreaded",
        "SENTRY_DSN": "$env{SENTRY_DSN}"
      }
    },
    {
      "name": "linux-default",
      "displayName": "Linux (default)",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/${presetName}",
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Linux"
          ]
        },
        "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
          "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
        }
      }
    },
    {
      "name": "linux-default-debug",
      "displayName": "Linux (default) Debug",
      "inherits": [
        "debug",
        "linux-default"
      ]
    },
    {
      "name": "linux-default-relwithdebinfo",
      "displayName": "Linux (default) RelWithDebInfo",
      "inherits": [
        "relwithdebinfo",
        "linux-default"
      ]
    },
    {
      "name": "linux-clang",
      "displayName": "Linux (Clang)",
      "inherits": [
        "linux-default"
      ],
      "cacheVariables": {
        "CMAKE_C_COMPILER": "clang",
        "CMAKE_CXX_COMPILER": "clang++"
      }
    },
    {
      "name": "linux-clang-debug",
      "displayName": "Linux (Clang) Debug",
      "inherits": [
        "debug",
        "linux-clang"
      ]
    },
    {
      "name": "linux-clang-relwithdebinfo",
      "displayName": "Linux (Clang) RelWithDebInfo",
      "inherits": [
        "relwithdebinfo",
        "linux-clang"
      ]
    },
    {
      "name": "linux-clang-debug-asan",
      "displayName": "Linux (Clang) Debug w/ ASAN",
      "inherits": [
        "linux-clang-debug"
      ],
      "cacheVariables": {
        "METAFORCE_ASAN": {
          "type": "BOOL",
          "value": true
        }
      }
    },
    {
      "name": "linux-clang-relwithdebinfo-asan",
      "displayName": "Linux (Clang) RelWithDebInfo w/ ASAN",
      "inherits": [
        "linux-clang-relwithdebinfo"
      ],
      "cacheVariables": {
        "METAFORCE_ASAN": {
          "type": "BOOL",
          "value": true
        }
      }
    },
    {
      "name": "windows-msvc",
      "displayName": "Windows (MSVC)",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "architecture": {
        "value": "x64",
        "strategy": "external"
      },
      "cacheVariables": {
        "CMAKE_C_COMPILER": "cl",
        "CMAKE_CXX_COMPILER": "cl",
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install",
        "CMAKE_TOOLCHAIN_FILE": {
          "type": "FILEPATH",
          "value": "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
        },
        "VCPKG_TARGET_TRIPLET": "x64-windows-static"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Windows"
          ]
        }
      }
    },
    {
      "name": "windows-msvc-debug",
      "displayName": "Windows (MSVC) Debug",
      "inherits": [
        "debug",
        "windows-msvc"
      ]
    },
    {
      "name": "windows-msvc-relwithdebinfo",
      "displayName": "Windows (MSVC) RelWithDebInfo",
      "inherits": [
        "relwithdebinfo",
        "windows-msvc"
      ]
    },
    {
      "name": "windows-clang",
      "displayName": "Windows (Clang)",
      "inherits": [
        "windows-msvc"
      ],
      "cacheVariables": {
        "CMAKE_C_COMPILER": "clang-cl",
        "CMAKE_CXX_COMPILER": "clang-cl",
        "CMAKE_LINKER": "lld-link"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "intelliSenseMode": "windows-clang-x64"
        }
      }
    },
    {
      "name": "windows-clang-debug",
      "displayName": "Windows (Clang) Debug",
      "inherits": [
        "debug",
        "windows-clang"
      ]
    },
    {
      "name": "windows-clang-relwithdebinfo",
      "displayName": "Windows (Clang) RelWithDebInfo",
      "inherits": [
        "relwithdebinfo",
        "windows-clang"
      ]
    },
    {
      "name": "macos-default",
      "displayName": "macOS (default)",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/build/${presetName}",
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/build/install"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "macOS"
          ]
        }
      }
    },
    {
      "name": "macos-default-debug",
      "displayName": "macOS (default) Debug",
      "inherits": [
        "debug",
        "macos-default"
      ]
    },
    {
      "name": "macos-default-relwithdebinfo",
      "displayName": "macOS (default) RelWithDebInfo",
      "inherits": [
        "relwithdebinfo",
        "macos-default"
      ]
    },
    {
      "name": "x-linux-ci",
      "hidden": true,
      "inherits": [
        "relwithdebinfo"
      ],
      "cacheVariables": {
        "CMAKE_C_COMPILER_LAUNCHER": "buildcache",
        "CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
        "BUILD_ATDNA": {
          "type": "BOOL",
          "value": false
        },
        "USE_LTO": {
          "type": "BOOL",
          "value": false
        }
      }
    },
    {
      "name": "x-linux-ci-gcc",
      "inherits": [
        "x-linux-ci",
        "linux-default"
      ]
    },
    {
      "name": "x-linux-ci-clang",
      "inherits": [
        "x-linux-ci",
        "linux-clang"
      ]
    },
    {
      "name": "x-macos-ci",
      "inherits": [
        "macos-default-relwithdebinfo"
      ],
      "cacheVariables": {
        "CMAKE_C_COMPILER_LAUNCHER": "buildcache",
        "CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
        "CMAKE_OSX_ARCHITECTURES": "arm64;x86_64"
      }
    },
    {
      "name": "x-windows-ci",
      "hidden": true,
      "inherits": [
        "relwithdebinfo"
      ],
      "binaryDir": "$env{BUILD_DIR}",
      "cacheVariables": {
        "CMAKE_C_COMPILER_LAUNCHER": "buildcache",
        "CMAKE_CXX_COMPILER_LAUNCHER": "buildcache",
        "CMAKE_C_FLAGS_RELWITHDEBINFO": "/Z7 /O2 /Ob1 /DNDEBUG",
        "CMAKE_CXX_FLAGS_RELWITHDEBINFO": "/Z7 /O2 /Ob1 /DNDEBUG",
        "CMAKE_INSTALL_PREFIX": "$env{BUILD_DIR}/install"
      },
      "environment": {
        "VCPKG_ROOT": "$env{RUNNER_WORKSPACE}/vcpkg-qt-$env{Qt_VERSION}"
      }
    },
    {
      "name": "x-windows-ci-msvc",
      "inherits": [
        "x-windows-ci",
        "windows-msvc"
      ]
    },
    {
      "name": "x-windows-ci-clang",
      "inherits": [
        "x-windows-ci",
        "windows-clang"
      ]
    }
  ],
  "buildPresets": [
    {
      "name": "linux-default-debug",
      "configurePreset": "linux-default-debug",
      "description": "Linux (default) debug build",
      "displayName": "Linux (default) Debug"
    },
    {
      "name": "linux-default-relwithdebinfo",
      "configurePreset": "linux-default-relwithdebinfo",
      "description": "Linux (default) release build with debug info",
      "displayName": "Linux (default) RelWithDebInfo"
    },
    {
      "name": "linux-clang-debug",
      "configurePreset": "linux-clang-debug",
      "description": "Linux (Clang) debug build",
      "displayName": "Linux (Clang) Debug"
    },
    {
      "name": "linux-clang-relwithdebinfo",
      "configurePreset": "linux-clang-relwithdebinfo",
      "description": "Linux (Clang) release build with debug info",
      "displayName": "Linux (Clang) RelWithDebInfo"
    },
    {
      "name": "linux-clang-debug-asan",
      "configurePreset": "linux-clang-debug-asan",
      "description": "Linux (Clang) debug build w/ ASAN",
      "displayName": "Linux (Clang) Debug w/ ASAN"
    },
    {
      "name": "linux-clang-relwithdebinfo-asan",
      "configurePreset": "linux-clang-relwithdebinfo-asan",
      "description": "Linux (Clang) release build with debug info w/ ASAN",
      "displayName": "Linux (Clang) RelWithDebInfo w/ ASAN"
    },
    {
      "name": "macos-default-debug",
      "configurePreset": "macos-default-debug",
      "description": "macOS debug build",
      "displayName": "macOS Debug"
    },
    {
      "name": "macos-default-relwithdebinfo",
      "configurePreset": "macos-default-relwithdebinfo",
      "description": "macOS release build with debug info",
      "displayName": "macOS RelWithDebInfo"
    },
    {
      "name": "windows-msvc-debug",
      "configurePreset": "windows-msvc-debug",
      "description": "Windows (MSVC) debug build",
      "displayName": "Windows (MSVC) Debug"
    },
    {
      "name": "windows-msvc-relwithdebinfo",
      "configurePreset": "windows-msvc-relwithdebinfo",
      "description": "Windows (MSVC) release build with debug info",
      "displayName": "Windows (MSVC) RelWithDebInfo"
    },
    {
      "name": "windows-clang-debug",
      "configurePreset": "windows-clang-debug",
      "description": "Windows (Clang) debug build",
      "displayName": "Windows (Clang) Debug"
    },
    {
      "name": "windows-clang-relwithdebinfo",
      "configurePreset": "windows-clang-relwithdebinfo",
      "description": "Windows (Clang) release build with debug info",
      "displayName": "Windows (Clang) RelWithDebInfo"
    },
    {
      "name": "x-linux-ci-gcc",
      "configurePreset": "x-linux-ci-gcc",
      "description": "(Internal) Linux CI GCC",
      "displayName": "(Internal) Linux CI GCC",
      "targets": [
        "install"
      ],
      "verbose": true
    },
    {
      "name": "x-linux-ci-clang",
      "configurePreset": "x-linux-ci-clang",
      "description": "(Internal) Linux CI Clang",
      "displayName": "(Internal) Linux CI Clang",
      "targets": [
        "install"
      ],
      "verbose": true
    },
    {
      "name": "x-macos-ci",
      "configurePreset": "x-macos-ci",
      "description": "(Internal) macOS CI",
      "displayName": "(Internal) macOS CI",
      "targets": [
        "install"
      ],
      "verbose": true
    },
    {
      "name": "x-windows-ci-msvc",
      "configurePreset": "x-windows-ci-msvc",
      "description": "(Internal) Windows CI MSVC",
      "displayName": "(Internal) Windows CI MSVC",
      "targets": [
        "install"
      ],
      "verbose": true
    },
    {
      "name": "x-windows-ci-clang",
      "configurePreset": "x-windows-ci-clang",
      "description": "(Internal) Windows CI Clang",
      "displayName": "(Internal) Windows CI Clang",
      "targets": [
        "install"
      ],
      "verbose": true
    }
  ]
}
