summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2012-04-21 10:02:28 +0200
committerBastien Guerry <bzg@altern.org>2012-04-21 10:02:28 +0200
commit08bd0b8892644c3bd10e8f081dc765ada53b8bf9 (patch)
treebcf00be7c52ba819c2cece3841527482be1daaaf
parent501b76ad365f85750490abc05b20446fba4d409a (diff)
parente102e411e4c9a70823b10b25e748f9c1e829b956 (diff)
downloadorg-mode-08bd0b8892644c3bd10e8f081dc765ada53b8bf9.tar.gz
Merge branch 'local-Makefile' into test-makefile-merge
-rw-r--r--.gitignore11
-rw-r--r--Makefile600
-rwxr-xr-xUTILITIES/make_emacs_changelog4
-rw-r--r--default.mk100
-rw-r--r--doc/Makefile70
-rw-r--r--doc/org.texi3
-rw-r--r--etc/Makefile31
-rw-r--r--etc/schema/od-manifest-schema-v1.2-cs01.rnc (renamed from contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc)0
-rw-r--r--etc/schema/od-schema-v1.2-cs01.rnc (renamed from contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc)0
-rw-r--r--etc/schema/schemas.xml (renamed from contrib/odt/etc/schema/schemas.xml)0
-rw-r--r--lisp/Makefile79
-rw-r--r--lisp/org.el33
-rw-r--r--targets.mk100
13 files changed, 432 insertions, 599 deletions
diff --git a/.gitignore b/.gitignore
index 374f45e..1470b87 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,11 +31,18 @@ orgcard_letter.tex
orgcard.txt
org
org-install.el
+org-version.*
org-*.tar.gz
org-*.zip
manual
org_dual_license.texi
ORGWEBPAGE/Changes.txt
+local*.mk
+.gitattributes
+
+# texi2pdf --tidy
+
+doc/*.t2d
# aspell word and replacement lists
@@ -56,10 +63,8 @@ TODO
.DS_Store
*#
.#*
+/UTILITIES/x11idle
#
# Local variables:
-# fill-column: 72
-# mode: conf
# End:
-/UTILITIES/x11idle
diff --git a/Makefile b/Makefile
index 89d75d0..7870736 100644
--- a/Makefile
+++ b/Makefile
@@ -1,575 +1,39 @@
# Makefile - for the org-mode distribution
#
-# Maintainer: Carsten Dominik <dominik@science.uva.nl>
-# Version: VERSIONTAG
-#
-# To install org-mode, edit the Makefile, type `make', then `make install'.
-# To create the PDF and HTML documentation files, type `make doc'.
-
-##----------------------------------------------------------------------
-## YOU MUST EDIT THE FOLLOWING LINES
-##----------------------------------------------------------------------
-
-# Name of your emacs binary
-EMACS=emacs
-
-# Where local software is found
-prefix=/usr/local
-
-# Where local lisp files go
-lispdir = $(prefix)/share/emacs/site-lisp
-
-# Where data files go
-# $(datadir) contains auxiliary files for use with ODT exporter.
-# See comments under DATAFILES.
-datadir = $(prefix)/share/emacs/etc
-
-# Where info files go
-infodir = $(prefix)/share/info
-
-##----------------------------------------------------------------------
-## YOU MAY NEED TO EDIT THESE
-##----------------------------------------------------------------------
-
-# Using emacs in batch mode.
-
-BATCH=$(EMACS) -batch -q -no-site-file -eval \
- "(setq load-path (cons (expand-file-name \"./lisp/\") (cons \"$(lispdir)\" load-path)))" $(BATCH_EXTRA)
-
-# Specify the byte-compiler for compiling org-mode files
-ELC= $(BATCH) -f batch-byte-compile
-
-# How to make a pdf file from a texinfo file
-TEXI2PDF = texi2pdf
-
-# How to create directories
-MKDIR = mkdir -p
-
-# How to create the info files from the texinfo file
-MAKEINFO = makeinfo
-
-# How to create the HTML file
-TEXI2HTML = makeinfo --html --number-sections
-TEXI2HTMLNOPSLIT = makeinfo --html --no-split --number-sections
-
-# How to copy the lisp files and elc files to their distination.
-CP = cp -pr
-
-# Name of the program to install info files
-INSTALL_INFO=install-info
-
-##----------------------------------------------------------------------
-## BELOW THIS LINE ON YOUR OWN RISK!
-##----------------------------------------------------------------------
-
-# The following variables need to be defined by the maintainer
-LISPF = org.el \
- org-agenda.el \
- org-ascii.el \
- org-attach.el \
- org-archive.el \
- org-bbdb.el \
- org-beamer.el \
- org-bibtex.el \
- org-capture.el \
- org-clock.el \
- org-colview.el \
- org-colview-xemacs.el \
- org-compat.el \
- org-pcomplete.el \
- org-crypt.el \
- org-ctags.el \
- org-datetree.el \
- org-docview.el \
- org-entities.el \
- org-exp.el \
- org-exp-blocks.el \
- org-docbook.el \
- org-faces.el \
- org-feed.el \
- org-footnote.el \
- org-freemind.el \
- org-gnus.el \
- org-eshell.el \
- org-habit.el \
- org-html.el \
- org-icalendar.el \
- org-id.el \
- org-indent.el \
- org-info.el \
- org-inlinetask.el \
- org-jsinfo.el \
- org-irc.el \
- org-latex.el \
- org-list.el \
- org-lparse.el \
- org-mac-message.el \
- org-macs.el \
- org-mew.el \
- org-mhe.el \
- org-mks.el \
- org-mobile.el \
- org-mouse.el \
- org-odt.el \
- org-publish.el \
- org-plot.el \
- org-protocol.el \
- org-remember.el \
- org-rmail.el \
- org-special-blocks.el \
- org-src.el \
- org-table.el \
- org-taskjuggler.el \
- org-timer.el \
- org-vm.el \
- org-w3m.el \
- org-wl.el \
- org-xoxo.el \
- ob.el \
- ob-table.el \
- ob-lob.el \
- ob-ref.el \
- ob-exp.el \
- ob-tangle.el \
- ob-comint.el \
- ob-eval.el \
- ob-keys.el \
- ob-awk.el \
- ob-C.el \
- ob-calc.el \
- ob-ditaa.el \
- ob-haskell.el \
- ob-perl.el \
- ob-sh.el \
- ob-R.el \
- ob-dot.el \
- ob-mscgen.el \
- ob-latex.el \
- ob-lisp.el \
- ob-ledger.el \
- ob-python.el \
- ob-sql.el \
- ob-asymptote.el \
- ob-emacs-lisp.el \
- ob-matlab.el \
- ob-ruby.el \
- ob-sqlite.el \
- ob-clojure.el \
- ob-ocaml.el \
- ob-sass.el \
- ob-css.el \
- ob-gnuplot.el \
- ob-octave.el \
- ob-screen.el \
- ob-plantuml.el \
- ob-org.el \
- ob-js.el \
- ob-scheme.el \
- ob-lilypond.el \
- ob-java.el \
- ob-shen.el \
- ob-fortran.el \
- ob-picolisp.el \
- ob-maxima.el \
- ob-io.el \
- ob-scala.el
-
-LISPFILES0 = $(LISPF:%=lisp/%)
-LISPFILES = $(LISPFILES0) lisp/org-install.el
-ELCFILES0 = $(LISPFILES0:.el=.elc)
-ELCFILES = $(LISPFILES:.el=.elc)
-DOCFILES = doc/org.texi doc/org.pdf doc/org doc/dir \
- doc/pdflayout.sty doc/.nosearch \
- doc/orgguide.texi doc/orgguide.pdf
-CARDFILES = doc/orgcard.tex doc/orgcard.pdf doc/orgcard_letter.pdf
-TEXIFILES = doc/org.texi
-INFOFILES = doc/org
-
-# etc/styles contains OpenDocument style files. These files *must* be
-# installed for the ODT exporter to function. These files are
-# distirbuted with GNU ELPA as well as with stock Emacs >= 24.1.
-
-# contrib/odt/etc/schema contains OpenDocument schema files. It is
-# *desirable* but *not* mandatory that these files be installed.
-# These files are not distributed with stock Emacs. This is because
-# the terms under which OASIS distributes these files are not
-# agreeable to FSF.
-
-# BasicODConverter-x.y.z.oxt is a LibreOffice extension for converting
-# OpenDocument files to numerous other formats. It is similar to
-# unoconv and is implemented in StarBasic. It is *desirable* but
-# *not* *mandatory* that the converter be installed. It is
-# distributed under the same license as GNU Emacs. This file is *not*
-# part of GNU Emacs.
-DATAFILES = etc/styles \
- # contrib/odt/BasicODConverter/BasicODConverter*.oxt \
- # contrib/odt/etc/schema \
-
-# Package Manager (ELPA)
-PKG_TAG = $(shell date +%Y%m%d)
-PKG_DOC = "Outline-based notes management and organizer"
-PKG_REQ = "nil"
-
-PKG_FILES = $(LISPFILES0) \
- doc/dir doc/org \
- doc/pdflayout.sty \
- doc/org.pdf \
- doc/orgguide.pdf \
- doc/orgcard.tex \
- doc/orgcard.pdf \
- doc/orgcard_letter.pdf \
- etc/
-
-.SUFFIXES: .el .elc .texi
-SHELL = /bin/sh
-
-# Additional distribution files
-DISTFILES_extra= Makefile request-assign-future.txt contrib etc
-
-default: $(ELCFILES) $(ELCBFILES)
-
-all: $(ELCFILES) $(ELCBFILES) $(INFOFILES)
-
-up2: update
- sudo ${MAKE} install
-
-update:
- git pull
- ${MAKE} clean
- ${MAKE} all
-
-compile: $(ELCFILES0) $(ELCBFILES)
-
-install: install-lisp install-data
-
-doc: doc/org.html doc/org.pdf doc/orgcard.pdf doc/orgcard_letter.pdf doc/orgguide.pdf doc/orgcard.txt
-
-p:
- ${MAKE} pdf && open doc/org.pdf
-
-g:
- ${MAKE} pdf && open doc/orgguide.pdf
-
-# Always force re-compilation of org-odt
-lisp/org-odt.elc: org-odt-data-dir
-org-odt-data-dir:
-
-# Sleight of hand to "hard code" the value of $(datadir) in
-# org-odt.el. See variables `org-odt-styles-dir-list' and
-# `org-odt-schema-dir-list'.
-install-lisp: BATCH_EXTRA = -eval "(setq org-odt-data-dir (expand-file-name \"$(datadir)\"))"
-
-install-lisp: $(LISPFILES) $(ELCFILES)
- if [ ! -d $(DESTDIR)$(lispdir) ]; then \
- $(MKDIR) $(DESTDIR)$(lispdir); else true; fi ;
- $(CP) $(LISPFILES) $(DESTDIR)$(lispdir)
- $(CP) $(ELCFILES) $(DESTDIR)$(lispdir)
-
-install-info: $(INFOFILES)
- if [ ! -d $(DESTDIR)$(infodir) ]; then \
- $(MKDIR) $(DESTDIR)$(infodir); else true; fi ;
- $(CP) $(INFOFILES) $(DESTDIR)$(infodir)
- $(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) $(INFOFILES)
-
-install-data: $(DATAFILES)
- if [ ! -d $(DESTDIR)$(datadir) ]; then \
- $(MKDIR) $(DESTDIR)$(datadir); else true; fi ;
- $(CP) $(DATAFILES) $(DESTDIR)$(datadir)
-
-autoloads: lisp/org-install.el
+# This file is not part of GNU Emacs
-lisp/org-install.el: $(LISPFILES0) Makefile
- $(BATCH) --eval "(require 'autoload)" \
- --eval '(find-file "lisp/org-install.el")' \
- --eval '(erase-buffer)' \
- --eval '(mapc (lambda (x) (generate-file-autoloads (symbol-name x))) (quote ($(LISPF))))' \
- --eval '(insert "\n(provide (quote org-install))\n")' \
- --eval '(save-buffer)'
-
-doc/org: doc/org.texi
- (cd doc && $(MAKEINFO) --no-split org.texi -o org)
-
-doc/org.pdf: doc/org.texi
- (cd doc && $(TEXI2PDF) org.texi)
-
-doc/orgguide.pdf: doc/orgguide.texi
- (cd doc && $(TEXI2PDF) orgguide.texi)
-
-doc/org.html: doc/org.texi
- (cd doc && $(TEXI2HTML) --no-split -o org.html org.texi)
- UTILITIES/manfull.pl doc/org.html
-
-doc/orgcard.pdf: doc/orgcard.tex
- (cd doc && pdftex orgcard.tex)
-
-doc/orgcard.txt: doc/orgcard.tex
- (cd doc && perl ../UTILITIES/orgcard2txt.pl orgcard.tex > orgcard.txt)
-
-doc/orgcard_letter.tex: doc/orgcard.tex
- perl -pe 's/\\pdflayout=\(0l\)/\\pdflayout=(1l)/' \
- doc/orgcard.tex > doc/orgcard_letter.tex
-
-doc/orgcard_letter.pdf: doc/orgcard_letter.tex
- (cd doc && pdftex orgcard_letter.tex)
-
-# Below here are special targets for maintenance only
-
-html: doc/org.html
-
-html_manual: doc/org.texi
- rm -rf doc/manual
- mkdir doc/manual
- $(TEXI2HTML) -o doc/manual doc/org.texi
- UTILITIES/mansplit.pl doc/manual/*.html
-
-html_guide: doc/orgguide.texi
- rm -rf doc/guide
- mkdir doc/guide
- $(TEXI2HTML) -o doc/guide doc/orgguide.texi
- UTILITIES/guidesplit.pl doc/guide/*.html
-
-info: doc/org
-
-pdf: doc/org.pdf doc/orgguide.pdf
-
-card: doc/orgcard.pdf doc/orgcard_letter.pdf doc/orgcard.txt
-
-testrelease:
- git checkout -b testrelease origin/maint
- git merge -s recursive -X theirs master
- UTILITIES/set-version.pl testing
- git commit -a -m "Release testing"
- make distfile TAG=testversion
- make cleanrel
- rm -rf org-testversion*
- git reset --hard
- git checkout master
- git branch -D testrelease
-
-# The following target makes a full release for the stuff that is
-# currently on master. Do it like this:
-#
-# make release TAG=7.01
-
-release:
- git checkout maint
- git merge -s recursive -X theirs master
- UTILITIES/set-version.pl $(TAG)
- git commit -a -m "Major release $(TAG) from master"
- make relup TAG=$(TAG)
- make cleanrel
- make pushreleasetag TAG=$(TAG)
- git push -f origin maint
- git checkout master
- git merge -s ours maint
- UTILITIES/set-version.pl -a $(TAG)
- git commit -a -m "Bump to version $(TAG) as current release from master"
- git push
-
-# The following target makes a release, but from the stuff that is on
-# maint, not from the stuff that is on master. The idea is that it pushes
-# out a minor fix into a minor update, while development on master
-# already went full steam ahead. To make a micro-relesse, cherry-pick
-# the necessary changes into maint, then run (with proper version number)
-# This is just like release, but we skip the step which merges master
-# into maint.
-#
-# make fixrelease TAG=7.01.02
-
-fixrelease:
- git checkout maint
- UTILITIES/set-version.pl $(TAG)
- git commit -a -m "Bugfix release $(TAG) from maint"
- make relup TAG=$(TAG)
- make cleanrel
- make pushreleasetag TAG=$(TAG)
- git push -f origin maint
- git checkout master
- git merge -s ours maint
- UTILITIES/set-version.pl -o $(TAG)
- git commit -a -m "Bump to version $(TAG) as current release from maint"
- git push
-
-# ~$ make relup only makes sense from orgmode.org server
-# Don't call it from your computer!
-relup:
- ${MAKE} makerelease
- ${MAKE} sync_release
- ${MAKE} sync_manual
-
-makerelease:
- @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
- ${MAKE} distfile
- ${MAKE} doc
- UTILITIES/gplmanual.pl
- ${MAKE} html_manual
- ${MAKE} html_guide
- rm -rf RELEASEDIR
- $(MKDIR) RELEASEDIR
- cp org-$(TAG).zip org-$(TAG).tar.gz RELEASEDIR
- cp doc/org.pdf doc/orgcard.pdf doc/org.texi doc/org.html RELEASEDIR
- cp doc/org_dual_license.texi RELEASEDIR
- cp doc/orgguide.pdf doc/orgcard.txt RELEASEDIR
- cp RELEASEDIR/org-$(TAG).zip RELEASEDIR/org.zip
- cp RELEASEDIR/org-$(TAG).tar.gz RELEASEDIR/org.tar.gz
-
-# ~$ make sync_release only makes sense from orgmode.org server
-# Don't call it from your computer!
-sync_release:
- rsync -avuz RELEASEDIR/ /var/www/orgmode.org/
-
-# ~$ make sync_manual only makes sense from orgmode.org server
-# Don't call it from your computer!
-sync_manual:
- rsync -avuz --delete doc/manual/ /var/www/orgmode.org/manual/
- rsync -avuz --delete doc/guide/ /var/www/orgmode.org/guide/
-
-distfile:
- @if [ "X$(TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
- touch doc/org.texi doc/orgcard.tex # force update
- ${MAKE} cleancontrib
- ${MAKE} info
- ${MAKE} doc
- ${MAKE} lisp/org-install.el
- rm -rf org-$(TAG) org-$(TAG).zip
- $(MKDIR) org-$(TAG)
- $(MKDIR) org-$(TAG)/doc
- $(MKDIR) org-$(TAG)/lisp
- cp -r $(LISPFILES) org-$(TAG)/lisp
- cp -r $(DOCFILES) $(CARDFILES) org-$(TAG)/doc
- cp -r $(DISTFILES_extra) org-$(TAG)/
- cp -r README_DIST org-$(TAG)/README
- zip -r org-$(TAG).zip org-$(TAG)
- tar zcvf org-$(TAG).tar.gz org-$(TAG)
-
-pkg:
- @if [ "X$(PKG_TAG)" = "X" ]; then echo "*** No tag ***"; exit 1; fi
- touch doc/org.texi doc/orgcard.tex # force update
- ${MAKE} info
- ${MAKE} doc
- rm -rf org-$(PKG_TAG) org-$(PKG_TAG).tar
- $(MKDIR) org-$(PKG_TAG)
- cp -r $(PKG_FILES) org-$(PKG_TAG)
- echo "(define-package \"org\" \"$(PKG_TAG)\" \"$(PKG_DOC)\" $(PKG_REQ))" > org-$(PKG_TAG)/org-pkg.el
- tar cf org-$(PKG_TAG).tar org-$(PKG_TAG) --remove-files
-
-cleanall:
- ${MAKE} clean
- rm -f lisp/org-install.el
-
-clean:
- ${MAKE} cleanelc
- ${MAKE} cleandoc
- ${MAKE} cleanrel
- rm -f *~ */*~ */*/*~
-
-cleancontrib:
- find contrib -name \*~ -exec rm {} \;
-
-cleanelc:
- rm -f $(ELCFILES)
-cleandoc:
- -(cd doc && rm -f org.pdf org org.html orgcard.pdf orgguide.pdf)
- -(cd doc && rm -f *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.pg *.pgs)
- -(cd doc && rm -f *.toc *.tp *.tps *.vr *.vrs *.log *.html *.ps)
- -(cd doc && rm -f orgcard_letter.tex orgcard_letter.pdf)
- -(cd doc && rm -rf manual)
-
-cleanrel:
- rm -rf RELEASEDIR
- rm -rf org-7.*
- rm -rf org-7*zip org-7*tar.gz
-
-.el.elc:
- $(ELC) $<
-
-
-push:
- git push orgmode@orgmode.org:org-mode.git master
-
-pushtag:
- git tag -m "Adding tag" -a $(TAG)
- git push orgmode@orgmode.org:org-mode.git $(TAG)
-
-pushreleasetag:
- git tag -m "Adding release tag" -a release_$(TAG)
- git push orgmode@orgmode.org:org-mode.git release_$(TAG)
-
-# Dependencies
-
-lisp/org.elc: lisp/org-macs.el lisp/org-compat.el lisp/org-faces.el
-lisp/org-agenda.elc: lisp/org.el
-lisp/org-ascii.elc: lisp/org-exp.el
-lisp/org-attach.elc: lisp/org.el lisp/org-id.el
-lisp/org-archive.elc: lisp/org.el
-lisp/org-bbdb.elc: lisp/org.el
-lisp/org-beamer.elc: lisp/org.el
-lisp/org-bibtex.elc: lisp/org.el
-lisp/org-capture.elc: lisp/org.el lisp/org-mks.el
-lisp/org-clock.elc: lisp/org.el
-lisp/org-colview.elc: lisp/org.el
-lisp/org-colview-xemacs.elc: lisp/org.el
-lisp/org-compat.elc: lisp/org-macs.el
-lisp/org-crypt.elc: lisp/org-crypt.el lisp/org.el
-lisp/org-ctags.elc: lisp/org.el
-lisp/org-datetree.elc: lisp/org.el
-lisp/org-docview.elc: lisp/org.el
-lisp/org-entities.elc:
-lisp/org-exp.elc: lisp/org.el lisp/org-agenda.el
-lisp/org-exp-blocks.elc: lisp/org.el
-lisp/org-latex.elc: lisp/org.el lisp/org-exp.el lisp/org-beamer.el
-lisp/org-docbook.elc: lisp/org.el lisp/org-exp.el
-lisp/org-faces.elc: lisp/org-macs.el lisp/org-compat.el
-lisp/org-feed.elc: lisp/org.el
-lisp/org-footnotes.elc: lisp/org-macs.el lisp/org-compat.el
-lisp/org-freemind.elc: lisp/org.el
-lisp/org-gnus.elc: lisp/org.el
-lisp/org-html.elc: lisp/org-exp.el
-lisp/org-habit.elc: lisp/org.el lisp/org-agenda.el
-lisp/org-icalendar.elc: lisp/org-exp.el
-lisp/org-id.elc: lisp/org.el
-lisp/org-indent.elc: lisp/org.el lisp/org-macs.el lisp/org-compat.el
-lisp/org-info.elc: lisp/org.el
-lisp/org-inlinetask.elc:
-lisp/org-irc.elc: lisp/org.el
-lisp/org-jsinfo.elc: lisp/org.el lisp/org-exp.el
-lisp/org-list.elc: lisp/org-macs.el lisp/org-compat.el
-lisp/org-lparse.elc: lisp/org-exp.el
-lisp/org-mac-message.elc: lisp/org.el
-lisp/org-macs.elc:
-lisp/org-mew.elc: lisp/org.el
-lisp/org-mhe.elc: lisp/org.el
-lisp/org-mks.elc:
-lisp/org-mobile.elc: lisp/org.el
-lisp/org-mouse.elc: lisp/org.el
-lisp/org-odt.elc: lisp/org-lparse.el
-lisp/org-plot.elc: lisp/org.el lisp/org-exp.el lisp/org-table.el
-lisp/org-publish.elc:
-lisp/org-protocol.elc: lisp/org.el
-lisp/org-remember.elc: lisp/org.el
-lisp/org-rmail.elc: lisp/org.el
-lisp/org-special-blocks.elc: lisp/org-compat.el
-lisp/org-src.elc: lisp/org-macs.el lisp/org-compat.el
-lisp/org-table.elc: lisp/org.el
-lisp/org-taskjuggler.elc: lisp/org.el lisp/org-exp.el
-lisp/org-timer.elc: lisp/org.el
-lisp/org-vm.elc: lisp/org.el
-lisp/org-w3m.elc: lisp/org.el
-lisp/org-wl.elc: lisp/org.el
-lisp/org-xoxo.elc: lisp/org-exp.el
+# default target is "all"
+all::
# Describe valid make targets for org-mode.
+.PHONY: targets help
targets help:
- @echo "make - compile Org ELisp files"
- @echo "make clean - clean Elisp and documentation files"
- @echo "make all - compile Org ELisp files and documentation"
+ $(info )
+ $(info make - show this help)
+ $(info make all - cleanly compile Org ELisp files and documentation)
+ $(info )
+ $(info Installation)
+ $(info ============)
+ $(info make install - install Org, both ELisp and Info files)
+ $(info make install-lisp - install Org, only ELisp files)
+ $(info make install-info - install Org, only Info file)
+ $(info )
+ $(info Maintenance)
+ $(info ===========)
+ $(info make docs - make all documentation)
+ $(info make info - make Info documentation)
+ $(info make html - make HTML documentation)
+ $(info make pdf - make pdf documentation)
+ $(info make card - make refcards documentation)
+ $(info )
+ $(info make check - build org and run complete test suite)
+ $(info make clean - clean Org ELisp and documentation files)
+ $(info make compile - cleanly compile Org ELisp files)
+ $(info make compile-dirty - compile Org ELisp without cleaning)
+ $(info )
+ $(info make clean-install - remove installed Org ELisp and documentation files)
@echo ""
- @echo "make doc - make all documentation"
- @echo "make info - make Info documentation"
- @echo "make html - make HTML documentation"
- @echo "make pdf - make pdf documentation"
- @echo "make card - make refcards documentation"
- @echo ""
- @echo "make install - install Org"
- @echo "make install-lisp - install Org ELisp files"
- @echo "make install-info - install Org Info file"
+
+ include default.mk # defaults, customizable via "local.mk"
+-include local.mk # optional local customization, use default.mk as template
+ include targets.mk # toplevel make machinery
diff --git a/UTILITIES/make_emacs_changelog b/UTILITIES/make_emacs_changelog
index 8d14a75..565bc64 100755
--- a/UTILITIES/make_emacs_changelog
+++ b/UTILITIES/make_emacs_changelog
@@ -59,8 +59,8 @@ for $i (0..$#commits) {
# remove stuff which is not for this output
if ($kind =~ /\S/) {
- remove_parts("contrib/","testing/","xemacs/");
- remove_parts("Makefile","README");
+ remove_parts("contrib/","testing/","xemacs/","UTILITIES/");
+ remove_parts(".*Makefile","README",".+\.mk");
}
if ($kind eq "lisp") { remove_parts("doc/") }
if ($kind eq "texi") { remove_parts("lisp/","doc/orgcard","doc/orgguide") }
diff --git a/default.mk b/default.mk
new file mode 100644
index 0000000..45e6fbf
--- /dev/null
+++ b/default.mk
@@ -0,0 +1,100 @@
+##----------------------------------------------------------------------
+## NEVER EDIT THIS FILE, PUT ANY ADAPTATIONS INTO local.mk
+##----------------------------------------------------------------------
+## CHECK AND ADAPT THE FOLLOWING DEFINITIONS
+##----------------------------------------------------------------------
+
+# Name of your emacs binary
+EMACS = emacs
+
+# Where local software is found
+prefix = /usr/share
+
+# Where local lisp files go.
+lispdir= $(prefix)/emacs/site-lisp/org
+
+# Where local data files go.
+datadir = $(prefix)/emacs/etc/org
+
+# Where info files go.
+infodir = $(prefix)/info
+
+# Where to create temporary files for the testsuite
+TMPDIR ?= /tmp
+testdir = $(TMPDIR)/tmp-orgtest
+
+# Configuration for testing
+BTEST_PRE = # add options before standard load-path
+BTEST_POST = # add options after standard load path
+ # -L <path-to>/ert # needed for Emacs23, Emacs24 has ert built in
+ # -L <path-to>/htmlize # need at least version 1.34 for source code formatting
+BTEST_OB_LANGUAGES = awk C fortran maxima lilypond octave python sh # R
+ # R is not activated by default because it requires ess to be installed and configured
+BTEST_EXTRA = # extra packages to require for testing
+
+##----------------------------------------------------------------------
+## YOU MAY NEED TO ADAPT THESE DEFINITIONS
+##----------------------------------------------------------------------
+
+# How to run tests
+req-ob-lang = --eval '(require '"'"'ob-$(ob-lang))'
+req-extra = --eval '(require '"'"'$(req))'
+BTEST = $(EMACS) -batch -Q \
+ $(BTEST_PRE) -L lisp/ -L testing/ $(BTEST_POST) \
+ --eval '(defconst org-release "$(ORGVERSION)-Test")' \
+ -l testing/org-test.el \
+ $(foreach ob-lang,$(BTEST_OB_LANGUAGES),$(req-ob-lang)) \
+ $(foreach req,$(BTEST_EXTRA),$(req-extra)) \
+ --eval '(setq org-confirm-babel-evaluate nil)' \
+ -f org-test-run-batch-tests
+
+# Using emacs in batch mode.
+BATCH = $(EMACS) -batch -Q \
+ -L . \
+ --eval '(defconst org-release "$(ORGVERSION)-Make")' \
+
+# How to byte-compile the whole source directory
+ELCDIR = $(BATCH) \
+ --eval '(batch-byte-recompile-directory 0)'
+
+# How to byte-compile a single source file
+ELC = $(BATCH) -f batch-byte-compile
+
+# How to make a pdf file from a texinfo file
+TEXI2PDF = texi2pdf --batch --clean
+
+# How to make a pdf file from a tex file
+PDFTEX = pdftex
+
+# How to create directories
+MKDIR = mkdir -p
+
+# How to create the info files from the texinfo file
+MAKEINFO = makeinfo
+
+# How to create the HTML file
+TEXI2HTML = makeinfo --html --number-sections
+
+# How to find files
+FIND = find
+
+# How to remove files
+RM = rm -f
+
+# How to remove files recursively
+RMR = rm -fr
+
+# How to stream edit a file
+SED = sed
+
+# How to copy the lisp files and elc files to their destination.
+# CP = cp -p # try this if there is no install
+CP = install -p
+
+# How to obtain administrative privileges
+# SUDO = # leave blank if you don't need this
+SUDO = sudo
+
+# Name of the program to install info files
+# INSTALL_INFO = ginstall-info # Debian: avoid harmless warning message
+INSTALL_INFO = install-info
diff --git a/doc/Makefile b/doc/Makefile
new file mode 100644
index 0000000..7672664
--- /dev/null
+++ b/doc/Makefile
@@ -0,0 +1,70 @@
+.SUFFIXES: # we don't need default suffix rules
+ifeq ($(MAKELEVEL), 0)
+ $(error This make needs to be started as a sub-make from the toplevel directory.)
+endif
+.PHONY: all info html pdf card manual guide install clean cleanall clean-install
+
+all: info html pdf card
+
+info: org
+
+html: org.html
+
+pdf: org.pdf orgguide.pdf
+
+card: orgcard.pdf orgcard_letter.pdf orgguide.pdf
+
+manual guide::
+ $(RMR) $@ ; $(MKDIR) $@
+manual:: org.texi
+ $(TEXI2HTML) -o $@ $<
+ ../UTILITIES/mansplit.pl $@/*
+guide:: orgguide.texi
+ $(TEXI2HTML) -o $@ $<
+ ../UTILITIES/guidesplit.pl $@/*
+
+org-version.inc:
+ @echo "@c automatically generated, do not edit" > org-version.inc
+ @echo "@set VERSION $(ORGVERSION) ($(GITVERSION))" >> org-version.inc
+ @echo "@set DATE $(DATE)" >> org-version.inc
+
+
+install: org
+ if [ ! -d $(DESTDIR)$(infodir) ]; then $(MKDIR) $(DESTDIR)$(infodir); else true; fi ;
+ $(CP) org $(DESTDIR)$(infodir)
+ $(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) org
+
+clean:
+ $(RM) org *.pdf *.html *_letter.tex \
+ *.aux *.cp *.cps *.dvi *.fn *.fns *.ky *.kys *.pg *.pgs \
+ *.toc *.tp *.tps *.vr *.vrs *.log *.html *.ps org-version.inc
+cleanall: clean
+ $(RMR) guide manual
+
+clean-install:
+ $(RM) $(DESTDIR)$(infodir)/org*
+ $(INSTALL_INFO) --infodir=$(DESTDIR)$(infodir) --remove org
+
+.SUFFIXES: .texi .tex .txt
+
+%: %.texi
+ $(MAKE) org-version.inc
+ $(MAKEINFO) --no-split $< -o $@
+
+%.pdf: LC_ALL=C # work around a bug in texi2dvi
+%.pdf: LANG=C # work around a bug in texi2dvi
+%.pdf: %.texi
+ $(TEXI2PDF) $<
+%.pdf: %.tex
+ PDFLATEX=$(PDFTEX) $(TEXI2PDF) $<
+
+%.html: %.texi
+ $(TEXI2HTML) --no-split -o $@ $<
+ ../UTILITIES/manfull.pl $@
+
+%.txt: %.tex
+ perl ../UTILITIES/orgcard2txt.pl $< > $@
+
+%_letter.tex: %.tex
+ $(SED) -e 's/\\pdflayout=(0l)/\\pdflayout=(1l)/' \
+ $< > $@
diff --git a/doc/org.texi b/doc/org.texi
index 2f5188f..bde3e19 100644
--- a/doc/org.texi
+++ b/doc/org.texi
@@ -4,8 +4,7 @@
@setfilename ../../info/org
@settitle The Org Manual
-@set VERSION 7.8.09
-@set DATE April 2012
+@include org-version.inc
@c Use proper quote and backtick for code sections in PDF output
@c Cf. Texinfo manual 14.2
diff --git a/etc/Makefile b/etc/Makefile
new file mode 100644
index 0000000..8b06158
--- /dev/null
+++ b/etc/Makefile
@@ -0,0 +1,31 @@
+ETCDIRS = styles schema
+-include local.mk # optional local customization
+
+.NOTPARALLEL: # always run this make serially
+.SUFFIXES: # we don't need default suffix rules
+ifeq ($(MAKELEVEL), 0)
+ $(error This make needs to be started as a sub-make from the toplevel directory.)
+endif
+
+.PHONY: all install clean cleanall clean-install
+
+all:
+
+install: $(ETCDIRS)
+ for dir in $? ; do \
+ if [ ! -d $(DESTDIR)$(datadir)/$${dir} ] ; then \
+ $(MKDIR) $(DESTDIR)$(datadir)/$${dir} ; \
+ fi ; \
+ $(CP) $${dir}/* $(DESTDIR)$(datadir)/$${dir} ; \
+ done ;
+
+clean:
+
+cleanall:
+
+clean-install: $(ETCDIRS)
+ for dir in $? ; do \
+ if [ -d $(DESTDIR)$(datadir)/$${dir} ] ; then \
+ $(RMR) $(DESTDIR)$(datadir)/$${dir} ; \
+ fi ; \
+ done ;
diff --git a/contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc b/etc/schema/od-manifest-schema-v1.2-cs01.rnc
index 647828d..647828d 100644
--- a/contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc
+++ b/etc/schema/od-manifest-schema-v1.2-cs01.rnc
diff --git a/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc b/etc/schema/od-schema-v1.2-cs01.rnc
index 83ad017..83ad017 100644
--- a/contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc
+++ b/etc/schema/od-schema-v1.2-cs01.rnc
diff --git a/contrib/odt/etc/schema/schemas.xml b/etc/schema/schemas.xml
index a319191..a319191 100644
--- a/contrib/odt/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
diff --git a/lisp/Makefile b/lisp/Makefile
new file mode 100644
index 0000000..7e140d7
--- /dev/null
+++ b/lisp/Makefile
@@ -0,0 +1,79 @@
+ORG-INSTALL = $(BATCH) \
+ --eval '(require '"'"'autoload)' \
+ --eval '(find-file "org-install.el")' \
+ --eval '(erase-buffer)' \
+ --eval '(insert ";;; org-install.el --- autogenerated file, do not edit\n;;\n;;; Code:\n")' \
+ --eval '(mapc (lambda (x) (generate-file-autoloads (symbol-name x)))\
+ (quote ($(LISPF) org-version.el)))' \
+ --eval '(insert "\f\n(provide '"'"'org-install)\n")' \
+ --eval '(insert ";; Local Variables:\n;; version-control: never\n")' \
+ --eval '(insert ";; no-byte-compile: t\n;; no-update-autoloads: t\n")' \
+ --eval '(insert ";; coding: utf-8\n;; End:\n;;; org-install.el ends here\n")' \
+ --eval '(save-buffer)'
+ORG-VERSION = $(BATCH) \
+ --eval '(find-file "org-version.el")' \
+ --eval '(erase-buffer)' \
+ --eval '(insert ";;; org-version.el --- autogenerated file, do not edit\n;;\n;;; Code:\n")' \
+ --eval '(insert ";;;\#\#\#autoload\n")' \
+ --eval '(insert "(defconst org-release \"$(ORGVERSION)\"\n")' \
+ --eval '(insert " \"The release version of org-mode.\n")' \
+ --eval '(insert " Inserted by installing org-mode or when a release is made.\")\n")' \
+ --eval '(insert ";;;\#\#\#autoload\n")' \
+ --eval '(insert "(defconst org-git-version \"$(GITVERSION)\"\n")' \
+ --eval '(insert " \"The Git version of org-mode.\n")' \
+ --eval '(insert " Inserted by installing org-mode or when a release is made.\")\n")' \
+ --eval '(insert ";;;\#\#\#autoload\n")' \
+ --eval '(insert "(defconst org-odt-data-dir \"$(datadir)\"\n")' \
+ --eval '(insert " \"The location of ODT styles.\")\n")' \
+ --eval '(insert ";; Local Variables:\n;; version-control: never\n")' \
+ --eval '(insert ";; no-byte-compile: t\n")' \
+ --eval '(insert ";; coding: utf-8\n;; End:\n;;; org-version.el ends here\n")' \
+ --eval '(save-buffer)'
+-include local.mk # optional local customization
+
+.NOTPARALLEL: # always run this make serially
+.SUFFIXES: # we don't need default suffix rules
+ifeq ($(MAKELEVEL), 0)
+ $(error This make needs to be started as a sub-make from the toplevel directory.)
+endif
+
+LISPO = org-install.el org-version.el # autogenerated files
+LISPF = $(filter-out $(LISPO),$(wildcard *.el))
+LISPC = $(LISPF:%el=%elc)
+
+.PHONY: all compile compile-dirty \
+ autoloads \
+ install clean cleanauto cleanall clean-install
+
+all \
+compile \
+compile-dirty: cleanauto
+ $(ELCDIR)
+
+autoloads: $(LISPO)
+
+org-version.el: $(LISPF)
+ $(ORG-VERSION)
+
+org-install.el: org-version.el
+ $(ORG-INSTALL)
+
+install: $(LISPF) compile autoloads
+ if [ ! -d $(DESTDIR)$(lispdir) ] ; then \
+ $(MKDIR) $(DESTDIR)$(lispdir) ; \
+ fi ;
+ $(CP) $(LISPC) $(LISPF) $(LISPO) $(DESTDIR)$(lispdir)
+
+clean:
+ $(RM) *.elc
+
+cleanauto: # internal target
+ $(RM) $(LISPO) $(LISPO:%el=%elc)
+
+cleanall:
+ $(RM) *.elc $(LISPO)
+
+clean-install:
+ if [ -d $(DESTDIR)$(lispdir) ] ; then \
+ $(RM) $(DESTDIR)$(lispdir)/org*.el* $(DESTDIR)$(lispdir)/ob*.el* ; \
+ fi ;
diff --git a/lisp/org.el b/lisp/org.el
index 5c84a09..add28f2 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -7,7 +7,6 @@
;; Maintainer: Bastien Guerry <bzg at gnu dot org>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 7.8.09
;;
;; This file is part of GNU Emacs.
;;
@@ -76,6 +75,7 @@
(require 'gnus-sum))
(require 'calendar)
+(require 'find-func)
(require 'format-spec)
;; Emacs 22 calendar compatibility: Make sure the new variables are available
@@ -209,35 +209,20 @@ identifier."
;;; Version
-(defconst org-version "7.8.09"
- "The version number of the file org.el.")
-
+(defvaralias 'org-version 'org-release)
;;;###autoload
(defun org-version (&optional here)
"Show the org-mode version in the echo area.
With prefix arg HERE, insert it at point."
(interactive "P")
(let* ((origin default-directory)
- (version org-version)
- (git-version)
- (dir (concat (file-name-directory (locate-library "org")) "../" )))
- (when (and (file-exists-p (expand-file-name ".git" dir))
- (executable-find "git"))
- (unwind-protect
- (progn
- (cd dir)
- (when (eql 0 (shell-command "git describe --abbrev=4 HEAD"))
- (with-current-buffer "*Shell Command Output*"
- (goto-char (point-min))
- (setq git-version (buffer-substring (point) (point-at-eol))))
- (subst-char-in-string ?- ?. git-version t)
- (when (string-match "\\S-"
- (shell-command-to-string
- "git diff-index --name-only HEAD --"))
- (setq git-version (concat git-version ".dirty")))
- (setq version (concat version " (" git-version ")"))))
- (cd origin)))
- (setq version (format "Org-mode version %s" version))
+ (version (if (boundp 'org-release) org-release "N/A"))
+ (git-version (if (boundp 'org-git-version) org-git-version "N/A"))
+ (org-install (ignore-errors (find-library-name "org-install"))))
+ (setq version (format "Org-mode version %s (%s @ %s)"
+ version
+ git-version
+ (if org-install org-install "org-install.el can not be found!")))
(if here (insert version))
(message version)))
diff --git a/targets.mk b/targets.mk
new file mode 100644
index 0000000..94387f4
--- /dev/null
+++ b/targets.mk
@@ -0,0 +1,100 @@
+.NOTPARALLEL: .PHONY
+# Additional distribution files
+DISTFILES_extra= Makefile request-assign-future.txt contrib etc
+.EXPORT_ALL_VARIABLES:
+
+LISPDIRS = lisp
+SUBDIRS = doc etc $(LISPDIRS)
+INSTSUB = $(SUBDIRS:%=install-%)
+
+ifneq ($(wildcard .git),)
+ GITVERSION ?= $(shell git describe --abbrev=6 HEAD)
+ ORGVERSION ?= $(subst release_,,$(shell git describe --abbrev=0 HEAD))
+ GITSTATUS ?= $(shell git status -uno --porcelain)
+else
+ GITVERSION ?= N/A
+ ORGVERSION ?= N/A
+endif
+DATE = $(shell date +%Y-%m-%d)
+ifneq ($(GITSTATUS),)
+ GITVERSION := $(GITVERSION).dirty
+endif
+
+.PHONY: default all up2 update compile lisp doc etc \
+ check test install info html pdf card docs $(INSTSUB) \
+ autoloads cleanall clean cleancontrib cleanrel clean-install \
+ cleanelc cleandirs cleanlisp cleandoc cleandocs cleantest
+
+all \
+compile:: lisp
+ $(MAKE) -C $< clean
+
+compile \
+compile-dirty:: lisp
+ $(MAKE) -C $< $@
+
+all \
+clean-install:: $(SUBDIRS)
+ $(foreach dir, $?, $(MAKE) -C $(dir) $@;)
+
+check test:: all
+
+check test \
+test-dirty::
+ -$(MKDIR) $(testdir)
+ TMPDIR=$(testdir) $(BTEST)
+ifeq ($(TEST_NO_AUTOCLEAN),) # define this variable to leave $(testdir) around for inspection
+ $(MAKE) cleantest
+endif
+
+up2: update
+ $(SUDO) $(MAKE) install
+
+update:
+ git remote update
+ git pull
+ $(MAKE) check
+
+install: $(INSTSUB)
+
+install-info: install-doc
+
+docs: info html pdf card
+
+info html pdf card:
+ $(MAKE) -C doc $@
+
+$(INSTSUB):
+ $(MAKE) -C $(@:install-%=%) install
+
+autoloads: lisp
+ $(MAKE) -C $< $@
+
+cleandirs: $(SUBDIRS)
+ $(foreach dir, $?, $(MAKE) -C $(dir) cleanall;)
+
+clean: cleanrel
+ $(MAKE) -C lisp clean
+ $(MAKE) -C doc clean
+
+cleanall: cleandirs cleantest
+ -$(FIND) . -name \*~ -exec $(RM) {} \;
+
+cleancontrib:
+ -$(FIND) contrib -name \*~ -exec $(RM) {} \;
+
+cleanrel:
+ $(RMR) RELEASEDIR
+ $(RMR) org-7.*
+ $(RMR) org-7*zip org-7*tar.gz
+
+cleanelc cleanlisp:
+ $(MAKE) -C lisp clean
+ -$(FIND) lisp -name \*~ -exec $(RM) {} \;
+
+cleandoc cleandocs:
+ $(MAKE) -C doc clean
+ -$(FIND) doc -name \*~ -exec $(RM) {} \;
+
+cleantest:
+ $(RMR) $(testdir)