فهرست منبع

Makefile: enable one-process-per-source compilations again

* default.mk: Re-introduce ELC for single file compilation.

* targets.mk: New targets compile-single and compile-single-source
  that get handed off to lisp/Makefile.

* lisp/Makefile: Implement pattern rule using $(ELC).  Implement
  target compile-single that uses a separate Emacs process for each
  target by invoking the pattern rule.  Implement target
  compile-single-source that additionally removes the compiled file
  directly after it has been produced, so compilation will always use
  source files only, never byte-compiled files.

* Makefile: Document new targets.

These new targets are meant to check for problems with
interdependencies in Org.
Achim Gratz 12 سال پیش
والد
کامیت
b9916f2e2b
4فایلهای تغییر یافته به همراه63 افزوده شده و 51 حذف شده
  1. 50 48
      Makefile
  2. 4 0
      default.mk
  3. 7 1
      lisp/Makefile
  4. 2 2
      targets.mk

+ 50 - 48
Makefile

@@ -18,84 +18,86 @@ help helpall::
 	$(info Getting Help)
 	$(info ============)
 	$(info )
-	$(info make help          - show brief help)
-	$(info make targets       - ditto)
-	$(info make helpall       - show extended help)
+	$(info make help           - show brief help)
+	$(info make targets        - ditto)
+	$(info make helpall        - show extended help)
 	$(info )
 	$(info Build and Check)
 	$(info ===============)
-	$(info make               - build Org ELisp and all documentation)
-	$(info make all           - ditto)
-	$(info make compile       - build Org ELisp files)
-	$(info make autoloads     - create org-install.el to load org in-place)
-	$(info make check         - build Org ELisp files and run test suite)
+	$(info make                - build Org ELisp and all documentation)
+	$(info make all            - ditto)
+	$(info make compile        - build Org ELisp files)
+	$(info make autoloads      - create org-install.el to load org in-place)
+	$(info make check          - build Org ELisp files and run test suite)
 helpall::
-	$(info make test          - ditto)
-	$(info make compile-dirty - build only stale Org ELisp files)
-	$(info make test-dirty    - check without building first)
+	$(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)
 	$(info =============)
-	$(info make oldorg        - what the old make did: compile autoloads info)
+	$(info make oldorg         - what the old make did: compile autoloads info)
 	$(info )
 	$(info Convenience)
 	$(info ===========)
-	$(info make up0           - pull from upstream)
-	$(info make up1           - pull from upstream, build and check)
-	$(info make up2           - pull from upstream, build, check and install)
-	$(info make update        - pull from upstream and build)
-	$(info make update2       - pull from upstream, build and install)
-	$(info make uncompiled    - combine cleanlisp and autoloads)
-	$(info make local.mk      - create new local.mk as template for adaptation)
+	$(info make up0            - pull from upstream)
+	$(info make up1            - pull from upstream, build and check)
+	$(info make up2            - pull from upstream, build, check and install)
+	$(info make update         - pull from upstream and build)
+	$(info make update2        - pull from upstream, build and install)
+	$(info make uncompiled     - combine cleanlisp and autoloads)
+	$(info make local.mk       - create new local.mk as template for adaptation)
 	$(info )
 	$(info Cleaning)
 	$(info ========)
-	$(info make clean         - remove built Org ELisp files and documentation)
-	$(info make cleanall      - remove everything that can be built and all remnants)
-	$(info make cleandirs     - clean in etc/, lisp/ and doc/)
-	$(info make cleancontrib  - remove remnants in contrib/)
-	$(info make cleantesting  - remove remnants in testing/)
-	$(info make cleanutils    - remove remnants in UTILITIES/)
-	$(info make cleandoc      - remove built documentation)
-	$(info make cleandocs     - ditto)
-	$(info make cleanlisp     - remove built Org ELisp files)
-	$(info make cleanelc      - ditto)
-	$(info make cleantest     - remove test directory)
-	$(info make clean-install - remove previous Org installation)
+	$(info make clean          - remove built Org ELisp files and documentation)
+	$(info make cleanall       - remove everything that can be built and all remnants)
+	$(info make cleandirs      - clean in etc/, lisp/ and doc/)
+	$(info make cleancontrib   - remove remnants in contrib/)
+	$(info make cleantesting   - remove remnants in testing/)
+	$(info make cleanutils     - remove remnants in UTILITIES/)
+	$(info make cleandoc       - remove built documentation)
+	$(info make cleandocs      - ditto)
+	$(info make cleanlisp      - remove built Org ELisp files)
+	$(info make cleanelc       - ditto)
+	$(info make cleantest      - remove test directory)
+	$(info make clean-install  - remove previous Org installation)
 	$(info )
 	$(info Configuration Check)
 	$(info ===================)
 help helpall::
