summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/comp_libs/picolibc.in (renamed from config/libc/picolibc.in)13
-rw-r--r--samples/arm-picolibc-eabi/crosstool.config6
-rw-r--r--samples/arm-unknown-eabi/crosstool.config2
-rw-r--r--scripts/build/companion_libs/340-picolibc.sh (renamed from scripts/build/libc/picolibc.sh)37
4 files changed, 34 insertions, 24 deletions
diff --git a/config/libc/picolibc.in b/config/comp_libs/picolibc.in
index cc1d4d1..a3f07d6 100644
--- a/config/libc/picolibc.in
+++ b/config/comp_libs/picolibc.in
@@ -1,17 +1,14 @@
# picolibc options
## depends on BARE_METAL && CONFIGURE_has_meson && CONFIGURE_has_ninja
-## select LIBC_SUPPORT_THREADS_NATIVE
-
-## select CC_CORE_PASSES_NEEDED if CANADIAN
-## select CC_CORE_PASS_2_NEEDED if ! CANADIAN
+## help This option adds Picolibc to an existing configuration which may have
+## help a C library, allowing you to install both and select between them
+## help when compiling applications using the toolchain
+## help
## help Picolibc is a C library intended for use on embedded systems. It is a
## help conglomeration of several library parts, all under BSD-compatible software
-## help licenses that make them easily usable on embedded products. Picolibc
-## help is only available in source form. It can be compiled for a wide
-## help array of processors, and will usually work on any architecture with
-## help the addition of a few low-level routines.
+## help licenses that make them easily usable on embedded products.
config PICOLIBC_CXA_ATEXIT
def_bool y
diff --git a/samples/arm-picolibc-eabi/crosstool.config b/samples/arm-picolibc-eabi/crosstool.config
index 7f7d42a..48a4543 100644
--- a/samples/arm-picolibc-eabi/crosstool.config
+++ b/samples/arm-picolibc-eabi/crosstool.config
@@ -3,10 +3,8 @@ CT_ARCH_ARM=y
CT_MULTILIB=y
CT_ARCH_FLOAT_SW=y
CT_TARGET_VENDOR="picolibc"
-CT_CC_LANG_CXX=n
-CT_LIBC="picolibc"
-CT_LIBC_NEWLIB=n
-CT_LIBC_PICOLIBC=y
+CT_LIBC_NONE=y
CT_CC_GCC_CONFIG_TLS=y
CT_TARGET_CFLAGS="-ftls-model=local-exec"
CT_CC_GCC_MULTILIB_LIST="rmprofile"
+CT_COMP_LIBS_PICOLIBC=y
diff --git a/samples/arm-unknown-eabi/crosstool.config b/samples/arm-unknown-eabi/crosstool.config
index 5636c36..3c8cbb7 100644
--- a/samples/arm-unknown-eabi/crosstool.config
+++ b/samples/arm-unknown-eabi/crosstool.config
@@ -6,3 +6,5 @@ CT_LIBC_NEWLIB_IO_LL=y
CT_LIBC_NEWLIB_IO_FLOAT=y
CT_LIBC_NEWLIB_DISABLE_SUPPLIED_SYSCALLS=y
CT_CC_LANG_CXX=y
+CT_COMP_LIBS_PICOLIBC=y
+CT_TARGET_CFLAGS="-ftls-model=local-exec"
diff --git a/scripts/build/libc/picolibc.sh b/scripts/build/companion_libs/340-picolibc.sh
index 152125c..c0128c1 100644
--- a/scripts/build/libc/picolibc.sh
+++ b/scripts/build/companion_libs/340-picolibc.sh
@@ -5,22 +5,30 @@
# Edited by Keith Packard <keithp@keithp.com>
#
-picolibc_start_files()
-{
- CT_DoStep INFO "Installing C library headers & start files"
- CT_DoExecLog ALL cp -a "${CT_SRC_DIR}/picolibc/newlib/libc/include/." \
- "${CT_HEADERS_DIR}"
- CT_EndStep
+do_picolibc_get() { :; }
+do_picolibc_extract() { :; }
+do_picolibc_for_build() { :; }
+do_picolibc_for_host() { :; }
+do_picolibc_for_target() { :; }
+
+if [ "${CT_COMP_LIBS_PICOLIBC}" = "y" ]; then
+
+# Download picolibc
+do_picolibc_get() {
+ CT_Fetch PICOLIBC
}
-picolibc_main()
-{
+do_picolibc_extract() {
+ CT_ExtractPatch PICOLIBC
+}
+
+do_picolibc_for_target() {
local -a picolibc_opts
local cflags_for_target
- CT_DoStep INFO "Installing C library"
+ CT_DoStep INFO "Installing Picolibc library"
- CT_mkdir_pushd "${CT_BUILD_DIR}/build-libc"
+ CT_mkdir_pushd "${CT_BUILD_DIR}/build-picolibc-build-${CT_BUILD}"
CT_DoLog EXTRA "Configuring Picolibc library"
@@ -91,11 +99,14 @@ c_args = [ ${meson_cflags} '-nostdlib', '-fno-common', '-ftls-model=local-exec'
needs_exe_wrapper = true
skip_sanity_check = true
EOF
+
CT_DoExecLog CFG \
meson \
--cross-file picolibc-cross.txt \
- --prefix=${CT_SYSROOT_DIR} \
- -Dspecsdir=${CT_SYSROOT_DIR}/lib \
+ --prefix="${CT_PREFIX_DIR}" \
+ -Dincludedir=picolibc/include \
+ -Dlibdir=picolibc/${CT_TARGET}/lib \
+ -Dspecsdir="${CT_SYSROOT_DIR}"/lib \
"${CT_SRC_DIR}/picolibc" \
"${picolibc_opts[@]}" \
"${CT_LIBC_PICOLIBC_EXTRA_CONFIG_ARRAY[@]}"
@@ -109,3 +120,5 @@ EOF
CT_Popd
CT_EndStep
}
+
+fi