Merge remote-tracking branch 'origin/maint'
[org-mode.git] / targets.mk
blob16c71d813dcd08c01b5991c92ea3e9fa4342136a
1 .EXPORT_ALL_VARIABLES:
2 .NOTPARALLEL: .PHONY
3 # Additional distribution files
4 DISTFILES_extra= Makefile request-assign-future.txt contrib etc
6 LISPDIRS = lisp
7 OTHERDIRS = doc etc
8 SUBDIRS = $(OTHERDIRS) $(LISPDIRS)
9 INSTSUB = $(SUBDIRS:%=install-%)
10 ORG_MAKE_DOC ?= info html pdf
12 ifneq ($(wildcard .git),)
13 GITVERSION ?= $(shell git describe --abbrev=6 HEAD)
14 ORGVERSION ?= $(subst release_,,$(shell git describe --abbrev=0 HEAD))
15 GITSTATUS ?= $(shell git status -uno --porcelain)
16 else
17 GITVERSION ?= N/A
18 ORGVERSION ?= N/A
19 endif
20 DATE = $(shell date +%Y-%m-%d)
21 ifneq ($(GITSTATUS),)
22 GITVERSION := $(GITVERSION:.dirty=).dirty
23 endif
25 .PHONY: all oldorg update update2 up0 up1 up2 compile $(SUBDIRS) \
26 check test install info html pdf card doc docs $(INSTSUB) \
27 autoloads cleanall clean cleancontrib cleanutils cleanrel clean-install \
28 cleanelc cleandirs cleanlisp cleandoc cleandocs cleantest \
29 compile compile-dirty uncompiled \
30 config config-test config-exe config-all config-eol
32 CONF_BASE = EMACS 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 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 config-test config-all::
43 $(info )
44 $(info ========= Test configuration)
45 $(foreach var,$(CONF_TEST),$(info $(var) = $($(var))$(EOL)))
46 config-exe config-all::
47 $(info )
48 $(info ========= Executables used by make)
49 $(foreach var,$(CONF_EXEC),$(info $(var) = $($(var))$(EOL)))
50 config-cmd config-all::
51 $(info )
52 $(info ========= Commands used by make)
53 $(foreach var,$(CONF_CALL),$(info $(var) = $($(var))$(EOL)))
54 config config-test config-exe config-all::
55 $(info )
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
62 .PRECIOUS: local.mk
63 local.mk:
64 $(info ======================================================)
65 $(info = Invoke "make help" for a synopsis of make targets. =)
66 $(info = Created a default local.mk template. =)
67 $(info = Setting "oldorg" as the default target. =)
68 $(info = Please adapt local.mk to your local setup! =)
69 $(info ======================================================)
70 -@$(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) $@;)
79 check test:: compile
80 check test test-dirty::
81 -$(MKDIR) $(testdir)
82 TMPDIR=$(testdir) $(BTEST)
83 ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
84 $(MAKE) cleantest
85 endif
87 up0 up1 up2::
88 git remote update
89 git pull
90 up1 up2:: all
91 $(MAKE) test-dirty
92 up2 update2::
93 $(SUDO) $(MAKE) install
95 install: $(INSTSUB)
97 install-info: install-doc
99 doc docs: $(ORG_MAKE_DOC)
101 info html pdf card:
102 $(MAKE) -C doc $@
104 $(INSTSUB):
105 $(MAKE) -C $(@:install-%=%) install
107 autoloads: lisp
108 $(MAKE) -C $< $@
110 cleandirs:
111 $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;)
113 clean: cleanrel
114 $(MAKE) -C lisp clean
115 $(MAKE) -C doc clean
117 cleanall: cleandirs cleantest cleancontrib cleanutils
118 -$(FIND) . -name \*~ -o -name \*# -o -name .#\* -exec $(RM) {} \;
120 cleancontrib:
121 -$(FIND) contrib -name \*~ -o -name \*.elc -exec $(RM) {} \;
123 cleanutils:
124 -$(FIND) UTILITIES -name \*~ -o -name \*.elc -exec $(RM) {} \;
126 cleanrel:
127 $(RMR) RELEASEDIR
128 $(RMR) org-7.*
129 $(RMR) org-7*zip org-7*tar.gz
131 cleanelc cleanlisp:
132 $(MAKE) -C lisp clean
133 -$(FIND) lisp -name \*~ -exec $(RM) {} \;
135 cleandoc cleandocs:
136 $(MAKE) -C doc clean
137 -$(FIND) doc -name \*~ -exec $(RM) {} \;
139 cleantest:
140 $(RMR) $(testdir)