Commit Graph

99 Commits

Author SHA1 Message Date
Ulf Magnusson
4dc9e5b2de kconfig: Get rid of 'option env' bounce symbols
This commit gets rid of the 'option env="ENV_VAR"' bounce symbols.
"$FOO" now expands directly to the value of the environment variable
FOO, instead of to the value of the Kconfig symbol FOO.

This change is likely to soon appear in the C tools as well. Those
'option env' symbols always seemed kinda pointless, and have broken
dependency handling due to forcing symbol evaluation during parsing,
before all the symbols have even been seen.

Compatibility with the C tools could be retained by naming all
'option env' symbols the same as the environment variable they
reference.

This commit also updated the Zephyr documentation to explain the new
behavior. It's relevant for $ZEPHYR_BASE and out-of-tree Kconfig
extensions.

Commit message from Kconfiglib (cbf32e29a130d)
==============================================

Make "$FOO" directly reference the environment variable $FOO in e.g.
'source' statements, instead of the symbol FOO. Use os.path.expandvars()
to expand strings (which preserves "$FOO" as-is if no environment
variable FOO exists).

This gets rid of the 'option env' "bounce" symbols, which are mostly
just spam and are buggy in the C tools (dependencies aren't always
respected, due to parsing and evaluation getting mixed up). The same
change will probably appear soon in the C tools as well.

Keep accepting 'option env' to preserve some backwards compatibility,
but ignore it when expanding strings. For compatibility with the C
tools, bounce symbols will need to be named the same as the environment
variables they reference (which is the case for the Linux kernel).

This is a compatibility break, so the major version will be bumped to 6
at the next release.

The main motivation for adding this now is to allow recording properties
on each MenuNode in a clean way. 'option env' symbols interact badly
with delayed dependency propagation.

Side note: I have a feeling that recording environment variable values
might be redundant to trigger rebuilds if sync_deps() is run at each
compile. It should detect all changes to symbol values due to
environment variables changing value.

Signed-off-by: Ulf Magnusson <Ulf.Magnusson@nordicsemi.no>
2018-05-17 23:55:07 +03:00
Ulf Magnusson
a869f875ec doc: Mention that dependencies can be checked in menuconfig
This is handier in some ways compared to the symbol reference pages. The
search feature is more flexible, and you get to see which dependencies
are currently unsatisfied.

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-05-13 17:02:12 -04:00
Ulf Magnusson
418cc0eafe doc: Update for menuconfig.py
Update the Application Development Primer to describe the new menuconfig
configuration interface:

 - Update the section explaining how the configuration is navigated,
   changed, and saved

 - Add a section explaining how to jump directly to a symbol in the
   configuration interface

 - Replace mconf screenshots with menuconfig.py screenshots. Remove some
   screenshots that are no longer used.

 - Remove the section explaining how to load arbitrary .config files
   from within the configuration interface. That feature hasn't been
   implemented yet in menuconfig.py.

 - Do various minor language cleanup

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-05-07 21:53:37 +02:00
Ulf Magnusson
63cb2334f0 doc: Document Zephyr's Kconfig configuration scheme
In particular, try to demystify Kconfig.defconfig files, and provide
guidelines on whether configuration settings should go in
BOARD_defconfig or Kconfig.defconfig.

The board porting section seems to be the most relevant one here, so put
the documentation there, with some "see also" links from elsewhere.
Things could be reorganized later if needed.

Give a general overview of visible and invisible Kconfig symbols as
well, as that ties in with the configuration scheme.

This is reverse-engineering on my part. The configuration scheme doesn't
seem to be documented anywhere prior.

Fixes: #7159

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-04-27 13:31:20 +02:00
Ulf Magnusson
64eb789ff5 doc: Clarify format for CONF_FILE
The documentation doesn't give the format for listing multiple files in
CONF_FILE (space-separated list).

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-04-24 03:39:12 +05:30
Ulf Magnusson
303484aa2f doc: Clarify application configuration
The current application configuration documentation makes it a bit
unclear that configuration files are merged. Rewrite the documentation
to explicitly talk about merging, which I think is less confusing.

Remove the following section from the introduction as well, as I think
it might make people wonder how they can have an existing kernel
configuration when they haven't created one. The updated configuration
section (which the introduction now has a forward reference to)
clarifies the zephyr/.config bit anyway.

    If omitted, the application's existing kernel configuration option
    values are used; if no existing values are provided, the kernel's
    default configuration values are used.

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-04-24 03:38:20 +05:30
Ulf Magnusson
1ae99f02f1 doc: Improve Kconfig interface description
Pressing Y/N to configure boolean configuration symbols probably won't
be supported in the upcoming Python menuconfig implementation, and Space
is much smoother anyway. '?' is smoother than tabbing to '< Help >' too.

Also remove this part, which I couldn't make sense of:

    When a non-default entry is selected for options that are
    non-numerical, an asterisk :kbd:`*` appears between the square
    brackets in the display. There is nothing added added the display
    when you select the option's default.

[*] just means the current symbol value is 'y'.

