| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- from SCons.Builder import Builder
- from SCons.Action import Action
- import SCons
- __OBJCOPY_ARM_BIN = "arm-none-eabi-objcopy"
- __NM_ARM_BIN = "arm-none-eabi-nm"
- def generate(env):
- env.SetDefault(
- BIN2DFU="${ROOT_DIR.abspath}/scripts/bin2dfu.py",
- OBJCOPY=__OBJCOPY_ARM_BIN, # FIXME
- NM=__NM_ARM_BIN, # FIXME
- )
- if not env["VERBOSE"]:
- env.SetDefault(
- HEXCOMSTR="\tHEX\t${TARGET}",
- BINCOMSTR="\tBIN\t${TARGET}",
- DFUCOMSTR="\tDFU\t${TARGET}",
- )
- env.Append(
- BUILDERS={
- "HEXBuilder": Builder(
- action=Action(
- '${OBJCOPY} -O ihex "${SOURCE}" "${TARGET}"',
- "${HEXCOMSTR}",
- ),
- suffix=".hex",
- src_suffix=".elf",
- ),
- "BINBuilder": Builder(
- action=Action(
- '${OBJCOPY} -O binary -S "${SOURCE}" "${TARGET}"',
- "${BINCOMSTR}",
- ),
- suffix=".bin",
- src_suffix=".elf",
- ),
- "DFUBuilder": Builder(
- action=Action(
- '${PYTHON3} "${BIN2DFU}" -i "${SOURCE}" -o "${TARGET}" -a ${IMAGE_BASE_ADDRESS} -l "Flipper Zero F${TARGET_HW}"',
- "${DFUCOMSTR}",
- ),
- suffix=".dfu",
- src_suffix=".bin",
- ),
- }
- )
- def exists(env):
- try:
- return env["OBJCOPY"]
- except KeyError:
- pass
- if objcopy := env.WhereIs(__OBJCOPY_ARM_BIN):
- return objcopy
- raise SCons.Errors.StopError("Could not detect objcopy for arm")
|