doc: fix out-of-tree build
authorDavid Bremner <david@tethera.net>
Thu, 20 Mar 2014 00:48:03 +0000 (21:48 -0300)
committerDavid Bremner <david@tethera.net>
Tue, 25 Mar 2014 11:32:10 +0000 (08:32 -0300)
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
doc/Makefile.local
doc/mkdocdeps.py

index ab73317a4b57c79de9f9d48abc49ffa5ca10f035..1d430b9c9542f95e293e2ba5fcde90e8588ac6d0 100755 (executable)
--- 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}
index 9c31c248c879fb8e232d7287a3ab967ea8c98483..0980c71c2ac3e0d792025d914b5010d446a7e954 100644 (file)
@@ -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)
index 3effdd850c4b9993bdb6d86388e3d30b5308db64..71bd1356e5160368038bb0b0ab24f4f40a07139d 100644 (file)
@@ -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')