Makefile 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. MAKEFLAGS += -R -r
  2. PROJECT := max80
  3. SUBDIRS := esp32 tools rv32 fpga
  4. REVISIONS := v1 v2 bypass
  5. GIT_DIR ?= .git
  6. MAX80_IP ?= max80
  7. all clean spotless :
  8. $(MAKE) local.$@ $(SUBDIRS) goal=$@
  9. prefpga:
  10. $(MAKE) local.all $(filter-out fpga,$(SUBDIRS)) goal=all
  11. $(REVISIONS): prefpga
  12. $(MAKE) -C fpga $@
  13. .PHONY: $(SUBDIRS)
  14. $(SUBDIRS):
  15. $(MAKE) -C $@ $(goal)
  16. .PHONY: version.mk
  17. version.mk:
  18. if git log -n 1 --date=iso --pretty="format:\
  19. PROJECT=$(PROJECT)%n\
  20. COMMIT_VERSION=%(describe:abbrev=6)%n\
  21. COMMIT_ID=%H%nCOMMIT_MAGIC=%h%n\
  22. COMMIT_DATE=%ci%n\
  23. COMMIT_TIME=%ct%n\
  24. COMMIT_AUTHOR=%an <%ae>%n\
  25. " > '$@.tmp' 2>/dev/null && \
  26. ! cmp -s '$@' '$@.tmp' 2>/dev/null; then \
  27. mv -f '$@.tmp' '$@'; else rm -f '$@.tmp'; fi
  28. version.%: version.mk version.%.sed
  29. sed -f $@.sed $< > $@
  30. .PHONY: version
  31. version: version.mk version.h version.vh
  32. $(SUBDIRS): version.mk
  33. esp32: version.h
  34. rv32: version.h | tools
  35. fpga: version.vh | rv32 esp32
  36. local.all:
  37. local.clean:
  38. rm -f *~ ./\#* \# *.bak *.tmp
  39. local.spotless: local.clean
  40. rm -f version.h version.vh
  41. if [ -d .git ]; then rm -f version.mk; fi
  42. # Obsolete target, need version
  43. program flash:
  44. @echo 'Please specify one of: $(foreach rev,$(REVISIONS),$@-$(rev))' 1>&2
  45. @false
  46. # FPGA-specific targets
  47. program-% flash-%: prefpga
  48. $(MAKE) -C fpga $@
  49. # ESP update by USB or serial port
  50. upload-esp:
  51. $(MAKE) -C esp32 upload
  52. # Update via HTTP or serial port
  53. ip = $(MAX80_IP)
  54. upload-%:
  55. if [ -z '$(PORT)' ]; then \
  56. curl -v --data-binary @fpga/output/$*.fw http://$(ip)/sys/fwupdate ; \
  57. else ; \
  58. $(PERL) ./esp32/flashesp.pl --port $(PORT) fpga/output/$*.fw ; \
  59. fi