openocd.py 999 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from SCons.Builder import Builder
  2. from SCons.Action import Action
  3. from SCons.Defaults import Touch
  4. import SCons
  5. __OPENOCD_BIN = "openocd"
  6. _oocd_action = Action(
  7. "${OPENOCD} ${OPENOCD_OPTS} ${OPENOCD_COMMAND}",
  8. "${OOCDCOMSTR}",
  9. )
  10. def generate(env):
  11. env.SetDefault(
  12. OPENOCD=__OPENOCD_BIN,
  13. OPENOCD_OPTS="",
  14. OPENOCD_COMMAND="",
  15. OOCDCOMSTR="",
  16. )
  17. env.Append(
  18. BUILDERS={
  19. "OOCDFlashCommand": Builder(
  20. action=[
  21. _oocd_action,
  22. Touch("${TARGET}"),
  23. ],
  24. suffix=".flash",
  25. src_suffix=".bin",
  26. ),
  27. "OOCDCommand": Builder(
  28. action=_oocd_action,
  29. ),
  30. }
  31. )
  32. def exists(env):
  33. try:
  34. return env["OPENOCD"]
  35. except KeyError:
  36. pass
  37. if openocd := env.WhereIs(__OPENOCD_BIN):
  38. return openocd
  39. raise SCons.Errors.StopError("Could not detect openocd")