Skip to content

Commit c022804

Browse files
ppescherfpistm
authored andcommitted
Add menu options for C RunTime library
Mainly to support floating point format strings in printf/scanf functions and their variants. Default settings uses Newlib Nano without floating point support (as before). One can add floating point support for Printf only, Scanf only or both, or just use the standard one. Signed-off-by: ppescher <[email protected]>
1 parent 3ac5145 commit c022804

File tree

2 files changed

+95
-3
lines changed

2 files changed

+95
-3
lines changed

boards.txt

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ menu.xserial=Serial interface
66
menu.usb=USB interface
77

88
menu.opt=Optimize
9+
menu.rtlib=C Runtime Library
910
menu.upload_method=Upload method
1011
menu.flash=Flash Memory Size
1112
menu.ram=RAM Size
@@ -909,3 +910,94 @@ RemRam.menu.opt.o3lto=Fastest (-O3) with LTO
909910
RemRam.menu.opt.o3lto.build.flags.optimize=-O3 -flto
910911
RemRam.menu.opt.ogstd=Debug (-g)
911912
RemRam.menu.opt.ogstd.build.flags.optimize=-g -Og
913+
914+
# C Runtime Library
915+
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
916+
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
917+
Nucleo_144.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
918+
Nucleo_144.menu.rtlib.nanofs=Newlib Nano + Float Scanf
919+
Nucleo_144.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
920+
Nucleo_144.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
921+
Nucleo_144.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
922+
Nucleo_144.menu.rtlib.full=Newlib Standard
923+
Nucleo_144.menu.rtlib.full.build.flags.ldspecs=
924+
925+
Nucleo_64.menu.rtlib.nano=Newlib Nano (default)
926+
Nucleo_64.menu.rtlib.nanofp=Newlib Nano + Float Printf
927+
Nucleo_64.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
928+
Nucleo_64.menu.rtlib.nanofs=Newlib Nano + Float Scanf
929+
Nucleo_64.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
930+
Nucleo_64.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
931+
Nucleo_64.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
932+
Nucleo_64.menu.rtlib.full=Newlib Standard
933+
Nucleo_64.menu.rtlib.full.build.flags.ldspecs=
934+
935+
Nucleo_32.menu.rtlib.nano=Newlib Nano (default)
936+
Nucleo_32.menu.rtlib.nanofp=Newlib Nano + Float Printf
937+
Nucleo_32.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
938+
Nucleo_32.menu.rtlib.nanofs=Newlib Nano + Float Scanf
939+
Nucleo_32.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
940+
Nucleo_32.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
941+
Nucleo_32.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
942+
Nucleo_32.menu.rtlib.full=Newlib Standard
943+
Nucleo_32.menu.rtlib.full.build.flags.ldspecs=
944+
945+
Disco.menu.rtlib.nano=Newlib Nano (default)
946+
Disco.menu.rtlib.nanofp=Newlib Nano + Float Printf
947+
Disco.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
948+
Disco.menu.rtlib.nanofs=Newlib Nano + Float Scanf
949+
Disco.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
950+
Disco.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
951+
Disco.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
952+
Disco.menu.rtlib.full=Newlib Standard
953+
Disco.menu.rtlib.full.build.flags.ldspecs=
954+
955+
GenF103.menu.rtlib.nano=Newlib Nano (default)
956+
GenF103.menu.rtlib.nanofp=Newlib Nano + Float Printf
957+
GenF103.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
958+
GenF103.menu.rtlib.nanofs=Newlib Nano + Float Scanf
959+
GenF103.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
960+
GenF103.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
961+
GenF103.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
962+
GenF103.menu.rtlib.full=Newlib Standard
963+
GenF103.menu.rtlib.full.build.flags.ldspecs=
964+
965+
GenF4.menu.rtlib.nano=Newlib Nano (default)
966+
GenF4.menu.rtlib.nanofp=Newlib Nano + Float Printf
967+
GenF4.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
968+
GenF4.menu.rtlib.nanofs=Newlib Nano + Float Scanf
969+
GenF4.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
970+
GenF4.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
971+
GenF4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
972+
GenF4.menu.rtlib.full=Newlib Standard
973+
GenF4.menu.rtlib.full.build.flags.ldspecs=
974+
975+
Maple.menu.rtlib.nano=Newlib Nano (default)
976+
Maple.menu.rtlib.nanofp=Newlib Nano + Float Printf
977+
Maple.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
978+
Maple.menu.rtlib.nanofs=Newlib Nano + Float Scanf
979+
Maple.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
980+
Maple.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
981+
Maple.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
982+
Maple.menu.rtlib.full=Newlib Standard
983+
Maple.menu.rtlib.full.build.flags.ldspecs=
984+
985+
RAK.menu.rtlib.nano=Newlib Nano (default)
986+
RAK.menu.rtlib.nanofp=Newlib Nano + Float Printf
987+
RAK.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
988+
RAK.menu.rtlib.nanofs=Newlib Nano + Float Scanf
989+
RAK.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
990+
RAK.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
991+
RAK.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
992+
RAK.menu.rtlib.full=Newlib Standard
993+
RAK.menu.rtlib.full.build.flags.ldspecs=
994+
995+
RemRam.menu.rtlib.nano=Newlib Nano (default)
996+
RemRam.menu.rtlib.nanofp=Newlib Nano + Float Printf
997+
RemRam.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
998+
RemRam.menu.rtlib.nanofs=Newlib Nano + Float Scanf
999+
RemRam.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
1000+
RemRam.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
1001+
RemRam.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
1002+
RemRam.menu.rtlib.full=Newlib Standard
1003+
RemRam.menu.rtlib.full.build.flags.ldspecs=