Signed-off-by: Ulf Magnusson <ulfalizer@gmail.com>
2018-04-24 03:36:12 +05:30
Sebastian Bøe
bdc5c72498 samples: Add sample that demonstrates a custom board definition
Add a sample that demonstrates a custom board definition. This proves
that BOARD_ROOT works and can be a useful reference when creating a
custom board definition.

Instead of spending time making up a board, the nrf52840_pca10056
board has been copied as-is. And the hello world sample has been used
as the basis for the application.

Signed-off-by: Sebastian Bøe <sebastian.boe@nordicsemi.no>
2018-03-27 09:35:35 -04:00
David B. Kinder
34d02e5e24 doc: fix backslashes in doc
Single backslashes outside of a code-block are treated as escape
characters, so need to double up to get a single backslash rendered in
the generated HTML.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2018-03-21 13:11:01 -05:00
Maureen Helm
e2d73fb153 doc: application: Add Eclipse debugging section
Document how to debug a Zephyr application in the Eclipse IDE.

Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2018-03-20 12:44:05 -04:00
Marti Bolivar
b7b1dfb8b6 doc: application: re-work DT overlay section
Edits and additions for clarity and correctness, based on the current
contents of the file (dts.cmake) which controls the DTS build.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2018-02-22 18:52:42 +01:00
Anas Nashif
e172fa3b52 build: support out-of-tree custom boards
This is one way we can support out of tree board definitions. Basically
all this needs is a board definition in the application source directory
that follows the same structure we have in the main Zephyr tree (also
allowing multiple custom boards). An application tree would look like
this for example:

boards/
CMakeLists.txt
prj.conf
README.rst
src/

with boards following the same structure as in Zephyr:

.
├── boards
│   └── x86
│       └── arduino_101
│           ├── doc
│           │   └── img
│           └── support
└── src

To use this, you need to specify the BOARD_ROOT variable on the command
line when building:

cmake -DBOARD=<board name> -DBOARD_ROOT=<path to boards> ..

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2018-02-14 19:20:29 -05:00
Carles Cufi
72684ef815 dts: mcuboot: Support for common overlays and mcuboot
When the Kconfig BOOTLOADER_MCUBOOT is selected, an overlay to place the
image at the slot0 location is required. In order to avoid having to do
this manually for all samples when targetting MCUboot, include the logic
inside the dts.cmake script to prepend a new common.dts file that then
conditionally includes mcuboot.overlay.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2018-02-09 09:11:13 -05:00
Carles Cufi
1cce63ae8f cmake: dts: Allow multiple overlay files
This patch changes the manner in which we collect DTS overlay files so
that they comply with the same approach taken for configuration fragment
files (.conf).

Additionally it also documents the usage of those files in the
Application Developer Guide.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2018-02-05 14:09:43 -05:00
Carles Cufi
0008e34150 doc: guides: app: Rework for multi-OS support
Rework the Application Development Primer so that it describes the
differences between UNIX and Windows builds and uses Ninja by default,
in order to be compatible with all of them.

Signed-off-by: Carles Cufi <carles.cufi@nordicsemi.no>
2018-01-22 15:49:34 +01:00
Marti Bolivar
006f13ca08 doc: application: fix KCONFIG_ROOT example file
The APPLICATION_BASE variable in the example Kconfig file was copied
in from an (out of tree) application which relied on it during the
Kbuild days, but it's actually not needed by the CMake build system
and should be removed.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-12-14 14:05:48 -05:00
David B. Kinder
89514de230 doc: fix misspelling in docs
Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2017-11-13 14:43:37 -08:00
Anas Nashif
540644d375 doc: make sure we use gdb from SDK
installed GDB on host might not be compatible with the binary generated
by Zephyr. Mention that we need to use the gdb that corrosponds to the
toolchain being used.

Fixes #4312

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-11-13 13:34:27 -05:00
Sebastian Bøe
3998b9e5ef cmake: Use Make for examples instead of Ninja
Ninja is not tested as well as Make yet, so for now, recommend using
Make.

Signed-off-by: Sebastian Boe <sebastian.boe@nordicsemi.no>
2017-11-08 20:00:22 -05:00
Marti Bolivar
2308ff1858 doc: application: fix britishism regarding parentheses
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
04a07c5cce doc: application: merge configuration paragraphs
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
386df0c4e9 doc: application: fixup for app versus zephyr config
The line between Zephyr versus application is blurry since they share
a configuration, but try to disambiguate.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
d36c308889 doc: application: add rest formatting to CMakeLists.txt
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
42e4672985 doc: application: clarify KCONFIG_ROOT section
The documentation regarding application-specific Kconfig options is
unclear. Fix that.

Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
f79a95abe1 doc: application: revise app/zephyr link documentation
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
0c0c06242c doc: application: fix "behavior" british spelling
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
9bd9d487eb doc: application: clarify a pronoun antecedent
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
e21b175a03 doc: application: provide ddd install instructions
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
137424368d doc: application: fix typo
s/remove/remote/

Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
97c8596733 doc: application: fix QEMU capitalization
Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
10d19de019 doc: application: define ELF
The ELF format and extension is an acronym that needs a
definition. Add it.

Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
1f6175ad86 doc: application: debugging fixes
Grammatical fixes caught in review of unrelated changes.

Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
609bd35eaa doc: application: fix up alternate CONF_FILE
Fix the instructions for when an alternate CONF_FILE is used.

