SConscript 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. Import("env")
  2. wrapped_fn_list = [
  3. #
  4. # used by our firmware, so we provide their realizations
  5. #
  6. "fflush",
  7. "printf",
  8. "putc", # fallback from printf, thanks gcc
  9. "putchar", # storage cli
  10. "puts", # fallback from printf, thanks gcc
  11. "snprintf",
  12. "vsnprintf", # m-string
  13. "__assert", # ???
  14. "__assert_func", # ???
  15. #
  16. # wrap other functions to make sure they are not called
  17. # realization is not provided
  18. #
  19. "setbuf",
  20. "setvbuf",
  21. "fprintf",
  22. "vfprintf",
  23. "vprintf",
  24. "fputc",
  25. "fputs",
  26. "sprintf", # specially, because this function is dangerous
  27. "asprintf",
  28. "vasprintf",
  29. "asiprintf",
  30. "asniprintf",
  31. "asnprintf",
  32. "diprintf",
  33. "fiprintf",
  34. "iprintf",
  35. "siprintf",
  36. "sniprintf",
  37. "vasiprintf",
  38. "vasniprintf",
  39. "vasnprintf",
  40. "vdiprintf",
  41. "vfiprintf",
  42. "viprintf",
  43. "vsiprintf",
  44. "vsniprintf",
  45. #
  46. # Scanf is not implemented 4 now
  47. #
  48. # "fscanf",
  49. # "scanf",
  50. # "sscanf",
  51. # "vsprintf",
  52. # "fgetc",
  53. # "fgets",
  54. # "getc",
  55. # "getchar",
  56. # "gets",
  57. # "ungetc",
  58. # "vfscanf",
  59. # "vscanf",
  60. # "vsscanf",
  61. # "fiscanf",
  62. # "iscanf",
  63. # "siscanf",
  64. # "vfiscanf",
  65. # "viscanf",
  66. # "vsiscanf",
  67. #
  68. # File management
  69. #
  70. # "fclose",
  71. # "freopen",
  72. # "fread",
  73. # "fwrite",
  74. # "fgetpos",
  75. # "fseek",
  76. # "fsetpos",
  77. # "ftell",
  78. # "rewind",
  79. # "feof",
  80. # "ferror",
  81. # "fopen",
  82. # "remove",
  83. # "rename",
  84. # "fseeko",
  85. # "ftello",
  86. ]
  87. for wrapped_fn in wrapped_fn_list:
  88. env.Append(
  89. LINKFLAGS=[
  90. "-Wl,--wrap," + wrapped_fn,
  91. "-Wl,--wrap," + wrapped_fn + "_unlocked",
  92. "-Wl,--wrap,_" + wrapped_fn + "_r",
  93. "-Wl,--wrap,_" + wrapped_fn + "_unlocked_r",
  94. ]
  95. )
  96. libenv = env.Clone(FW_LIB_NAME="print")
  97. libenv.ApplyLibFlags()
  98. libenv.Append(CCFLAGS=["-Wno-double-promotion"])
  99. sources = libenv.GlobRecursive("*.c*", ".")
  100. lib = libenv.StaticLibrary("${FW_LIB_NAME}", sources)
  101. libenv.Install("${LIB_DIST_DIR}", lib)
  102. Return("lib")