Commit Graph

20 Commits

Author SHA1 Message Date
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
Achim Gratz b9916f2e2b 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.
2012-08-04 15:59:08 +02:00
Achim Gratz 0c9ba74955 provide for .el files that should be installed, but not compiled
* lisp/Makefile: Add LISPN (empty by default) which is used to filter
  out files from LISPC.  This means that install will not fail due to
  a corresponding .elc missing.  This might become useful if lisp
  source files set "no-byte-compile: t" for whatever reason.
2012-07-15 18:31:37 +02:00
Achim Gratz b567341443 clean up Makefile some more, keep autoloads around
* lisp/Makefile: remove stop targets, make autoloads depend on source
  files again (not .PHONY).  Keep autoload files around after compile,
  but make sure to re-create them before installation and compile.
  Remove autoload files before re-creating them to avoid errors from
  Emacs when saving the buffer.

* targets.mk: remove stop targets and the mess that was necessary to
  support them.

* default.mk: must use $(CURDIR) not $(PWD), $(PWD) is not well
  defined when using sudo.
2012-05-18 07:45:45 +02:00
Achim Gratz df89e3cd0c cleanup in lisp/Makefile, targets; create org-fixup.el, remove version definition
* UTILITIES/org-fixup.el: new file, has functions to create
  org-version.el and org-install.el, now use by the build system.

* lisp/Makefile: delete said definitions, now sourced from toplevel
  make.  "clean" and "cleanall" should do the same thing here, make
  them aliases, ditto for "all" and "compile".  Both autoload files
  must be .PHONY and depend only on each other for correct ordering.
  Make "compile-dirty" actually do that again (i.e. no implied
  "clean", but "cleanauto").  Remove autoload files directly after
  install, so that they will only be present when explicitly requested
  by "autoloads".  Create "org-version.el" before compilation as it is
  mandatory.  Remove $(ORG_MAKE_INSTALL) and $(ORG_MAKE_VERSION),
  source from default.mk/local.mk.

* default.mk: move definitions for $(ORG_MAKE_INSTALL) and
  $(ORG_MAKE_VERSION) here so that they can be more easily configured.
  Remove definition of "org-release" from $(BATCH) and $(BTEST), now
  sourced from "org-version.el".

* targets.mk: target reorganization, introduce "stop" targets to
  prevent cleaning of org-version.el.  Use new targets for "oldorg" to
  make it more robust in case of errors.  New target "cleanutils" to
  remove any "*.elc" files that may have been produced there and add
  this target to "cleanall". Do the same in cleancontrib.
2012-05-18 07:45:44 +02:00
Achim Gratz c83da85416 provide an easier way to get the old behaviour of plain "make" back
* Makefile: move setup includes to top

* lisp/Makefile: reduce verbosity of org-version.el target, add a more
  friendly @echo instead.

* targets.mk: provide compatibility target "oldorg" to do "compile
  autoloads info" which is closest to the old behaviour.
2012-04-21 17:38:49 +02:00
Achim Gratz c5377f6034 always make version files
* doc/Makefile: make org-version.inc .PHONY so that it is always re-made.

* lisp/Makefile: make org-version.el .PHONY so that it is always re-made.
2012-04-21 17:38:43 +02:00
Achim Gratz e102e411e4 doc/Makefile: rename/add auto-generated files to be compatible with Emacs
* doc/Makefile: rename auto-generated file "git-describe.texi" to
  "org-version.inc" to allow for easier inclusion into Emacs.

* doc/org.texi: include "org-version.inc" instead of
  "git-describe.texi".

* lisp/Makefile: new auto-generated file org-version.el with autoload
  cookies.  The version strings will be pulled during autoload
  extraction into org-install.el (standalone org-mode) or
  ../loaddefs.el (Emacs).
2012-04-20 21:04:14 +02:00
Achim Gratz d5914ad47f make sure org-install.el does not get compiled
lisp/Makefile: add local variable section to org-install.el so
     that it is never compiled
2012-04-20 21:04:13 +02:00
Achim Gratz 24fa46a9e5 more robust shell code for install/clean-install
{etc,lisp}/Makefile: use shell instead of make for looping, make
	code more robust
