Skip to content

Commit a9418d1

Browse files
committed
make: Configuration: support picolib
Switch to TOCK_LIBC variables rather than assuming newlib
1 parent ef66bae commit a9418d1

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
@@ -257,10 +257,19 @@ else ifeq ($(CC_rv32_version_major),13)
257257
else
258258
NEWLIB_VERSION_rv32 := 4.3.0.20230120
259259
endif
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.
266275
ifeq ($(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.
301310
override 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)
331340
override WLFLAGS_rv32imac += $(WLFLAGS_rv32)
332341

333342
override 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

337346
override 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

342351
override 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

346355
override 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

351360
override 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

355364
override 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)
397406
else
398407
NEWLIB_VERSION_cortex-m := 4.3.0.20230120
399408
endif
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.
407425
ifeq ($(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

463481
override 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

467485
override 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

472490
override 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

476494
override 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

481499
override 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

485503
override 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

490508
override 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

494512
override 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

Comments
 (0)