123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- .EXPORT_ALL_VARIABLES:
- .NOTPARALLEL: .PHONY
- # Additional distribution files
- DISTFILES_extra= Makefile etc
- LISPDIRS = lisp
- OTHERDIRS = doc etc
- CLEANDIRS = testing mk
- SUBDIRS = $(OTHERDIRS) $(LISPDIRS)
- INSTSUB = $(SUBDIRS:%=install-%)
- ORG_MAKE_DOC ?= info html pdf
- ifneq ($(wildcard .git),)
- ORGVERSION ?= $(subst release_,,$(shell git describe --match release\* --abbrev=0 HEAD))
- ifeq ($(ORGVERSION),)
- # In elpa.git, there are no tags available. Fall back to using
- # the org.el header.
- ORGVERSION := $(patsubst %-dev,%,$(shell $(BATCH) --eval "(require 'lisp-mnt)" \
- --visit lisp/org.el --eval '(princ (lm-header "version"))'))
- GITVERSION ?= $(ORGVERSION)-g$(shell git rev-parse --short=6 HEAD)
- else
- GITVERSION ?= $(shell git describe --match release\* --abbrev=6 HEAD)
- endif
- GITSTATUS ?= $(shell git status -uno --porcelain)
- else
- -include mk/version.mk
- GITVERSION ?= N/A
- ORGVERSION ?= N/A
- endif
- DATE = $(shell date +%Y-%m-%d)
- YEAR = $(shell date +%Y)
- ifneq ($(GITSTATUS),)
- GITVERSION := $(GITVERSION:.dirty=).dirty
- endif
- .PHONY: all oldorg update update2 up0 up1 up2 single $(SUBDIRS) \
- check test install $(INSTSUB) \
- info html pdf card refcard doc docs \
- autoloads cleanall clean $(CLEANDIRS:%=clean%) \
- clean-install cleanelc cleandirs \
- cleanlisp cleandoc cleandocs cleantest \
- compile compile-dirty uncompiled \
- config config-test config-exe config-all config-eol config-version \
- vanilla repro
- CONF_BASE = EMACS DESTDIR ORGCM ORG_MAKE_DOC
- CONF_DEST = lispdir infodir datadir testdir
- CONF_TEST = BTEST_PRE BTEST_POST BTEST_OB_LANGUAGES BTEST_EXTRA BTEST_RE
- CONF_EXEC = CP MKDIR RM RMR FIND CHMOD SUDO PDFTEX TEXI2PDF TEXI2HTML MAKEINFO INSTALL_INFO
- CONF_CALL = BATCH BATCHL ELC ELCDIR NOBATCH BTEST MAKE_LOCAL_MK MAKE_ORG_INSTALL MAKE_ORG_VERSION
- config-eol:: EOL = \#
- config-eol:: config-all
- config config-all::
- $(info )
- $(info ========= Emacs executable and Installation paths)
- $(foreach var,$(CONF_BASE),$(info $(var) = $($(var))$(EOL)))
- $(foreach var,$(CONF_DEST),$(info $(var) = $(DESTDIR)$($(var))$(EOL)))
- config-test config-all::
- $(info )
- $(info ========= Test configuration)
- $(foreach var,$(CONF_TEST),$(info $(var) = $($(var))$(EOL)))
- config-exe config-all::
- $(info )
- $(info ========= Executables used by make)
- $(foreach var,$(CONF_EXEC),$(info $(var) = $($(var))$(EOL)))
- config-cmd config-all::
- $(info )
- $(info ========= Commands used by make)
- $(foreach var,$(CONF_CALL),$(info $(var) = $($(var))$(EOL)))
- config config-test config-exe config-all config-version::
- $(info ========= Org version)
- $(info make: Org mode version $(ORGVERSION) ($(GITVERSION) => $(lispdir)))
- @echo ""
- oldorg: compile info # what the old makefile did when no target was specified
- uncompiled: cleanlisp autoloads # for developing
- refcard: card
- update update2:: up0 all
- single: ORGCM=single
- single: compile
- .PRECIOUS: local.mk
- local.mk:
- $(info ======================================================)
- $(info = Invoke "make help" for a synopsis of make targets. =)
- $(info = Created a default local.mk template. =)
- $(info = Setting "oldorg" as the default target. =)
- $(info = Please adapt local.mk to your local setup! =)
- $(info ======================================================)
- -@$(MAKE_LOCAL_MK)
- all compile::
- $(foreach dir, doc lisp, $(MAKE) -C $(dir) clean;)
- compile compile-dirty::
- $(MAKE) -C lisp $@
- all clean-install::
- $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)
- vanilla:
- -@$(NOBATCH) &
- check test:: compile
- check test test-dirty::
- -$(MKDIR) $(testdir)
- TMPDIR=$(testdir) $(BTEST)
- ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
- $(MAKE) cleantest
- endif
- up0 up1 up2::
- git checkout $(GIT_BRANCH)
- git remote update
- git pull
- up1 up2:: all
- $(MAKE) test-dirty
- up2 update2::
- $(SUDO) $(MAKE) install
- install: $(INSTSUB)
- install-info: install-doc
- doc docs: $(ORG_MAKE_DOC)
- info html pdf card:
- $(MAKE) -C doc $@
- $(INSTSUB):
- $(MAKE) -C $(@:install-%=%) install
- autoloads: lisp
- $(MAKE) -C $< $@
- repro: cleanall autoloads
- -@$(REPRO) &
- cleandirs:
- $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;)
- clean: cleanlisp cleandoc
- cleanall: cleandirs cleantest
- -$(FIND) . \( -name \*~ -o -name \*# -o -name .#\* \) -exec $(RM) {} +
- -$(FIND) $(CLEANDIRS) \( -name \*~ -o -name \*.elc \) -exec $(RM) {} +
- $(CLEANDIRS:%=clean%):
- -$(FIND) $(@:clean%=%) \( -name \*~ -o -name \*.elc \) -exec $(RM) {} +
- cleanelc:
- $(MAKE) -C lisp $@
- cleanlisp cleandoc:
- $(MAKE) -C $(@:clean%=%) clean
- cleandocs:
- $(MAKE) -C doc clean
- -$(FIND) doc -name \*~ -exec $(RM) {} \;
- cleantest:
- # git-annex creates non-writable directories so that the files within
- # them can't be removed; if rm fails, try to recover by making all
- # directories writable
- -$(RMR) $(testdir) || { \
- $(FIND) $(testdir) -type d -exec $(CHMOD) u+w {} + && \
- $(RMR) $(testdir) ; \
- }
|