Bladeren bron

Merge branch 'local-Makefile' into test-makefile-merge

Bastien Guerry 13 jaren geleden
bovenliggende
commit
08bd0b8892
13 gewijzigde bestanden met toevoegingen van 432 en 599 verwijderingen
  1. 8 3
      .gitignore
  2. 32 568
      Makefile
  3. 2 2
      UTILITIES/make_emacs_changelog
  4. 100 0
      default.mk
  5. 70 0
      doc/Makefile
  6. 1 2
      doc/org.texi
  7. 31 0
      etc/Makefile
  8. 0 0
      etc/schema/od-manifest-schema-v1.2-cs01.rnc
  9. 0 0
      etc/schema/od-schema-v1.2-cs01.rnc
  10. 0 0
      etc/schema/schemas.xml
  11. 79 0
      lisp/Makefile
  12. 9 24
      lisp/org.el
  13. 100 0
      targets.mk

+ 8 - 3
.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

+ 32 - 568
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

+ 2 - 2
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") }

+ 100 - 0
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

+ 70 - 0
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)/' \
+                   $< > $@

+ 1 - 2
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

+ 31 - 0
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 ;

+ 0 - 0
contrib/odt/etc/schema/od-manifest-schema-v1.2-cs01.rnc → etc/schema/od-manifest-schema-v1.2-cs01.rnc


+ 0 - 0
contrib/odt/etc/schema/od-schema-v1.2-cs01.rnc → etc/schema/od-schema-v1.2-cs01.rnc


+ 0 - 0
contrib/odt/etc/schema/schemas.xml → etc/schema/schemas.xml


+ 79 - 0
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 ;

+ 9 - 24
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)))
 

+ 100 - 0
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)