Go to file
Marti Bolivar 06c9bf47b3 snippets: initial snippet.yml support
Add a new script, snippets.py, which is responsible for searching
SNIPPET_ROOT for snippet definitions, validating them, and informing
the build system about what needs doing as a result.

Use this script in snippets.cmake to:

- validate any discovered snippet.yml files
- error out on undefined snippets
- add a 'snippets' build system target that prints all snippet
  names (analogous to 'boards' and 'shields' targets)
- handle any specific build system settings properly,
  by include()-ing a file it generates

With this patch, you can define or extend a snippet in a snippet.yml
file anywhere underneath a directory in SNIPPET_ROOT. The snippet.yml
file format has a schema whose initial definition is in a new file,
snippet-schema.yml.

This initial snippet.yml file format supports adding .overlay and
.conf files, like this:

  name: foo
  append:
    DTC_OVERLAY_FILE: foo.overlay
    OVERLAY_CONFIG: foo.conf
  boards:
    myboard:
      append:
        DTC_OVERLAY_FILE: myboard.overlay
        OVERLAY_CONFIG: myboard.conf
    /my-regular-expression-over-board-names/:
      append:
        DTC_OVERLAY_FILE: myregexp.overlay
        OVERLAY_CONFIG: myregexp.conf

(Note that since the snippet feature is intended to be extensible, the
same snippet name may appear in multiple files throughout any
directory in SNIPPET_ROOT, with each addition augmenting prior ones.)

This initial syntax aligns with the following snippet design goals:

- extensible: you can add board-specific support for an existing
  snippet in another module

- able to combine multiple types of configuration: we can now apply a
  .overlay and .conf at the same time

- specializable: this allows you to define settings that only apply
  to a selectable set of boards (including with regular expression
  support for matching against multiple similar boards that follow
  a naming convention)

- DRY: you can use regular expressions to apply the same snippet
  settings to multiple boards like this: /(board1|board2|...)/

This patch is not trying to design and implement everything up front.
Additional features can and will be added to the snippet.yml format
over time; using YAML as a format allows us to make
backwards-compatible extensions as needed.

Signed-off-by: Marti Bolivar <marti.bolivar@nordicsemi.no>
2023-03-26 16:12:41 +02:00
.github ci: backport_issue_check: Use ubuntu-22.04 virtual environment 2023-03-22 02:49:03 +09:00
arch arch: x86: zefi: Remove unneeded include 2023-03-22 20:32:35 +09:00
boards samples: drivers: adc: update board overlays for LPADC API change 2023-03-23 08:58:44 +00:00
cmake snippets: initial snippet.yml support 2023-03-26 16:12:41 +02:00
doc doc/release-notes/3.4: Note on CONFIG_MCUBOOT_CMAKE_WEST_SIGN_PARAMS 2023-03-24 09:04:49 +01:00
drivers tests: adc: Microchip XEC fix ADC API test and ADC shell 2023-03-24 11:28:20 -04:00
dts input: add a longpress device 2023-03-24 13:48:28 +00:00
include/zephyr gpio: add gpio_add/remove callback dt functions 2023-03-25 04:07:59 -04:00
kernel sched: minor time slicing cleanup 2023-03-16 09:16:59 +01:00
lib posix: fnmatch: correct (many) compliance issues 2023-03-03 17:40:14 +09:00
misc misc: generated: update configs.c template with <zephyr/...> prefix 2022-05-09 12:45:29 -04:00
modules modules: hal_infineon: Added support of BT controller fw blobs 2023-03-22 16:40:55 +01:00
samples Samples: Bluetooth: Fix unicast client ASCS discovery 2023-03-24 17:35:37 +00:00
scripts snippets: initial snippet.yml support 2023-03-26 16:12:41 +02:00
share cmake: sysbuild PRE_CMAKE, POST_CMAKE, PRE_DOMAINS, POST_DOMAINS hooks 2023-03-11 19:53:40 +01:00
soc soc: arm: stm32h7: remove manual linker section 2023-03-24 17:37:06 +00:00
submanifests
subsys net: shell: Fix shell freeze 2023-03-25 07:49:18 -04:00
tests Bluetooth: tester: Fix not updating value length on write 2023-03-24 17:37:37 +00:00
.checkpatch.conf checkpatch: Remove ext/ from excludes 2022-11-30 12:06:55 -05:00
.clang-format clang-format: Add CHECKIF to IfMacros 2023-02-27 10:47:11 -08:00
.codecov.yml yamllint: fix all yamllint comments errors 2023-01-04 01:16:45 +09:00
.editorconfig editorconfig: Improve verbosity 2022-04-28 08:55:39 -04:00
.gitattributes
.gitignore gitignore: Ignore new bsim tests build folders 2023-03-07 08:33:38 +01:00
.gitlint
.mailmap mailmap: add two fixes for bad commits 2023-03-17 08:08:16 -04:00
.yamllint scripts: compliance: add support for YAMLLint 2023-01-04 17:29:23 +01:00
CMakeLists.txt toolchain: Add ARMClang to gcc related toolchain flags check 2023-03-20 10:42:46 +01:00
CODE_OF_CONDUCT.md
CODEOWNERS smbus: Update CODEOWNERS and MAINTAINERS files 2023-03-22 08:16:23 -04:00
CONTRIBUTING.rst
Kconfig
Kconfig.zephyr cmake: mcuboot: Add Kconfig for passing west sign arguments 2023-03-24 09:04:49 +01:00
LICENSE
MAINTAINERS.yml MAINTAINERS: remove inactive self as GPIO maintainer 2023-03-24 06:33:54 -04:00
README.rst readme: Add support for light/dark modes in the logo 2022-11-18 08:58:59 +01:00
VERSION VERSION: Bump to 3.3.99 2023-02-19 20:34:26 +09:00
version.h.in
west.yml manifest: trusted-firmware-m: Add OTP flash fixes 2023-03-24 17:36:05 +00:00
zephyr-env.cmd
zephyr-env.sh everywhere: fix typos 2022-03-18 13:24:08 -04:00

