| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | MAKEFLAGS += -R -rPROJECT   := max80SUBDIRS   := esp32 tools rv32 fpgaREVISIONS := v1 v2 bypassGIT_DIR   ?= .gitTEMP      ?= /tmpMAX80_IP  ?= max80CURL	   = curlPERL	   = perlPYTHON     = pythonESPTOOL   ?= esptool.pyexport ESPTOOLall clean spotless :	$(MAKE) local.$@ $(SUBDIRS) goal=$@prefpga:	$(MAKE) local.all $(filter-out fpga,$(SUBDIRS)) goal=all$(REVISIONS): prefpga	$(MAKE) -C fpga $@.PHONY: $(SUBDIRS)$(SUBDIRS):	$(MAKE) -C $@ $(goal).PHONY: version.mkversion.mk:	if git log -n 1 --date=iso --pretty="format:\PROJECT=$(PROJECT)%n\COMMIT_VERSION=%(describe:abbrev=6)%n\COMMIT_ID=%H%nCOMMIT_MAGIC=%h%n\COMMIT_DATE=%ci%n\COMMIT_TIME=%ct%n\COMMIT_AUTHOR=%an <%ae>%n\" > '$@.tmp' 2>/dev/null && \	! cmp -s '$@' '$@.tmp' 2>/dev/null; then \	mv -f '$@.tmp' '$@'; else rm -f '$@.tmp'; fiversion.%: version.mk version.%.sed	sed -f $@.sed $< > $@.PHONY: versionversion: version.mk version.h version.vh$(SUBDIRS): version.mkesp32: version.hrv32: version.h | toolsfpga: version.vh | rv32 esp32local.all:local.clean:	rm -f *~ ./\#* \# *.bak *.tmp stamp_*.binlocal.spotless: local.clean	rm -f version.h version.vh	if [ -d .git ]; then rm -f version.mk; fi# Obsolete target, need versionprogram flash:	@echo 'Please specify one of: $(foreach rev,$(REVISIONS),$@-$(rev))' 1>&2	@false# FPGA-specific targetsprogram-% flash-%: prefpga	$(MAKE) -C fpga $@# ESP update by USB or serial port using esptool directlyupload-esp:	$(MAKE) -C esp32 uploadip = $(MAX80_IP)ifeq ($(PORT),)# --- Upload via HTTP ---# Generic upload for newer firmwareupload:	$(CURL) -v --data-binary @fpga/output/$(PROJECT).fw 'http://$(ip)/sys/fwupdate'# Version-specific uploads for older firmwareupload-v%:	$(CURL) -v --data-binary @fpga/output/v$*.fw 'http://$(ip)/sys/fwupdate'# setver is not supported via HTTPsetver-v%:	@echo 'make $@ requires PORT= to be specified'	@exit 1else# --- Upload via serial port/USB# Generic upload for newer firmwareupload:	$(PERL) ./tools/flashmax.pl fpga/output/$(PROJECT).fw '$(PORT)' $(FLASHOPT)# Version-specific uploads for older firmwareupload-v%:	$(PERL) ./tools/flashmax.pl fpga/output/v$*.fw '$(PORT)' $(FLASHOPT)# Write board ID/revision to flashWRITEFLASH = $(ESPTOOL) --before default_reset --after hard_reset --port '$(PORT)' write_flash -zstamp_max80_v%.bin:	$(PERL) -e '$$m = "MAX80 v$*\0"; print $$m, "\xff" x (4096 - length ($$m));' > $@# esptool is unreliable, so retry several times with a brief break in betweensetver-v%: stamp_max80_v%.bin	for i in `seq 1 5`; do \		$(WRITEFLASH) 0 $< && break; \		sleep 1; \	doneendif
 |