build_as_lib.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from os.path import realpath
  2. Import("env") # type: ignore
  3. menv=env # type: ignore
  4. src_filter = [
  5. '+<*.cpp>',
  6. '+<helpers/*.cpp>',
  7. '+<helpers/sensors>',
  8. '+<helpers/radiolib/*.cpp>',
  9. '+<helpers/ui/MomentaryButton.cpp>',
  10. '+<helpers/ui/buzzer.cpp>',
  11. ]
  12. # add build and include dirs according to CPPDEFINES
  13. for item in menv.get("CPPDEFINES", []):
  14. # STM32
  15. if isinstance(item, str) and item == "STM32_PLATFORM":
  16. menv.Append(CPPPATH=[realpath("src/helpers/stm32")])
  17. menv.Append(BUILD_FLAGS=["-I src/helpers/stm32"])
  18. src_filter.append("+<helpers/stm32/*>")
  19. # ESP32
  20. elif isinstance(item, str) and item == "ESP32":
  21. menv.Append(CPPPATH=[realpath("src/helpers/esp32")])
  22. menv.Append(BUILD_FLAGS=["-I src/helpers/esp32"])
  23. src_filter.append("+<helpers/esp32/*>")
  24. # NRF52
  25. elif isinstance(item, str) and item == "NRF52_PLATFORM":
  26. menv.Append(CPPPATH=[realpath("src/helpers/nrf52")])
  27. menv.Append(BUILD_FLAGS=["-I src/helpers/nrf52"])
  28. src_filter.append("+<helpers/nrf52/*>")
  29. # RP2040
  30. elif isinstance(item, str) and item == "RP2040_PLATFORM":
  31. menv.Append(CPPPATH=[realpath("src/helpers/rp2040")])
  32. menv.Append(BUILD_FLAGS=["-I src/helpers/rp2040"])
  33. src_filter.append("+<helpers/rp2040/*>")
  34. # DISPLAY HANDLING
  35. elif isinstance(item, tuple) and item[0] == "DISPLAY_CLASS":
  36. display_class = item[1]
  37. src_filter.append(f"+<helpers/ui/{display_class}.cpp>")
  38. if (display_class == "ST7789Display") :
  39. src_filter.append(f"+<helpers/ui/OLEDDisplay.cpp>")
  40. src_filter.append(f"+<helpers/ui/OLEDDisplayFonts.cpp>")
  41. # VARIANTS HANDLING
  42. elif isinstance(item, tuple) and item[0] == "MC_VARIANT":
  43. variant_name = item[1]
  44. menv.Append(BUILD_FLAGS=[f"-I variants/{variant_name}"])
  45. src_filter.append(f"+<../variants/{variant_name}>")
  46. # INCLUDE EXAMPLE CODE IN BUILD (to provide your own support files without touching the tree)
  47. elif isinstance(item, tuple) and item[0] == "BUILD_EXAMPLE":
  48. example_name = item[1]
  49. src_filter.append(f"+<../examples/{example_name}>")
  50. # EXCLUDE A SOURCE FILE FROM AN EXAMPLE (must be placed after example name or boom)
  51. elif isinstance(item, tuple) and item[0] == "EXCLUDE_FROM_EXAMPLE":
  52. exclude_name = item[1]
  53. src_filter.append(f"-<../examples/{example_name}/{exclude_name}>")
  54. menv.Replace(SRC_FILTER=src_filter)
  55. #print (menv.Dump())