schema_toolchains.json 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. {
  2. "$schema": "http://json-schema.org/draft-07/schema#",
  3. "description": "Schema for the CMake toolchains object kind",
  4. "type": "object",
  5. "required": [
  6. "kind",
  7. "version",
  8. "toolchains"
  9. ],
  10. "oneOf": [
  11. {
  12. "$ref": "#/definitions/toolchainsObjV1_0"
  13. },
  14. {
  15. "$ref": "#/definitions/toolchainsObjV1_1"
  16. }
  17. ],
  18. "definitions": {
  19. "kind": {
  20. "type": "string",
  21. "const": "toolchains",
  22. "description": "Specifies the object kind"
  23. },
  24. "versionV1_0": {
  25. "type": "object",
  26. "required": [
  27. "major",
  28. "minor"
  29. ],
  30. "properties": {
  31. "major": {
  32. "type": "integer",
  33. "const": 1
  34. },
  35. "minor": {
  36. "type": "integer",
  37. "const": 0
  38. }
  39. },
  40. "additionalProperties": false
  41. },
  42. "versionV1_1": {
  43. "type": "object",
  44. "required": [
  45. "major",
  46. "minor"
  47. ],
  48. "properties": {
  49. "major": {
  50. "type": "integer",
  51. "const": 1
  52. },
  53. "minor": {
  54. "type": "integer",
  55. "const": 1
  56. }
  57. },
  58. "additionalProperties": false
  59. },
  60. "language": {
  61. "type": "string",
  62. "description": "Toolchain language identifier (e.g. C, CXX)"
  63. },
  64. "sourceFileExtensions": {
  65. "type": "array",
  66. "items": {
  67. "type": "string"
  68. },
  69. "description": "List of source file extensions (without leading dot) supported by this toolchain"
  70. },
  71. "compilerPath": {
  72. "type": "string",
  73. "description": "Path to the compiler executable. This is present when the CMAKE_<LANG>_COMPILER variable is defined."
  74. },
  75. "compilerCommandFragment": {
  76. "type": "string",
  77. "description": "Mandatory arguments to the compiler, as a command line fragment. This is present when the CMAKE_<LANG>_COMPILER variable is a list containing multiple elements or the CC or similar environment variable contains command line arguments."
  78. },
  79. "compilerId": {
  80. "type": "string",
  81. "description": "Compiler identifier (e.g. GNU, MSVC). This is present when the CMAKE_<LANG>_COMPILER_ID variable is defined."
  82. },
  83. "compilerVersion": {
  84. "type": "string",
  85. "description": "Version of the compiler. This is present when the CMAKE_<LANG>_COMPILER_VERSION variable is defined."
  86. },
  87. "compilerTarget": {
  88. "type": "string",
  89. "description": "Cross-compiling target of the compiler. This is present when the CMAKE_<LANG>_COMPILER_TARGET variable is defined."
  90. },
  91. "compilerImplicit": {
  92. "type": "object",
  93. "properties": {
  94. "includeDirectories": {
  95. "type": "array",
  96. "items": {
  97. "type": "string"
  98. },
  99. "description": "List of implicit include directories for the compiler. This is present when the CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES variable is defined."
  100. },
  101. "linkDirectories": {
  102. "type": "array",
  103. "items": {
  104. "type": "string"
  105. },
  106. "description": "List of implicit link directories for the compiler front end. This is present when the CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES variable is defined."
  107. },
  108. "linkFrameworkDirectories": {
  109. "type": "array",
  110. "items": {
  111. "type": "string"
  112. },
  113. "description": "List of implicit link framework directories for the compiler front end. This is present when the CMAKE_<LANG>_IMPLICIT_FRAMEWORK_DIRECTORIES variable is defined."
  114. },
  115. "linkLibraries": {
  116. "type": "array",
  117. "items": {
  118. "type": "string"
  119. },
  120. "description": "List of implicit link libraries for the compiler front end. This is present when the CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES variable is defined."
  121. }
  122. },
  123. "additionalProperties": false
  124. },
  125. "compilerV1_0": {
  126. "type": "object",
  127. "properties": {
  128. "path": {
  129. "$ref": "#/definitions/compilerPath"
  130. },
  131. "id": {
  132. "$ref": "#/definitions/compilerId"
  133. },
  134. "version": {
  135. "$ref": "#/definitions/compilerVersion"
  136. },
  137. "target": {
  138. "$ref": "#/definitions/compilerTarget"
  139. },
  140. "implicit": {
  141. "$ref": "#/definitions/compilerImplicit"
  142. }
  143. },
  144. "additionalProperties": false
  145. },
  146. "compilerV1_1": {
  147. "type": "object",
  148. "properties": {
  149. "path": {
  150. "$ref": "#/definitions/compilerPath"
  151. },
  152. "commandFragment": {
  153. "$ref": "#/definitions/compilerCommandFragment"
  154. },
  155. "id": {
  156. "$ref": "#/definitions/compilerId"
  157. },
  158. "version": {
  159. "$ref": "#/definitions/compilerVersion"
  160. },
  161. "target": {
  162. "$ref": "#/definitions/compilerTarget"
  163. },
  164. "implicit": {
  165. "$ref": "#/definitions/compilerImplicit"
  166. }
  167. },
  168. "additionalProperties": false
  169. },
  170. "toolchainsObjV1_0": {
  171. "type": "object",
  172. "properties": {
  173. "kind": {
  174. "$ref": "#/definitions/kind"
  175. },
  176. "version": {
  177. "$ref": "#/definitions/versionV1_0"
  178. },
  179. "toolchains": {
  180. "type": "array",
  181. "description": "Array of toolchain configurations per language",
  182. "items": {
  183. "type": "object",
  184. "required": [
  185. "language",
  186. "compiler"
  187. ],
  188. "properties": {
  189. "language": {
  190. "$ref": "#/definitions/language"
  191. },
  192. "compiler": {
  193. "$ref": "#/definitions/compilerV1_0"
  194. },
  195. "sourceFileExtensions": {
  196. "$ref": "#/definitions/sourceFileExtensions"
  197. }
  198. },
  199. "additionalProperties": false
  200. }
  201. }
  202. },
  203. "additionalProperties": false
  204. },
  205. "toolchainsObjV1_1": {
  206. "type": "object",
  207. "properties": {
  208. "kind": {
  209. "$ref": "#/definitions/kind"
  210. },
  211. "version": {
  212. "$ref": "#/definitions/versionV1_1"
  213. },
  214. "toolchains": {
  215. "type": "array",
  216. "description": "Array of toolchain configurations per language",
  217. "items": {
  218. "type": "object",
  219. "required": [
  220. "language",
  221. "compiler"
  222. ],
  223. "properties": {
  224. "language": {
  225. "$ref": "#/definitions/language"
  226. },
  227. "compiler": {
  228. "$ref": "#/definitions/compilerV1_1"
  229. },
  230. "sourceFileExtensions": {
  231. "$ref": "#/definitions/sourceFileExtensions"
  232. }
  233. },
  234. "additionalProperties": false
  235. }
  236. }
  237. },
  238. "additionalProperties": false
  239. }
  240. }
  241. }