changeset 22077:df50d42d4b1b

build: build doc-cache and DOCSTRINGS files in the build dir * libinterp/module.mk (libinterp/DOCSTRINGS): Build in the build directory, allow vpath builds to find it in $(srcdir). (install-built-in-docstrings): Use file in $(srcdir) if it doesn't exist in the current directory. * scripts/module.mk (scripts/DOCSTRINGS): Build in the build directory, allow vpath builds to find it in $(srcdir). * run-octave.in: Use doc-cache and DOCSTRINGS in $(srcdir) if they don't exist in the current directory. * doc/interpreter/mk_doc_cache.m: Add an argument for the source directory. Apply it to each of the DOCSTRINGS input files if they don't exist in the current directory. * doc/interpreter/munge-texi.pl: Apply $top_srcdir to each of the DOCSTRINGS input files if they don't exist in the current directory. * doc/interpreter/module.mk (doc/interpreter/doc-cache): Call mk_doc_cache.m with additional $(srcdir) argument.
author Mike Miller <mtmiller@octave.org>
date Fri, 08 Jul 2016 10:01:24 -0700
parents d9643bc3792a
children ce69151a2d1b
files doc/interpreter/mk_doc_cache.m doc/interpreter/module.mk doc/interpreter/munge-texi.pl libinterp/module.mk run-octave.in scripts/module.mk
diffstat 6 files changed, 37 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/doc/interpreter/mk_doc_cache.m	Thu Jul 07 19:06:09 2016 -0700
+++ b/doc/interpreter/mk_doc_cache.m	Fri Jul 08 10:01:24 2016 -0700
@@ -16,12 +16,13 @@
 
 args = argv ();
 
-if (nargin < 2)
-  error ("usage: mk_doc_cache OUTPUT-FILE DOCSTRINGS-FILE ...");
+if (nargin < 3)
+  error ("usage: mk_doc_cache OUTPUT-FILE SRCDIR DOCSTRINGS-FILE ...");
 endif
 
 output_file = args{1};
-docstrings_files = args(2:end);
+top_srcdir = args{2};
+docstrings_files = args(3:end);
 
 ## Special character used as break between DOCSTRINGS
 doc_delim = char (0x1d);
@@ -33,8 +34,13 @@
 text = cell (1, nfiles);
 for i = 1:nfiles
   file = docstrings_files{i};
+  ## DOCSTRINGS files may exist in the current (build) directory or in the
+  ## source directory when building from a release.
   fid = fopen (file, "r");
   if (fid < 0)
+    fid = fopen (fullfile (top_srcdir, file), "r");
+  endif
+  if (fid < 0)
     error ("unable to open %s for reading", file);
   else
     tmp = fread (fid, Inf, "*char")';
--- a/doc/interpreter/module.mk	Thu Jul 07 19:06:09 2016 -0700
+++ b/doc/interpreter/module.mk	Fri Jul 08 10:01:24 2016 -0700
@@ -290,7 +290,7 @@
 
 doc/interpreter/doc-cache: $(DOCSTRING_FILES) doc/interpreter/mk_doc_cache.m | $(OCTAVE_INTERPRETER_TARGETS) doc/interpreter/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(SHELL) run-octave --norc --silent --no-history $(srcdir)/doc/interpreter/mk_doc_cache.m - $(srcdir)/doc/interpreter/macros.texi $(DOCSTRING_FILES) > $@-t && \
+	$(SHELL) run-octave --norc --silent --no-history $(srcdir)/doc/interpreter/mk_doc_cache.m - $(srcdir) $(srcdir)/doc/interpreter/macros.texi $(DOCSTRING_FILES) > $@-t && \
 	mv $@-t $@
 
 $(MUNGED_TEXI_SRC): $(DOCSTRING_FILES)