2012-04-20 21:04:11 +02:00
Achim Gratz 6a3ec67abd Introduce $(datadir), prefix all installation paths with $(DESTDIR)
Makefile: remove includes for maintainer targets, these will go
	into local.mk on the server

	default.mk: introduce $(datadir) to replace $(etcdir) in etc/Makefile

	doc/Makefile: replace $etcdir) with $(datadir)

	lisp/Makefile: record ODT styles location as defconst in org-install

	{doc,etc,lisp}/Makefile: prefix all installation targets with $(DESTDIR)
2012-04-20 21:04:11 +02:00
Achim Gratz 1e343f7f3b update target descriptions, target "all" now automatically cleans .elc before compilation
* targets.mk: target "all" for lisp directory does now the same as
	"compile", i.e. it cleans .elc file first
	* Makefile: describe all targets and re-arrange the target groups
2012-04-20 21:04:10 +02:00
Achim Gratz 510a51310b use batch-byte-recompile-directory instead of batch-byte-compile
* lisp/Makefile: use batch-byte-recompile-directory instead of
	batch-byte-compile; remove pattern rule for compiling single file
	from source
	* lisp/Makefile: add compile-dirty to list of phony targets
2012-04-20 21:04:10 +02:00
Achim Gratz 6da2d089b0 move all version strings into org-install.el
* targets.mk: check for release and git version and record this
	into environment variables for use in sub-make invocations; add
	new target "compile-dirty" that does not invoke "make clean" first
	* doc/Makefile, lisp/Makefile: remove git version check, since
	they are now provided by first-level make
	* lisp/Makefile: add insertion of version information into
	org-install.el, have org-install.el depend on LISPF rather than
	LISPC so that autoloads can be produced without compiling
	everything and remove insertion into org.el and re-compilation
	during install; add new target "compile-dirty" to support
	invocation from first-level make
	* lisp/org.el (org-version): remove determination of version
	information, show "N/A" if the information is not provided via
	org-install.el
2012-04-20 21:04:10 +02:00
Achim Gratz c74d93b8c6 remove dependencies.mk since it is not needed any more
* lisp/dependencies.mk: remove file
	* lisp/Makefile: remove dependency on dependencies.mk

Rationale: since we will always start with a "make clean", the
dependencies file has become obsolete.  The dependencies had not
been updated for a long time anyway and there seems to be no way
to produce them automatically.
2012-04-20 21:04:09 +02:00
Achim Gratz 8bbf77a748 finish cleanup on infodir, some refinements on rules
* doc/Makefile: cleanall additionally removes the directories for
	manual and guide; fix the dir file in infodir after removal of org
	documentation

	* lisp/Makefile: remove debug statement
2012-04-20 21:04:08 +02:00
Achim Gratz 501f9b1741 use sed instead of perl, add target clean-install
* Makefile, lisp/Makefile, doc/Makefile: add target clean-install
	to remove files in install-directories

	* default.mk: add customization variable $(SED)

	* doc/Makefile: do not remove dir while cleaning

	* lisp/Makefile: use sed instead of perl to weave git-status into
	org.el and ignore any errors while doing it.  Keep git status in
	$(GITSTATUS) to make it more clear what happens in the check.
2012-04-20 21:04:08 +02:00
Achim Gratz f29ef857ae inject git-describe version into org.el during install
* lisp/org.el (org-git-version): placeholder for recording the Git
	version of org during install
	* lisp/org.el (org-version): initialize local git-version with
	placeholder and fall through using it when org is not installed in
	a Git repository
2012-04-20 21:04:08 +02:00
Achim Gratz a5cb04dcd8 hand off ./doc to sub-make
* Makefile: use info function for output and call shell only once
* default.mk: add PDFTEX and RMR variables for customization
* lisp/Makefile: add target 'all' and create $(lispdir) if necessary
* maint-targets.mk: invoke sub-make for HTML manuals
* maint.mk: remove unsused VARIABLES
* targets.mk: invoke sub-make for ./doc and clean up some targets
2012-04-20 21:04:07 +02:00
Achim Gratz ac3162b4f0 activate local.mk and hand off ./lisp to a sub-make
* Makefile: add an optional include local.mk
* default.mk: install lisp files into org subfolder by default
* lisp/Makefile: new file to handle all make targets within lisp
* lisp/dependencies.mk: dependencies, should rather be auto-generated
* maint.mk: remove obsolete variable definitions
* targets.mk: hand off to sub-make in ./lisp, remove unused targets
2012-04-20 21:04:07 +02:00