@@ -257,10 +257,19 @@ else ifeq ($(CC_rv32_version_major),13)
257257else
258258 NEWLIB_VERSION_rv32 := 4.3.0.20230120
259259endif
260- NEWLIB_VERSION_rv32i := $(NEWLIB_VERSION_rv32 )
261- NEWLIB_VERSION_rv32imc := $(NEWLIB_VERSION_rv32 )
262- NEWLIB_VERSION_rv32imac := $(NEWLIB_VERSION_rv32 )
263- NEWLIB_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR ) /lib/libtock-newlib-$(NEWLIB_VERSION_rv32 )
260+
261+ ifeq ($(PICOLIB ) ,)
262+ # Use newlib
263+ TOCK_LIBC_FOLDER_rv32 := libtock-newlib-$(NEWLIB_VERSION_rv32 )
264+ else
265+ # Use picolib
266+ TOCK_LIBC_FOLDER_rv32 := libtock-picolib-1.8.5
267+ endif
268+
269+ TOCK_LIBC_FOLDER_rv32i := $(TOCK_LIBC_FOLDER_rv32 )
270+ TOCK_LIBC_FOLDER_rv32imc := $(TOCK_LIBC_FOLDER_rv32 )
271+ TOCK_LIBC_FOLDER_rv32imac := $(TOCK_LIBC_FOLDER_rv32 )
272+ TOCK_LIBC_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR ) /lib/$(TOCK_LIBC_FOLDER_rv32 )
264273
265274# Match compiler version to supported libtock-libc++ versions.
266275ifeq ($(CC_rv32_version_major ) ,10)
@@ -300,7 +309,7 @@ override CFLAGS_rv32imac += $(CFLAGS_rv32)
300309# Set the base `CPPFLAGS` for all RISC-V variants based on the toolchain family.
301310override CPPFLAGS_rv32 += \
302311 $(CPPFLAGS_toolchain_rv32 ) \
303- -isystem $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include \
312+ -isystem $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include \
304313 -isystem $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32 ) \
305314 -isystem $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32 ) /riscv64-unknown-elf
306315
@@ -331,26 +340,26 @@ override WLFLAGS_rv32imc += $(WLFLAGS_rv32)
331340override WLFLAGS_rv32imac += $(WLFLAGS_rv32 )
332341
333342override SYSTEM_LIBS_rv32i += \
334- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
335- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
343+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
344+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
336345
337346override SYSTEM_LIBS_CXX_rv32i += \
338347 $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libstdc++.a \
339348 $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libsupc++.a \
340349 $(LIBCPP_BASE_DIR_rv32 ) /riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32 ) /rv32i/ilp32/libgcc.a
341350
342351override SYSTEM_LIBS_rv32imc += \
343- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
344- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
352+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
353+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
345354
346355override SYSTEM_LIBS_CXX_rv32imc += \
347356 $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libstdc++.a \
348357 $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libsupc++.a \
349358 $(LIBCPP_BASE_DIR_rv32 ) /riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32 ) /rv32im/ilp32/libgcc.a
350359
351360override SYSTEM_LIBS_rv32imac += \
352- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
353- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
361+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
362+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
354363
355364override SYSTEM_LIBS_CXX_rv32imac += \
356365 $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libstdc++.a \
@@ -397,11 +406,20 @@ else ifeq ($(CC_cortex-m_version_major),13)
397406else
398407 NEWLIB_VERSION_cortex-m := 4.3.0.20230120
399408endif
400- NEWLIB_VERSION_cortex-m0 := $(NEWLIB_VERSION_cortex-m )
401- NEWLIB_VERSION_cortex-m3 := $(NEWLIB_VERSION_cortex-m )
402- NEWLIB_VERSION_cortex-m4 := $(NEWLIB_VERSION_cortex-m )
403- NEWLIB_VERSION_cortex-m7 := $(NEWLIB_VERSION_cortex-m )
404- NEWLIB_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR ) /lib/libtock-newlib-$(NEWLIB_VERSION_cortex-m )
409+
410+ ifeq ($(PICOLIB ) ,)
411+ # Use newlib
412+ TOCK_LIBC_FOLDER_cortex-m := libtock-newlib-$(NEWLIB_VERSION_cortex-m )
413+ else
414+ # Use picolib
415+ TOCK_LIBC_FOLDER_cortex-m := libtock-picolib-1.8.5
416+ endif
417+
418+ TOCK_LIBC_FOLDER_cortex-m0 := $(TOCK_LIBC_FOLDER_cortex-m )
419+ TOCK_LIBC_FOLDER_cortex-m3 := $(TOCK_LIBC_FOLDER_cortex-m )
420+ TOCK_LIBC_FOLDER_cortex-m4 := $(TOCK_LIBC_FOLDER_cortex-m )
421+ TOCK_LIBC_FOLDER_cortex-m7 := $(TOCK_LIBC_FOLDER_cortex-m )
422+ TOCK_LIBC_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR ) /lib/$(TOCK_LIBC_FOLDER_cortex-m )
405423
406424# Match compiler version to supported libtock-libc++ versions.
407425ifeq ($(CC_cortex-m_version_major ) ,10)
@@ -442,7 +460,7 @@ override CPPFLAGS_cortex-m += \
442460 -msingle-pic-base\
443461 -mpic-register=r9\
444462 -mno-pic-data-is-text-relative\
445- -isystem $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/include\
463+ -isystem $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/include\
446464 -isystem $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m ) \
447465 -isystem $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m ) /arm-none-eabi
448466
@@ -461,35 +479,35 @@ override CPPFLAGS_cortex-m7 += $(CPPFLAGS_cortex-m) \
461479 -mcpu=cortex-m7
462480
463481override SYSTEM_LIBS_cortex-m0 += \
464- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
465- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
482+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
483+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
466484
467485override SYSTEM_LIBS_CXX_cortex-m0 += \
468486 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a \
469487 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a \
470488 $(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v6-m/nofp/libgcc.a
471489
472490override SYSTEM_LIBS_cortex-m3 += \
473- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
474- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
491+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
492+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
475493
476494override SYSTEM_LIBS_CXX_cortex-m3 += \
477495 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a \
478496 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a \
479497 $(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v7-m/nofp/libgcc.a
480498
481499override SYSTEM_LIBS_cortex-m4 += \
482- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
483- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
500+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
501+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
484502
485503override SYSTEM_LIBS_CXX_cortex-m4 += \
486504 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \
487505 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a \
488506 $(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v7e-m/nofp/libgcc.a
489507
490508override SYSTEM_LIBS_cortex-m7 += \
491- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
492- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
509+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
510+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
493511
494512override SYSTEM_LIBS_CXX_cortex-m7 += \
495513 $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \
0 commit comments