--- a/doc/interpreter/munge-texi.pl	Thu Jul 07 19:06:09 2016 -0700
+++ b/doc/interpreter/munge-texi.pl	Fri Jul 08 10:01:24 2016 -0700
@@ -16,7 +16,12 @@
 # Load DOCSTRINGS into memory while expanding @seealso references
 foreach $DOCSTRING_file (@ARGV)
 {
-  open (DOCFH, $DOCSTRING_file) or die "Unable to open $DOCSTRING_file\n";
+  ## DOCSTRINGS files may exist in the current (build) directory or in the
+  ## source directory when building from a release.
+  $DOCSTRING_file_srcdir = "$top_srcdir/$DOCSTRING_file";
+
+  open (DOCFH, $DOCSTRING_file) or open (DOCFH, $DOCSTRING_file_srcdir)
+    or die "Unable to open $DOCSTRING_file\n";
 
   # Skip comments
   while (defined ($_ = <DOCFH>) and /$comment_line/o) {;}
--- a/libinterp/module.mk	Thu Jul 07 19:06:09 2016 -0700
+++ b/libinterp/module.mk	Fri Jul 08 10:01:24 2016 -0700
@@ -79,7 +79,7 @@
   libinterp/builtins.cc
 
 libinterp_EXTRA_DIST += \
-  $(srcdir)/libinterp/DOCSTRINGS \
+  libinterp/DOCSTRINGS \
   libinterp/build-env.in.cc \
   libinterp/build-env-features.sh \
   libinterp/find-defun-files.sh \
@@ -271,9 +271,9 @@
 	mv $@-t $@
 endif
 
-DOCSTRING_FILES += $(srcdir)/libinterp/DOCSTRINGS
+DOCSTRING_FILES += libinterp/DOCSTRINGS
 
-$(srcdir)/libinterp/DOCSTRINGS: $(ALL_DEFUN_FILES) | libinterp/$(octave_dirstamp)
+libinterp/DOCSTRINGS: $(ALL_DEFUN_FILES) | libinterp/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f libinterp/DOCSTRINGS-t && \
 	$(PERL) $(srcdir)/libinterp/gendoc.pl "$(srcdir)" $(ALL_DEFUN_FILES) > libinterp/DOCSTRINGS-t && \
 	$(call move_if_change_rule,libinterp/DOCSTRINGS-t,$@)
@@ -320,7 +320,9 @@
 
 install-built-in-docstrings:
 	$(MKDIR_P) $(DESTDIR)$(octetcdir)
-	$(INSTALL_DATA) $(srcdir)/libinterp/DOCSTRINGS $(DESTDIR)$(octetcdir)/built-in-docstrings
+	f=libinterp/DOCSTRINGS; \
+	  if test -f $$f; then d=; else d="$(srcdir)/"; fi; \
+	  $(INSTALL_DATA) "$$d$$f" $(DESTDIR)$(octetcdir)/built-in-docstrings
 .PHONY: install-built-in-docstrings
 
 uninstall-built-in-docstrings:
@@ -338,7 +340,7 @@
   libinterp/parse-tree/oct-parse.output
 
 libinterp_MAINTAINERCLEANFILES += \
-  $(srcdir)/libinterp/DOCSTRINGS \
+  libinterp/DOCSTRINGS \
   $(LIBINTERP_BUILT_DISTFILES)
 
 BUILT_DISTFILES += $(LIBINTERP_BUILT_DISTFILES)
--- a/run-octave.in	Thu Jul 07 19:06:09 2016 -0700
+++ b/run-octave.in	Fri Jul 08 10:01:24 2016 -0700
@@ -51,7 +51,7 @@
 LOADPATH="$d1_path:$d2_path:$d3_path:$d4_path"
 IMAGEPATH="$top_srcdir/scripts/image"
 DOCFILE="$builddir/doc/interpreter/doc-cache"
-BUILT_IN_DOCSTRINGS_FILE="$top_srcdir/libinterp/DOCSTRINGS"
+BUILT_IN_DOCSTRINGS_FILE="$builddir/libinterp/DOCSTRINGS"
 TEXIMACROSFILE="$top_srcdir/doc/interpreter/macros.texi"
 INFOFILE="$top_srcdir/doc/interpreter/octave.info"
 
@@ -87,6 +87,15 @@
   fi
 done
 
+## DOCSTRINGS and doc-cache files may exist in the current (build) directory
+## or in the source directory when building from a release.
+if ! [ -e $DOCFILE ]; then
+  DOCFILE="$top_srcdir/doc/interpreter/doc-cache"
+fi
+if ! [ -e $BUILT_IN_DOCSTRINGS_FILE ]; then
+  BUILT_IN_DOCSTRINGS_FILE="$top_srcdir/libinterp/DOCSTRINGS"
+fi
+
 ## We set OCTAVE_ARCHLIBDIR so that the wrapper program can find the
 ## octave-gui program in the build tree.  That will fail if we ever
 ## need Octave to find other things in ARCHLIBDIR that are not built
--- a/scripts/module.mk	Thu Jul 07 19:06:09 2016 -0700
+++ b/scripts/module.mk	Fri Jul 08 10:01:24 2016 -0700
@@ -103,9 +103,9 @@
 
 $(foreach f, $(GEN_FCN_FILES), $(eval $(call GEN_FCN_FILES_TEMPLATE, $(f))))
 
-DOCSTRING_FILES += $(srcdir)/scripts/DOCSTRINGS
+DOCSTRING_FILES += scripts/DOCSTRINGS
 
-$(srcdir)/scripts/DOCSTRINGS: $(FCN_FILES) $(GEN_FCN_FILES_IN) | scripts/$(octave_dirstamp)
+scripts/DOCSTRINGS: $(FCN_FILES) $(GEN_FCN_FILES_IN) | scripts/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f scripts/DOCSTRINGS-t && \
 	$(PERL) $(srcdir)/scripts/mkdoc.pl "$(srcdir)" $(FCN_FILES) $(GEN_FCN_FILES_IN) > scripts/DOCSTRINGS-t && \
 	$(call move_if_change_rule,scripts/DOCSTRINGS-t,$@)
@@ -182,7 +182,7 @@
   $(SCRIPTS_IMAGES) \
   $(FCN_FILES) \
   $(GEN_FCN_FILES_IN) \
-  $(srcdir)/scripts/DOCSTRINGS \
+  scripts/DOCSTRINGS \
   scripts/mkdoc.pl \
   scripts/mk-pkg-add
 
@@ -196,7 +196,7 @@
   $(DIRSTAMP_FILES)
 
 scripts_MAINTAINERCLEANFILES += \
-  $(srcdir)/scripts/DOCSTRINGS
+  scripts/DOCSTRINGS
 
 CLEANFILES += $(scripts_CLEANFILES)
 DISTCLEANFILES += $(scripts_DISTCLEANFILES)