kopia lustrzana https://github.com/solokeys/solo1
115 wiersze
3.8 KiB
Makefile
115 wiersze
3.8 KiB
Makefile
ifndef DEBUG
|
|
DEBUG=0
|
|
endif
|
|
|
|
APPMAKE=build/application.mk
|
|
BOOTMAKE=build/bootloader.mk
|
|
|
|
merge_hex=solo mergehex
|
|
|
|
.PHONY: all all-hacker all-locked debugboot-app debugboot-boot boot-sig-checking boot-no-sig build-release-locked build-release build-release build-hacker build-debugboot clean clean2 flash flash_dfu flashboot detach cbor test
|
|
|
|
|
|
# The following are the main targets for reproducible builds.
|
|
# TODO: better explanation
|
|
firmware-hacker:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=0 EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
|
|
|
|
firmware-hacker-debug-1:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=1 EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
|
|
|
|
firmware-hacker-debug-2:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=2 EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
|
|
|
|
firmware-secure:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=0 EXTRA_DEFINES='-DUSE_SOLOKEYS_CERT -DFLASH_ROP=2'
|
|
|
|
bootloader-nonverifying:
|
|
$(MAKE) -f $(BOOTMAKE) -j8 bootloader.hex PREFIX=$(PREFIX) EXTRA_DEFINES='-DSOLO_HACKER' DEBUG=0
|
|
|
|
bootloader-verifying:
|
|
$(MAKE) -f $(BOOTMAKE) -j8 bootloader.hex PREFIX=$(PREFIX) DEBUG=0
|
|
|
|
full-clean: clean2
|
|
|
|
|
|
# The older targets, may be re-organised
|
|
all:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=$(DEBUG) EXTRA_DEFINES='-DFLASH_ROP=1'
|
|
|
|
all-hacker:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) DEBUG=$(DEBUG) EXTRA_DEFINES='-DSOLO_HACKER -DFLASH_ROP=0'
|
|
|
|
all-locked:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex PREFIX=$(PREFIX) EXTRA_DEFINES='-DFLASH_ROP=2'
|
|
|
|
debugboot-app:
|
|
$(MAKE) -f $(APPMAKE) -j8 solo.hex DEBUG=2 PREFIX=$(PREFIX) \
|
|
LDSCRIPT=linker/stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16 -DSOLO_HACKER'
|
|
|
|
debugboot-boot:
|
|
$(MAKE) -f $(BOOTMAKE) -j8 bootloader.hex PREFIX=$(PREFIX) DEBUG=1 \
|
|
LDSCRIPT=linker/bootloader_stm32l4xx_extra.ld EXTRA_DEFINES='-DAPPLICATION_START_PAGE=16 -DSOLO_HACKER'
|
|
|
|
boot-sig-checking:
|
|
$(MAKE) -f $(BOOTMAKE) -j8 bootloader.hex PREFIX=$(PREFIX) DEBUG=0
|
|
|
|
boot-no-sig:
|
|
$(MAKE) -f $(BOOTMAKE) -j8 bootloader.hex PREFIX=$(PREFIX) EXTRA_DEFINES='-DSOLO_HACKER' DEBUG=0
|
|
|
|
build-release-locked: cbor clean2 boot-sig-checking clean all-locked
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
rm -f solo.hex bootloader.hex # don't program solo.hex ...
|
|
|
|
build-release: cbor clean2 boot-sig-checking clean all
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
|
|
build-hacker: cbor clean2 boot-no-sig clean all-hacker
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
|
|
build-debugboot: clean2 debugboot-boot clean debugboot-app
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
|
|
clean:
|
|
$(MAKE) -f $(APPMAKE) clean
|
|
$(MAKE) -f $(BOOTMAKE) clean
|
|
clean2:
|
|
rm -f solo.hex solo.map bootloader.hex bootloader.map all.hex
|
|
$(MAKE) -f $(APPMAKE) clean
|
|
$(MAKE) -f $(BOOTMAKE) clean
|
|
|
|
flash: solo.hex bootloader.hex
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect
|
|
STM32_Programmer_CLI -c port=SWD -halt -d all.hex -rst
|
|
|
|
flash_dfu: solo.hex bootloader.hex
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
# STM32_Programmer_CLI -c port=usb1 -halt -e all --readunprotect
|
|
STM32_Programmer_CLI -c port=usb1 -halt -rdu -d all.hex
|
|
|
|
flashboot: solo.hex bootloader.hex
|
|
$(VENV) $(merge_hex) solo.hex bootloader.hex all.hex
|
|
STM32_Programmer_CLI -c port=SWD -halt -e all --readunprotect
|
|
STM32_Programmer_CLI -c port=SWD -halt -d bootloader.hex -rst
|
|
|
|
# tell ST DFU to enter application
|
|
detach:
|
|
STM32_Programmer_CLI -c port=usb1 -ob nBOOT0=1
|
|
|
|
bootloader.hex:
|
|
echo "You need to build the bootloader first."
|
|
|
|
solo.hex:
|
|
echo "You need to build the application first."
|
|
|
|
cbor:
|
|
$(MAKE) -f $(APPMAKE) -j8 cbor
|
|
|
|
test:
|
|
$(MAKE) build-release-locked
|
|
$(MAKE) build-release
|
|
$(MAKE) build-hacker
|
|
$(MAKE) build-debugboot
|
|
$(MAKE) clean2
|