Reported-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
ca46dfa378 doc: application: fix up "running an application"
Re-work this section for clarity, making it clearer where the division
between emulated and real hardware is, and cleaning up the
instructions. Also re-work for correctness, updating Kbuild-style
flash instructions to use CMake.

Also make sure users know they can flash and run from anywhere on the
system using cmake --build.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
199dc8a18c doc: application: trivial whitespace fix
Fix the white space around "Naming Conventions", which is currently
appearing on its own line.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
9c85c7f11c doc: application: move build/run/debug docs after overview
This document's flow could be improved a bit. The overview section is
followed by somewhat dense reference material, which is then followed
by step-by-step instructions central to the application workflow.

Fix this up by moving the details to the end, and adjusting the
transitions between the sections a bit.

The diff looks like a mess, but this commit is mostly just moving
things around. There are also various grammar fixes incorporated from
review.

Reviewed-by: David Kinder <david.b.kinder@intel.com>
Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>

squash! doc: application: move build/run/debug docs after overview
2017-11-08 20:00:22 -05:00
Marti Bolivar
dfcb2dfc70 doc: application: trivial fixups to "Rebuild an Application"
Make clear that a terminal is being used, and use a Sphinx :ref:
instead of a reST link.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
1b9b28847e doc: application: improvements to "Overriding Default Configuration"
Make this a bit less Unix-centric, changing the CMake invocation lines
to only use documented parameters that continue to work across all
CMake versions (-B doesn't work everywhere, and -H means "help" in
recent versions of CMake).

Handle some 80-column cleanliness. Add documentation about the search
key, /. Be a bit more explicit about the steps.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
554eebae1c doc: application: improve Kconfig setting documentation
Now that the above sections more clearly define the behavior of
CONF_FILE, the section on writing a .conf can be cleaned up and made
into a simple primer on syntax.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
40e04e6e1b doc: application: re-work CMakeLists.txt / configuration division
Fix a few issues related to the description of an application's
CMakeLists.txt file, and how that relates to its configuraiton.

Make sure the section "Application CMakeLists.txt" appears under the
parent "CMake" section, instead of on its own. The order in which
lines appear in the application CMakeLists.txt is important, and
that's not coming through clearly, so try to improve that. Document
how the values for BOARD and CONF_FILE are determined by
boilerplate.cmake here. Also document usage of KCONFIG_ROOT, as its
Kbuild-based equivalent is something that users ask about.

Merge some content from the following section "Application
Configuration" into the appropriate places, to keep the document flow
working. Add references in "Application Configuration" to definitions
provided previously in the document, for clarity.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
1d93f674a4 doc: application: touch up cmake overview
Fix up some grammar issues and add more reST formatting.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
ccfdff6577 doc: application: CMake updates for overview and creation docs
Update the initial application overview and the basic "how to create
an application" sections for the CMake transition. This is worth doing
on its own, and also enables other fixes and improvements to below
sections.

Signed-off-by: Marti Bolivar <marti@opensourcefoundries.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
3eef1e3bea doc: application: fix stale sentence about Kbuild
The Overview section still mentions Kbuild, but the build system is
CMake now.

Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
2017-11-08 20:00:22 -05:00
Anas Nashif
602a14365d doc: update with CMake instructions
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-11-08 20:00:22 -05:00
Marti Bolivar
668513e4fb docs: application: document "make flash" conventions
This is an important part of the workflow, which is missing from the
documentation.

Signed-off-by: Marti Bolivar <marti.bolivar@linaro.org>
2017-11-01 08:36:14 -04:00
David B. Kinder
9c50ac3ca7 doc: update doc generation info
Update the versions of tools used to generate documentation locally and
include a description of the message filtering now included in the doc
build Makefile (formerlly only done in the CI scripts).

Also, include the documentation docs in the developer guides to help
folks that want to contribute and generate docs locally.

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2017-09-29 05:51:59 -07:00
David B. Kinder
8c708fd049 doc: fix misspellings and hyphen use
fixed error introduced in application.rst (v1.8) along with a general
spelling check pass including consistent spelling of "runtime" and
hyphenated words with "pre-"

Signed-off-by: David B. Kinder <david.b.kinder@intel.com>
2017-09-20 15:33:43 -04:00
Massimiliano Cialdi
d140a7f501 doc: fix instruction in Adding Directories section
Signed-off-by: Massimiliano Cialdi <cialdi@gmail.com>
2017-09-12 18:16:27 -04:00
Anas Nashif
85f7fbcfed doc: move API under Developer Guides
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-08-18 16:32:28 -04:00
Anas Nashif
e381a61ff0 doc: simplify top level TOC
Simplify top-level table of contents and create the user guide which
includes the application development primer and other guides and
refereces instead of having them at the top-level.

Also move glossary section away from top-level TOC and remove broken
search link.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2017-08-18 16:32:28 -04:00