|
- {
- "type": "object",
- "description": "DDS Toolchain Description File",
- "additionalProperties": false,
- "patternProperties": {
- "^\\$": {}
- },
- "$schema": "https://json-schema.org/draft/2019-09/schema",
- "definitions": {
- "command_line_flags": {
- "anyOf": [
- {
- "type": "string",
- "description": "Shell-style string of command-line arguments"
- },
- {
- "type": "array",
- "description": "An array of command-line arguments. Will be passed verbatim.",
- "items": {
- "type": "string",
- "description": "A single command-line argument. Will be passed verbatim."
- }
- }
- ]
- }
- },
- "properties": {
- "compiler_id": {
- "type": "string",
- "description": "The general compiler identification. This is one of a fixed set of values that DDS will use to infer most toolchain attributes.",
- "enum": [
- "msvc",
- "gnu",
- "clang"
- ]
- },
- "c_compiler": {
- "type": "string",
- "description": "Executable name or filepath for a C compiler",
- "examples": [
- "gcc",
- "clang-9",
- "cl.exe"
- ]
- },
- "cxx_compiler": {
- "type": "string",
- "description": "Executable name or filepath for a C++ compiler",
- "examples": [
- "g++",
- "clang++-9",
- "cl.exe"
- ]
- },
- "flags": {
- "description": "Pass additional compile flags, regardless of the source language",
- "$ref": "#/definitions/command_line_flags"
- },
- "c_flags": {
- "description": "Pass additional flags to the C compiler.",
- "$ref": "#/definitions/command_line_flags"
- },
- "cxx_flags": {
- "description": "Pass additional flags to the C++ compiler.",
- "$ref": "#/definitions/command_line_flags"
- },
- "c_version": {
- "description": "The C language version",
- "type": "string",
- "enum": [
- "c89",
- "c99",
- "c11",
- "c18",
- "gnu18"
- ]
- },
- "cxx_version": {
- "description": "The C++ language version",
- "type": "string",
- "enum": [
- "c++98",
- "c++03",
- "c++11",
- "c++14",
- "c++17",
- "c++20",
- "gnu++20"
- ]
- },
- "warning_flags": {
- "description": "Set the flags that will be passed to the compiler to enable/disable warnings",
- "$ref": "#/definitions/command_line_flags"
- },
- "link_flags": {
- "description": "Pass additional flags to the compiler when it is linking runtime binaries (executables)",
- "$ref": "#/definitions/command_line_flags"
- },
- "compiler_launcher": {
- "description": "Set a command-line prefix that will be prepended to all compiler invocations",
- "$ref": "#/definitions/command_line_flags"
- },
- "debug": {
- "description": "Tweak the generation of debug information",
- "default": true,
- "oneOf": [
- {
- "type": "string",
- "enum": [
- "embedded",
- "split"
- ]
- },
- {
- "type": "boolean"
- }
- ]
- },
- "optimize": {
- "description": "Optimize generated code",
- "type": "boolean",
- "default": true
- },
- "runtime": {
- "description": "Select the runtime/stdlib modes",
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "static": {
- "type": "boolean",
- "description": "If `true`, enable static stdlib/runtime linking"
- },
- "debug": {
- "type": "boolean",
- "description": "If 'true', enable debug for the stdlib/runtime"
- }
- }
- },
- "advanced": {
- "type": "object",
- "additionalProperties": false,
- "description": "Advanced toolchain options. All of these options will be inferred from `compiler_id` by default. Handle with care.",
- "properties": {
- "deps_mode": {
- "type": "string",
- "description": "Dependency tracking mode.",
- "enum": [
- "msvc",
- "gnu",
- "none"
- ]
- },
- "include_template": {
- "description": "Set the include-directory flags template",
- "$ref": "#/definitions/command_line_flags"
- },
- "external_include_template": {
- "description": "Set the external include-directory flags template",
- "$ref": "#/definitions/command_line_flags"
- },
- "define_template": {
- "description": "Set the preprocessor-definition flags template",
- "$ref": "#/definitions/command_line_flags"
- },
- "base_warning_flags": {
- "description": "Set the base warning flags for the toolchain. These are always prepended to `warning_flags`.",
- "$ref": "#/definitions/command_line_flags"
- },
- "base_compile_flags": {
- "description": "Set the base compile flags for the toolchain. These are always prepended to `flags`.",
- "$ref": "#/definitions/command_line_flags"
- },
- "c_compile_file": {
- "description": "Set the command template for compiling C source files",
- "$ref": "#/definitions/command_line_flags"
- },
- "cxx_compile_file": {
- "description": "Set the command template for compiling C++ source files",
- "$ref": "#/definitions/command_line_flags"
- },
- "create_archive": {
- "description": "Set the command template for generating static library archives",
- "$ref": "#/definitions/command_line_flags"
- },
- "link_executable": {
- "description": "Set the command template for linking executable binaries",
- "$ref": "#/definitions/command_line_flags"
- },
- "tty_flags": {
- "description": "Set command line flags that will be applied only if stdout is an ANSI-capable terminal",
- "$ref": "#/definitions/command_line_flags"
- },
- "obj_prefix": {
- "description": "Set the filename prefix for object files",
- "type": "string"
- },
- "obj_suffix": {
- "description": "Set the filename suffix for object files",
- "type": "string"
- },
- "archive_prefix": {
- "description": "Set the filename prefix for library archive files",
- "type": "string"
- },
- "archive_suffix": {
- "description": "Set the filename suffix for library archive files",
- "type": "string"
- },
- "exe_prefix": {
- "description": "Set the filename prefix for executable files",
- "type": "string"
- },
- "exe_suffix": {
- "description": "Set the filename suffix for executable files",
- "type": "string"
- }
- }
- }
- }
- }
|