targets.mk 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. .EXPORT_ALL_VARIABLES:
  2. .NOTPARALLEL: .PHONY
  3. # Additional distribution files
  4. DISTFILES_extra= Makefile request-assign-future.txt contrib etc
  5. LISPDIRS = lisp
  6. OTHERDIRS = doc etc
  7. SUBDIRS = $(OTHERDIRS) $(LISPDIRS)
  8. INSTSUB = $(SUBDIRS:%=install-%)
  9. ORG_MAKE_DOC ?= info html pdf
  10. ifneq ($(wildcard .git),)
  11. GITVERSION ?= $(shell git describe --abbrev=6 HEAD)
  12. ORGVERSION ?= $(subst release_,,$(shell git describe --abbrev=0 HEAD))
  13. GITSTATUS ?= $(shell git status -uno --porcelain)
  14. else
  15. GITVERSION ?= N/A
  16. ORGVERSION ?= N/A
  17. endif
  18. DATE = $(shell date +%Y-%m-%d)
  19. ifneq ($(GITSTATUS),)
  20. GITVERSION := $(GITVERSION:.dirty=).dirty
  21. endif
  22. .PHONY: all oldorg update update2 up0 up1 up2 compile $(SUBDIRS) \
  23. check test install info html pdf card doc docs $(INSTSUB) \
  24. autoloads cleanall clean \
  25. cleancontrib cleantesting cleanutils
  26. cleanrel clean-install cleanelc cleandirs \
  27. cleanlisp cleandoc cleandocs cleantest \
  28. compile compile-dirty uncompiled \
  29. config config-test config-exe config-all config-eol
  30. CONF_BASE = EMACS lispdir infodir datadir testdir
  31. CONF_TEST = BTEST_PRE BTEST_POST BTEST_OB_LANGUAGES BTEST_EXTRA
  32. CONF_EXEC = CP MKDIR RM RMR FIND SUDO PDFTEX TEXI2PDF TEXI2HTML MAKEINFO INSTALL_INFO
  33. CONF_CALL = BATCH BATCHL ELCDIR BTEST MAKE_LOCAL_MK MAKE_ORG_INSTALL MAKE_ORG_VERSION
  34. config-eol:: EOL = \#
  35. config-eol:: config-all
  36. config config-all::
  37. $(info )
  38. $(info ========= Emacs executable and Installation paths)
  39. $(foreach var,$(CONF_BASE),$(info $(var) = $($(var))$(EOL)))
  40. config-test config-all::
  41. $(info )
  42. $(info ========= Test configuration)
  43. $(foreach var,$(CONF_TEST),$(info $(var) = $($(var))$(EOL)))
  44. config-exe config-all::
  45. $(info )
  46. $(info ========= Executables used by make)
  47. $(foreach var,$(CONF_EXEC),$(info $(var) = $($(var))$(EOL)))
  48. config-cmd config-all::
  49. $(info )
  50. $(info ========= Commands used by make)
  51. $(foreach var,$(CONF_CALL),$(info $(var) = $($(var))$(EOL)))
  52. config config-test config-exe config-all::
  53. $(info )
  54. oldorg: compile info # what the old makefile did when no target was specified
  55. uncompiled: cleanlisp autoloads # for developing
  56. refcard: card
  57. update update2:: up0 all
  58. .PRECIOUS: local.mk
  59. local.mk:
  60. $(info ======================================================)
  61. $(info = Invoke "make help" for a synopsis of make targets. =)
  62. $(info = Created a default local.mk template. =)
  63. $(info = Setting "oldorg" as the default target. =)
  64. $(info = Please adapt local.mk to your local setup! =)
  65. $(info ======================================================)
  66. -@$(MAKE_LOCAL_MK)
  67. all compile::
  68. $(foreach dir, doc lisp, $(MAKE) -C $(dir) clean;)
  69. compile compile-dirty::
  70. $(MAKE) -C lisp $@
  71. all clean-install::
  72. $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)
  73. check test:: compile
  74. check test test-dirty::
  75. -$(MKDIR) $(testdir)
  76. TMPDIR=$(testdir) $(BTEST)
  77. ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
  78. $(MAKE) cleantest
  79. endif
  80. up0 up1 up2::
  81. git remote update
  82. git pull
  83. up1 up2:: all
  84. $(MAKE) test-dirty
  85. up2 update2::
  86. $(SUDO) $(MAKE) install
  87. install: $(INSTSUB)
  88. install-info: install-doc
  89. doc docs: $(ORG_MAKE_DOC)
  90. info html pdf card:
  91. $(MAKE) -C doc $@
  92. $(INSTSUB):
  93. $(MAKE) -C $(@:install-%=%) install
  94. autoloads: lisp
  95. $(MAKE) -C $< $@
  96. cleandirs:
  97. $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;)
  98. clean: cleanrel
  99. $(MAKE) -C lisp clean
  100. $(MAKE) -C doc clean
  101. cleanall: cleandirs cleantest cleancontrib cleantesting cleanutils
  102. -$(FIND) . -name \*~ -o -name \*# -o -name .#\* -exec $(RM) {} \;
  103. cleancontrib:
  104. -$(FIND) contrib -name \*~ -o -name \*.elc -exec $(RM) {} \;
  105. cleantesting:
  106. -$(FIND) testing -name \*~ -o -name \*.elc -exec $(RM) {} \;
  107. cleanutils:
  108. -$(FIND) UTILITIES -name \*~ -o -name \*.elc -exec $(RM) {} \;
  109. cleanrel:
  110. $(RMR) RELEASEDIR
  111. $(RMR) org-7.*
  112. $(RMR) org-7*zip org-7*tar.gz
  113. cleanelc cleanlisp:
  114. $(MAKE) -C lisp clean
  115. -$(FIND) lisp -name \*~ -exec $(RM) {} \;
  116. cleandoc cleandocs:
  117. $(MAKE) -C doc clean
  118. -$(FIND) doc -name \*~ -exec $(RM) {} \;
  119. cleantest:
  120. $(RMR) $(testdir)