-	$(info make config        - check main configuration)
+	$(info make config         - check main configuration)
 helpall::
-	$(info make config-test   - check test configuration)
-	$(info make config-exe    - check executables configuration)
-	$(info make config-cmd    - check command configuration)
-	$(info make config-all    - check all configuration)
-	$(info make config-eol    - check all configuration, mark end-of-line)
+	$(info make config-test     - check test configuration)
+	$(info make config-exe      - check executables configuration)
+	$(info make config-cmd      - check command configuration)
+	$(info make config-all      - check all configuration)
+	$(info make config-eol      - check all configuration, mark end-of-line)
 	$(info )
 	$(info Documentation)
 	$(info =============)
 help helpall::
-	$(info make doc           - build all documentation)
+	$(info make doc            - build all documentation)
 helpall::
-	$(info make docs          - ditto)
+	$(info make docs           - ditto)
 help helpall::
-	$(info make info          - build Info documentation)
+	$(info make info           - build Info documentation)
 helpall::
-	$(info make html          - build HTML documentation)
-	$(info make pdf           - build PDF documentation)
-	$(info make card          - build reference cards)
-	$(info make refcard       - ditto)
+	$(info make html           - build HTML documentation)
+	$(info make pdf            - build PDF documentation)
+	$(info make card           - build reference cards)
+	$(info make refcard        - ditto)
 help helpall::
 	$(info )
 	$(info Installation)
 	$(info ============)
-	$(info make install       - build and install Org)
+	$(info make install        - build and install Org)
 helpall::
-	$(info make install-etc   - build and install files in /etc)
-	$(info make install-lisp  - build and install Org Elisp files)
-	$(info make install-info  - build and install Info documentation)
+	$(info make install-etc    - build and install files in /etc)
+	$(info make install-lisp   - build and install Org Elisp files)
+	$(info make install-info   - build and install Info documentation)
 help helpall::
 	@echo ""
 

+ 4 - 0
default.mk

@@ -90,6 +90,10 @@ MAKE_ORG_VERSION = $(BATCHL) \
 ELCDIR	= $(BATCHL) \
 	  --eval '(batch-byte-recompile-directory 0)'
 
+# How to byte-compile a single file
+ELC	= $(BATCHL) \
+	  --eval '(batch-byte-compile)'
+
 # How to make a pdf file from a texinfo file
 TEXI2PDF = texi2pdf --batch --clean
 

+ 7 - 1
lisp/Makefile

@@ -10,7 +10,7 @@ LISPA = $(LISPV) $(LISPI)
 LISPF = $(filter-out $(LISPA),$(wildcard *.el))
 LISPC = $(filter-out $(LISPN:%el=%elc),$(LISPF:%el=%elc))
 
-.PHONY:	all compile compile-dirty \
+.PHONY:	all compile compile-dirty compile-single \
 		autoloads \
 		install clean cleanauto cleanall clean-install
 
@@ -18,6 +18,12 @@ LISPC = $(filter-out $(LISPN:%el=%elc),$(LISPF:%el=%elc))
 all compile::	autoloads
 all compile compile-dirty::	 $(LISPI) $(LISPV)
 	$(ELCDIR)
+compile-single: clean autoloads $(LISPC)
+compile-source: clean autoloads
+	@$(foreach elc,$(LISPC),$(MAKE) $(elc) && $(RM) $(elc);)
+
+%.elc:	%.el
+	-$(ELC) $(<)
 
 autoloads:	cleanauto $(LISPI) $(LISPV)
 

+ 2 - 2
targets.mk

@@ -28,7 +28,7 @@ endif
 	cleancontrib cleantesting cleanutils
 	cleanrel clean-install cleanelc cleandirs \
 	cleanlisp cleandoc cleandocs cleantest \
-	compile compile-dirty uncompiled \
+	compile compile-single compile-source 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 compile-dirty compile-single compile-source::
 	$(MAKE) -C lisp $@
 all clean-install::
 	$(foreach dir, $(SUBDIRS), $(MAKE) -C $(dir) $@;)