Makefile 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. MAKEFLAGS += -R -r
  2. PROJECT := max80
  3. SUBDIRS := esp32 tools rv32 fpga
  4. REVISIONS := v1 v2 bypass
  5. GIT_DIR ?= .git
  6. all clean spotless :
  7. $(MAKE) local.$@ $(SUBDIRS) goal=$@
  8. prefpga:
  9. $(MAKE) local.all $(filter-out fpga,$(SUBDIRS)) goal=all
  10. $(REVISIONS): prefpga
  11. $(MAKE) -C fpga $@
  12. .PHONY: $(SUBDIRS)
  13. $(SUBDIRS):
  14. $(MAKE) -C $@ $(goal)
  15. .PHONY: version.mk
  16. version.mk:
  17. if [ -d '$(GIT_DIR)' ]; then \
  18. TZ=UTC0 git log -n 1 --date=local --abbrev=8 \
  19. --pretty='format:COMMIT_VERSION=$(PROJECT)-%(describe:abbrev=6)%nCOMMIT_ID=%H%nCOMMIT_MAGIC=0x%h%nCOMMIT_DATE=%cd UTC%n' > $@.tmp ; \
  20. if cmp -q '$@' '$@.tmp' 2>/dev/null; then \
  21. rm -f $@.tmp; else mv -f $@.tmp $@; fi \
  22. fi
  23. version.h: version.mk
  24. sed -e 's/^/#define /' -e 's/=/ "/' -e 's/$$/"/' \
  25. -e '/ COMMIT_MAGIC /s/"//g' < $< > $@
  26. version.vh: version.mk
  27. sed -e 's/^/`define /' -e 's/=/ "/' -e 's/$$/"/' \
  28. -e '/ COMMIT_MAGIC /s/"//g' < $< > $@
  29. $(SUBDIRS): version.mk
  30. esp32: version.h
  31. rv32: version.h | tools
  32. fpga: version.vh | rv32 esp32
  33. local.all:
  34. local.clean:
  35. rm -f *~ ./\#* \# *.bak *.tmp
  36. local.spotless: local.clean
  37. rm -f version.h version.vh
  38. if [ -d .git ]; then rm -f version.mk; fi
  39. # Obsolete target, need version
  40. program flash:
  41. @echo 'Please specify one of: $(foreach rev,$(REVISIONS),$@-$(rev))' 1>&2
  42. @false
  43. # FPGA-specific targets
  44. program-% flash-%: prefpga
  45. $(MAKE) -C fpga $@
  46. # ESP update by USB or serial port
  47. upload-esp:
  48. $(MAKE) -C esp32 upload