Files
Momentum-Firmware/lib/print/SConscript
Anna Antonenko 8d078e4b8c [FL-3927] FuriThread stdin (#3979)
* feat: FuriThread stdin
* ci: fix f18
* feat: stdio callback context

Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com>
Co-authored-by: あく <alleteam@gmail.com>
2024-12-19 05:38:43 +09:00

126 lines
2.4 KiB
Python

Import("env")
wrapped_fn_list = [
#
# used by our firmware, so we provide their realizations
#
"fflush",
"printf",
"putc", # fallback from printf, thanks gcc
"putchar", # storage cli
"puts", # fallback from printf, thanks gcc
"snprintf",
"vsnprintf", # m-string
"__assert", # ???
"__assert_func", # ???
#
# wrap other functions to make sure they are not called
# realization is not provided
#
"setbuf",
"setvbuf",
"fprintf",
"vfprintf",
"vprintf",
"fputc",
"fputs",
"sprintf", # specially, because this function is dangerous
"asprintf",
"vasprintf",
"asiprintf",
"asniprintf",
"asnprintf",
"diprintf",
"fiprintf",
"iprintf",
"siprintf",
"sniprintf",
"vasiprintf",
"vasniprintf",
"vasnprintf",
"vdiprintf",
"vfiprintf",
"viprintf",
"vsiprintf",
"vsniprintf",
#
# standard input
#
"fgetc",
"getc",
"getchar",
"fgets",
"ungetc",
#
# standard input, but unimplemented
#
"gets",
#
# scanf, not implemented for now
#
# "fscanf",
# "scanf",
# "sscanf",
# "vsprintf",
# "vfscanf",
# "vscanf",
# "vsscanf",
# "fiscanf",
# "iscanf",
# "siscanf",
# "vfiscanf",
# "viscanf",
# "vsiscanf",
#
# File management
#
# "fclose",
# "freopen",
# "fread",
# "fwrite",
# "fgetpos",
# "fseek",
# "fsetpos",
# "ftell",
# "rewind",
# "feof",
# "ferror",
# "fopen",
# "remove",
# "rename",
# "fseeko",
# "ftello",
]
for wrapped_fn in wrapped_fn_list:
env.Append(
LINKFLAGS=[
"-Wl,--wrap," + wrapped_fn,
"-Wl,--wrap," + wrapped_fn + "_unlocked",
"-Wl,--wrap,_" + wrapped_fn + "_r",
"-Wl,--wrap,_" + wrapped_fn + "_unlocked_r",
]
)
env.Append(
SDK_HEADERS=[
File("wrappers.h"),
],
LINT_SOURCES=[
Dir("."),
],
)
libenv = env.Clone(FW_LIB_NAME="print")
libenv.ApplyLibFlags()
if env["RAM_EXEC"]:
libenv.AppendUnique(CPPDEFINES=["PRINTF_DISABLE_SUPPORT_FLOAT"])
libenv.Append(CCFLAGS=["-Wno-double-promotion"])
sources = libenv.GlobRecursive("*.c*", ".")
lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
libenv.Install("${LIB_DIST_DIR}", lib)
Return("lib")