{
    "version": 2,
    "configurePresets": [
        {
            "name": "release-binary-dir",
            "hidden": true,
            "binaryDir": "${sourceDir}/out/build/${presetName}"
        },
        {
            "name": "build-with-conan",
            "hidden": true,
            "cacheVariables": {
                "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/conan-generated/conan_toolchain.cmake",
                "FORCE_BUNDLED_MINIZIP": "OFF"
            }
        },
        {
            "name": "base-release",
            "inherits": "release-binary-dir",
            "hidden": true,
            "cacheVariables": {
                "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
                "PACKAGE_FILE_NAME" : "$env{VCMI_PACKAGE_FILE_NAME}",
                "PACKAGE_NAME_SUFFIX" : "$env{VCMI_PACKAGE_NAME_SUFFIX}",
                "CMAKE_BUILD_TYPE": "RelWithDebInfo",
                "ENABLE_TEST": "OFF",
                "ENABLE_STRICT_COMPILATION": "ON",
                "ENABLE_GITVERSION": "$env{VCMI_PACKAGE_GITVERSION}",
                "ENABLE_PCH" : "OFF"
            }
        },
        {
            "name": "default-release",
            "inherits": "base-release",
            "hidden": true,
            "generator": "Ninja",
            "cacheVariables": {
                "FORCE_BUNDLED_FL": "OFF"
            }
        },
        {
            "name" : "linux-release",
            "inherits" : "default-release",
            "hidden": true,
            "cacheVariables": {
                "CMAKE_INSTALL_PREFIX" : "/usr/local"
            }
        },
        {
            "name": "linux-test",
            "inherits": "linux-release",
            "hidden": true,
            "cacheVariables": {
                "ENABLE_TEST": "ON",
                "ENABLE_LUA": "ON"
            }
        },
        {
            "name": "linux-clang-release",
            "displayName": "Clang x86_64-pc-linux-gnu",
            "description": "VCMI Linux Clang",
            "inherits": "linux-release",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "/usr/bin/clang",
                "CMAKE_CXX_COMPILER": "/usr/bin/clang++"
            }
        },
        {
            "name": "linux-gcc-release",
            "displayName": "GCC x86_64-pc-linux-gnu",
            "description": "VCMI Linux GCC",
            "inherits": "linux-release",
            "cacheVariables": {
                "ENABLE_LUA" : "ON",
                "CMAKE_C_COMPILER": "/usr/bin/gcc",
                "CMAKE_CXX_COMPILER": "/usr/bin/g++"
            }
        },
        {
            "name": "linux-gcc-debug",
            "displayName": "GCC x86_64-pc-linux-gnu (debug)",
            "description": "VCMI Linux GCC (Debug)",
            "inherits": "linux-release",
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug",
                "ENABLE_LUA" : "ON",
                "CMAKE_C_COMPILER": "/usr/bin/gcc",
                "CMAKE_CXX_COMPILER": "/usr/bin/g++"
            }
        },
        {
            "name": "linux-clang-test",
            "displayName": "Clang x86_64-pc-linux-gnu with unit testing",
            "description": "VCMI Linux Clang",
            "inherits": "linux-test",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "/usr/bin/clang",
                "CMAKE_CXX_COMPILER": "/usr/bin/clang++"
            }
        },
        {
            "name": "linux-gcc-test",
            "displayName": "GCC x86_64-pc-linux-gnu with unit testing",
            "description": "VCMI Linux GCC",
            "inherits": "linux-test",
            "cacheVariables": {
                "ENABLE_LUA" : "OFF",
                "CMAKE_C_COMPILER": "/usr/bin/gcc",
                "CMAKE_CXX_COMPILER": "/usr/bin/g++"
            }
        },
        {
            "name": "windows-msvc-release",
            "displayName": "Windows x64 RelWithDebInfo",
            "description": "VCMI RelWithDebInfo build",
            "inherits": "default-release",
            "generator": "Visual Studio 17 2022",
            "architecture": {
                "value": "x64",
                "strategy": "set"
            },
            "cacheVariables": {
                "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/vcpkg/scripts/buildsystems/vcpkg.cmake",
                "CMAKE_POLICY_DEFAULT_CMP0091": "NEW",
                "FORCE_BUNDLED_MINIZIP": "ON"

            }
        },
        {
            "name": "windows-msvc-release-ccache",
            "displayName": "Windows x64 RelWithDebInfo with ccache",
            "description": "VCMI RelWithDebInfo build with ccache",
            "inherits": "windows-msvc-release",
            "cacheVariables": {
                "ENABLE_CCACHE": "ON"

            }
        },
        {
            "name": "windows-mingw-conan-linux",
            "displayName": "Ninja+Conan release",
            "description": "VCMI Windows Ninja using Conan on Linux",
            "inherits": [
                "build-with-conan",
                "default-release"
            ],
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release",
                "FORCE_BUNDLED_FL": "ON"
            }
        },
        {
            "name": "macos-ninja-release",
            "displayName": "Ninja release",
            "description": "VCMI MacOS Ninja",
            "inherits": "default-release"
        },
        {
            "name": "macos-conan-ninja-release",
            "displayName": "Ninja+Conan release",
            "description": "VCMI MacOS Ninja using Conan",
            "inherits": [
                "build-with-conan",
                "default-release"
            ],
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Release"
            }
        },
        {
            "name": "macos-arm-conan-ninja-release",
            "displayName": "Ninja+Conan arm64 release",
            "description": "VCMI MacOS-arm64 Ninja using Conan",
            "inherits": "macos-conan-ninja-release"
        },
        {
            "name": "macos-xcode-release",
            "displayName": "XCode release",
            "description": "VCMI MacOS Xcode",
            "inherits": "default-release",
            "generator": "Xcode"
        },
        {
            "name": "ios-device",
            "displayName": "Base iOS device",
            "description": "Base VCMI preset for iOS device",
            "generator": "Xcode",
            "binaryDir": "../build-${presetName}",
            "cacheVariables": {
                "CMAKE_SYSTEM_NAME": "iOS",
                "FORCE_BUNDLED_FL": "ON",
                "FORCE_BUNDLED_MINIZIP": "ON",
                "ENABLE_EDITOR" : "OFF"
            }
        },
        {
            "name": "ios-simulator",
            "displayName": "Base iOS simulator",
            "description": "Base VCMI preset for iOS simulator",
            "inherits": "ios-device",
            "cacheVariables": {
                "CMAKE_OSX_SYSROOT": "iphonesimulator"
            }
        },
        {
            "name": "ios-device-conan",
            "displayName": "Base iOS device using Conan",
            "description": "Base VCMI preset for iOS device using Conan",
            "inherits": [
                "build-with-conan",
                "ios-device"
            ]
        },
        {
            "name": "base-ios-release",
            "displayName": "Base iOS release",
            "description": "Base VCMI preset for iOS release",
            "inherits": "base-release",
            "hidden": true,
            "cacheVariables": {
                "BUNDLE_IDENTIFIER_PREFIX": "eu.vcmi"
            }
        },
        {
            "name": "ios-release-conan",
            "displayName": "iOS+Conan release",
            "description": "VCMI iOS release using Conan",
            "inherits": [
                "base-ios-release",
                "ios-device-conan"
            ],
            "cacheVariables": {
                "ENABLE_PCH" : "ON"
            }
        },
        {
            "name": "ios-release-conan-ccache",
            "displayName": "iOS+Conan release using ccache",
            "description": "VCMI iOS release using Conan and ccache",
            "inherits": "ios-release-conan",
            "cacheVariables": {
                "ENABLE_PCH" : "OFF",
                "ENABLE_CCACHE": "ON"
            }
        },
        {
            "name": "ios-release-legacy",
            "displayName": "iOS release using legacy dependencies",
            "description": "VCMI iOS release using legacy dependencies",
            "inherits": [
                "base-ios-release",
                "ios-device"
            ],
            "cacheVariables": {
                "CMAKE_PREFIX_PATH": "${sourceDir}/build/iphoneos"
            }
        },
        {
            "name": "android-conan-ninja-release",
            "displayName": "Android release",
            "description": "VCMI Android Ninja using Conan",
            "inherits": [
                "build-with-conan",
                "default-release"
            ],
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "RelWithDebInfo"
            }
        }
    ],
    "buildPresets": [
        {
            "name": "default-release",
            "hidden": true,
            "configuration": "RelWithDebInfo"
        },
        {
            "name": "default-debug",
            "hidden": true,
            "configuration": "Debug"
        },
        {
            "name": "linux-clang-release",
            "configurePreset": "linux-clang-release",
            "inherits": "default-release"
        },
        {
            "name": "linux-clang-test",
            "configurePreset": "linux-clang-test",
            "inherits": "default-release"
        },
        {
            "name": "linux-gcc-test",
            "configurePreset": "linux-gcc-test",
            "inherits": "default-release"
        },
        {
            "name": "linux-gcc-release",
            "configurePreset": "linux-gcc-release",
            "inherits": "default-release"
        },
        {
            "name": "linux-gcc-debug",
            "configurePreset": "linux-gcc-debug",
            "inherits": "default-debug"
        },
        {
            "name": "macos-xcode-release",
            "configurePreset": "macos-xcode-release",
            "inherits": "default-release"
        },
        {
            "name": "macos-ninja-release",
            "configurePreset": "macos-ninja-release",
            "inherits": "default-release"
        },
        {
            "name": "macos-conan-ninja-release",
            "configurePreset": "macos-conan-ninja-release",
            "inherits": "default-release"
        },
        {
            "name": "macos-arm-conan-ninja-release",
            "configurePreset": "macos-arm-conan-ninja-release",
            "inherits": "default-release"
        },
        {
            "name": "windows-msvc-release",
            "configurePreset": "windows-msvc-release",
            "inherits": "default-release",
            "configuration": "Release"
        },
        {
            "name": "windows-msvc-release-ccache",
            "configurePreset": "windows-msvc-release-ccache",
            "inherits": "windows-msvc-release"
        },
        {
            "name": "windows-msvc-relwithdebinfo",
            "configurePreset": "windows-msvc-release",
            "inherits": "default-release"
        },
        {
            "name": "windows-mingw-conan-linux",
            "configurePreset": "windows-mingw-conan-linux",
            "inherits": "default-release",
            "configuration": "Release"
        },
        {
            "name": "ios-release-conan",
            "configurePreset": "ios-release-conan",
            "inherits": "default-release",
            "configuration": "Release",
            "targets": ["vcmiclient"],
            "nativeToolOptions": [
                "CODE_SIGNING_ALLOWED_FOR_APPS=NO"
            ]
        },
        {
            "name": "ios-release-conan-ccache",
            "configurePreset": "ios-release-conan-ccache",
            "inherits": "ios-release-conan"
        },
        {
            "name": "ios-release-legacy",
            "configurePreset": "ios-release-legacy",
            "inherits": "ios-release-conan"
        },
        {
            "name": "android-conan-ninja-release",
            "configurePreset": "android-conan-ninja-release",
            "inherits": "default-release"
        }
    ],
    "testPresets": [
        {
            "name": "default-release",
            "hidden": true,
            "output": {
                "shortProgress": true,
                "verbosity": "verbose"
            }
        },
        {
          "name": "linux-clang-release",
          "configurePreset": "linux-clang-release",
          "inherits": "default-release"
        },
        {
            "name": "linux-gcc-release",
            "configurePreset": "linux-gcc-release",
            "inherits": "default-release"
        },
        {
            "name": "linux-clang-test",
            "configurePreset": "linux-clang-test",
            "inherits": "default-release"
        },
        {
            "name": "linux-gcc-test",
            "configurePreset": "linux-gcc-test",
            "inherits": "default-release"
        },
        {
            "name": "macos-xcode-release",
            "configurePreset": "macos-xcode-release",
            "inherits": "default-release"
        },
        {
            "name": "macos-ninja-release",
            "configurePreset": "macos-ninja-release",
            "inherits": "default-release"
        },
        {
            "name": "windows-msvc-release",
            "configurePreset": "windows-msvc-release",
            "inherits": "default-release"
        },
        {
            "name": "windows-mingw-conan-linux",
            "configurePreset": "windows-mingw-conan-linux",
            "inherits": "default-release"
        }
    ]
}