* fbt: changed cdefines & lib handling for external apps; added extra checks for app manifest fields; moved around AppsC generator * fbt: commandline fixes for spaces in paths * fbt: fixed stringification for FAP_VERSION * fbt: Removed excessive quoting for gdb * docs: update for cdefines; fbt: typo fix * fbt: enforcing at least 2 components in app version= Co-authored-by: あく <alleteam@gmail.com>
		
			
				
	
	
		
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import SCons
 | 
						|
from SCons.Action import Action
 | 
						|
from SCons.Builder import Builder
 | 
						|
 | 
						|
__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")
 |