{
  "version": 3,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 13,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "windows-default",
      "displayName": "Windows",
      "description": "Sets Ninja generator, and compilers. Configures vcpkg in manifest mode.",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_MANIFEST_MODE": true
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Windows"
          ]
        }
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "msvc-windows-default",
      "displayName": "MSVC Windows",
      "description": "Sets MSVC generator, and compilers. Configures vcpkg in manifest mode.",
      "generator": "Visual Studio 17 2022",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_MANIFEST_MODE": true
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Windows"
          ]
        }
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "clang-windows-default",
      "displayName": "Windows",
      "description": "Sets Ninja generator, and compilers. Configures vcpkg in manifest mode using clang",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_MANIFEST_MODE": true,
        "CMAKE_CXX_COMPILER": "clang++.exe",
        "CMAKE_C_COMPILER": "clang.exe"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Windows"
          ]
        }
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "gcc-windows-default",
      "displayName": "Windows",
      "description": "Sets Ninja generator, and compilers. Configures vcpkg in manifest mode using gcc",
      "generator": "Ninja",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_MANIFEST_MODE": true,
        "CMAKE_CXX_COMPILER": "g++.exe",
        "CMAKE_C_COMPILER": "gcc.exe"
      },
      "vendor": {
        "microsoft.com/VisualStudioSettings/CMake/1.0": {
          "hostOS": [
            "Windows"
          ]
        }
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "x64-static",
      "displayName": "Windows x64 Static",
      "description": "Windows Default, x64 architecture, static CRT.",
      "inherits": "windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x64-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": {
        "value": "x64",
        "strategy": "external"
      }
    },
    {
      "name": "x86-static",
      "displayName": "Windows x86 Static",
      "description": "Windows Default, x86 architecture.",
      "inherits": "windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x86-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": {
        "value": "x86",
        "strategy": "external"
      }
    },
    {
      "name": "x86-msvc-static",
      "displayName": "Windows x86 MSVC Static",
      "description": "Windows Default, MSVC, x86 architecture.",
      "inherits": "msvc-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x86-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": "win32"
    },
    {
      "name": "x64-msvc-static",
      "displayName": "Windows x64 MSVC Static",
      "description": "Windows Default, MSVC, x64 architecture.",
      "inherits": "msvc-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x64-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": {
        "value": "x64",
        "strategy": "external"
      }
    },
    {
      "name": "x86-clang-static",
      "displayName": "Windows x86 clang Static",
      "description": "Windows Default, clang, x86 architecture.",
      "inherits": "gcc-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x86-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": "win32"
    },
    {
      "name": "x64-clang-static",
      "displayName": "Windows x64 CLANG Static",
      "description": "Windows Default, clang, x64 architecture.",
      "inherits": "clang-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x64-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": {
        "value": "x64",
        "strategy": "external"
      }
    },
    {
      "name": "x86-gcc-static",
      "displayName": "Windows x86 gccStatic",
      "description": "Windows Default, gcc, x86 architecture.",
      "inherits": "gcc-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x86-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": "win32"
    },
    {
      "name": "x64-gcc-static",
      "displayName": "Windows x64 GCC Static",
      "description": "Windows Default, gcc, x64 architecture.",
      "inherits": "gcc-windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x64-windows-static",
        "MSVC_USE_STATIC_CRT": true
      },
      "architecture": {
        "value": "x64",
        "strategy": "external"
      }
    },
    {
      "name": "x64",
      "displayName": "Windows x64",
      "description": "x64 architecture.",
      "inherits": "windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x64-windows",
        "BUILD_SHARED_LIBS": true
      },
      "architecture": {
        "value": "x64",
        "strategy": "external"
      }
    },
    {
      "name": "x86",
      "displayName": "Windows x86",
      "description": "Ninja Generator, x86 architecture.",
      "inherits": "windows-default",
      "hidden": true,
      "cacheVariables": {
        "VCPKG_TARGET_TRIPLET": "x86-windows",
        "BUILD_SHARED_LIBS": true
      },
      "architecture": {
        "value": "x86",
        "strategy": "external"
      }
    },
    {
      "name": "debug-build",
      "displayName": "Debug Build",
      "description": "Debug Build (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
      }
    },
    {
      "name": "release-build",
      "displayName": "Release Build",
      "description": "Release Build (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_BUILD_TYPE": "RelWithDebInfo"
      }
    },
    {
      "name": "enable-tests",
      "displayName": "Enable Tests",
      "description": "Enable Tests (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "BUILD_TESTING": true,
        "ENABLE_PROXY_TESTS": false
      }
    },
    {
      "name": "enable-samples",
      "displayName": "Enable Samples",
      "description": "Enable Samples (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "BUILD_SAMPLES": true
      }
    },
    {
      "name": "enable-perf",
      "displayName": "Enable Perf",
      "description": "Enable Perf (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "BUILD_PERFORMANCE_TESTS": true
      }
    },
    {
      "name": "winhttp-transport",
      "displayName": "Enable WinHTTP Transport",
      "description": "Enable WinHTTP Transport (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "BUILD_TRANSPORT_WINHTTP": true
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      }
    },
    {
      "name": "curl-transport",
      "displayName": "Enable CURL Transport",
      "description": "Enable CURL Transport (Hidden)",
      "hidden": true,
      "cacheVariables": {
        "BUILD_TRANSPORT_CURL": true
      }
    },
    {
      "name": "enable-address-sanitizer",
      "displayName": "Enable Address Sanitizer",
      "description": "Enable Address Sanitizer (Hidden). Note: ASAN can be extremely disruptive, when enabling ASAN, make sure you run your application under the debugger.",
      "hidden": true,
      "cacheVariables": {
        "ENABLE_ADDRESS_SANITIZER": true
      }
    },
    {
      "name": "x86-static-debug-tests",
      "displayName": "x86 Debug With Tests, static",
      "description": "Windows x86 Debug build with Tests configured",
      "inherits": [
        "x86-static",
        "debug-build",
        "enable-tests"
      ]
    },
    {
      "name": "x86-static-release-tests",
      "displayName": "x86 Release With Tests, static, libcurl",
      "description": "Windows x86 Release build with Tests configured",
      "inherits": [
        "x86-static",
        "release-build",
        "enable-tests"
      ],
      "cacheVariables": {
        "RUN_LONG_UNIT_TESTS": true
      }
    },
    {
      "name": "x86-static-release",
      "displayName": "x86 Release, static",
      "description": "Windows x86 Release build",
      "inherits": [
        "x86-static",
        "release-build"
      ]

    },
    {
      "name": "x64-debug-tests",
      "displayName": "x64 Debug With Tests",
      "description": "Windows x64 Debug build with Tests configured",
      "inherits": [
        "x64",
        "debug-build",
        "enable-tests"
      ]
    },
    {
      "name": "x86-msvc-static-debug-tests",
      "displayName": "x86 MSVC Debug With Tests, static",
      "description": "Windows x86 MSVC Debug build with Tests configured",
      "inherits": [
        "x86-msvc-static",
        "debug-build",
        "enable-tests"
      ]
    },
    {
      "name": "x64-static-debug-tests",
      "displayName": "x64 Debug With Tests, static",
      "description": "Windows x64 Debug build with Tests configured",
      "inherits": [
        "x64-static",
        "debug-build",
        "enable-tests"
      ]
    },
    {
      "name": "x64-static-debug-tests-curl",
      "displayName": "x64 Debug With Tests, static, libcurl",
      "description": "Windows x64 Debug build with Tests configured",
      "inherits": [
        "x64-static",
        "debug-build",
        "enable-tests",
        "curl-transport"
      ]
    },
    {
      "name": "x64-static-debug-tests-winhttp",
      "displayName": "x64 Debug With Tests, static, winhttp",
      "description": "Windows x64 Debug build with Tests configured",
      "inherits": [
        "x64-static",
        "debug-build",
        "enable-tests",
        "winhttp-transport"
      ]
    },
    {
      "name": "x64-static-debug-tests-OpenSSL111",
      "displayName": "x64 Debug With Tests, static, OpenSSL 1.1.1, libcurl",
      "description": "Windows x64 Debug build with Tests configured on OpenSSL 1.1.1",
      "inherits": [
        "x64-static",
        "debug-build",
        "enable-tests"
      ],
      "cacheVariables": {
        "VCPKG_OVERLAY_PORTS": "${sourceDir}\\vcpkg-custom-ports"
      }
    },
    {
      "name": "x86-static-release-tests-curl",
      "displayName": "x86 Release With Tests, static, libcurl",
      "description": "Windows x86 Release build with Tests configured",
      "inherits": [
        "x86-static",
        "release-build",
        "enable-tests",
        "curl-transport"
      ]
    },
    {
      "name": "x86-release-tests",
      "displayName": "x86 Release With Tests (Note: Does not link because it sets BUILD_TRANSPORT_CUSTOM)",
      "inherits": [
        "x86",
        "release-build",
        "enable-tests",
        "curl-transport",
        "winhttp-transport"
      ],
      "cacheVariables": {
        "BUILD_TRANSPORT_CUSTOM": true
      }
    },
    {
      "name": "x64-release-tests",
      "displayName": "x64 Release With Tests (Note: Does not link because it sets BUILD_TRANSPORT_CUSTOM)",
      "inherits": [
        "x64",
        "release-build",
        "enable-tests",
        "curl-transport",
        "winhttp-transport"
      ],
      "cacheVariables": {
        "BUILD_TRANSPORT_CUSTOM": true
      }
    },
    {
      "name": "x64-static-debug-perftests",
      "displayName": "x64 Debug static With Perf Tests and samples, libcurl+winhttp",
      "inherits": [
        "x64-static",
        "debug-build",
        "enable-tests",
        "enable-samples",
        "enable-perf",
        "winhttp-transport",
        "curl-transport"
      ]
    },
    {
      "name": "x64-static-release-perftests-asan",
      "displayName": "x64 Release static With Perf Tests and samples, plus ASAN",
      "inherits": [
        "x64-static",
        "release-build",
        "enable-tests",
        "enable-samples",
        "enable-perf",
        "enable-address-sanitizer"
      ],
      "cacheVariables": {
        "DISABLE_AZURE_CORE_OPENTELEMETRY": true
      }
    },
    {
      "name": "x86-msvc-static-debug-perftests",
      "displayName": "x86 MSVC Debug static With Perf Tests and samples",
      "inherits": [
        "x86-msvc-static",
        "debug-build",
        "enable-tests",
        "enable-perf",
        "enable-samples",
        "curl-transport",
        "winhttp-transport"
      ]
    },
    {
      "name": "x64-msvc-static-debug-perftests",
      "displayName": "x64 MSVC Debug static With Perf Tests and samples",
      "inherits": [
        "x64-msvc-static",
        "debug-build",
        "enable-tests",
        "enable-perf",
        "enable-samples",
        "curl-transport",
        "winhttp-transport"
      ]
    },
    {
      "name": "x64-msvc-static-release-perftests",
      "displayName": "x64 MSVC Release static With Perf Tests and samples",
      "inherits": [
        "x64-msvc-static",
        "release-build",
        "enable-tests",
        "enable-perf",
        "enable-samples",
        "curl-transport",
        "winhttp-transport"
      ]
    },
    {
      "name": "x64-static-release-perftests",
      "displayName": "x64 Release With Perf Tests, static",
      "inherits": [
        "x64-static",
        "release-build",
        "enable-tests",
        "enable-perf"
      ]
    },
    {
      "name": "x64-static-debug-perftests-clang",
      "displayName": "x64 Debug static With Perf Tests and samples+clang, libcurl+winhttp",
      "inherits": [
        "x64-clang-static",
        "debug-build",
        "enable-tests",
        "enable-samples",
        "enable-perf",
        "winhttp-transport",
        "curl-transport"
      ]
    },
    {
      "name": "linux-basic-gcc9",
      "displayName": "Linux GCC 9",
      "description": "Using compilers: C = /usr/bin/gcc-9, CXX = /usr/bin/g++-9",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/gcc-9",
        "CMAKE_CXX_COMPILER": "/usr/bin/g++-9"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-basic-gcc11",
      "displayName": "Linux GCC 11",
      "description": "Using compilers: C = /usr/bin/gcc-11, CXX = /usr/bin/g++-11",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/gcc-11",
        "CMAKE_CXX_COMPILER": "/usr/bin/g++-11"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-basic-clang-11",
      "displayName": "Linux clang-11",
      "description": "Using compilers: C = /usr/bin/clang-11, CXX = /usr/bin/clang++-11",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/clang-11",
        "CMAKE_CXX_COMPILER": "/usr/bin/clang++-11"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-basic-clang-13",
      "displayName": "Linux clang-13",
      "description": "Using compilers: C = /usr/bin/clang-13, CXX = /usr/bin/clang++-13",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/clang-13",
        "CMAKE_CXX_COMPILER": "/usr/bin/clang++-13"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-basic-g++",
      "displayName": "Linux G++",
      "description": "Using compilers: C = /usr/bin/gcc, CXX = /usr/bin/g++",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/gcc",
        "CMAKE_CXX_COMPILER": "/usr/bin/g++"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-basic-g++-11",
      "displayName": "Linux G++ 11",
      "description": "Using compilers: C = /usr/bin/gcc-11, CXX = /usr/bin/g++-11",
      "binaryDir": "${sourceDir}/out/build/${presetName}",
      "generator": "Ninja",
      "hidden": true,
      "cacheVariables": {
        "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
        "CMAKE_C_COMPILER": "/usr/bin/gcc-11",
        "CMAKE_CXX_COMPILER": "/usr/bin/g++-11"
      },
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      }
    },
    {
      "name": "linux-gcc9-debug",
      "displayName": "Linux GCC 9 Debug",
      "inherits": [
        "linux-basic-gcc9",
        "debug-build"
      ]
    },
    {
      "name": "linux-gcc9-debug-tests",
      "inherits": [
        "linux-basic-gcc9",
        "debug-build",
        "enable-tests"
      ],
      "displayName": "Linux GCC 9 Debug+Tests"
    },
    {
      "name": "linux-gcc11-debug",
      "displayName": "Linux GCC 11 Debug",
      "inherits": [ "linux-basic-gcc11", "debug-build" ]
    },
    {
      "name": "linux-gcc11-debug-tests",
      "inherits": [ "linux-basic-gcc11", "debug-build", "enable-tests" ],
      "displayName": "Linux GCC 11 Debug+Tests"
    },
    {
      "name": "linux-clang-11-debug",
      "displayName": "Linux clang 11 Debug",
      "inherits": [ "linux-basic-clang-11", "debug-build" ]
    },
    {
      "name": "linux-clang-11-debug-tests",
      "displayName": "Linux clang 11 Debug+tests",
      "inherits": [ "linux-basic-clang-11", "debug-build", "enable-tests" ]
    },
    {
      "name": "linux-clang-13-debug",
      "inherits": [ "linux-basic-clang-13", "debug-build" ],
      "displayName": "Linux clang 13 Debug"
    },
    {
      "name": "linux-clang-13-debug-tests",
      "inherits": [
        "linux-basic-clang-13",
        "debug-build",
        "enable-tests"
      ],
      "displayName": "Linux clang 13 Debug+Tests"
    },
    {
      "name": "linux-g++-debug",
      "displayName": "Linux c++ Debug",
      "inherits": [
        "linux-basic-g++",
        "debug-build"
      ]
    },
    {
      "name": "linux-g++-debug-tests",
      "inherits": [
        "linux-basic-g++",
        "debug-build",
        "enable-tests"
      ],
      "displayName": "Linux g++, Debug+Tests"
    },
    {
      "name": "g++-debug-asan-tests",
      "inherits": [
        "linux-g++-debug-tests",
        "enable-tests",
        "enable-address-sanitizer"
      ],
      "displayName": "Linux g++, ASAN+Debug+Tests"
    },
    {
      "name": "linux-g++-debug-tests-samples",
      "inherits": [
        "linux-basic-g++",
        "debug-build",
        "enable-tests",
        "enable-samples"
      ],
      "displayName": "Linux c++ Debug+Tests, samples"
    },
    {
      "name": "linux-g++-11-debug",
      "displayName": "Linux g++-11 Debug",
      "inherits": [
        "linux-basic-g++-11",
        "debug-build"
      ]
    },
    {
      "name": "linux-g++-11-debug-tests",
      "inherits": [
        "linux-basic-g++-11",
        "debug-build",
        "enable-tests"
      ],
      "displayName": "Linux g++-11 Debug+Tests"
    },
    {
      "name": "linux-g++-11-debug-tests-samples",
      "inherits": [
        "linux-basic-g++-11",
        "debug-build",
        "enable-tests",
        "enable-samples"
      ],
      "displayName": "Linux c++ Debug+Tests, samples"
    },
    {
      "name": "generate-doxygen",
      "displayName": "zz-Generate Doxygen",
      "inherits": "x64-static",
      "cacheVariables": {
        "BUILD_DOCUMENTATION": true
      }
    }
  ]
}
