zephyr/west.yml
Keith Packard d0c75f3b96 lib/libc: Add picolibc support (aarch32, aarch64 and RISC-V) [v21]
Picolibc is a fork of newlib designed and tested on embedded systems. It
offers a smaller memory footprint (both ROM and RAM), and native TLS
support, which uses the Zephyr TLS support.

By default, the full printf version is included in the executable, which
includes exact floating point and long long input and output. A
configuration option has been added to switch to the integer-only
version (which also omits long long support).

Here are some size comparisons using qemu-cortex-m3 and this application
(parameters passed to printf to avoid GCC optimizing it into puts):

void main(void)
{
    printf("Hello World! %s %d\n", CONFIG_BOARD, 12);
}

                       FLASH    SRAM
    minimal             8696    3952
    picolibc int        7600    3960
    picolibc float     12304    3960
    newlib-nano int    11696    4128
    newlib-nano float  30516    4496
    newlib             34800    6112

---

v2:
	Include picolibc-tls.ld

v3:
	Document usage in guides/c_library.rst and
	getting_started/toolchain_other_x_compilers.rst

v4:
	Lost the lib/libc/picolibc directory somehow!

v5:
	Add PICOLIBC_ALIGNED_HEAP_SIZE configuration option.
	Delete PICOLIBC_SEMIHOST option support code

v6:
	Don't allocate static RAM for TLS values; TLS
	values only need to be allocated for each thread.

v7:
	Use arm coprocessor for TLS pointer storage where supported for
	compatibility with the -mtp=cp15 compiler option (or when the
	target cpu type selects this option)

	Add a bunch of tests

	Round TLS segment up to stack alignment so that overall stack
	remains correctly aligned

	Add aarch64 support

	Rebase to upstream head

v8:
	Share NEWLIB, NEWLIB_NANO and PICOLIBC library configuration
	variables in a single LIBC_PARTITIONS variable instead of
	having separate PICOLIBC_PART and NEWLIB_PART variables.

v9:
	Update docs to reference pending sdk-ng support for picolibc

v10:
	Support memory protection by creating a partition for
	picolibc shared data and any pre-defined picolibc heap.

v11:
	Fix formatting in arch/arm/core/aarch64/switch.S

v12:
	Remove TLS support from this patch now that TLS is upstream
	Require THREAD_LOCAL_STORAGE when using PICOLIBC for architectures
	that support it.

v13:
	Merge errno changes as they're only needed for picolibc.
	Adapt cmake changes suggested by Torsten Tejlmand Rasmussen

v14:
	Update to picolibc 1.7 and newer (new stdin/stdout/stderr ABI)

v15:
	Respond to comments from dcpleung:
	* switch kernel/errno to use CONFIG_LIBC_ERRNO instead of
          CONFIG_PICOLIBC
	* Add comment to test/lib/sprintf as to why the %n test
	  was disabled for picolibc.

v16:
	Switch picolibc to a module built with Zephyr. This eliminates
	toolchain dependencies and allows compiler settings for Zephyr
	to also be applied to picolibc.

v17:
	Provide Zephyr-specific 'abort' implementation.
	Support systems with MMU

v18:
	Allow use of toolchain picolibc version.

v19:
	Use zephyr/ for zephyr headers

v20:
	Add locking
	Use explicit commit for picolibc module

v21:
	Create PICOLIBC_SUPPORTED config param. Set on arc, arm, arm64,
	mips and riscv architectures.

Signed-off-by: Keith Packard <keithp@keithp.com>
2022-06-22 13:15:55 +02:00

259 lines
7.6 KiB
YAML

