2023-05-03 08:48:49 +03:00
|
|
|
import SCons
|
2022-06-26 15:00:03 +03:00
|
|
|
from SCons.Action import Action
|
2023-05-03 08:48:49 +03:00
|
|
|
from SCons.Builder import Builder
|
2022-06-26 15:00:03 +03:00
|
|
|
from SCons.Defaults import Touch
|
|
|
|
|
|
|
|
__OPENOCD_BIN = "openocd"
|
|
|
|
|
2023-11-15 19:27:35 +03:00
|
|
|
# TODO: FL-3663: rework argument passing to lists
|
2022-06-26 15:00:03 +03:00
|
|
|
_oocd_action = Action(
|
|
|
|
"${OPENOCD} ${OPENOCD_OPTS} ${OPENOCD_COMMAND}",
|
2022-06-30 19:06:12 +03:00
|
|
|
"${OPENOCDCOMSTR}",
|
2022-06-26 15:00:03 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def generate(env):
|
|
|
|
env.SetDefault(
|
|
|
|
OPENOCD=__OPENOCD_BIN,
|
|
|
|
OPENOCD_OPTS="",
|
|
|
|
OPENOCD_COMMAND="",
|
2022-06-30 19:06:12 +03:00
|
|
|
OPENOCDCOM="${OPENOCD} ${OPENOCD_OPTS} ${OPENOCD_COMMAND}",
|
|
|
|
OPENOCDCOMSTR="",
|
2022-06-26 15:00:03 +03:00
|
|
|
)
|
|
|
|
|
|
|
|
env.Append(
|
|
|
|
BUILDERS={
|
2022-06-30 19:06:12 +03:00
|
|
|
"OpenOCDFlash": Builder(
|
2022-06-26 15:00:03 +03:00
|
|
|
action=[
|
|
|
|
_oocd_action,
|
|
|
|
Touch("${TARGET}"),
|
|
|
|
],
|
|
|
|
suffix=".flash",
|
|
|
|
src_suffix=".bin",
|
|
|
|
),
|
|
|
|
}
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
def exists(env):
|
|
|
|
try:
|
|
|
|
return env["OPENOCD"]
|
|
|
|
except KeyError:
|
|
|
|
pass
|
|
|
|
|
|
|
|
if openocd := env.WhereIs(__OPENOCD_BIN):
|
|
|
|
return openocd
|
|
|
|
|
|
|
|
raise SCons.Errors.StopError("Could not detect openocd")
|