From 57b4ef6f30d41cd14aa570b329841fc2082260ff Mon Sep 17 00:00:00 2001 From: David Bremner Date: Wed, 19 Mar 2014 21:48:03 -0300 Subject: [PATCH] doc: fix out-of-tree build The subtle part is adding .rst and .py files to vpath so they can be used as dependencies without prefixing with $(srcdir) We also change the interface to mkbuildeps.py: rather than getting the containing directory from the conf file path, we go the other way. --- configure | 3 ++- doc/Makefile.local | 12 ++++++------ doc/mkdocdeps.py | 7 ++++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/configure b/configure index ab73317a..1d430b9c 100755 --- a/configure +++ b/configure @@ -719,8 +719,9 @@ configure_options = $@ # files, (which is quite ugly). vpath %.c \$(srcdir) vpath %.cc \$(srcdir) -vpath %.1 \$(srcdir) vpath Makefile.% \$(srcdir) +vpath %.py \$(srcdir) +vpath %.rst \$(srcdir) # The C compiler to use CC = ${CC} diff --git a/doc/Makefile.local b/doc/Makefile.local index 9c31c248..0980c71c 100644 --- a/doc/Makefile.local +++ b/doc/Makefile.local @@ -3,15 +3,15 @@ dir := doc # You can set these variables from the command line. -SPHINXOPTS := -q -c $(dir) +SPHINXOPTS := -q SPHINXBUILD = sphinx-build DOCBUILDDIR := $(dir)/_build -prerst2man := python $(dir)/prerst2man.py -mkdocdeps := python $(dir)/mkdocdeps.py +prerst2man := python $(srcdir)/$(dir)/prerst2man.py +mkdocdeps := python $(srcdir)/$(dir)/mkdocdeps.py # Internal variables. -ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(dir) +ALLSPHINXOPTS := -d $(DOCBUILDDIR)/doctrees $(SPHINXOPTS) $(srcdir)/$(dir) .PHONY: sphinx-html sphinx-texinfo sphinx-info @@ -43,7 +43,7 @@ ifeq ($(HAVE_SPHINX),1) mv $(DOCBUILDDIR)/man/*.$${section} $(DOCBUILDDIR)/man/man$${section}; \ done else ifeq ($(HAVE_RST2MAN),1) - $(prerst2man) $(DOCBUILDDIR)/.. $(DOCBUILDDIR)/man + $(prerst2man) $(srcdir)/doc $(DOCBUILDDIR)/man else @echo "Fatal: build dependency fail." @false @@ -68,7 +68,7 @@ install-man: ${MAN_GZIP_FILES} endif $(dir)/docdeps.mk: $(dir)/conf.py $(dir)/mkdocdeps.py - $(mkdocdeps) $< $(DOCBUILDDIR) $@ + $(mkdocdeps) $(srcdir)/doc $(DOCBUILDDIR) $@ CLEAN := $(CLEAN) $(DOCBUILDDIR) $(dir)/docdeps.mk $(dir)/man.stamp CLEAN := $(CLEAN) $(MAN_GZIP_FILES) $(MAN_ROFF_FILES) diff --git a/doc/mkdocdeps.py b/doc/mkdocdeps.py index 3effdd85..71bd1356 100644 --- a/doc/mkdocdeps.py +++ b/doc/mkdocdeps.py @@ -1,15 +1,16 @@ from sys import argv -conffile = argv[1] +srcdir = argv[1] builddir = argv[2] outfile = argv[3] -execfile(conffile) +execfile(srcdir + '/conf.py') + roff_files = [] rst_files = [] out=open(outfile,'w') for page in man_pages: - rst_files = rst_files + ["doc/{0:s}.rst".format(page[0])] + rst_files = rst_files + ["{0:s}/{1:s}.rst".format(srcdir,page[0])] roff_files = roff_files + ["{0:s}/man/{1:s}.{2:d}".format(builddir,page[0],page[4])] out.write ('MAN_ROFF_FILES := ' + ' \\\n\t'.join(roff_files)+'\n')