..
    Zephyr Project documentation master file

Zephyr Project Documentation
############################

.. only:: release

   Welcome to the Zephyr Project's documentation version |version|!

   Documentation for the development branch of Zephyr can be found at
   https://www.zephyrproject.org/doc/

.. only:: (development or daily)

   Welcome to the Zephyr Project's documentation. This is the documentation of the
   master tree under development (version |version|).

   Documentation for released versions of Zephyr can be found at
   ``https://www.zephyrproject.org/doc/<version>``. The following documentation
   versions are available:

   `Zephyr 1.5.0`_ | `Zephyr 1.6.0`_ | `Zephyr 1.7.0`_ | `Zephyr 1.8.0`_

Source code for the Zephyr Project is maintained in the
`Zephyr Project GitHub repository`_.

.. _Zephyr Project GitHub repository:
   https://github.com/zephyrproject-rtos/zephyr

Sections
********

.. toctree::
   :maxdepth: 1

   introduction/introducing_zephyr.rst
   getting_started/getting_started.rst
   boards/boards.rst
   kernel/kernel.rst
   application/application.rst
   porting/porting.rst
   drivers/drivers.rst
   dts/device_tree.rst
   subsystems/subsystems.rst
   api/api.rst
   samples/samples.rst
   reference/kconfig/index.rst
   contribute/contribute.rst
   release-notes.rst
   LICENSING.rst
   glossary.rst


Indices and Tables
******************

* :ref:`genindex`

* :ref:`search`

.. _Zephyr 1.8.0: https://www.zephyrproject.org/doc/1.8.0/
.. _Zephyr 1.7.0: https://www.zephyrproject.org/doc/1.7.0/
.. _Zephyr 1.6.0: https://www.zephyrproject.org/doc/1.6.0/
.. _Zephyr 1.5.0: https://www.zephyrproject.org/doc/1.5.0/
