* 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.
* 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.
* targets.mk: Add targets "config", "config-test", "config-exe",
"config-cmd", "config-all" and "config-eol" (all .PHONY). These
echo various configuration dependent variables so they can be more
easily checked for correctness.
* Makefile: Document the new targets, "config" with "help" and the
rest with "helpall".
* UTILITIES/org-fixup.el (org-make-local-mk): New function to create a
local.mk template from default.mk.
* UTILITIES/org-fixup.el (org-make-letterformat): New function to
replace the format string for A4 with one for Letter.
* default.mk: Few cosmetic changes to the template section. Add
definition MAKE_LOCAL_MK for call to org-make-local-mk. Remove
definition for SED, which is not used anymore. Implement MKDIR with
'install -d' by default. Since both CP and MKDIR are now
implemented with install, this reduces the number of external
dependencies. Add mode settings to both invocations of install to
keep the modes of installed files sane even if umask is set to a
strange value.
* targets.mk: Remove sed script and use $(MAKE_LOCAL_MK) instead.
* doc/Makefile: Remove sed script and replace with emacs script. This
script can not be placed into a variable since it would expand $<
and $@ in the context of the "card" target rather than the pattern
rule.
* targets.mk: Only the first dependecy was used, remove them entirely
and replace with explicit foreach. Change "check" to only depend on
"compile", so it does not re-make documentation.
* targets.mk: Strip ".dirty" suffix from $(GITVERSION) before
potentially re-adding it, to avoid accumulation of the suffix during
sub-make invocations.
* doc/Makefile: org-version.inc is again dependent on org.texi. This
avoids recompilation when nothing has been changed; target "clean"
still removes orgversion.texi to produce a consistent set of
documentation and code after a "make clean" on toplevel
* targets.mk: add "doc" as prerequisite to "all" and "compile" to have
it call "clean" in the doc subdir.
* 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.
* 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.
* targets.mk: change the "local.mk" template so that "oldorg" will be
the default target for maximum compatibility. Admonish info message
with a reminder to use "make help" for more information on targets
and that "oldorg" is the default target for now. Add new
convenience target "uncompiled" that will keep the lisp directory
free from *.elc files and the autoload files up-to-date.
* Makefile: make "targets" and "helpall" depend on "help" so that only
"help::" or "helpall::" needs to be written for adding more help
messages. Useful when users want to add their own messages to "make
help" et al.
* Makefile: new target "helpall" to document all targets, while "help"
continues to show a brief subset.
* default.mk: add cutlines for sed to produce local.mk with.
* targets.mk: add target "local.mk" to produce an (empty) local.mk
configuration template when it isn't already present. Ignore any
error when making this target since sed might not be present on all
systems. Redefine target "update" to not include testing, similarly
add target "update2" to additionally install without test. Add
targets "up0" to stop after git pull and "up1" to stop after test,
while "up2" continues to do everything and then installs. Complete
.PHONY target list. Add "refcard" target for compatibility with old
make. Clean contrib in "cleanall", too.
* doc/Makefile: read targets to make for "doc" from $(ORG_MAKE_DOC),
defaults to "info html pdf"; can be overridden by the user in
local.mk.
* targets.mk: read targets to make for "doc" and "docs" from
$(ORG_MAKE_DOC), defaults to "info html pdf"; can be overridden by
the user in local.mk.
* default.mk: document ORG_MAKE_DOC and provide a (commented) example
of how to have make only produce info documentation.
* 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.
* Makefile: make documentation follow the implementation.
* targets.mk: add "doc" as alternative target for "docs" to adhere
more closely to standards
some fixes
default.mk: add $(testdir) definition based on $(TMPDIR), which
defaults to "/tmp" if not already defined
targets.mk(check): call test suite with TMPDIR=$(testdir) and remove
direactory after successful run of testsuite. Do not remove
temporary test files if $(TEST_NO_AUTOCLEAN) is set to a non-empty
value.
targets.mk(cleandirs): refactor the first part of what cleanall
had been doing.
targets.mk(cleanall): run cleantest and cleandirs, then remove
backup files.
targets.mk(cleanlisp): remove backup files.
targets.mk(cleandoc): remove backup files.
targets.mk(cleanall): run cleantest and cleandirs, then remove
backup files.
targets.mk(cleantest): removal of temporary test files.
defaults.mk: define SUDO to map to sudo, add comment to define
blank if administrative privileges are not needed (already root on
Linux or Administrator on Windows)
targets.mk: use newly defined $(SUDO) uinstead of plain sudo,
replaces some braces with parentheses
.gitignore: also ignore *.t2d directories in doc/ that texi2pdf
might produce when run in tidy mode
default.mk: correct some comments
targets.mk: implement missing clean targets and add aliases for
them
Makefile: add help for target "test"
default.mk: more sane location for local data, add $(BTEST) that
will run the test in batch mode. Some tests require non-standard
packages, introduce $(BTEST_EXTRA) in order to add options so they
can be found.
targets.mk: new target "test" that implies "all" and then runs all
test. Hidden target "test-dirty" runs tests without doing
compilation.
targets.mk: if no .git directory is present, assume that Git is
not available. Make ORGVERSION, GITVERSION and GITSTATUS
customizable from local.mk (override from command line is also
possible and probably easier)
* 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
* 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
* Makefile: prepend "make clean" in lisp directory when compiling
Rationale: Emacs prefers the compiled lisp files even if the source is newer.
In case of circular dependencies or if the dependencies file is not correct,
the compiled files might not reflect the sources. Since there is no canonical
way to remove all compiled files which are stale (it can be hacked, but it is
really ugly), it seems more prudent to just always remove the compiled files
before starting the compilation. Most folks already already do that anyway.
* 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.
* 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
* 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
* Makefile: declare phony targets, remove help text for install-info-debian
* default.mk: add variable for FIND and RM
* targets.mk, maint-targets.mk: shuffle targets to where they belong, declare
phony targets, work around a texi2dvi bug, use pattern rules, use targets for
dependencies instead of repeating them verbatim
* Makefile: just keep help target (now also default for no target)
and include all other parts from here.
* default.mk: user editable variables with their default values
* maint.mk: definitions by maintainer, should not be touched by user
* targets.mk: user callable targets
* maint-targets.mk: targets for maintenance, should not be called by user
* dependencies.mk: keep order during compile (could become auto-generated)
This is the first in a series of patches that restructures the Makefile to
achieve easier customization and separation of different concerns (mainly user
vs. maintenance of the distribution). This first patch simply establishes a
set of files without changing anything else to provide a clean starting point.
It uses GNU make extensions since Makefile already depends on GNU make anyway.