{ "$schema": "http://json-schema.org/draft-07/schema#", "description": "Schema for the CMake toolchains object kind", "type": "object", "required": [ "kind", "version", "toolchains" ], "oneOf": [ { "$ref": "#/definitions/toolchainsObjV1_0" }, { "$ref": "#/definitions/toolchainsObjV1_1" } ], "definitions": { "kind": { "type": "string", "const": "toolchains", "description": "Specifies the object kind" }, "versionV1_0": { "type": "object", "required": [ "major", "minor" ], "properties": { "major": { "type": "integer", "const": 1 }, "minor": { "type": "integer", "const": 0 } }, "additionalProperties": false }, "versionV1_1": { "type": "object", "required": [ "major", "minor" ], "properties": { "major": { "type": "integer", "const": 1 }, "minor": { "type": "integer", "const": 1 } }, "additionalProperties": false }, "language": { "type": "string", "description": "Toolchain language identifier (e.g. C, CXX)" }, "sourceFileExtensions": { "type": "array", "items": { "type": "string" }, "description": "List of source file extensions (without leading dot) supported by this toolchain" }, "compilerPath": { "type": "string", "description": "Path to the compiler executable. This is present when the CMAKE__COMPILER variable is defined." }, "compilerCommandFragment": { "type": "string", "description": "Mandatory arguments to the compiler, as a command line fragment. This is present when the CMAKE__COMPILER variable is a list containing multiple elements or the CC or similar environment variable contains command line arguments." }, "compilerId": { "type": "string", "description": "Compiler identifier (e.g. GNU, MSVC). This is present when the CMAKE__COMPILER_ID variable is defined." }, "compilerVersion": { "type": "string", "description": "Version of the compiler. This is present when the CMAKE__COMPILER_VERSION variable is defined." }, "compilerTarget": { "type": "string", "description": "Cross-compiling target of the compiler. This is present when the CMAKE__COMPILER_TARGET variable is defined." }, "compilerImplicit": { "type": "object", "properties": { "includeDirectories": { "type": "array", "items": { "type": "string" }, "description": "List of implicit include directories for the compiler. This is present when the CMAKE__IMPLICIT_INCLUDE_DIRECTORIES variable is defined." }, "linkDirectories": { "type": "array", "items": { "type": "string" }, "description": "List of implicit link directories for the compiler front end. This is present when the CMAKE__IMPLICIT_LINK_DIRECTORIES variable is defined." }, "linkFrameworkDirectories": { "type": "array", "items": { "type": "string" }, "description": "List of implicit link framework directories for the compiler front end. This is present when the CMAKE__IMPLICIT_FRAMEWORK_DIRECTORIES variable is defined." }, "linkLibraries": { "type": "array", "items": { "type": "string" }, "description": "List of implicit link libraries for the compiler front end. This is present when the CMAKE__IMPLICIT_LINK_LIBRARIES variable is defined." } }, "additionalProperties": false }, "compilerV1_0": { "type": "object", "properties": { "path": { "$ref": "#/definitions/compilerPath" }, "id": { "$ref": "#/definitions/compilerId" }, "version": { "$ref": "#/definitions/compilerVersion" }, "target": { "$ref": "#/definitions/compilerTarget" }, "implicit": { "$ref": "#/definitions/compilerImplicit" } }, "additionalProperties": false }, "compilerV1_1": { "type": "object", "properties": { "path": { "$ref": "#/definitions/compilerPath" }, "commandFragment": { "$ref": "#/definitions/compilerCommandFragment" }, "id": { "$ref": "#/definitions/compilerId" }, "version": { "$ref": "#/definitions/compilerVersion" }, "target": { "$ref": "#/definitions/compilerTarget" }, "implicit": { "$ref": "#/definitions/compilerImplicit" } }, "additionalProperties": false }, "toolchainsObjV1_0": { "type": "object", "properties": { "kind": { "$ref": "#/definitions/kind" }, "version": { "$ref": "#/definitions/versionV1_0" }, "toolchains": { "type": "array", "description": "Array of toolchain configurations per language", "items": { "type": "object", "required": [ "language", "compiler" ], "properties": { "language": { "$ref": "#/definitions/language" }, "compiler": { "$ref": "#/definitions/compilerV1_0" }, "sourceFileExtensions": { "$ref": "#/definitions/sourceFileExtensions" } }, "additionalProperties": false } } }, "additionalProperties": false }, "toolchainsObjV1_1": { "type": "object", "properties": { "kind": { "$ref": "#/definitions/kind" }, "version": { "$ref": "#/definitions/versionV1_1" }, "toolchains": { "type": "array", "description": "Array of toolchain configurations per language", "items": { "type": "object", "required": [ "language", "compiler" ], "properties": { "language": { "$ref": "#/definitions/language" }, "compiler": { "$ref": "#/definitions/compilerV1_1" }, "sourceFileExtensions": { "$ref": "#/definitions/sourceFileExtensions" } }, "additionalProperties": false } } }, "additionalProperties": false } } }