..
    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
   http://docs.zephyrproject.org/

.. 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 tagged released versions of Zephyr can be found at
   ``http://docs.zephyrproject.org/<version>``. The following documentation
   versions are available:

   `Zephyr 1.9.2`_ | `Zephyr 1.10.0`_ | `Zephyr 1.11.0`_ | `Zephyr 1.12.0`_

For information about the changes and additions for releases, please
consult the published :ref:`zephyr_release_notes` documentation.

The Zephyr OS is provided under the `Apache 2.0 license`_ (as found in
the LICENSE file in the project's `GitHub repo`_).  The Zephyr OS also
imports or reuses packages, scripts, and other files that use other
licensing, as described in :ref:`Zephyr_Licensing`.

Source code for the Zephyr Project is maintained in the Zephyr Project's
`GitHub repo`_.

.. _Apache 2.0 license:
   https://github.com/zephyrproject-rtos/zephyr/blob/master/LICENSE

.. _GitHub repo: https://github.com/zephyrproject-rtos/zephyr


.. only:: html

   Sections
   ********

.. toctree::
   :maxdepth: 1

   introduction/introducing_zephyr.rst
   getting_started/getting_started.rst
   contribute/contribute.rst
   kernel/kernel.rst
   security/security.rst
   application/index.rst
   boards/boards.rst
   devices/index.rst
   subsystems/subsystems.rst

.. only:: html

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

* :ref:`glossary`

* :ref:`genindex`

.. _Zephyr 1.12.0: http://docs.zephyrproject.org/1.12.0/
.. _Zephyr 1.11.0: http://docs.zephyrproject.org/1.11.0/
.. _Zephyr 1.10.0: http://docs.zephyrproject.org/1.10.0/
.. _Zephyr 1.9.2: http://docs.zephyrproject.org/1.9.0/
