You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

187 satır
7.1KB

  1. {
  2. "type": "object",
  3. "description": "DDS Toolchain Description File",
  4. "additionalProperties": false,
  5. "patternProperties": {
  6. "^\\$": {}
  7. },
  8. "definitions": {
  9. "command_line_flags": {
  10. "anyOf": [
  11. {
  12. "type": "string",
  13. "description": "Shell-style string of command-line arguments"
  14. },
  15. {
  16. "type": "array",
  17. "description": "An array of command-line arguments. Will be passed verbatim.",
  18. "items": {
  19. "type": "string",
  20. "description": "A single command-line argument. Will be passed verbatim."
  21. }
  22. }
  23. ]
  24. }
  25. },
  26. "properties": {
  27. "compiler_id": {
  28. "type": "string",
  29. "description": "The general compiler identification. This is one of a fixed set of values that DDS will use to infer most toolchain attributes.",
  30. "enum": [
  31. "msvc",
  32. "gnu",
  33. "clang"
  34. ]
  35. },
  36. "c_compiler": {
  37. "type": "string",
  38. "description": "Executable name or filepath for a C compiler",
  39. "examples": [
  40. "gcc",
  41. "clang-9",
  42. "cl.exe"
  43. ]
  44. },
  45. "cxx_compiler": {
  46. "type": "string",
  47. "description": "Executable name or filepath for a C++ compiler",
  48. "examples": [
  49. "g++",
  50. "clang++-9",
  51. "cl.exe"
  52. ]
  53. },
  54. "flags": {
  55. "description": "Pass additional compile flags, regardless of the source language",
  56. "$ref": "#/definitions/command_line_flags"
  57. },
  58. "c_flags": {
  59. "description": "Pass additional flags to the C compiler.",
  60. "$ref": "#/definitions/command_line_flags"
  61. },
  62. "cxx_flags": {
  63. "description": "Pass additional flags to the C++ compiler.",
  64. "$ref": "#/definitions/command_line_flags"
  65. },
  66. "c_version": {
  67. "description": "The C language version",
  68. "type": "string",
  69. "enum": [
  70. "c89",
  71. "c99",
  72. "c11",
  73. "c18"
  74. ]
  75. },
  76. "cxx_version": {
  77. "description": "The C++ language version",
  78. "type": "string",
  79. "enum": [
  80. "c++98",
  81. "c++03",
  82. "c++11",
  83. "c++14",
  84. "c++17",
  85. "c++20"
  86. ]
  87. },
  88. "warning_flags": {
  89. "description": "Set the flags that will be passed to the compiler to enable/disable warnings",
  90. "$ref": "#/definitions/command_line_flags"
  91. },
  92. "link_flags": {
  93. "description": "Pass additional flags to the compiler when it is linking runtime binaries (executables)",
  94. "$ref": "#/definitions/command_line_flags"
  95. },
  96. "compiler_launcher": {
  97. "description": "Set a command-line prefix that will be prepended to all compiler invocations",
  98. "$ref": "#/definitions/command_line_flags"
  99. },
  100. "debug": {
  101. "description": "Enable the generation of debug information",
  102. "type": "boolean",
  103. "default": true
  104. },
  105. "optimize": {
  106. "description": "Optimize generated code",
  107. "type": "boolean",
  108. "default": true
  109. },
  110. "advanced": {
  111. "type": "object",
  112. "additionalProperties": false,
  113. "description": "Advanced toolchain options. All of these options will be inferred from `compiler_id` by default. Handle with care.",
  114. "properties": {
  115. "deps_mode": {
  116. "type": "string",
  117. "description": "Dependency tracking mode.",
  118. "enum": [
  119. "msvc",
  120. "gnu",
  121. "none"
  122. ]
  123. },
  124. "include_template": {
  125. "description": "Set the include-directory flags template",
  126. "$ref": "#/definitions/command_line_flags"
  127. },
  128. "external_include_template": {
  129. "description": "Set the external include-directory flags template",
  130. "$ref": "#/definitions/command_line_flags"
  131. },
  132. "define_template": {
  133. "description": "Set the preprocessor-definition flags template",
  134. "$ref": "#/definitions/command_line_flags"
  135. },
  136. "base_warning_flags": {
  137. "description": "Set the base warning flags for the toolchain. These are always prepended to `warning_flags`.",
  138. "$ref": "#/definitions/command_line_flags"
  139. },
  140. "c_compile_file": {
  141. "description": "Set the command template for compiling C source files",
  142. "$ref": "#/definitions/command_line_flags"
  143. },
  144. "cxx_compile_file": {
  145. "description": "Set the command template for compiling C++ source files",
  146. "$ref": "#/definitions/command_line_flags"
  147. },
  148. "create_archive": {
  149. "description": "Set the command template for generating static library archives",
  150. "$ref": "#/definitions/command_line_flags"
  151. },
  152. "link_executable": {
  153. "description": "Set the command template for linking executable binaries",
  154. "$ref": "#/definitions/command_line_flags"
  155. },
  156. "tty_flags": {
  157. "description": "Set command line flags that will be applied only if stdout is an ANSI-capable terminal",
  158. "$ref": "#/definitions/command_line_flags"
  159. },
  160. "obj_prefix": {
  161. "description": "Set the filename prefix for object files",
  162. "type": "string"
  163. },
  164. "obj_suffix": {
  165. "description": "Set the filename suffix for object files",
  166. "type": "string"
  167. },
  168. "archive_prefix": {
  169. "description": "Set the filename prefix for library archive files",
  170. "type": "string"
  171. },
  172. "archive_suffix": {
  173. "description": "Set the filename suffix for library archive files",
  174. "type": "string"
  175. },
  176. "exe_prefix": {
  177. "description": "Set the filename prefix for executable files",
  178. "type": "string"
  179. },
  180. "exe_suffix": {
  181. "description": "Set the filename suffix for executable files",
  182. "type": "string"
  183. }
  184. }
  185. }
  186. }
  187. }