Skip to content

Commit b0607f8

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 2c1a3bb commit b0607f8

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

boards.txt

Lines changed: 82 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

@@ -829,3 +830,84 @@ RemRam.menu.opt.o3lto=Fastest (-O3) with LTO
829830
RemRam.menu.opt.o3lto.build.flags.optimize=-O3 -flto
830831
RemRam.menu.opt.ogstd=Debug (-g)
831832
RemRam.menu.opt.ogstd.build.flags.optimize=-g -Og
833+
834+
# C Runtime Library
835+
Nucleo_144.menu.rtlib.nano=Newlib Nano (default)
836+
Nucleo_144.menu.rtlib.nanofp=Newlib Nano + Float Printf
837+
Nucleo_144.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
838+
Nucleo_144.menu.rtlib.nanofs=Newlib Nano + Float Scanf
839+
Nucleo_144.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
840+
Nucleo_144.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
841+
Nucleo_144.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
842+
Nucleo_144.menu.rtlib.full=Standard
843+
Nucleo_144.menu.rtlib.full.build.flags.ldspecs=
844+
845+
Nucleo_64.menu.rtlib.nano=Newlib Nano (default)
846+
Nucleo_64.menu.rtlib.nanofp=Newlib Nano + Float Printf
847+
Nucleo_64.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
848+
Nucleo_64.menu.rtlib.nanofs=Newlib Nano + Float Scanf
849+
Nucleo_64.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
850+
Nucleo_64.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
851+
Nucleo_64.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
852+
Nucleo_64.menu.rtlib.full=Standard
853+
Nucleo_64.menu.rtlib.full.build.flags.ldspecs=
854+
855+
Nucleo_32.menu.rtlib.nano=Newlib Nano (default)
856+
Nucleo_32.menu.rtlib.nanofp=Newlib Nano + Float Printf
857+
Nucleo_32.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
858+
Nucleo_32.menu.rtlib.nanofs=Newlib Nano + Float Scanf
859+
Nucleo_32.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
860+
Nucleo_32.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
861+
Nucleo_32.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
862+
Nucleo_32.menu.rtlib.full=Standard
863+
Nucleo_32.menu.rtlib.full.build.flags.ldspecs=
864+
865+
Disco.menu.rtlib.nano=Newlib Nano (default)
866+
Disco.menu.rtlib.nanofp=Newlib Nano + Float Printf
867+
Disco.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
868+
Disco.menu.rtlib.nanofs=Newlib Nano + Float Scanf
869+
Disco.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
870+
Disco.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
871+
Disco.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
872+
Disco.menu.rtlib.full=Standard
873+
Disco.menu.rtlib.full.build.flags.ldspecs=
874+
875+
GenF103.menu.rtlib.nano=Newlib Nano (default)
876+
GenF103.menu.rtlib.nanofp=Newlib Nano + Float Printf
877+
GenF103.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
878+
GenF103.menu.rtlib.nanofs=Newlib Nano + Float Scanf
879+
GenF103.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
880+
GenF103.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
881+
GenF103.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
882+
GenF103.menu.rtlib.full=Standard
883+
GenF103.menu.rtlib.full.build.flags.ldspecs=
884+
885+
GenF4.menu.rtlib.nano=Newlib Nano (default)
886+
GenF4.menu.rtlib.nanofp=Newlib Nano + Float Printf
887+
GenF4.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
888+
GenF4.menu.rtlib.nanofs=Newlib Nano + Float Scanf
889+
GenF4.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
890+
GenF4.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
891+
GenF4.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
892+
GenF4.menu.rtlib.full=Standard
893+
GenF4.menu.rtlib.full.build.flags.ldspecs=
894+
895+
Maple.menu.rtlib.nano=Newlib Nano (default)
896+
Maple.menu.rtlib.nanofp=Newlib Nano + Float Printf
897+
Maple.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
898+
Maple.menu.rtlib.nanofs=Newlib Nano + Float Scanf
899+
Maple.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
900+
Maple.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
901+
Maple.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
902+
Maple.menu.rtlib.full=Standard
903+
Maple.menu.rtlib.full.build.flags.ldspecs=
904+
905+
RemRam.menu.rtlib.nano=Newlib Nano (default)
906+
RemRam.menu.rtlib.nanofp=Newlib Nano + Float Printf
907+
RemRam.menu.rtlib.nanofp.build.flags.ldspecs=--specs=nano.specs -u _printf_float
908+
RemRam.menu.rtlib.nanofs=Newlib Nano + Float Scanf
909+
RemRam.menu.rtlib.nanofs.build.flags.ldspecs=--specs=nano.specs -u _scanf_float
910+
RemRam.menu.rtlib.nanofps=Newlib Nano + Float Printf/Scanf
911+
RemRam.menu.rtlib.nanofps.build.flags.ldspecs=--specs=nano.specs -u _printf_float -u _scanf_float
912+
RemRam.menu.rtlib.full=Standard
913+
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)