Home
====
.. toctree::
:hidden:
self
pages/getting_started
pages/contributing
pages/api/_api
The Thallium Project is a library for C/C++ applications that will provide the ability to write cross-renderer applications with the same interface.
Cross-platform APIs (i.e. Vulkan and OpenGL) will be prioritised, but I plan to also implement dumber APIs such as Metal, DX11, and DX12 in the
far future.
.. note::
The contents of this page can also be seen in the project's `README `_.
For comprehensive function and struct documentation, see the :doc:`API reference `.
Building
--------
CMake is used to generate build files. Ideally, you should build in a Linux environment - do note however that MinGW32 and subsystems like Cygwin
and MSYS2 have not yet been tested.
General options
^^^^^^^^^^^^^^^
The following is a table of available CMake configuration options for Thallium. Note that this list may be missing some, so check the appropriate
``CMakeLists.txt`` file to make sure.
=========================== ================================ =======
Option name Description Default
=========================== ================================ =======
``BUILD_SHARED_LIBS`` Build shared libraries ON
``THALLIUM_BUILD_LIB`` Build the Thallium library ON
``THALLIUM_BUILD_TESTS`` Build Thallium tests OFF
``THALLIUM_BUILD_EXAMPLES`` Build Thallium example projects OFF
``THALLIUM_BUILD_DOCS`` Build HTML documentation OFF
=========================== ================================ =======
It's recommended to use the ``-DCMAKE_BUILD_TYPE=Debug`` flag when building Thallium for library development.
API modules
^^^^^^^^^^^
Thallium source compilation is split into **modules**, based on the graphics APIs you need support for. Each module can be manually enabled or
disabled with CMake flags, just like above. These flags are named ``THALLIUM_BUILD_MODULE_``. For example, the Vulkan module can be compiled
using the ``-DTHALLIUM_BUILD_MODULE_VULKAN=ON`` build flag (this requires the Vulkan SDK to be installed).
WSI flags
^^^^^^^^^
Window system integration (WSI) is available depending on the target platform:
- On Apple systems, ``THALLIUM_WSI_COCOA`` is available and enabled by default.
- On other \*nix systems, ``THALLIUM_WSI_XCB`` and ``THALLIUM_WSI_XLIB`` are both available and enabled by default. *Wayland is not yet supported.*
Information for contributing
----------------------------
Document **all** new public functions or types with `Doxygen `_-style formatting. Also see the
`Breathe documentation `_ to find out how to include your code's documentation in the HTML
output.
I keep an upstream TO-DO list on `Trello `_. Submit issues and pull requests to the
`GitHub repo `_.
See more information on the :doc:`contributing ` page.