From fca7eac43fe524cd2bdc2f1730b10669517ea9d2 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 19 Oct 2021 11:05:50 -0700 Subject: [PATCH] Build picolibc too To make C++ work, this requires patching the GCC headers that are built. This would have been done by crosstool-ng, but sdk-ng doesn't use a GCC version known to crosstool-ng, so none of the crosstool-ng patches are applied. Signed-off-by: Keith Packard --- configs/arm.config | 5 +++++ configs/arm64.config | 5 +++++ configs/i586.config | 4 ++++ configs/riscv64.config | 5 +++++ go.sh | 6 ++++++ 5 files changed, 25 insertions(+) diff --git a/configs/arm.config b/configs/arm.config index 55fd9866..6ad5f18e 100644 --- a/configs/arm.config +++ b/configs/arm.config @@ -69,3 +69,8 @@ CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y # CT_LIBC_NEWLIB_NANO_LTO is not set CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y + +CT_COMP_LIBS_PICOLIBC=y +CT_LIBC_PICOLIBC_GLOBAL_ATEXIT=y +CT_LIBC_PICOLIBC_EXTRA_SECTIONS=y +CT_TARGET_CFLAGS="-ftls-model=local-exec" diff --git a/configs/arm64.config b/configs/arm64.config index a35b37ab..0257f9f7 100644 --- a/configs/arm64.config +++ b/configs/arm64.config @@ -68,3 +68,8 @@ CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y # CT_LIBC_NEWLIB_NANO_LTO is not set CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y + +CT_COMP_LIBS_PICOLIBC=y +CT_LIBC_PICOLIBC_GLOBAL_ATEXIT=y +CT_LIBC_PICOLIBC_EXTRA_SECTIONS=y +CT_TARGET_CFLAGS="-ftls-model=local-exec" diff --git a/configs/i586.config b/configs/i586.config index f461865d..c544e42d 100644 --- a/configs/i586.config +++ b/configs/i586.config @@ -68,3 +68,7 @@ CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y # CT_LIBC_NEWLIB_NANO_LTO is not set CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y + +CT_COMP_LIBS_PICOLIBC=y +CT_LIBC_PICOLIBC_GLOBAL_ATEXIT=y +CT_LIBC_PICOLIBC_EXTRA_SECTIONS=y diff --git a/configs/riscv64.config b/configs/riscv64.config index 721581c7..5a76b7d3 100644 --- a/configs/riscv64.config +++ b/configs/riscv64.config @@ -69,3 +69,8 @@ CT_LIBC_NEWLIB_NANO_ENABLE_TARGET_OPTSPACE=y # CT_LIBC_NEWLIB_NANO_LTO is not set CT_LIBC_NEWLIB_NANO_NANO_MALLOC=y CT_LIBC_NEWLIB_NANO_NANO_FORMATTED_IO=y + +CT_COMP_LIBS_PICOLIBC=y +CT_LIBC_PICOLIBC_GLOBAL_ATEXIT=y +CT_LIBC_PICOLIBC_EXTRA_SECTIONS=y +CT_TARGET_CFLAGS="-ftls-model=local-exec" diff --git a/go.sh b/go.sh index 6753c742..66e7268f 100755 --- a/go.sh +++ b/go.sh @@ -175,6 +175,12 @@ for t in ${TARGETS}; do fi rm -rf ${CT_PREFIX}/*/newlib-nano + # Fix include_next in c++ headers. Crosstool-ng does this for + # known GCC releases, but we're cherry-picking a specific GCC + # tag, so none of the crosstool-ng patches get applied. + + find ${OUTPUT_DIR}/${TARGET_DIR}/include/c++ -type f | xargs sed -i 's/include_next/include/' + popd rm -fr ${TARGET_BUILD_DIR} mv ${CT_PREFIX}/${TRIPLET}/build.log.bz2 ${OUTPUT_DIR}/build.${t}.${os}.${machine}.log.bz2