{
    "type": "array",
    "description": "CMake Kits",
    "items": {
        "type": "object",
        "description": "A kit",
        "additionalProperties": false,
        "properties": {
            "name": {
                "type": "string",
                "description": "Name of this kit"
            },
            "description": {
                "type": "string",
                "description": "The description of this kit"
            },
            "vendor": {
                "type": "string",
                "description": "The vendor name of this kit"
            },
            "triple": {
                "type": "string",
                "description": "The target triple of this kit"
            },
            "version": {
                "type": "string",
                "description": "The version of this kit"
            },
            "versionRuntime": {
                "type": "string",
                "description": "The version of the C runtime for the kit"
            },
            "keep": {
                "type": "boolean",
                "description": "If `true`, this kit will be kept even if it appears out-of-date."
            },
            "compilers": {
                "type": "object",
                "patternProperties": {
                    "\\w+": {
                        "type": "string",
                        "description": "Path to a compiler for this language"
                    }
                }
            },
            "toolchainFile": {
                "type": "string",
                "description": "Path to a toolchain file"
            },
            "visualStudio": {
                "type": "string",
                "description": "Instance ID of the Visual Studio product"
            },
            "visualStudioArchitecture": {
                "type": "string",
                "description": "Architecture to target"
            },
            "visualStudioArguments": {
                "type": "array",
                "description": "Arguments to vcvarsall.bat",
                "items": {
                    "type": "string"
                }
            },
            "environmentSetupScript": {
                "type": "string",
                "description": "The absolute path to a script that modifies the environment for the Kit"
            },
            "environmentVariables": {
                "type": "object",
                "patternProperties": {
                    ".*": {
                        "type": "string",
                        "description": "Value for the environment variable"
                    }
                }
            },
            "cmakeSettings": {
                "type": "object",
                "patternProperties": {
                    ".*": {
                        "oneOf": [
                            {
                                "type": "string",
                                "description": "Value for the CMake Setting. Semicolons are passed through verbatim and treated by CMake as list separators."
                            },
                            {
                                "type": "boolean",
                                "description": "Boolean value for the CMake Setting. Emitted as -D<key>:BOOL=TRUE/FALSE."
                            },
                            {
                                "type": "number",
                                "description": "Numeric value for the CMake Setting. Emitted as -D<key>:STRING=<number>. Note: JSON numbers cannot preserve trailing zeros (1.10 ≡ 1.1) or very large/small magnitudes; quote as a string when exact text matters."
                            },
                            {
                                "type": "array",
                                "items": {
                                    "type": "string"
                                },
                                "description": "Array of strings joined with semicolons to form a CMake list."
                            }
                        ]
                    }
                }
            },
            "preferredGenerator": {
                "type": "object",
                "description": "Set a preferred CMake generator for this Kit",
                "properties": {
                    "name": {
                        "type": "string",
                        "description": "Name of the generator to use"
                    },
                    "platform": {
                        "type": "string",
                        "description": "CMake platform for -A argument"
                    },
                    "toolset": {
                        "type": "string",
                        "description": "CMake toolset for -T argument"
                    }
                },
                "required": [
                    "name"
                ]
            },
            "isTrusted": {
                "type": "boolean",
                "description": "True if this kit comes from a trusted path"
            }
        }
    }
}