# The west manifest file for upstream Zephyr.
#
# The per-installation west configuration file, .west/config, sets the
# path to the project containing this file in the [manifest] section's
# "path" variable.
#
# You are free to create your own manifest files and put them in any
# repository you want, to create your own custom Zephyr installations.
# For example, you could create a manifest file in your own out of
# tree application directory, which would pull this zephyr repository
# in as an ordinary project.
#
# You can pass your manifest repositories to west init when creating a
# new Zephyr installation. See the west documentation for more
# information.
manifest:
defaults:
remote: upstream
remotes:
- name: upstream
url-base: https://github.com/zephyrproject-rtos
#
# Please add items below based on alphabetical order
projects:
- name: canopennode
revision: 53d3415c14d60f8f4bfca54bfbc5d5a667d7e724
path: modules/lib/canopennode
- name: chre
revision: 0edfe2c2ec656afb910cfab8ed59a5ffd59b87c8
path: modules/lib/chre
- name: civetweb
revision: 094aeb41bb93e9199d24d665ee43e9e05d6d7b1c
path: modules/lib/civetweb
- name: cmsis
revision: 5f86244bad4ad5a590e084f0e72ba7a1416c2edf
path: modules/hal/cmsis
groups:
- hal
- name: edtt
revision: 1ea61a390d2bfcf3b2ecdba8f8b0b98dfdffbd11
path: tools/edtt
groups:
- tools
- name: fatfs
revision: a30531af3a95a9a3ea7d771ea8a578ebfed45514
path: modules/fs/fatfs
groups:
- fs
- name: fff
revision: 6ce5ba26486e93d5b7696a3e23f0585932c14b16
path: modules/lib/fff
groups:
- ci
- name: hal_altera
revision: 0d225ddd314379b32355a00fb669eacf911e750d
path: modules/hal/altera
groups:
- hal
- name: hal_atmel
revision: 78c5567c05b6b434dd7d98f49156319df4217bac
path: modules/hal/atmel
groups:
- hal
- name: hal_espressif
revision: db4a5893e45db100497fbe5262847280fb749dac
path: modules/hal/espressif
west-commands: west/west-commands.yml
groups:
- hal
- name: hal_gigadevice
revision: cc8bc14c612e5ecfcb0435f6da53f3302e25014a
path: modules/hal/gigadevice
groups:
- hal
- name: hal_infineon
revision: 4af06965f57ba1e7d170e6a97d24c33785543a8c
path: modules/hal/infineon
groups:
- hal
- name: hal_microchip
revision: 5d079f1683a00b801373bbbbf5d181d4e33b30d5
path: modules/hal/microchip
groups:
- hal
- name: hal_nordic
revision: d9e50d7287fc381792f6f2ee6d37093e036fbd10
path: modules/hal/nordic
groups:
- hal
- name: hal_nuvoton
revision: b4d31f33238713a568e23618845702fadd67386f
path: modules/hal/nuvoton
groups:
- hal
- name: hal_nxp
revision: 5cefb64458d0c2bac83e940ba520afa6c85832a0
path: modules/hal/nxp
groups:
- hal
- name: hal_openisa
revision: 40d049f69c50b58ea20473bee14cf93f518bf262
path: modules/hal/openisa
groups:
- hal
- name: hal_quicklogic
revision: b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0
path: modules/hal/quicklogic
repo-path: hal_quicklogic
groups:
- hal
- name: hal_rpi_pico
path: modules/hal/rpi_pico
revision: 191f5ba46fda49523cdaaef27583d1c875ba2c36
groups:
- hal
- name: hal_silabs
revision: be39d4eebeddac6e18e9c0c3ba1b31ad1e82eaed
path: modules/hal/silabs
groups:
- hal
- name: hal_st
revision: 52a522ca4a8a9ec1e9bb5bb514e1ab6f102863fe
path: modules/hal/st
groups:
- hal
- name: hal_stm32
revision: 51b373cd3455b8c2b9babbf6ff41918116a442ac
path: modules/hal/stm32
groups:
- hal
- name: hal_telink
revision: d7b72519dc5288487e6eedf39c08c3b12ce307ff
path: modules/hal/telink
submodules: true
groups:
- hal
- name: hal_ti
revision: 905a5d4134899630071f9383aadaaf266e8f8cd2
path: modules/hal/ti
groups:
- hal
- name: hal_xtensa
revision: 0e577021bb66e644afd067cd9f7c71ab11b62b3d
path: modules/hal/xtensa
groups:
- hal
- name: libmetal
revision: 850a3c3fd5bc655987021dc9106d8e8cd0f7e061
path: modules/hal/libmetal
groups:
- hal
- name: liblc3codec
revision: 3951cf1b71ff3be086c9b9b595e473e12301337c
path: modules/lib/liblc3codec
- name: littlefs
path: modules/fs/littlefs
groups:
- fs
revision: 652f2c5646e79b881e6f3099686ad3b7af9e216c
- name: loramac-node
revision: 12019623bbad9eb54fe51066847a7cbd4b4eac57
path: modules/lib/loramac-node
- name: lvgl
revision: df717ac87a9fd80246cc8df24554475e59bda21f
path: modules/lib/gui/lvgl
- name: lz4
revision: 8e303c264fc21c2116dc612658003a22e933124d
path: modules/lib/lz4
- name: mbedtls
revision: 7fed49c9b9f983ad6416986661ef637459723bcb
path: modules/crypto/mbedtls
groups:
- crypto
- name: mcuboot
revision: e7415b555134e671ba04f036b02f55cbc087d0e9
path: bootloader/mcuboot
- name: mipi-sys-t
path: modules/debug/mipi-sys-t
groups:
- debug
revision: a5163c1800a5243f8b05d84c942da008df4cb666
- name: nanopb
revision: d148bd26718e4c10414f07a7eb1bd24c62e56c5d
path: modules/lib/nanopb
- name: net-tools
revision: f49bd1354616fae4093bf36e5eaee43c51a55127
path: tools/net-tools
groups:
- tools
- name: nrf_hw_models
revision: b8cea37dbdc8fc58cc14b4e19fa850877a9da520
path: modules/bsim_hw_models/nrf_hw_models
- name: open-amp
revision: 8d53544871e1f300c478224faca6be8384ab0d04
path: modules/lib/open-amp
- name: openthread
revision: e2a765599aa0379d0f72f0149a9cbafec070c12d
path: modules/lib/openthread
- name: picolibc
path: modules/lib/picolibc
revision: 4f8076520240192be284843a114c92853e29bbbc
- name: segger
revision: 3a52ab222133193802d3c3b4d21730b9b1f1d2f6
path: modules/debug/segger
groups:
- debug
- name: sof
revision: 2efc3ea41c0074c6dab5f376fafaa26f52c25c75
path: modules/audio/sof
- name: tflite-micro
revision: 9156d050927012da87079064db59d07f03b8baf6
path: modules/lib/tflite-micro
repo-path: tflite-micro
- name: tinycbor
revision: 9e1f34bc08123aaad7666d3652aaa839e8178b3b
path: modules/lib/tinycbor
- name: tinycrypt
revision: 3e9a49d2672ec01435ffbf0d788db6d95ef28de0
path: modules/crypto/tinycrypt
groups:
- crypto
- name: TraceRecorderSource
revision: e8ca3b6a83d19b2fc4738a0d9607190436e5e452
path: modules/debug/TraceRecorder
groups:
- debug
- name: trusted-firmware-m
revision: 7c53a6e76130a85303f83b15d868a92fdcd5f5be
path: modules/tee/tf-m/trusted-firmware-m
groups:
- tee
- name: tf-m-tests
revision: c99a86b295c4887520da9d8402566d7f225c974e
path: modules/tee/tf-m/tf-m-tests
groups:
- tee
- name: psa-arch-tests
revision: a81f9da287569f169d60026916952641b233faa8
path: modules/tee/tf-m/psa-arch-tests
groups:
- tee
- name: zcbor
revision: 882c489a7d9fdfff31d27666914a78a9eb6976d7
path: modules/lib/zcbor
- name: zscilib
path: modules/lib/zscilib
revision: fc979a8dcb74169c69b02835927bff8f070d6325
group-filter:
- -ci
self:
path: zephyr
west-commands: scripts/west-commands.yml
import: submanifests