@@ -251,10 +251,20 @@ else ifeq ($(CC_rv32_version_major),13)
251
251
else
252
252
NEWLIB_VERSION_rv32 := 4.3.0.20230120
253
253
endif
254
- NEWLIB_VERSION_rv32i := $(NEWLIB_VERSION_rv32 )
255
- NEWLIB_VERSION_rv32imc := $(NEWLIB_VERSION_rv32 )
256
- NEWLIB_VERSION_rv32imac := $(NEWLIB_VERSION_rv32 )
257
- NEWLIB_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR ) /lib/libtock-newlib-$(NEWLIB_VERSION_rv32 )
254
+
255
+ ifeq ($(PICOLIB ) ,)
256
+ # Use newlib
257
+ TOCK_LIBC_FOLDER_rv32 := libtock-newlib-$(NEWLIB_VERSION_rv32 )
258
+ else
259
+ # Use picolib
260
+ TOCK_LIBC_FOLDER_rv32 := libtock-picolib-1.8.5
261
+ endif
262
+
263
+ TOCK_LIBC_FOLDER_rv32i := $(TOCK_LIBC_FOLDER_rv32 )
264
+ TOCK_LIBC_FOLDER_rv32imc := $(TOCK_LIBC_FOLDER_rv32 )
265
+ TOCK_LIBC_FOLDER_rv32imac := $(TOCK_LIBC_FOLDER_rv32 )
266
+ TOCK_LIBC_BASE_DIR_rv32 := $(TOCK_USERLAND_BASE_DIR ) /lib/$(TOCK_LIBC_FOLDER_rv32 )
267
+
258
268
259
269
# Match compiler version to supported libtock-libc++ versions.
260
270
ifeq ($(CC_rv32_version_major ) ,10)
@@ -291,7 +301,7 @@ override CFLAGS_rv32imac += $(CFLAGS_rv32)
291
301
# Set the base `CPPFLAGS` for all RISC-V variants based on the toolchain family.
292
302
override CPPFLAGS_rv32 += \
293
303
$(CPPFLAGS_toolchain_rv32 ) \
294
- -isystem $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include \
304
+ -isystem $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include \
295
305
-isystem $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32 ) \
296
306
-isystem $(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/include/c++/$(LIBCPP_VERSION_rv32 ) /riscv64-unknown-elf
297
307
@@ -325,22 +335,22 @@ override LINK_LIBS_rv32i += \
325
335
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libstdc++.a \
326
336
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libsupc++.a \
327
337
$(LIBCPP_BASE_DIR_rv32 ) /riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32 ) /rv32i/ilp32/libgcc.a \
328
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
329
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
338
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libc.a \
339
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32i/ilp32/libm.a
330
340
331
341
override LINK_LIBS_rv32imc += \
332
342
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libstdc++.a \
333
343
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libsupc++.a \
334
344
$(LIBCPP_BASE_DIR_rv32 ) /riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32 ) /rv32im/ilp32/libgcc.a \
335
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
336
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
345
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libc.a \
346
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32im/ilp32/libm.a
337
347
338
348
override LINK_LIBS_rv32imac += \
339
349
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libstdc++.a \
340
350
$(LIBCPP_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libsupc++.a \
341
351
$(LIBCPP_BASE_DIR_rv32 ) /riscv/lib/gcc/riscv64-unknown-elf/$(LIBCPP_VERSION_rv32 ) /rv32imac/ilp32/libgcc.a \
342
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
343
- $(NEWLIB_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
352
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libc.a \
353
+ $(TOCK_LIBC_BASE_DIR_rv32 ) /riscv/riscv64-unknown-elf/lib/rv32imac/ilp32/libm.a
344
354
345
355
346
356
# ###############################################################################
@@ -382,11 +392,20 @@ else ifeq ($(CC_cortex-m_version_major),13)
382
392
else
383
393
NEWLIB_VERSION_cortex-m := 4.3.0.20230120
384
394
endif
385
- NEWLIB_VERSION_cortex-m0 := $(NEWLIB_VERSION_cortex-m )
386
- NEWLIB_VERSION_cortex-m3 := $(NEWLIB_VERSION_cortex-m )
387
- NEWLIB_VERSION_cortex-m4 := $(NEWLIB_VERSION_cortex-m )
388
- NEWLIB_VERSION_cortex-m7 := $(NEWLIB_VERSION_cortex-m )
389
- NEWLIB_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR ) /lib/libtock-newlib-$(NEWLIB_VERSION_cortex-m )
395
+
396
+ ifeq ($(PICOLIB ) ,)
397
+ # Use newlib
398
+ TOCK_LIBC_FOLDER_cortex-m := libtock-newlib-$(NEWLIB_VERSION_cortex-m )
399
+ else
400
+ # Use picolib
401
+ TOCK_LIBC_FOLDER_cortex-m := libtock-picolib-1.8.5
402
+ endif
403
+
404
+ TOCK_LIBC_FOLDER_cortex-m0 := $(TOCK_LIBC_FOLDER_cortex-m )
405
+ TOCK_LIBC_FOLDER_cortex-m3 := $(TOCK_LIBC_FOLDER_cortex-m )
406
+ TOCK_LIBC_FOLDER_cortex-m4 := $(TOCK_LIBC_FOLDER_cortex-m )
407
+ TOCK_LIBC_FOLDER_cortex-m7 := $(TOCK_LIBC_FOLDER_cortex-m )
408
+ TOCK_LIBC_BASE_DIR_cortex-m := $(TOCK_USERLAND_BASE_DIR ) /lib/$(TOCK_LIBC_FOLDER_cortex-m )
390
409
391
410
# Match compiler version to supported libtock-libc++ versions.
392
411
ifeq ($(CC_cortex-m_version_major ) ,10)
@@ -423,7 +442,7 @@ override CPPFLAGS_cortex-m += \
423
442
-msingle-pic-base\
424
443
-mpic-register=r9\
425
444
-mno-pic-data-is-text-relative\
426
- -isystem $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/include\
445
+ -isystem $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/include\
427
446
-isystem $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m ) \
428
447
-isystem $(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/include/c++/$(LIBCPP_VERSION_cortex-m ) /arm-none-eabi
429
448
@@ -445,29 +464,29 @@ override LINK_LIBS_cortex-m0 += \
445
464
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a \
446
465
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a \
447
466
$(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v6-m/nofp/libgcc.a \
448
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
449
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
467
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a \
468
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a
450
469
451
470
override LINK_LIBS_cortex-m3 += \
452
471
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a \
453
472
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a \
454
473
$(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v7-m/nofp/libgcc.a \
455
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
456
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
474
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a \
475
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a
457
476
458
477
override LINK_LIBS_cortex-m4 += \
459
478
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \
460
479
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a \
461
480
$(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v7e-m/nofp/libgcc.a \
462
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
463
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
481
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
482
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
464
483
465
484
override LINK_LIBS_cortex-m7 += \
466
485
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a \
467
486
$(LIBCPP_BASE_DIR_cortex-m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a \
468
487
$(LIBCPP_BASE_DIR_cortex-m ) /arm/lib/gcc/arm-none-eabi/$(LIBCPP_VERSION_cortex-m ) /thumb/v7e-m/nofp/libgcc.a \
469
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
470
- $(NEWLIB_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
488
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a \
489
+ $(TOCK_LIBC_BASE_DIR_cortex -m ) /arm/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a
471
490
472
491
# Cortex-M needs an additional OBJDUMP flag.
473
492
override OBJDUMP_FLAGS_cortex-m += --disassembler-options=force-thumb
0 commit comments