openocd.py 981 B

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