targets.mk 4.1 KB

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