MAKEFLAGS += -R -r PROJECT := max80 SUBDIRS := esp32 tools rv32 fpga REVISIONS := v1 v2 bypass GIT_DIR ?= .git MAX80_IP ?= max80 CURL = curl PERL = perl all 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.mk version.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'; fi version.%: version.mk version.%.sed sed -f $@.sed $< > $@ .PHONY: version version: version.mk version.h version.vh $(SUBDIRS): version.mk esp32: version.h rv32: version.h | tools fpga: version.vh | rv32 esp32 local.all: local.clean: rm -f *~ ./\#* \# *.bak *.tmp local.spotless: local.clean rm -f version.h version.vh if [ -d .git ]; then rm -f version.mk; fi # Obsolete target, need version program flash: @echo 'Please specify one of: $(foreach rev,$(REVISIONS),$@-$(rev))' 1>&2 @false # FPGA-specific targets program-% flash-%: prefpga $(MAKE) -C fpga $@ # ESP update by USB or serial port upload-esp: $(MAKE) -C esp32 upload # Update via HTTP or serial port ip = $(MAX80_IP) upload-%: if [ -z '$(PORT)' ]; then \ $(CURL) -v --data-binary @fpga/output/$*.fw http://$(ip)/sys/fwupdate ; \ else \ $(PERL) ./esp32/flashesp.pl fpga/output/$*.fw '$(PORT)' $(FLASHOPT); \ fi