Makefile: add new target cleantesting
[org-mode.git] / targets.mk
blobe9e406fe664e6ae37d17c93db94dacba6446f8f7
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 cleantesting cleanutils
28 cleanrel clean-install cleanelc cleandirs \
29 cleanlisp cleandoc cleandocs cleantest \
30 compile compile-dirty uncompiled \
31 config config-test config-exe config-all config-eol
33 CONF_BASE = EMACS lispdir infodir datadir testdir
34 CONF_TEST = BTEST_PRE BTEST_POST BTEST_OB_LANGUAGES BTEST_EXTRA
35 CONF_EXEC = CP MKDIR RM RMR FIND SUDO PDFTEX TEXI2PDF TEXI2HTML MAKEINFO INSTALL_INFO
36 CONF_CALL = BATCH BATCHL ELCDIR BTEST MAKE_LOCAL_MK MAKE_ORG_INSTALL MAKE_ORG_VERSION
37 config-eol:: EOL = \#
38 config-eol:: config-all
39 config config-all::
40 $(info )
41 $(info ========= Emacs executable and Installation paths)
42 $(foreach var,$(CONF_BASE),$(info $(var) = $($(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 $(info )
58 oldorg: compile info # what the old makefile did when no target was specified
59 uncompiled: cleanlisp autoloads # for developing
60 refcard: card
61 update update2:: up0 all
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)
73 all compile::
74 $(foreach dir, doc lisp, $(MAKE) -C $(dir) clean;)
75 compile compile-dirty::
76 $(MAKE) -C lisp $@
77 all clean-install::
78 $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)
80 check test:: compile
81 check test test-dirty::
82 -$(MKDIR) $(testdir)
83 TMPDIR=$(testdir) $(BTEST)
84 ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
85 $(MAKE) cleantest
86 endif
88 up0 up1 up2::
89 git remote update
90 git pull
91 up1 up2:: all
92 $(MAKE) test-dirty
93 up2 update2::
94 $(SUDO) $(MAKE) install
96 install: $(INSTSUB)
98 install-info: install-doc
100 doc docs: $(ORG_MAKE_DOC)
102 info html pdf card:
103 $(MAKE) -C doc $@
105 $(INSTSUB):
106 $(MAKE) -C $(@:install-%=%) install
108 autoloads: lisp
109 $(MAKE) -C $< $@
111 cleandirs:
112 $(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) cleanall;)
114 clean: cleanrel
115 $(MAKE) -C lisp clean
116 $(MAKE) -C doc clean
118 cleanall: cleandirs cleantest cleancontrib cleantesting cleanutils
119 -$(FIND) . -name \*~ -o -name \*# -o -name .#\* -exec $(RM) {} \;
121 cleancontrib:
122 -$(FIND) contrib -name \*~ -o -name \*.elc -exec $(RM) {} \;
124 cleantesting:
125 -$(FIND) testing -name \*~ -o -name \*.elc -exec $(RM) {} \;
127 cleanutils:
128 -$(FIND) UTILITIES -name \*~ -o -name \*.elc -exec $(RM) {} \;
130 cleanrel:
131 $(RMR) RELEASEDIR
132 $(RMR) org-7.*
133 $(RMR) org-7*zip org-7*tar.gz
135 cleanelc cleanlisp:
136 $(MAKE) -C lisp clean
137 -$(FIND) lisp -name \*~ -exec $(RM) {} \;
139 cleandoc cleandocs:
140 $(MAKE) -C doc clean
141 -$(FIND) doc -name \*~ -exec $(RM) {} \;
143 cleantest:
144 $(RMR) $(testdir)