From 58fc6b50284bd09c93786e9619e8e9a0256e3d76 Mon Sep 17 00:00:00 2001 From: kaishaoshao <2032751077@qq.com> Date: Mon, 4 Aug 2025 11:59:18 +0800 Subject: [PATCH 1/4] [terapines.mk] Use different --config options for each STDCLIB (Require after zcc 4.1.2). --- Build/toolchain/terapines.mk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Build/toolchain/terapines.mk b/Build/toolchain/terapines.mk index 9681a0620..645e21382 100644 --- a/Build/toolchain/terapines.mk +++ b/Build/toolchain/terapines.mk @@ -18,18 +18,18 @@ ifneq ($(findstring newlib,$(STDCLIB)),) ifeq ($(STDCLIB),newlib_full) LDLIBS += -lc -lclang_rt.builtins else ifeq ($(STDCLIB),newlib_fast) -LDLIBS += -lc_nano -lclang_rt.builtins +LDLIBS += -lc_small -lclang_rt.builtins_small STDCLIB_LDFLAGS += -u _printf_float -u _scanf_float else ifeq ($(STDCLIB),newlib_small) -LDLIBS += -lc_nano -lclang_rt.builtins +LDLIBS += -lc_small -lclang_rt.builtins_small STDCLIB_LDFLAGS += -u _printf_float else ifeq ($(STDCLIB),newlib_nano) -LDLIBS += -lc_nano -lclang_rt.builtins +LDLIBS += -lc_nano -lclang_rt.builtins_nano # work around for relocation R_RISCV_PCREL_HI20 out of range: -524289 is not in [-524288, 524287]; references _printf_float when compile with rv64 # If it report above error, you can add -u _printf_float STDCLIB_LDFLAGS += #-u _printf_float else -LDLIBS += -lc_nano -lclang_rt.builtins +LDLIBS += -lc_small -lclang_rt.builtins_small STDCLIB_LDFLAGS += #-u _printf_float endif ### @@ -47,7 +47,7 @@ else ifeq ($(STDCLIB),nospec) COMMON_FLAGS += ### else -LDLIBS += -lc_nano -lclang_rt.builtins +LDLIBS += -lc_small -lclang_rt.builtins_small STDCLIB_LDFLAGS += -u _printf_float ### endif From 1afd2cd450a9904d0ac7e25c6f31d8cf0b1933a5 Mon Sep 17 00:00:00 2001 From: Wang shaokai Date: Mon, 13 Oct 2025 15:46:01 +0800 Subject: [PATCH 2/4] [zcc] Remove the -fuse-size-lib compile flag This option is no longer effective in zcc version 4.1.2 and later. This option searches for C libraries under the size directory and is now being deprecated. --- application/baremetal/benchmark/coremark/npk.yml | 2 +- application/baremetal/benchmark/coremark/toolchain_terapines.mk | 2 +- application/baremetal/benchmark/dhrystone/npk.yml | 2 +- .../baremetal/benchmark/dhrystone/toolchain_terapines.mk | 2 +- application/baremetal/benchmark/dhrystone_v2.2/npk.yml | 2 +- .../baremetal/benchmark/dhrystone_v2.2/toolchain_terapines.mk | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/application/baremetal/benchmark/coremark/npk.yml b/application/baremetal/benchmark/coremark/npk.yml index 27236e50a..9e75b4d72 100644 --- a/application/baremetal/benchmark/coremark/npk.yml +++ b/application/baremetal/benchmark/coremark/npk.yml @@ -104,5 +104,5 @@ buildconfig: common_flags: # flags need to be combined together across all packages - flags: -O3 -flto -falign-functions=4 -falign-loops=4 -flate-loop-unroll -malign-branch ldflags: - - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib + - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 diff --git a/application/baremetal/benchmark/coremark/toolchain_terapines.mk b/application/baremetal/benchmark/coremark/toolchain_terapines.mk index bf4a77548..250a95591 100644 --- a/application/baremetal/benchmark/coremark/toolchain_terapines.mk +++ b/application/baremetal/benchmark/coremark/toolchain_terapines.mk @@ -1,2 +1,2 @@ BENCH_FLAGS ?= -O3 -flto -falign-functions=4 -falign-loops=4 -flate-loop-unroll -malign-branch -LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib +LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 diff --git a/application/baremetal/benchmark/dhrystone/npk.yml b/application/baremetal/benchmark/dhrystone/npk.yml index d918104d1..749de6cbf 100644 --- a/application/baremetal/benchmark/dhrystone/npk.yml +++ b/application/baremetal/benchmark/dhrystone/npk.yml @@ -96,4 +96,4 @@ buildconfig: condition: $( ${dhry_mode} == 'best' ) ldflags: - - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib + - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 diff --git a/application/baremetal/benchmark/dhrystone/toolchain_terapines.mk b/application/baremetal/benchmark/dhrystone/toolchain_terapines.mk index 2b8e147a7..0d775c46d 100644 --- a/application/baremetal/benchmark/dhrystone/toolchain_terapines.mk +++ b/application/baremetal/benchmark/dhrystone/toolchain_terapines.mk @@ -5,4 +5,4 @@ BENCH_FLAGS ?= -O3 -ffast-math -flto -finline -fno-builtin-printf -funroll-loops else ifeq ($(DHRY_MODE),inline) BENCH_FLAGS ?= -O3 -flto -finline -fno-builtin-printf -funroll-loops -falign-functions=4 -falign-loops=4 -finline-functions -flate-loop-unroll -malign-branch endif -LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib +LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 diff --git a/application/baremetal/benchmark/dhrystone_v2.2/npk.yml b/application/baremetal/benchmark/dhrystone_v2.2/npk.yml index 3c08a9c0d..68419d867 100644 --- a/application/baremetal/benchmark/dhrystone_v2.2/npk.yml +++ b/application/baremetal/benchmark/dhrystone_v2.2/npk.yml @@ -45,4 +45,4 @@ buildconfig: common_flags: # flags need to be combined together across all packages - flags: -O3 -Wno-implicit-int -Wno-implicit-function-declaration ldflags: - - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib + - flags: -Wl,-mllvm,--align-all-nofallthru-blocks=2 diff --git a/application/baremetal/benchmark/dhrystone_v2.2/toolchain_terapines.mk b/application/baremetal/benchmark/dhrystone_v2.2/toolchain_terapines.mk index 4f67f836e..97f9608f0 100644 --- a/application/baremetal/benchmark/dhrystone_v2.2/toolchain_terapines.mk +++ b/application/baremetal/benchmark/dhrystone_v2.2/toolchain_terapines.mk @@ -1,2 +1,2 @@ BENCH_FLAGS ?= -O3 -LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 -fuse-size-lib +LDFLAGS += -Wl,-mllvm,--align-all-nofallthru-blocks=2 From 8f97578e5125686a097796dde152313b909281a9 Mon Sep 17 00:00:00 2001 From: Wang shaokai Date: Mon, 13 Oct 2025 17:20:45 +0800 Subject: [PATCH 3/4] Build: Update the built-in basic library link option of ZCC Toolchain --- SoC/evalsoc/Common/npk.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SoC/evalsoc/Common/npk.yml b/SoC/evalsoc/Common/npk.yml index d983c0602..c1ee6eeea 100644 --- a/SoC/evalsoc/Common/npk.yml +++ b/SoC/evalsoc/Common/npk.yml @@ -580,16 +580,16 @@ buildconfig: condition: $( startswith(${stdclib}, "newlib") ) - flags: -lc -lclang_rt.builtins condition: $( ${stdclib} == "newlib_full" ) - - flags: -lc_nano -lclang_rt.builtins -u _printf_float -u _scanf_float + - flags: -lc_small -lclang_rt.builtins_small condition: $( ${stdclib} == "newlib_fast" ) - - flags: -lc_nano -lclang_rt.builtins -u _printf_float + - flags: -lc_small -lclang_rt.builtins_small condition: $( ${stdclib} == "newlib_small" ) - - flags: -lc_nano -lclang_rt.builtins -u _printf_float + - flags: -lc_small -lclang_rt.builtins_small condition: $( startswith(${stdclib}, "libncrt") ) - flags: -fuse-ld=lld - flags: -u __on_exit_args condition: $( startswith(${stdclib}, "newlib") ) - - flags: -lc_nano -lclang_rt.builtins + - flags: -lc_nano -lclang_rt.builtins_nano condition: $( ${stdclib} == "newlib_nano" ) - flags: -lsemihost condition: $( ${semihost} == 1 ) From b7ff4e9cb0c85ac2e31dcaf517c42ce04e46c429 Mon Sep 17 00:00:00 2001 From: Wang shaokai Date: Tue, 14 Oct 2025 19:04:46 +0800 Subject: [PATCH 4/4] docs: Add the version description of zcc toolchain to prevent users from making mistakes during use --- Build/toolchain/terapines.mk | 2 ++ SoC/evalsoc/Common/npk.yml | 2 +- doc/source/changelog.rst | 5 +++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/Build/toolchain/terapines.mk b/Build/toolchain/terapines.mk index 645e21382..97bec7fc3 100644 --- a/Build/toolchain/terapines.mk +++ b/Build/toolchain/terapines.mk @@ -1,3 +1,5 @@ +# Required Version: ZCC Toolchain Version >= 4.1.2 +# If the zcc toolchain version is less than 4.1.2, use nuclei-sdk v0.8.0 CC := zcc CXX := z++ OBJDUMP := llvm-objdump diff --git a/SoC/evalsoc/Common/npk.yml b/SoC/evalsoc/Common/npk.yml index c1ee6eeea..77c67d215 100644 --- a/SoC/evalsoc/Common/npk.yml +++ b/SoC/evalsoc/Common/npk.yml @@ -566,7 +566,7 @@ buildconfig: condition: $( startswith(${stdclib}, "newlib") && ${semihost} == 1 ) - type: zcc - description: Terapines ZCC Toolchain + description: Terapines ZCC Toolchain # Required Version: ZCC Toolchain Version >= 4.1.2 toolchain_name: Terapines ZCC common_flags: # flags need to be combined together across all packages # Enable experimental extensions for zcc diff --git a/doc/source/changelog.rst b/doc/source/changelog.rst index 395e79325..93478eed0 100644 --- a/doc/source/changelog.rst +++ b/doc/source/changelog.rst @@ -51,6 +51,11 @@ This is release version of ``0.8.1`` of Nuclei SDK. - Fix build system :ref:`develop_buildsystem_var_core` support table format error +* Build System + + - Update to support Zcc version 4.1.2 and above as well as the new C library configuration + + V0.8.0 ------