| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- 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="${FBT_SCRIPT_DIR}/bin2dfu.py",
- BIN_SIZE_SCRIPT="${FBT_SCRIPT_DIR}/fwsize.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")
|