platform.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ compiler.extra_flags=-mcpu={build.mcu} -mthumb "@{build.opt.path}"
3333

3434
compiler.S.flags={compiler.extra_flags} -c -x assembler-with-cpp {compiler.stm.extra_include}
3535

36-
compiler.c.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -Dprintf=iprintf -MMD {compiler.stm.extra_include}
36+
compiler.c.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std=gnu11 -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -MMD {compiler.stm.extra_include}
3737

3838
compiler.cpp.flags={compiler.extra_flags} -c {build.flags.optimize} {compiler.warning_flags} -std={compiler.cpp.std} -ffunction-sections -fdata-sections -nostdlib -fno-threadsafe-statics --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -MMD {compiler.stm.extra_include}
3939

@@ -82,7 +82,7 @@ build.info.flags=-D{build.series} -DARDUINO={runtime.ide.version} -DARDUINO_{bui
8282
build.xSerial=-DHAL_UART_MODULE_ENABLED
8383
build.enable_usb=
8484
build.flags.optimize=-Os
85-
build.flags.ldspecs=
85+
build.flags.ldspecs=--specs=nano.specs
8686

8787
# Pre and post build hooks
8888
build.opt.name=build_opt.h
@@ -110,7 +110,7 @@ recipe.S.o.pattern="{compiler.path}{compiler.S.cmd}" {compiler.S.flags} {build.i
110110
recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}"
111111

112112
## Combine gc-sections, archives, and objects
113-
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} {compiler.ldflags} {compiler.arm.cmsis.ldflags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--start-group {object_files} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -lc -Wl,--end-group -lm -lgcc -lstdc++ --specs=nano.specs
113+
recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} {compiler.ldflags} {compiler.arm.cmsis.ldflags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -Wl,--start-group {object_files} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -lc -Wl,--end-group -lm -lgcc -lstdc++
114114

115115
## Create output (.bin file)
116116
recipe.objcopy.bin.pattern="{compiler.path}{compiler.objcopy.cmd}" {compiler.elf2bin.flags} {compiler.elf2bin.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin"

0 commit comments

Comments
 (0)