.. raw:: html

   <a href="https://www.zephyrproject.org">
     <p align="center">
       <picture>
         <source media="(prefers-color-scheme: dark)" srcset="doc/_static/images/logo-readme-dark.svg">
         <source media="(prefers-color-scheme: light)" srcset="doc/_static/images/logo-readme-light.svg">
         <img src="doc/_static/images/logo-readme-light.svg">
       </picture>
     </p>
   </a>

   <a href="https://bestpractices.coreinfrastructure.org/projects/74"><img
   src="https://bestpractices.coreinfrastructure.org/projects/74/badge"></a>
   <a
   href="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml?query=branch%3Amain">
   <img
   src="https://github.com/zephyrproject-rtos/zephyr/actions/workflows/twister.yaml/badge.svg?event=push"></a>


The Zephyr Project is a scalable real-time operating system (RTOS) supporting
multiple hardware architectures, optimized for resource constrained devices,
and built with security in mind.

The Zephyr OS is based on a small-footprint kernel designed for use on
resource-constrained systems: from simple embedded environmental sensors and
LED wearables to sophisticated smart watches and IoT wireless gateways.

The Zephyr kernel supports multiple architectures, including ARM (Cortex-A,
Cortex-R, Cortex-M), Intel x86, ARC, Nios II, Tensilica Xtensa, and RISC-V,
SPARC, MIPS, and a large number of `supported boards`_.

.. below included in doc/introduction/introduction.rst


Getting Started
***************

Welcome to Zephyr! See the `Introduction to Zephyr`_ for a high-level overview,
and the documentation's `Getting Started Guide`_ to start developing.

.. start_include_here

Community Support
*****************

Community support is provided via mailing lists and Discord; see the Resources
below for details.

.. _project-resources:

Resources
*********

Here's a quick summary of resources to help you find your way around:

* **Help**: `Asking for Help Tips`_
* **Documentation**: http://docs.zephyrproject.org (`Getting Started Guide`_)
* **Source Code**: https://github.com/zephyrproject-rtos/zephyr is the main
  repository; https://elixir.bootlin.com/zephyr/latest/source contains a
  searchable index
* **Releases**: https://github.com/zephyrproject-rtos/zephyr/releases
* **Samples and example code**: see `Sample and Demo Code Examples`_
* **Mailing Lists**: users@lists.zephyrproject.org and
  devel@lists.zephyrproject.org are the main user and developer mailing lists,
  respectively. You can join the developer's list and search its archives at
  `Zephyr Development mailing list`_. The other `Zephyr mailing list
  subgroups`_ have their own archives and sign-up pages.
* **Nightly CI Build Status**: https://lists.zephyrproject.org/g/builds
  The builds@lists.zephyrproject.org mailing list archives the CI nightly build results.
* **Chat**: Real-time chat happens in Zephyr's Discord Server. Use
  this `Discord Invite`_ to register.
* **Contributing**: see the `Contribution Guide`_
* **Wiki**: `Zephyr GitHub wiki`_
* **Issues**: https://github.com/zephyrproject-rtos/zephyr/issues
* **Security Issues**: Email vulnerabilities@zephyrproject.org to report
  security issues; also see our `Security`_ documentation. Security issues are
  tracked separately at https://zephyrprojectsec.atlassian.net.
* **Zephyr Project Website**: https://zephyrproject.org

.. _Discord Invite: https://chat.zephyrproject.org
.. _supported boards: http://docs.zephyrproject.org/latest/boards/index.html
.. _Zephyr Documentation: http://docs.zephyrproject.org
.. _Introduction to Zephyr: http://docs.zephyrproject.org/latest/introduction/index.html
.. _Getting Started Guide: http://docs.zephyrproject.org/latest/develop/getting_started/index.html
.. _Contribution Guide: http://docs.zephyrproject.org/latest/contribute/index.html
.. _Zephyr GitHub wiki: https://github.com/zephyrproject-rtos/zephyr/wiki
.. _Zephyr Development mailing list: https://lists.zephyrproject.org/g/devel
.. _Zephyr mailing list subgroups: https://lists.zephyrproject.org/g/main/subgroups
.. _Sample and Demo Code Examples: http://docs.zephyrproject.org/latest/samples/index.html
.. _Security: http://docs.zephyrproject.org/latest/security/index.html
.. _Asking for Help Tips: https://docs.zephyrproject.org/latest/develop/getting_started/index.html#asking-for-help