Makefile 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. CASK ?= cask
  2. EMACS ?= emacs
  3. DIST ?= dist
  4. EMACSFLAGS = --batch -Q
  5. EMACSBATCH = $(EMACS) $(EMACSFLAGS)
  6. VERSION := $(shell EMACS=$(EMACS) $(CASK) version)
  7. PKG_DIR := $(shell EMACS=$(EMACS) $(CASK) package-directory)
  8. PROJ_ROOT := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))
  9. EMACS_D = ~/.emacs.d
  10. USER_ELPA_D = $(EMACS_D)/elpa
  11. SRCS = $(filter-out %-pkg.el, $(wildcard *.el))
  12. TESTS = $(wildcard test/*.el)
  13. TAR = $(DIST)/__PROJECT-NAME__-$(VERSION).tar
  14. .PHONY: all check test unit lint install uninstall reinstall clean-all clean clean-elc compile package-lint
  15. all : $(PKG_DIR) $(TAR)
  16. install : $(TAR)
  17. $(EMACSBATCH) -l package -f package-initialize \
  18. --eval '(package-install-file "$(PROJ_ROOT)/$(TAR)")'
  19. uninstall :
  20. rm -rf $(USER_ELPA_D)/skeletor-*
  21. reinstall : clean uninstall install
  22. clean-all : clean
  23. rm -rf $(PKG_DIR)
  24. clean-elc :
  25. rm -f *.elc
  26. clean : clean-elc
  27. rm -rf $(DIST)
  28. rm -f *-pkg.el
  29. $(PKG_DIR) : Cask
  30. $(CASK) install
  31. touch $(PKG_DIR)
  32. $(TAR) : $(DIST) $(TEXI_MANUAL)
  33. $(CASK) package
  34. $(DIST) :
  35. mkdir $(DIST)
  36. check : test lint
  37. test: unit
  38. unit: $(PKG_DIR)
  39. ${CASK} exec ert-runner --win
  40. lint : compile package-lint
  41. compile: ${SRCS} clean-elc
  42. # Byte compile all and stop on any warning or error
  43. ${CASK} emacs $(EMACSFLAGS) \
  44. --eval "(setq byte-compile-error-on-warn t)" \
  45. -L . -f batch-byte-compile ${SRCS}
  46. package-lint: ${SRCS}
  47. # Run package-lint to check for packaging mistakes
  48. ${CASK} emacs $(EMACSFLAGS) \
  49. -l package-lint.el \
  50. -f package-lint-batch-and-exit ${SRCS}