This page is out of date now that we have blobs infrastructure managed by west blobs. We need to tell users that they are on their own when it comes to building applications that require blobs if they aren't using west. Signed-off-by: Martí Bolívar <marti.bolivar@nordicsemi.no>
129 lines
4.4 KiB
ReStructuredText
129 lines
4.4 KiB
ReStructuredText
.. _no-west:
|
|
|
|
Using Zephyr without west
|
|
#########################
|
|
|
|
This page provides information on using Zephyr without west. This is
|
|
not recommended for beginners due to the extra effort involved. In
|
|
particular, you will have to do work "by hand" to replace these
|
|
features:
|
|
|
|
- cloning the additional source code repositories used by Zephyr in
|
|
addition to the main zephyr repository, and keeping them up to date
|
|
- specifying the locations of these repositories to the Zephyr build
|
|
system
|
|
- flashing and debugging without understanding detailed usage of the
|
|
relevant host tools
|
|
|
|
.. note::
|
|
|
|
If you have previously installed west and want to stop using it,
|
|
uninstall it first:
|
|
|
|
.. code-block:: console
|
|
|
|
pip3 uninstall west
|
|
|
|
Otherwise, Zephyr's build system will find it and may try to use
|
|
it.
|
|
|
|
Getting the Source
|
|
------------------
|
|
|
|
In addition to downloading the zephyr source code repository itself,
|
|
you will need to manually clone the additional projects listed in the
|
|
:term:`west manifest` file inside that repository.
|
|
|
|
.. code-block:: console
|
|
|
|
mkdir zephyrproject
|
|
cd zephyrproject
|
|
git clone https://github.com/zephyrproject-rtos/zephyr
|
|
# clone additional repositories listed in zephyr/west.yml,
|
|
# and check out the specified revisions as well.
|
|
|
|
As you pull changes in the zephyr repository, you will also need to
|
|
maintain those additional repositories, adding new ones as necessary
|
|
and keeping existing ones up to date at the latest revisions.
|
|
|
|
Building applications
|
|
---------------------
|
|
|
|
You can build a Zephyr application using CMake and Ninja (or make) directly
|
|
without west installed if you specify any modules manually.
|
|
|
|
.. zephyr-app-commands::
|
|
:zephyr-app: samples/hello_world
|
|
:tool: cmake
|
|
:goals: build
|
|
:gen-args: -DZEPHYR_MODULES=module1;module2;...
|
|
:compact:
|
|
|
|
When building with west installed, the Zephyr build system will use it to set
|
|
:ref:`ZEPHYR_MODULES <important-build-vars>`.
|
|
|
|
If you don't have west installed and your application does not need any of
|
|
these repositories, the build will still work.
|
|
|
|
If you don't have west installed and your application *does* need one
|
|
of these repositories, you must set :makevar:`ZEPHYR_MODULES`
|
|
yourself as shown above.
|
|
|
|
See :ref:`modules` for more details.
|
|
|
|
Similarly, if your application requires binary blobs and you are not using
|
|
west, you will need to download and place those blobs in the right places
|
|
instead of using ``west blobs``. See :ref:`bin-blobs` for more details.
|
|
|
|
Flashing and Debugging
|
|
----------------------
|
|
|
|
Running build system targets like ``ninja flash``, ``ninja debug``,
|
|
etc. is just a call to the corresponding :ref:`west command
|
|
<west-build-flash-debug>`. For example, ``ninja flash`` calls ``west
|
|
flash``\ [#wbninja]_. If you don't have west installed on your system, running
|
|
those targets will fail. You can of course still flash and debug using
|
|
any :ref:`flash-debug-host-tools` which work for your board (and which those
|
|
west commands wrap).
|
|
|
|
If you want to use these build system targets but do not want to
|
|
install west on your system using ``pip``, it is possible to do so
|
|
by manually creating a :term:`west workspace`:
|
|
|
|
.. code-block:: console
|
|
|
|
# cd into zephyrproject if not already there
|
|
git clone https://github.com/zephyrproject-rtos/west.git .west/west
|
|
|
|
Then create a file :file:`.west/config` with the following contents:
|
|
|
|
.. code-block:: none
|
|
|
|
[manifest]
|
|
path = zephyr
|
|
|
|
[zephyr]
|
|
base = zephyr
|
|
|
|
After that, and in order for ``ninja`` to be able to invoke ``west``
|
|
to flash and debug, you must specify the west directory. This can be
|
|
done by setting the environment variable ``WEST_DIR`` to point to
|
|
:file:`zephyrproject/.west/west` before running CMake to set up a
|
|
build directory.
|
|
|
|
.. rubric:: Footnotes
|
|
|
|
.. [#wbninja]
|
|
|
|
Note that ``west build`` invokes ``ninja``, among other
|
|
tools. There's no recursive invocation of either ``west`` or
|
|
``ninja`` involved by default, however, as ``west build`` does not
|
|
invoke ``ninja flash``, ``debug``, etc. The one exception is if you
|
|
specifically run one of these build system targets with a command
|
|
line like ``west build -t flash``. In that case, west is run twice:
|
|
once for ``west build``, and in a subprocess, again for ``west
|
|
flash``. Even in this case, ``ninja`` is only run once, as ``ninja
|
|
flash``. This is because these build system targets depend on an
|
|
up to date build of the Zephyr application, so it's compiled before
|
|
``west flash`` is run.
|