|
|
@@ -1,3 +1,5 @@ |
|
|
|
.. highlight:: yaml |
|
|
|
|
|
|
|
Toolchains |
|
|
|
########## |
|
|
|
|
|
|
@@ -82,3 +84,219 @@ The following pseudo-toolchains are also available: |
|
|
|
|
|
|
|
``:c++UV:XYZ`` (for two integers ``UV``) |
|
|
|
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. |