org-mode/Makefile
Achim Gratz 3e63c3e97a 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.
2012-08-09 18:25:27 +02:00

103 lines
3.8 KiB
Makefile

# Makefile - for the org-mode distribution
# GNU make is required
#
# This file is not part of GNU Emacs
# set up environment
include default.mk # defaults, customizable via "local.mk"
-include local.mk # optional local customization, use default.mk as template
# default target is "all" unless overridden in local.mk
all::
# Describe valid make targets for org-mode.
.PHONY: targets help helpall
targets: help
help helpall::
$(info )
$(info Getting Help)
$(info ============)
$(info )
$(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)
helpall::
$(info make test - ditto)
$(info make compile-dirty - build only stale Org ELisp files)
$(info make test-dirty - check without building first)
$(info )
$(info Compatibility)
$(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 )
$(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 )
$(info Configuration Check)
$(info ===================)
help helpall::
$(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 )
$(info Documentation)
$(info =============)
help helpall::
$(info make doc - build all documentation)
helpall::
$(info make docs - ditto)
help helpall::
$(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)
help helpall::
$(info )
$(info Installation)
$(info ============)
$(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)
help helpall::
@echo ""
include targets.mk # toplevel make machinery