summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAchim Gratz <Stromeko@Stromeko.DE>2012-08-08 22:34:31 +0200
committerAchim Gratz <Stromeko@Stromeko.DE>2012-08-09 18:25:27 +0200
commit3e63c3e97a22339a05674495b5e60c16d6aca67c (patch)
tree89195459882939fba0e06817d025262839870f4f
parent0c77568f67372770020655e385505ed527e6bd69 (diff)
downloadorg-mode-3e63c3e97a22339a05674495b5e60c16d6aca67c.tar.gz
Makefile: allow for different compilation methods
* targets.mk: Remove targets compile-source and compile-single, obsoleted by new configuration option. Remove repetitive code in clean targets by using pattern substitution. Avoid superfluous invocations of find by using multiple path arguments. * Makefile: Remove compile-source and compile-single target documentation. * default.mk: Add new option _COMPILE_ to select compilation method. Set default value to keep current behaviour. * lisp/Makefile: Use new $(_COMPILE_) to dispatch compilation target. Implement private targets compile-dirall (default), compile-single, compile-slint1 and compile-slint2. The additional compilation methods catch more and/or different errors in the sources by compiling the sources in a single Emacs process per compilation and with different conditions of the source directory, but take much longer to compile even in the absence of such errors. The default method to use can be changed (like all other options) via local.mk or temporarily on the command line.
-rw-r--r--Makefile2
-rw-r--r--default.mk7
-rw-r--r--lisp/Makefile30
-rw-r--r--targets.mk23
4 files changed, 37 insertions, 25 deletions
diff --git a/Makefile b/Makefile
index 2cf3718..0606f58 100644
--- a/Makefile
+++ b/Makefile
@@ -32,8 +32,6 @@ help helpall::
helpall::
$(info make test - ditto)
$(info make compile-dirty - build only stale Org ELisp files)
- $(info make compile-single - build using one Emacs process per file)
- $(info make compile-source - ditto, but immediately remove byte-compiled file )
$(info make test-dirty - check without building first)
$(info )
$(info Compatibility)
diff --git a/default.mk b/default.mk
index 2ac552b..8476cae 100644
--- a/default.mk
+++ b/default.mk
@@ -131,3 +131,10 @@ SUDO = sudo
# Name of the program to install info files
# INSTALL_INFO = ginstall-info # Debian: avoid harmless warning message
INSTALL_INFO = install-info
+
+# target variant for 'compile'
+# _COMPILE_ = single # one Emacs process per compilation
+# _COMPILE_ = source # ditto, but remove compiled file immediately
+# _COMPILE_ = slint1 # possibly elicit more warnings
+# _COMPILE_ = slint2 # possibly elicit even more warnings
+_COMPILE_ = dirall
diff --git a/lisp/Makefile b/lisp/Makefile
index ee0caaf..c547810 100644
--- a/lisp/Makefile
+++ b/lisp/Makefile
@@ -7,23 +7,31 @@ endif
LISPV = org-version.el
LISPI = org-install.el
LISPA = $(LISPV) $(LISPI)
-LISPF = $(filter-out $(LISPA),$(wildcard *.el))
+LISPF = $(filter-out $(LISPA),$(sort $(wildcard *.el)))
LISPC = $(filter-out $(LISPN:%el=%elc),$(LISPF:%el=%elc))
-.PHONY: all compile compile-dirty compile-single \
- autoloads \
- install clean cleanauto cleanall clean-install
+.PHONY: all compile compile-dirty \
+ compile-single compile-source compile-slint1 compile-slint2 \
+ autoloads \
+ install clean cleanauto cleanall cleanelc clean-install
# do not clean here, done in toplevel make
-all compile:: autoloads
-all compile compile-dirty:: $(LISPI) $(LISPV)
- $(ELCDIR)
-compile-single: clean autoloads $(LISPC)
-compile-source: clean autoloads
+all compile compile-dirty:: autoloads
+ $(MAKE) compile-$(_COMPILE_)
+
+compile-dirall:
+ @$(ELCDIR)
+compile-single: $(LISPC)
+compile-source: cleanelc
@$(foreach elc,$(LISPC),$(MAKE) $(elc) && $(RM) $(elc);)
+compile-slint1: compile-dirall
+ @$(foreach elc,$(LISPC),$(RM) $(elc); $(MAKE) $(elc);)
+compile-slint2:
+ $(MAKE) compile-source compile-slint1
%.elc: %.el
- -$(ELC) $(<)
+ @$(info Compiling single $(abspath $<)...)
+ -@$(ELC) $<
autoloads: cleanauto $(LISPI) $(LISPV)
@@ -45,7 +53,7 @@ install: $(LISPF) compile
cleanauto clean cleanall::
$(RM) $(LISPA) $(LISPA:%el=%elc)
-clean cleanall::
+clean cleanall cleanelc::
$(RM) *.elc
clean-install:
diff --git a/targets.mk b/targets.mk
index 5db69f3..a0e47ea 100644
--- a/targets.mk
+++ b/targets.mk
@@ -28,7 +28,7 @@ endif
cleancontrib cleantesting cleanutils
cleanrel clean-install cleanelc cleandirs \
cleanlisp cleandoc cleandocs cleantest \
- compile compile-single compile-source compile-dirty uncompiled \
+ compile compile-dirty uncompiled \
config config-test config-exe config-all config-eol
CONF_BASE = EMACS DESTDIR
@@ -75,7 +75,7 @@ local.mk:
all compile::
$(foreach dir, doc lisp, $(MAKE) -C $(dir) clean;)
-compile compile-dirty compile-single compile-source::
+compile compile-dirty::
$(MAKE) -C lisp $@
all clean-install::
$(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)
@@ -118,26 +118,25 @@ clean: cleanrel
$(MAKE) -C lisp clean
$(MAKE) -C doc clean
-cleanall: cleandirs cleantest cleancontrib cleantesting cleanutils
+cleanall: cleandirs cleantest
-$(FIND) . -name \*~ -o -name \*# -o -name .#\* -exec $(RM) {} \;
+ -$(FIND) contrib testing UTILITIES -name \*~ -o -name \*.elc -exec $(RM) {} \;
-cleancontrib:
- -$(FIND) contrib -name \*~ -o -name \*.elc -exec $(RM) {} \;
+cleancontrib cleantesting cleanUTILITIES:
+ -$(FIND) $(@:clean%=%) -name \*~ -o -name \*.elc -exec $(RM) {} \;
-cleantesting:
- -$(FIND) testing -name \*~ -o -name \*.elc -exec $(RM) {} \;
-
-cleanutils:
- -$(FIND) UTILITIES -name \*~ -o -name \*.elc -exec $(RM) {} \;
+cleanutils: cleanUTILITIES
cleanrel:
$(RMR) RELEASEDIR
$(RMR) org-7.*
$(RMR) org-7*zip org-7*tar.gz
-cleanelc cleanlisp:
+cleanelc:
+ $(MAKE) -C lisp $@
+
+cleanlisp:
$(MAKE) -C lisp clean
- -$(FIND) lisp -name \*~ -exec $(RM) {} \;
cleandoc cleandocs:
$(MAKE) -C doc clean