{
  "version": 10,
  "cmakeMinimumRequired": {
    "major": 3,
    "minor": 22,
    "patch": 0
  },
  "configurePresets": [
    {
      "name": "auto",
      "displayName": "Auto",
      "description": "Automatic build kit selection",
      "binaryDir": "Build/Auto"
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "name": "msvc2022",
      "displayName": "MSVC2022",
      "description": "Requirements: Visual Studio 2022",
      "binaryDir": "Build/MSVC2022",
      "generator": "Visual Studio 17 2022"
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "name": "msvc2026",
      "displayName": "MSVC2026",
      "description": "Requirements: Visual Studio 2026",
      "binaryDir": "Build/MSVC2026",
      "generator": "Visual Studio 18 2026"
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "name": "clang-cl",
      "displayName": "ClangCL (MSVC2022)",
      "description": "Requirements: Visual Studio 2022 with ClangCL toolset",
      "binaryDir": "Build/ClangCl",
      "generator": "Visual Studio 17 2022",
      "toolset": "ClangCL"
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "name": "clang-cl-2026",
      "displayName": "ClangCL (MSVC2026)",
      "description": "Requirements: Visual Studio 2026 with ClangCL toolset",
      "binaryDir": "Build/ClangCl2026",
      "generator": "Visual Studio 18 2026",
      "toolset": "ClangCL"
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Darwin"
      },
      "name": "xcode",
      "displayName": "Xcode",
      "description": "Requirements: Xcode",
      "binaryDir": "Build/Xcode",
      "generator": "Xcode"
    },
    {
      "condition": {
        "type": "notEquals",
        "lhs": "${hostSystemName}",
        "rhs": "Windows"
      },
      "name": "clang",
      "displayName": "Clang",
      "description": "Requirements: Clang and Ninja",
      "binaryDir": "Build/Clang",
      "generator": "Ninja Multi-Config",
      "cacheVariables": {
        "CMAKE_C_COMPILER": "clang",
        "CMAKE_CXX_COMPILER": "clang++"
      }
    },
    {
      "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
      },
      "name": "gcc",
      "displayName": "GCC",
      "description": "Requirements: GCC and Ninja",
      "binaryDir": "Build/GCC",
      "generator": "Ninja Multi-Config",
      "cacheVariables": {
        "CMAKE_C_COMPILER": "gcc",
        "CMAKE_CXX_COMPILER": "g++"
      }
    },
    {
      "name": "emscripten",
      "displayName": "Emscripten",
      "description": "Requirements: EMSDK in environment variables and Ninja",
      "binaryDir": "Build/Web",
      "generator": "Ninja Multi-Config",
      "toolchainFile": "$env{EMSDK}/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake"
    },
    {
      "name": "android-ndk-arm32",
      "displayName": "Android NDK (arm32)",
      "description": "Requirements: NDK_ROOT in environment variables and Ninja",
      "binaryDir": "Build/Android-Arm32",
      "generator": "Ninja Multi-Config",
      "toolchainFile": "$env{NDK_ROOT}/android-ndk/build/cmake/android.toolchain.cmake",
      "cacheVariables": {
        "ANDROID_ABI": "armeabi-v7a",
        "ANDROID_NATIVE_API_LEVEL_NUMBER": "23"
      }
    },
    {
      "name": "android-ndk-arm64",
      "displayName": "Android NDK (arm64)",
      "description": "Requirements: NDK_ROOT in environment variables and Ninja",
      "binaryDir": "Build/Android-Arm64",
      "generator": "Ninja Multi-Config",
      "toolchainFile": "$env{NDK_ROOT}/android-ndk/build/cmake/android.toolchain.cmake",
      "cacheVariables": {
        "ANDROID_ABI": "arm64-v8a",
        "ANDROID_NATIVE_API_LEVEL_NUMBER": "23"
      }
    },
    {
      "name": "android-ndk-x86",
      "displayName": "Android NDK (x86)",
      "description": "Requirements: NDK_ROOT in environment variables and Ninja",
      "binaryDir": "Build/Android-X86",
      "generator": "Ninja Multi-Config",
      "toolchainFile": "$env{NDK_ROOT}/android-ndk/build/cmake/android.toolchain.cmake",
      "cacheVariables": {
        "ANDROID_ABI": "x86",
        "ANDROID_NATIVE_API_LEVEL_NUMBER": "23"
      }
    }
  ],
  "buildPresets": [
    {
      "hidden": true,
      "name": "base-msvc",
      "targets": [
        "ALL_BUILD",
        "TLA_Server",
        "TLA_ServerHeadless",
        "TLA_Client",
        "TLA_Mapper",
        "TLA_Editor",
        "TLA_Baker",
        "TLA_ASCompiler",
        "TLA_UnitTests",
        "BakeResources",
        "ForceBakeResources",
        "CompileAngelScript"
      ]
    },
    {
      "hidden": true,
      "name": "base-ninja",
      "targets": [
        "all",
        "TLA_Server",
        "TLA_ServerHeadless",
        "TLA_Client",
        "TLA_Mapper",
        "TLA_Editor",
        "TLA_Baker",
        "TLA_ASCompiler",
        "TLA_UnitTests",
        "BakeResources",
        "ForceBakeResources",
        "CompileAngelScript"
      ]
    },
    {
      "name": "msvc2022-release",
      "inherits": "base-msvc",
      "displayName": "Release",
      "configurePreset": "msvc2022",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "msvc2022-debug",
      "inherits": "base-msvc",
      "displayName": "Debug",
      "configurePreset": "msvc2022",
      "configuration": "Debug"
    },
    {
      "name": "msvc2022-profiling-total",
      "inherits": "base-msvc",
      "displayName": "Total Profiling",
      "configurePreset": "msvc2022",
      "configuration": "Profiling_Total"
    },
    {
      "name": "msvc2022-profiling-ondemand",
      "inherits": "base-msvc",
      "displayName": "On-Demand Profiling",
      "configurePreset": "msvc2022",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "msvc2022-sanitizer-address",
      "inherits": "base-msvc",
      "displayName": "Address Sanitizer",
      "configurePreset": "msvc2022",
      "configuration": "San_Address"
    },
    {
      "name": "msvc2026-release",
      "inherits": "base-msvc",
      "displayName": "Release",
      "configurePreset": "msvc2026",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "msvc2026-debug",
      "inherits": "base-msvc",
      "displayName": "Debug",
      "configurePreset": "msvc2026",
      "configuration": "Debug"
    },
    {
      "name": "msvc2026-profiling-total",
      "inherits": "base-msvc",
      "displayName": "Total Profiling",
      "configurePreset": "msvc2026",
      "configuration": "Profiling_Total"
    },
    {
      "name": "msvc2026-profiling-ondemand",
      "inherits": "base-msvc",
      "displayName": "On-Demand Profiling",
      "configurePreset": "msvc2026",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "msvc2026-sanitizer-address",
      "inherits": "base-msvc",
      "displayName": "Address Sanitizer",
      "configurePreset": "msvc2026",
      "configuration": "San_Address"
    },
    {
      "name": "clang-cl-release",
      "inherits": "base-msvc",
      "displayName": "Release",
      "configurePreset": "clang-cl",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "clang-cl-debug",
      "inherits": "base-msvc",
      "displayName": "Debug",
      "configurePreset": "clang-cl",
      "configuration": "Debug"
    },
    {
      "name": "clang-cl-profiling-total",
      "inherits": "base-msvc",
      "displayName": "Total Profiling",
      "configurePreset": "clang-cl",
      "configuration": "Profiling_Total"
    },
    {
      "name": "clang-cl-profiling-ondemand",
      "inherits": "base-msvc",
      "displayName": "On-Demand Profiling",
      "configurePreset": "clang-cl",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "clang-cl-2026-release",
      "inherits": "base-msvc",
      "displayName": "Release",
      "configurePreset": "clang-cl-2026",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "clang-cl-2026-debug",
      "inherits": "base-msvc",
      "displayName": "Debug",
      "configurePreset": "clang-cl-2026",
      "configuration": "Debug"
    },
    {
      "name": "clang-cl-2026-profiling-total",
      "inherits": "base-msvc",
      "displayName": "Total Profiling",
      "configurePreset": "clang-cl-2026",
      "configuration": "Profiling_Total"
    },
    {
      "name": "clang-cl-2026-profiling-ondemand",
      "inherits": "base-msvc",
      "displayName": "On-Demand Profiling",
      "configurePreset": "clang-cl-2026",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "clang-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "clang",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "clang-debug",
      "inherits": "base-ninja",
      "displayName": "Debug",
      "configurePreset": "clang",
      "configuration": "Debug"
    },
    {
      "name": "clang-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "clang",
      "configuration": "Profiling_Total"
    },
    {
      "name": "clang-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "clang",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "clang-sanitizer-address",
      "inherits": "base-ninja",
      "displayName": "Address Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_Address"
    },
    {
      "name": "clang-sanitizer-memory",
      "inherits": "base-ninja",
      "displayName": "Memory Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_Memory"
    },
    {
      "name": "clang-sanitizer-memory-with-origins",
      "inherits": "base-ninja",
      "displayName": "Memory With Origins Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_MemoryWithOrigins"
    },
    {
      "name": "clang-sanitizer-undefined",
      "inherits": "base-ninja",
      "displayName": "Undefined Behaviour Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_Undefined"
    },
    {
      "name": "clang-sanitizer-thread",
      "inherits": "base-ninja",
      "displayName": "Thread Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_Thread"
    },
    {
      "name": "clang-sanitizer-data-flow",
      "inherits": "base-ninja",
      "displayName": "Data Flow Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_DataFlow"
    },
    {
      "name": "clang-sanitizer-address-undefined",
      "inherits": "base-ninja",
      "displayName": "Address and Undefined Behaviour Sanitizer",
      "configurePreset": "clang",
      "configuration": "San_Address_Undefined"
    },
    {
      "name": "gcc-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "gcc",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "gcc-debug",
      "inherits": "base-ninja",
      "displayName": "Debug",
      "configurePreset": "gcc",
      "configuration": "Debug"
    },
    {
      "name": "gcc-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "gcc",
      "configuration": "Profiling_Total"
    },
    {
      "name": "gcc-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "gcc",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "auto-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "auto",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "auto-debug",
      "inherits": "base-ninja",
      "displayName": "Debug",
      "configurePreset": "auto",
      "configuration": "Debug"
    },
    {
      "name": "auto-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "auto",
      "configuration": "Profiling_Total"
    },
    {
      "name": "auto-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "auto",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "emscripten-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "emscripten",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "emscripten-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "emscripten",
      "configuration": "Profiling_Total"
    },
    {
      "name": "emscripten-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "emscripten",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "android-arm32-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "android-ndk-arm32",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "android-arm32-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "android-ndk-arm32",
      "configuration": "Profiling_Total"
    },
    {
      "name": "android-arm32-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "android-ndk-arm32",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "android-arm64-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "android-ndk-arm64",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "android-arm64-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "android-ndk-arm64",
      "configuration": "Profiling_Total"
    },
    {
      "name": "android-arm64-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "android-ndk-arm64",
      "configuration": "Profiling_OnDemand"
    },
    {
      "name": "android-x86-release",
      "inherits": "base-ninja",
      "displayName": "Release",
      "configurePreset": "android-ndk-x86",
      "configuration": "RelWithDebInfo"
    },
    {
      "name": "android-x86-profiling-total",
      "inherits": "base-ninja",
      "displayName": "Total Profiling",
      "configurePreset": "android-ndk-x86",
      "configuration": "Profiling_Total"
    },
    {
      "name": "android-x86-profiling-ondemand",
      "inherits": "base-ninja",
      "displayName": "On-Demand Profiling",
      "configurePreset": "android-ndk-x86",
      "configuration": "Profiling_OnDemand"
    }
  ]
}