Skip to content

Commit 645cd32

Browse files
committed
make: Configuration: support picolib
Switch to TOCK_LIBC variables rather than assuming newlib
1 parent ee2cec6 commit 645cd32

File tree

1 file changed

+43
-25
lines changed

1 file changed

+43
-25
lines changed

Configuration.mk

Lines changed: 43 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -262,10 +262,19 @@ else ifeq ($(CC_rv32_version_major),13)
262262
else
263263
NEWLIB_VERSION_rv32 := 4.3.0.20230120
264264
endif
265-
NEWLIB_VERSION_rv32i := $(NEWLIB_VERSION_rv32)
266-
NEWLIB_VERSION_rv32imc := $(NEWLIB_VERSION_rv32)
267-
NEWLIB_VERSION_rv32imac := $(NEWLIB_VERSION_rv32)
268-
NEWLIB_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR)/lib/libtock-newlib-$(NEWLIB_VERSION_rv32)
265+
266+
ifeq ($(PICOLIB),)
267+
# Use newlib
268+
TOCK_LIBC_FOLDER_rv32 := libtock-newlib-$(NEWLIB_VERSION_rv32)
269+
else
270+
# Use picolib
271+
TOCK_LIBC_FOLDER_rv32 := libtock-picolib-1.8.5
272+
endif
273+
274+
TOCK_LIBC_FOLDER_rv32i := $(TOCK_LIBC_FOLDER_rv32)
275+
TOCK_LIBC_FOLDER_rv32imc := $(TOCK_LIBC_FOLDER_rv32)
276+
TOCK_LIBC_FOLDER_rv32imac := $(TOCK_LIBC_FOLDER_rv32)
277+
TOCK_LIBC_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR)/lib/$(TOCK_LIBC_FOLDER_rv32)
269278

270279
# Match compiler version to supported libtock-libc++ versions.
271280
ifeq ($(CC_rv32_version_major),10)
@@ -305,7 +314,7 @@ override CFLAGS_rv32imac += $(CFLAGS_rv32)
305314
# Set the base `CPPFLAGS` for all RISC-V variants based on the toolchain family.
306315
override CPPFLAGS_rv32 += \
307316
$(CPPFLAGS_toolchain_rv32) \
308-
-isystem $(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/include \
317+
-isystem $(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/include \
309318
-isystem $(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32) \
310319
-isystem $(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32)/riscv64-unknown-elf
311320

@@ -336,26 +345,26 @@ override WLFLAGS_rv32imc += $(WLFLAGS_rv32)
336345
override WLFLAGS_rv32imac += $(WLFLAGS_rv32)
337346

338347
override SYSTEM_LIBS_rv32i += \
339-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
340-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
348+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
349+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
341350

342351
override SYSTEM_LIBS_CXX_rv32i += \
343352
$(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libstdc++.a \
344353
$(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libsupc++.a \
345354
$(LIBCPP_BASE_DIR_rv32)/riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32)/rv32i/ilp32/libgcc.a
346355

347356
override SYSTEM_LIBS_rv32imc += \
348-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
349-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
357+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
358+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
350359

351360
override SYSTEM_LIBS_CXX_rv32imc += \
352361
$(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libstdc++.a \
353362
$(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libsupc++.a \
354363
$(LIBCPP_BASE_DIR_rv32)/riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32)/rv32im/ilp32/libgcc.a
355364

356365
override SYSTEM_LIBS_rv32imac += \
357-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
358-
$(NEWLIB_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
366+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
367+
$(TOCK_LIBC_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
359368

360369
override SYSTEM_LIBS_CXX_rv32imac += \
361370
$(LIBCPP_BASE_DIR_rv32)/riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libstdc++.a \
@@ -402,11 +411,20 @@ else ifeq ($(CC_cortex-m_version_major),13)
402411
else
403412
NEWLIB_VERSION_cortex-m := 4.3.0.20230120
404413
endif
405-
NEWLIB_VERSION_cortex-m0 := $(NEWLIB_VERSION_cortex-m)
406-
NEWLIB_VERSION_cortex-m3 := $(NEWLIB_VERSION_cortex-m)
407-
NEWLIB_VERSION_cortex-m4 := $(NEWLIB_VERSION_cortex-m)
408-
NEWLIB_VERSION_cortex-m7 := $(NEWLIB_VERSION_cortex-m)
409-
NEWLIB_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR)/lib/libtock-newlib-$(NEWLIB_VERSION_cortex-m)
414+
415+
ifeq ($(PICOLIB),)
416+
# Use newlib
417+
TOCK_LIBC_FOLDER_cortex-m := libtock-newlib-$(NEWLIB_VERSION_cortex-m)
418+
else
419+
# Use picolib
420+
TOCK_LIBC_FOLDER_cortex-m := libtock-picolib-1.8.5
421+
endif
422+
423+
TOCK_LIBC_FOLDER_cortex-m0 := $(TOCK_LIBC_FOLDER_cortex-m)
424+
TOCK_LIBC_FOLDER_cortex-m3 := $(TOCK_LIBC_FOLDER_cortex-m)
425+
TOCK_LIBC_FOLDER_cortex-m4 := $(TOCK_LIBC_FOLDER_cortex-m)
426+
TOCK_LIBC_FOLDER_cortex-m7 := $(TOCK_LIBC_FOLDER_cortex-m)
427+
TOCK_LIBC_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR)/lib/$(TOCK_LIBC_FOLDER_cortex-m)
410428

411429
# Match compiler version to supported libtock-libc++ versions.
412430
ifeq ($(CC_cortex-m_version_major),10)
@@ -447,7 +465,7 @@ override CPPFLAGS_cortex-m += \
447465
-msingle-pic-base\
448466
-mpic-register=r9\
449467
-mno-pic-data-is-text-relative\
450-
-isystem $(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/include\
468+
-isystem $(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/include\
451469
-isystem $(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m)\
452470
-isystem $(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m)/arm-none-eabi
453471

@@ -466,35 +484,35 @@ override CPPFLAGS_cortex-m7 += $(CPPFLAGS_cortex-m) \
466484
-mcpu=cortex-m7
467485

468486
override SYSTEM_LIBS_cortex-m0 += \
469-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
470-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
487+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
488+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
471489

472490
override SYSTEM_LIBS_CXX_cortex-m0 += \
473491
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a \
474492
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a \
475493
$(LIBCPP_BASE_DIR_cortex-m)/arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m)/thumb/v6-m/nofp/libgcc.a
476494

477495
override SYSTEM_LIBS_cortex-m3 += \
478-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
479-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
496+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
497+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
480498

481499
override SYSTEM_LIBS_CXX_cortex-m3 += \
482500
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a \
483501
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a \
484502
$(LIBCPP_BASE_DIR_cortex-m)/arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m)/thumb/v7-m/nofp/libgcc.a
485503

486504
override SYSTEM_LIBS_cortex-m4 += \
487-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
488-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
505+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
506+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
489507

490508
override SYSTEM_LIBS_CXX_cortex-m4 += \
491509
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \
492510
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a \
493511
$(LIBCPP_BASE_DIR_cortex-m)/arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m)/thumb/v7e-m/nofp/libgcc.a
494512

495513
override SYSTEM_LIBS_cortex-m7 += \
496-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
497-
$(NEWLIB_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
514+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
515+
$(TOCK_LIBC_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
498516

499517
override SYSTEM_LIBS_CXX_cortex-m7 += \
500518
$(LIBCPP_BASE_DIR_cortex-m)/arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \

0 commit comments

Comments
 (0)