{
  "version": 3,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 19,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "base-mingw",
      "hidden": true,
      "generator": "Ninja",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": {
          "type": "FILEPATH",
          "value": "${sourceDir}/toolchain-gcc.cmake"
        },
        "ENABLE_CCACHE": {
          "type": "BOOL",
          "value": "OFF"
        }
      }
    },
    {
      "name": "base-msvc",
      "hidden": true,
      "generator": "Ninja",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": {
          "type": "FILEPATH",
          "value": "${sourceDir}/toolchain-msvc.cmake"
        }
      }
    },
    {
      "name": "base-clang-cl",
      "hidden": true,
      "inherits": "base-msvc",
      "cacheVariables": {
        "USE_CLANG_CL": {
          "type": "BOOL",
          "value": "ON"
        }
      }
    },
    {
      "name": "base-clang",
      "hidden": true,
      "generator": "Ninja",
      "cacheVariables": {
        "CMAKE_TOOLCHAIN_FILE": {
          "type": "FILEPATH",
          "value": "${sourceDir}/toolchain-clang.cmake"
        }
      }
    },
    {
      "name": "base-debug",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "base-release",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Release"
      }
    },
    {
      "name": "arch-i386",
      "hidden": true,
      "cacheVariables": {
        "ARCH": "i386"
      }
    },
    {
      "name": "arch-amd64",
      "hidden": true,
      "cacheVariables": {
        "ARCH": "amd64"
      }
    },
    {
      "name": "arch-arm",
      "hidden": true,
      "cacheVariables": {
        "ARCH": "arm"
      }
    },
    {
      "name": "arch-arm64",
      "hidden": true,
      "cacheVariables": {
        "ARCH": "arm64"
      }
    },
    {
      "name": "mingw-i386-debug",
      "displayName": "MinGW Ninja i386 (Debug)",
      "description": "GCC build using Ninja for i386 (Debug)",
      "inherits": ["base-mingw", "base-debug", "arch-i386"],
      "binaryDir": "${sourceDir}/output-MinGW-i386"
    },
    {
      "name": "mingw-amd64-debug",
      "displayName": "MinGW Ninja amd64 (Debug)",
      "description": "GCC build using Ninja for amd64 (Debug)",
      "inherits": ["base-mingw", "base-debug", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-MinGW-amd64"
    },
    {
      "name": "msvc-i386-debug",
      "displayName": "MSVC Ninja i386 (Debug)",
      "description": "MSVC build using Ninja for i386 (Debug)",
      "inherits": ["base-msvc", "arch-i386"],
      "binaryDir": "${sourceDir}/output-VS-i386"
    },
    {
      "name": "msvc-amd64-debug",
      "displayName": "MSVC Ninja amd64 (Debug)",
      "description": "MSVC build using Ninja for amd64 (Debug)",
      "inherits": ["base-msvc", "base-debug", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-VS-amd64"
    },
    {
      "name": "msvc-arm-debug",
      "displayName": "MSVC Ninja ARM (Debug)",
      "description": "MSVC build using Ninja for ARM (Debug)",
      "inherits": ["base-msvc", "base-debug", "arch-arm"],
      "binaryDir": "${sourceDir}/output-VS-arm"
    },
    {
      "name": "msvc-arm64-debug",
      "displayName": "MSVC Ninja ARM64 (Debug)",
      "description": "MSVC build using Ninja for ARM64 (Debug)",
      "inherits": ["base-msvc", "base-debug", "arch-arm64"],
      "binaryDir": "${sourceDir}/output-VS-arm64"
    },
    {
      "name": "clang-cl-i386-debug",
      "displayName": "Clang-cl Ninja i386 (Debug)",
      "description": "Clang-cl build for i386 using Ninja (Debug)",
      "inherits": ["base-clang-cl", "base-debug", "arch-i386"],
      "binaryDir": "${sourceDir}/output-VS-i386"
    },
    {
      "name": "clang-i386-debug",
      "displayName": "LLVM Clang Ninja i386 (Debug)",
      "description": "LLVM Clang build for i386 using Ninja (Debug)",
      "inherits": ["base-clang", "base-debug", "arch-i386"],
      "binaryDir": "${sourceDir}/output-Clang-i386"
    },
    {
      "name": "clang-amd64-debug",
      "displayName": "LLVM Clang Ninja amd64 (Debug)",
      "description": "LLVM Clang build for amd64 using Ninja (Debug)",
      "inherits": ["base-clang", "base-debug", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-Clang-amd64"
    },
    {
      "name": "clang-arm-debug",
      "displayName": "LLVM Clang Ninja arm (Debug)",
      "description": "LLVM Clang build for ARM using Ninja (Debug)",
      "inherits": ["base-clang", "base-debug", "arch-arm"],
      "binaryDir": "${sourceDir}/output-Clang-arm"
    },
    {
      "name": "clang-arm64-debug",
      "displayName": "LLVM Clang Ninja arm64 (Debug)",
      "description": "LLVM Clang build for ARM64 using Ninja (Debug)",
      "inherits": ["base-clang", "base-debug", "arch-arm64"],
      "binaryDir": "${sourceDir}/output-Clang-arm64"
    },
    {
      "name": "mingw-i386-release",
      "displayName": "MinGW Ninja i386 (Release)",
      "description": "GCC build using Ninja for i386 (Release)",
      "inherits": ["base-mingw", "base-release", "arch-i386"],
      "binaryDir": "${sourceDir}/output-MinGW-i386"
    },
    {
      "name": "mingw-amd64-release",
      "displayName": "MinGW Ninja amd64 (Release)",
      "description": "GCC build using Ninja for amd64 (Release)",
      "inherits": ["base-mingw", "base-release", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-MinGW-amd64"
    },
    {
      "name": "msvc-i386-release",
      "displayName": "MSVC Ninja i386 (Release)",
      "description": "MSVC build using Ninja for i386 (Release)",
      "inherits": ["base-msvc", "base-release", "arch-i386"],
      "binaryDir": "${sourceDir}/output-VS-i386"
    },
    {
      "name": "msvc-amd64-release",
      "displayName": "MSVC Ninja amd64 (Release)",
      "description": "MSVC build using Ninja for amd64 (Release)",
      "inherits": ["base-msvc", "base-release", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-VS-amd64"
    },
    {
      "name": "msvc-arm-release",
      "displayName": "MSVC Ninja ARM (Release)",
      "description": "MSVC build using Ninja for ARM (Release)",
      "inherits": ["base-msvc", "base-release", "arch-arm"],
      "binaryDir": "${sourceDir}/output-VS-arm"
    },
    {
      "name": "msvc-arm64-release",
      "displayName": "MSVC Ninja ARM64 (Release)",
      "description": "MSVC build using Ninja for ARM64 (Release)",
      "inherits": ["base-msvc", "base-release", "arch-arm64"],
      "binaryDir": "${sourceDir}/output-VS-arm64"
    },
    {
      "name": "clang-cl-i386-release",
      "displayName": "Clang-cl Ninja i386 (Release)",
      "description": "Clang-cl build for i386 using Ninja (Release)",
      "inherits": ["base-clang-cl", "base-release", "arch-i386"],
      "binaryDir": "${sourceDir}/output-VS-i386"
    },
    {
      "name": "clang-i386-release",
      "displayName": "LLVM Clang Ninja i386 (Release)",
      "description": "LLVM Clang build for i386 using Ninja (Release)",
      "inherits": ["base-clang", "base-release", "arch-i386"],
      "binaryDir": "${sourceDir}/output-Clang-i386"
    },
    {
      "name": "clang-amd64-release",
      "displayName": "LLVM Clang Ninja amd64 (Release)",
      "description": "LLVM Clang build for amd64 using Ninja (Release)",
      "inherits": ["base-clang", "base-release", "arch-amd64"],
      "binaryDir": "${sourceDir}/output-Clang-amd64"
    },
    {
      "name": "clang-arm-release",
      "displayName": "LLVM Clang Ninja ARM (Release)",
      "description": "LLVM Clang build for ARM using Ninja (Release)",
      "inherits": ["base-clang", "base-release", "arch-arm"],
      "binaryDir": "${sourceDir}/output-Clang-arm"
    },
    {
      "name": "clang-arm64-release",
      "displayName": "LLVM Clang Ninja arm64 (Release)",
      "description": "LLVM Clang build for ARM64 using Ninja (Release)",
      "inherits": ["base-clang", "base-release", "arch-arm64"],
      "binaryDir": "${sourceDir}/output-Clang-arm64"
    },
    {
      "name": "vs2022-sln-i386",
      "displayName": "Visual Studio 2022 Solution i386",
      "description": "Generates a VS 2022 Solution for i386",
      "inherits": ["base-msvc", "arch-i386"],
      "generator": "Visual Studio 17 2022",
      "architecture": {
        "value": "Win32",
        "strategy": "external"
      },
      "binaryDir": "${sourceDir}/output-VS-i386-sln"
    },
    {
      "name": "vs2022-sln-amd64",
      "displayName": "Visual Studio 2022 Solution amd64",
      "description": "Generates a VS 2022 Solution for amd64",
      "inherits": ["base-msvc", "arch-amd64"],
      "generator": "Visual Studio 17 2022",
      "architecture": {
        "value": "x64",
        "strategy": "external"
      },
      "binaryDir": "${sourceDir}/output-VS-amd64-sln"
    },
    {
      "name": "vs2022-sln-arm",
      "displayName": "Visual Studio 2022 Solution ARM",
      "description": "Generates a VS 2022 Solution for ARM",
      "inherits": ["base-msvc", "arch-arm"],
      "generator": "Visual Studio 17 2022",
      "architecture": {
        "value": "arm",
        "strategy": "external"
      },
      "binaryDir": "${sourceDir}/output-VS-arm-sln"
    },
    {
      "name": "vs2022-sln-arm64",
      "displayName": "Visual Studio 2022 Solution ARM64",
      "description": "Generates a VS 2022 Solution for ARM64",
      "inherits": ["base-msvc", "arch-arm64"],
      "generator": "Visual Studio 17 2022",
      "architecture": {
        "value": "arm64",
        "strategy": "external"
      },
      "binaryDir": "${sourceDir}/output-VS-arm64-sln"
    }
  ]
}