| .. highlight:: yaml | |||||
| Toolchains | Toolchains | ||||
| ########## | ########## | ||||
| ``:c++UV:XYZ`` (for two integers ``UV``) | ``:c++UV:XYZ`` (for two integers ``UV``) | ||||
| Sets the C++ version to ``C++UV`` and uses the ``:XYZ`` toolchain. | Sets the C++ version to ``C++UV`` and uses the ``:XYZ`` toolchain. | ||||
| Toolchain Definitions | |||||
| ********************* | |||||
| Besides using the built-in toolchains, it is likely that you'll soon want to | |||||
| customize a toolchain further. Further customization must be done with a | |||||
| file that contains the toolchain definition. The most basic toolchain file is | |||||
| simply one line: | |||||
| .. code-block:: | |||||
| Compiler-ID: <compiler-id> | |||||
| where ``<compiler-id>`` is one of the known ``Compiler-ID`` options (See the | |||||
| toolchain option reference). ``dds`` will infer common suitable defaults for | |||||
| the remaining options based on the value of ``Compiler-ID``. | |||||
| For example, if you specify ``GNU``, then ``dds`` will assume ``gcc`` to be the | |||||
| C compiler, ``g++`` to be the C++ compiler, and ``ar`` to be the library | |||||
| archiving tool. | |||||
| If you know that your compiler executable has a different name, you can | |||||
| specify them with additional options: | |||||
| .. code-block:: | |||||
| Compiler-ID: GNU | |||||
| C-Compiler: gcc-9 | |||||
| C++-Compiler: g++-9 | |||||
| ``dds`` will continue to infer other options based on the ``Compiler-ID``, but | |||||
| will use the provided executable names when compiling files for the respective | |||||
| languages. | |||||
| To specify compilation flags, the ``Flags`` option can be used: | |||||
| .. code-block:: | |||||
| Flags: -fsanitize=address -fno-inline | |||||
| .. note:: | |||||
| Use ``Warning-Flags`` to specify options regarding compiler warnings. | |||||
| Flags for linking executables can be specified with ``Link-Flags``: | |||||
| .. code-block:: | |||||
| Link-Flags: -fsanitize=address -fPIE | |||||
| Toolchain Option Reference | |||||
| ************************** | |||||
| The following options are available to be specified within a toolchain file: | |||||
| ``Compiler-ID`` | |||||
| --------------- | |||||
| Specify the identity of the compiler. This option is used to infer many other | |||||
| facts about the toolchain. If specifying the full toolchain with the command | |||||
| templates, this option is not required. | |||||
| Valid values are: | |||||
| ``GNU`` | |||||
| For GCC | |||||
| ``Clang`` | |||||
| For LLVM/Clang | |||||
| ``MSVC`` | |||||
| For Microsoft Visual C++ | |||||
| ``C-Compiler`` and ``C++-Compiler`` | |||||
| ----------------------------------- | |||||
| Names/paths of the C and C++ compilers, respectively. Defaults will be inferred | |||||
| from ``Compiler-ID``. | |||||
| ``C-Version`` and ``C++-Version`` | |||||
| --------------------------------- | |||||
| Specify the language versions for C and C++, respectively. By default, ``dds`` | |||||
| will not set any language version. Using this option requires that the | |||||
| ``Compiler-ID`` be specified | |||||
| Valid ``C-Version`` values are: | |||||
| - ``C89`` | |||||
| - ``C99`` | |||||
| - ``C11`` | |||||
| - ``C18`` | |||||
| Valid ``C++-Version`` values are: | |||||
| - ``C++98`` | |||||
| - ``C++03`` | |||||
| - ``C++11`` | |||||
| - ``C++14`` | |||||
| - ``C++17`` | |||||
| - ``C++20`` | |||||
| .. warning:: | |||||
| ``dds`` will not do any "smarts" to infer the exact option to pass to have | |||||
| the required effect. If you ask for ``C++20`` from ``gcc 5.3``, ``dds`` | |||||
| will simply pass ``-std=c++20`` with no questions asked. If you need | |||||
| finer-grained control, use the ``Flags`` option. | |||||
| ``Warning-Flags`` | |||||
| ----------------- | |||||
| Override the compiler flags that should be used to enable warnings. This option | |||||
| is stored separately from ``Flags``, as these options may be enabled/disabled | |||||
| separately depending on how ``dds`` is invoked. | |||||
| .. note:: | |||||
| If ``Compiler-ID`` is provided, a default value will be used that enables | |||||
| common warning levels. | |||||
| If you need to tweak warnings further, use this option. | |||||
| ``Flags``, ``C-Flags``, and ``C++-Flags`` | |||||
| ----------------------------------------- | |||||
| Specify *additional* compiler options, possibly per-language. | |||||
| ``Link-Flags`` | |||||
| -------------- | |||||
| Specify *additional* link options to use when linking executables. | |||||
| ``Optimize`` | |||||
| ------------ | |||||
| Boolean option (``True`` or ``False``) to enable/disable optimizations. Default | |||||
| is ``False``. | |||||
| ``Debug`` | |||||
| --------- | |||||
| Boolean option (``True`` or ``False``) to enable/disable the generation of | |||||
| debugging information. Default is ``False``. | |||||
| ``Compiler-Launcher`` | |||||
| --------------------- | |||||
| Provide a command prefix that should be used on all compiler executions. | |||||
| e.g. ``ccache``. | |||||
| Advanced Options Reference | |||||
| ************************** | |||||
| The options below are probably not good to tweak unless you *really* know what | |||||
| you are doing. Their values will be inferred from ``Compiler-ID``. | |||||
| ``Deps-Mode`` | |||||
| ------------- | |||||
| Specify the way in which ``dds`` should track compilation dependencies. One | |||||
| of ``GNU``, ``MSVC``, or ``None``. | |||||
| ``C-Compile-File`` | |||||
| ------------------ | |||||
| Override the *command template* that is used to compile C source files. | |||||
| ``C++-Compile-File`` | |||||
| -------------------- | |||||
| Override the *command template* that is used to compile C++ source files. | |||||
| ``Create-Archive`` | |||||
| ------------------ | |||||
| Override the *command template* that is used to generate static library archive | |||||
| files. | |||||
| ``Link-Executable`` | |||||
| ------------------- | |||||
| Override the *command template* that is used to link executables. | |||||
| ``Include-Template`` | |||||
| -------------------- | |||||
| Override the *command template* for the flags to specify a header search path. | |||||
| ``External-Include-Template`` | |||||
| ----------------------------- | |||||
| Override the *command template* for the flags to specify a header search path | |||||
| of an external library. | |||||
| ``Define-Template`` | |||||
| ------------------- | |||||
| Override the *command template* for the flags to set a preprocessor definition. |