changeset 23495:8308417aff1c

use automake %reldir% feature * configure.ac (AM_INIT_AUTOMAKE): Require automake 1.14. * doc/doxyhtml/module.mk, doc/interpreter/module.mk, doc/liboctave/module.mk, doc/module.mk, doc/refcard/module.mk, etc/module.mk, examples/module.mk, libgui/graphics/module.mk, libgui/module.mk, libgui/src/module.mk, libinterp/corefcn/module.mk, libinterp/dldfcn/config-module.awk, libinterp/module.mk, libinterp/octave-value/module.mk, libinterp/operators/module.mk, libinterp/parse-tree/module.mk, libinterp/template-inst/module.mk, liboctave/array/module.mk, liboctave/external/Faddeeva/module.mk, liboctave/external/amos/module.mk, liboctave/external/blas-xtra/module.mk, liboctave/external/daspk/module.mk, liboctave/external/dasrt/module.mk, liboctave/external/dassl/module.mk, liboctave/external/fftpack/module.mk, liboctave/external/lapack-xtra/module.mk, liboctave/external/module.mk, liboctave/external/odepack/module.mk, liboctave/external/ordered-qz/module.mk, liboctave/external/quadpack/module.mk, liboctave/external/ranlib/module.mk, liboctave/external/slatec-err/module.mk, liboctave/external/slatec-fn/module.mk, liboctave/module.mk, liboctave/numeric/module.mk, liboctave/operators/module.mk, liboctave/system/module.mk, liboctave/util/module.mk, liboctave/wrappers/module.mk, m4/module.mk, scripts/+containers/module.mk, scripts/@ftp/module.mk, scripts/audio/module.mk, scripts/deprecated/module.mk, scripts/elfun/module.mk, scripts/general/module.mk, scripts/geometry/module.mk, scripts/gui/module.mk, scripts/help/module.mk, scripts/image/module.mk, scripts/io/module.mk, scripts/java/module.mk, scripts/linear-algebra/module.mk, scripts/miscellaneous/module.mk, scripts/module.mk, scripts/ode/module.mk, scripts/optimization/module.mk, scripts/path/module.mk, scripts/pkg/module.mk, scripts/plot/appearance/module.mk, scripts/plot/draw/module.mk, scripts/plot/util/module.mk, scripts/polynomial/module.mk, scripts/prefs/module.mk, scripts/profiler/module.mk, scripts/set/module.mk, scripts/signal/module.mk, scripts/sparse/module.mk, scripts/specfun/module.mk, scripts/special-matrix/module.mk, scripts/startup/module.mk, scripts/statistics/base/module.mk, scripts/statistics/distributions/module.mk, scripts/statistics/models/module.mk, scripts/statistics/tests/module.mk, scripts/strings/module.mk, scripts/testfun/module.mk, scripts/time/module.mk, src/module.mk, test/bug-35448/module.mk, test/bug-36025/module.mk, test/bug-38236/module.mk, test/bug-38691/module.mk, test/bug-41723/module.mk, test/bug-44940/module.mk, test/bug-46660/module.mk, test/bug-50014/module.mk, test/bug-50035/module.mk, test/bug-50716/module.mk, test/class-concat/module.mk, test/classdef-multiple-inheritance/module.mk, test/classdef/module.mk, test/classes/module.mk, test/ctor-vs-method/module.mk, test/fcn-handle-derived-resolution/module.mk, test/module.mk, test/nest/module.mk, test/publish/module.mk: Use %reldir% and %canon_reldir% where possible.
author John W. Eaton <jwe@octave.org>
date Mon, 15 May 2017 16:17:58 -0400
parents b9c66b9b5fc8
children 427c55a82f35
files configure.ac doc/doxyhtml/module.mk doc/interpreter/module.mk doc/liboctave/module.mk doc/module.mk doc/refcard/module.mk etc/module.mk examples/module.mk libgui/graphics/module.mk libgui/module.mk libgui/src/module.mk libinterp/corefcn/module.mk libinterp/dldfcn/config-module.awk libinterp/module.mk libinterp/octave-value/module.mk libinterp/operators/module.mk libinterp/parse-tree/module.mk libinterp/template-inst/module.mk liboctave/array/module.mk liboctave/external/Faddeeva/module.mk liboctave/external/amos/module.mk liboctave/external/blas-xtra/module.mk liboctave/external/daspk/module.mk liboctave/external/dasrt/module.mk liboctave/external/dassl/module.mk liboctave/external/fftpack/module.mk liboctave/external/lapack-xtra/module.mk liboctave/external/module.mk liboctave/external/odepack/module.mk liboctave/external/ordered-qz/module.mk liboctave/external/quadpack/module.mk liboctave/external/ranlib/module.mk liboctave/external/slatec-err/module.mk liboctave/external/slatec-fn/module.mk liboctave/module.mk liboctave/numeric/module.mk liboctave/operators/module.mk liboctave/system/module.mk liboctave/util/module.mk liboctave/wrappers/module.mk m4/module.mk scripts/+containers/module.mk scripts/@ftp/module.mk scripts/audio/module.mk scripts/deprecated/module.mk scripts/elfun/module.mk scripts/general/module.mk scripts/geometry/module.mk scripts/gui/module.mk scripts/help/module.mk scripts/image/module.mk scripts/io/module.mk scripts/java/module.mk scripts/linear-algebra/module.mk scripts/miscellaneous/module.mk scripts/module.mk scripts/ode/module.mk scripts/optimization/module.mk scripts/path/module.mk scripts/pkg/module.mk scripts/plot/appearance/module.mk scripts/plot/draw/module.mk scripts/plot/util/module.mk scripts/polynomial/module.mk scripts/prefs/module.mk scripts/profiler/module.mk scripts/set/module.mk scripts/signal/module.mk scripts/sparse/module.mk scripts/specfun/module.mk scripts/special-matrix/module.mk scripts/startup/module.mk scripts/statistics/base/module.mk scripts/statistics/distributions/module.mk scripts/statistics/models/module.mk scripts/statistics/tests/module.mk scripts/strings/module.mk scripts/testfun/module.mk scripts/time/module.mk src/module.mk test/bug-35448/module.mk test/bug-36025/module.mk test/bug-38236/module.mk test/bug-38691/module.mk test/bug-41723/module.mk test/bug-44940/module.mk test/bug-46660/module.mk test/bug-50014/module.mk test/bug-50035/module.mk test/bug-50716/module.mk test/class-concat/module.mk test/classdef-multiple-inheritance/module.mk test/classdef/module.mk test/classes/module.mk test/ctor-vs-method/module.mk test/fcn-handle-derived-resolution/module.mk test/module.mk test/nest/module.mk test/publish/module.mk
diffstat 99 files changed, 4174 insertions(+), 4172 deletions(-) [+]
line wrap: on
line diff
--- a/configure.ac	Mon May 15 16:09:35 2017 +0100
+++ b/configure.ac	Mon May 15 16:17:58 2017 -0400
@@ -65,7 +65,7 @@
 AC_CONFIG_AUX_DIR([build-aux])
 AC_CONFIG_MACRO_DIR([m4])
 
-AM_INIT_AUTOMAKE([1.11 foreign -Wno-portability -Wno-override tar-ustar subdir-objects dist-lzip])
+AM_INIT_AUTOMAKE([1.14 foreign -Wno-portability -Wno-override tar-ustar subdir-objects dist-lzip])
 
 ## Add the option to enable silent rules and make silent rules the
 ## default behavior.  Available since Automake 1.11 and included by
--- a/doc/doxyhtml/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/doc/doxyhtml/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,12 +1,12 @@
-doxyhtml: doc/doxyhtml/Doxyfile | doc/doxyhtml/$(octave_dirstamp)
-	doxygen doc/doxyhtml/Doxyfile
+doxyhtml: %reldir%/Doxyfile | %reldir%/$(octave_dirstamp)
+	doxygen %reldir%/Doxyfile
 
 doxyhtml-maintainer-clean:
 	rm -f doc/doxygen_sqlite3.db
-	rm -rf `ls -d doc/doxyhtml/* 2>/dev/null | $(GREP) -v 'Doxyfile\.in\|README'`
+	rm -rf `ls -d %reldir%/* 2>/dev/null | $(GREP) -v 'Doxyfile\.in\|README'`
 
 doc_EXTRA_DIST += \
-  doc/doxyhtml/Doxyfile.in \
-  doc/doxyhtml/README
+  %reldir%/Doxyfile.in \
+  %reldir%/README
 
-DIRSTAMP_FILES += doc/doxyhtml/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/doc/interpreter/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/doc/interpreter/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,23 +1,23 @@
 if AMCOND_BUILD_DOCS
 
 GRAPH_PROP_TEXI_SRC = \
-  doc/interpreter/plot-axesproperties.texi \
-  doc/interpreter/plot-figureproperties.texi \
-  doc/interpreter/plot-imageproperties.texi \
-  doc/interpreter/plot-lightproperties.texi \
-  doc/interpreter/plot-lineproperties.texi \
-  doc/interpreter/plot-patchproperties.texi \
-  doc/interpreter/plot-rootproperties.texi \
-  doc/interpreter/plot-surfaceproperties.texi \
-  doc/interpreter/plot-textproperties.texi \
-  doc/interpreter/plot-uimenuproperties.texi \
-  doc/interpreter/plot-uibuttongroupproperties.texi \
-  doc/interpreter/plot-uicontextmenuproperties.texi \
-  doc/interpreter/plot-uipanelproperties.texi \
-  doc/interpreter/plot-uicontrolproperties.texi \
-  doc/interpreter/plot-uitoolbarproperties.texi \
-  doc/interpreter/plot-uipushtoolproperties.texi \
-  doc/interpreter/plot-uitoggletoolproperties.texi
+  %reldir%/plot-axesproperties.texi \
+  %reldir%/plot-figureproperties.texi \
+  %reldir%/plot-imageproperties.texi \
+  %reldir%/plot-lightproperties.texi \
+  %reldir%/plot-lineproperties.texi \
+  %reldir%/plot-patchproperties.texi \
+  %reldir%/plot-rootproperties.texi \
+  %reldir%/plot-surfaceproperties.texi \
+  %reldir%/plot-textproperties.texi \
+  %reldir%/plot-uimenuproperties.texi \
+  %reldir%/plot-uibuttongroupproperties.texi \
+  %reldir%/plot-uicontextmenuproperties.texi \
+  %reldir%/plot-uipanelproperties.texi \
+  %reldir%/plot-uicontrolproperties.texi \
+  %reldir%/plot-uitoolbarproperties.texi \
+  %reldir%/plot-uipushtoolproperties.texi \
+  %reldir%/plot-uitoggletoolproperties.texi
 
 $(GRAPH_PROP_TEXI_SRC): | $(OCTAVE_INTERPRETER_TARGETS)
 
@@ -27,62 +27,62 @@
   mv $@-t $@
 endef
 
-doc/interpreter/plot-axesproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-axesproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,axes)
 
-doc/interpreter/plot-figureproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-figureproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,figure)
 
-doc/interpreter/plot-imageproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-imageproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,image)
 
-doc/interpreter/plot-lightproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-lightproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,light)
 
-doc/interpreter/plot-lineproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-lineproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,line)
 
-doc/interpreter/plot-patchproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-patchproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,patch)
 
-doc/interpreter/plot-rootproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-rootproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,root)
 
-doc/interpreter/plot-surfaceproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-surfaceproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,surface)
 
-doc/interpreter/plot-textproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-textproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,text)
 
-doc/interpreter/plot-uimenuproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uimenuproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uimenu)
 
-doc/interpreter/plot-uibuttongroupproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uibuttongroupproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uibuttongroup)
 
-doc/interpreter/plot-uicontextmenuproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uicontextmenuproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uicontextmenu)
 
-doc/interpreter/plot-uipanelproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uipanelproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uipanel)
 
-doc/interpreter/plot-uicontrolproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uicontrolproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uicontrol)
 
-doc/interpreter/plot-uitoolbarproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uitoolbarproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uitoolbar)
 
-doc/interpreter/plot-uipushtoolproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uipushtoolproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uipushtool)
 
-doc/interpreter/plot-uitoggletoolproperties.texi: doc/interpreter/genpropdoc.m
+%reldir%/plot-uitoggletoolproperties.texi: %reldir%/genpropdoc.m
 	$(AM_V_GEN)$(call gen-propdoc-texi,uitoggletool)
 
 dist_man_MANS = \
-  doc/interpreter/mkoctfile.1 \
-  doc/interpreter/octave-cli.1 \
-  doc/interpreter/octave-config.1 \
-  doc/interpreter/octave.1
+  %reldir%/mkoctfile.1 \
+  %reldir%/octave-cli.1 \
+  %reldir%/octave-config.1 \
+  %reldir%/octave.1
 
 BUILT_DOC_IMAGES += \
   $(BUILT_DOC_IMAGES_EPS) \
@@ -100,102 +100,102 @@
 
 $(BUILT_DOC_IMAGES): | $(OCTAVE_INTERPRETER_TARGETS)
 
-HTMLDIR_IMAGES = $(patsubst doc/interpreter/%.png, doc/interpreter/octave.html/%.png, $(DOC_IMAGES_PNG))
+HTMLDIR_IMAGES = $(patsubst %reldir%/%.png, %reldir%/octave.html/%.png, $(DOC_IMAGES_PNG))
 
 LOGOS = \
-  doc/interpreter/octave_logo.eps \
-  doc/interpreter/octave_logo.pdf
+  %reldir%/octave_logo.eps \
+  %reldir%/octave_logo.pdf
 
-DOC_IMAGES_EPS += doc/interpreter/octave_logo.eps
-DOC_IMAGES_PDF += doc/interpreter/octave_logo.pdf
+DOC_IMAGES_EPS += %reldir%/octave_logo.eps
+DOC_IMAGES_PDF += %reldir%/octave_logo.pdf
 
 MUNGED_TEXI_SRC = \
-  doc/interpreter/arith.texi \
-  doc/interpreter/audio.texi \
-  doc/interpreter/basics.texi \
-  doc/interpreter/bugs.texi \
-  doc/interpreter/container.texi \
-  doc/interpreter/cp-idx.texi \
-  doc/interpreter/data.texi \
-  doc/interpreter/debug.texi \
-  doc/interpreter/diffeq.texi \
-  doc/interpreter/diagperm.texi \
-  doc/interpreter/external.texi \
-  doc/interpreter/errors.texi \
-  doc/interpreter/eval.texi \
-  doc/interpreter/expr.texi \
-  doc/interpreter/fn-idx.texi \
-  doc/interpreter/func.texi \
-  doc/interpreter/geometry.texi \
-  doc/interpreter/gui.texi \
-  doc/interpreter/gpl.texi \
-  doc/interpreter/grammar.texi \
-  doc/interpreter/image.texi \
-  doc/interpreter/install.texi \
-  doc/interpreter/interp.texi \
-  doc/interpreter/intro.texi \
-  doc/interpreter/io.texi \
-  doc/interpreter/linalg.texi \
-  doc/interpreter/matrix.texi \
-  doc/interpreter/nonlin.texi \
-  doc/interpreter/numbers.texi \
-  doc/interpreter/obsolete.texi \
-  doc/interpreter/oop.texi \
-  doc/interpreter/op-idx.texi \
-  doc/interpreter/optim.texi \
-  doc/interpreter/package.texi \
-  doc/interpreter/plot.texi \
-  doc/interpreter/poly.texi \
-  doc/interpreter/preface.texi \
-  doc/interpreter/quad.texi \
-  doc/interpreter/set.texi \
-  doc/interpreter/signal.texi \
-  doc/interpreter/sparse.texi \
-  doc/interpreter/stats.texi \
-  doc/interpreter/stmt.texi \
-  doc/interpreter/strings.texi \
-  doc/interpreter/system.texi \
-  doc/interpreter/testfun.texi \
-  doc/interpreter/var.texi \
-  doc/interpreter/vectorize.texi
+  %reldir%/arith.texi \
+  %reldir%/audio.texi \
+  %reldir%/basics.texi \
+  %reldir%/bugs.texi \
+  %reldir%/container.texi \
+  %reldir%/cp-idx.texi \
+  %reldir%/data.texi \
+  %reldir%/debug.texi \
+  %reldir%/diffeq.texi \
+  %reldir%/diagperm.texi \
+  %reldir%/external.texi \
+  %reldir%/errors.texi \
+  %reldir%/eval.texi \
+  %reldir%/expr.texi \
+  %reldir%/fn-idx.texi \
+  %reldir%/func.texi \
+  %reldir%/geometry.texi \
+  %reldir%/gui.texi \
+  %reldir%/gpl.texi \
+  %reldir%/grammar.texi \
+  %reldir%/image.texi \
+  %reldir%/install.texi \
+  %reldir%/interp.texi \
+  %reldir%/intro.texi \
+  %reldir%/io.texi \
+  %reldir%/linalg.texi \
+  %reldir%/matrix.texi \
+  %reldir%/nonlin.texi \
+  %reldir%/numbers.texi \
+  %reldir%/obsolete.texi \
+  %reldir%/oop.texi \
+  %reldir%/op-idx.texi \
+  %reldir%/optim.texi \
+  %reldir%/package.texi \
+  %reldir%/plot.texi \
+  %reldir%/poly.texi \
+  %reldir%/preface.texi \
+  %reldir%/quad.texi \
+  %reldir%/set.texi \
+  %reldir%/signal.texi \
+  %reldir%/sparse.texi \
+  %reldir%/stats.texi \
+  %reldir%/stmt.texi \
+  %reldir%/strings.texi \
+  %reldir%/system.texi \
+  %reldir%/testfun.texi \
+  %reldir%/var.texi \
+  %reldir%/vectorize.texi
 
 TXI_SRC = $(MUNGED_TEXI_SRC:.texi=.txi)
 
 BUILT_OCTAVE_TEXI_SRC = \
-  doc/interpreter/contributors.texi \
+  %reldir%/contributors.texi \
   $(GRAPH_PROP_TEXI_SRC) \
   $(MUNGED_TEXI_SRC)
 
 info_TEXINFOS += \
-  doc/interpreter/octave.texi
+  %reldir%/octave.texi
 
 octave_TEXINFOS = \
   $(BUILT_OCTAVE_TEXI_SRC)
 
-INFO_DEPS += $(srcdir)/doc/interpreter/octave.info
-DVIS += doc/interpreter/octave.dvi
-PDFS += doc/interpreter/octave.pdf
-PSS += doc/interpreter/octave.ps
-HTMLS += doc/interpreter/octave.html
+INFO_DEPS += $(srcdir)/%reldir%/octave.info
+DVIS += %reldir%/octave.dvi
+PDFS += %reldir%/octave.pdf
+PSS += %reldir%/octave.ps
+HTMLS += %reldir%/octave.html
 
 ## As of version 1.14.1, automake does not seem to generate
 ## rules for DVI, PDF, or HTML output that work for us when
 ## there are additional dependencies, so we include our own
 ## versions of the rules here.
 
-OCTAVE_HTML_DIR = doc/interpreter/octave.html
+OCTAVE_HTML_DIR = %reldir%/octave.html
 OCTAVE_HTML_TMP_DIR = $(OCTAVE_HTML_DIR:.html=.htp)
 OCTAVE_HTML_STAMP = $(OCTAVE_HTML_DIR)/.octave-html-stamp
 
-OCTAVE_CSS = doc/interpreter/octave.css
+OCTAVE_CSS = %reldir%/octave.css
 HTMLDIR_CSS = $(OCTAVE_HTML_DIR)/octave.css
 
-$(srcdir)/doc/interpreter/octave.info: $(DOC_IMAGES_TXT) $(octave_TEXINFOS)
-doc/interpreter/octave.dvi: $(DOC_IMAGES_EPS) $(octave_TEXINFOS)
-doc/interpreter/octave.pdf: $(DOC_IMAGES_PDF) $(octave_TEXINFOS)
+$(srcdir)/%reldir%/octave.info: $(DOC_IMAGES_TXT) $(octave_TEXINFOS)
+%reldir%/octave.dvi: $(DOC_IMAGES_EPS) $(octave_TEXINFOS)
+%reldir%/octave.pdf: $(DOC_IMAGES_PDF) $(octave_TEXINFOS)
 $(OCTAVE_HTML_STAMP): $(DOC_IMAGES_PNG) $(octave_TEXINFOS)
 
-$(srcdir)/doc/interpreter/octave.info: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi
+$(srcdir)/%reldir%/octave.info: %reldir%/octave.texi $(srcdir)/%reldir%/version-octave.texi
 	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
 	am__cwd=`pwd` && $(am__cd) $(srcdir) && \
 	rm -rf $$backupdir && mkdir $$backupdir && \
@@ -206,7 +206,7 @@
 	else :; fi && \
 	cd "$$am__cwd"; \
 	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter \
-	 -o $@ $(srcdir)/doc/interpreter/octave.texi; \
+	 -o $@ $(srcdir)/%reldir%/octave.texi; \
 	then \
 	  rc=0; \
 	  $(am__cd) $(srcdir); \
@@ -217,26 +217,26 @@
 	fi; \
 	rm -rf $$backupdir; exit $$rc
 
-doc/interpreter/octave.dvi: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi | doc/interpreter/$(am__dirstamp)
+%reldir%/octave.dvi: %reldir%/octave.texi $(srcdir)/%reldir%/version-octave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(srcdir)/doc/interpreter' \
 	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
-	`test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi
+	`test -f '%reldir%/octave.texi' || echo '$(abs_top_srcdir)/'`%reldir%/octave.texi
 
-doc/interpreter/octave.pdf: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi | doc/interpreter/$(am__dirstamp)
+%reldir%/octave.pdf: %reldir%/octave.texi $(srcdir)/%reldir%/version-octave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter' \
 	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
-	`test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi
+	`test -f '%reldir%/octave.texi' || echo '$(abs_top_srcdir)/'`%reldir%/octave.texi
 
-doc/interpreter/octave.html: $(OCTAVE_HTML_STAMP)
+%reldir%/octave.html: $(OCTAVE_HTML_STAMP)
 
-$(OCTAVE_HTML_STAMP): doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi | doc/interpreter/$(am__dirstamp)
+$(OCTAVE_HTML_STAMP): %reldir%/octave.texi $(srcdir)/%reldir%/version-octave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_MAKEINFO)rm -rf $(OCTAVE_HTML_DIR)
 	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) \
 	 -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter \
 	 --css-ref=octave.css \
-	 -o $(OCTAVE_HTML_TMP_DIR) `test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi; \
+	 -o $(OCTAVE_HTML_TMP_DIR) `test -f '%reldir%/octave.texi' || echo '$(abs_top_srcdir)/'`%reldir%/octave.texi; \
 	then \
 	  rm -rf $(OCTAVE_HTML_DIR) && \
 	  mv $(OCTAVE_HTML_TMP_DIR) $(OCTAVE_HTML_DIR) && \
@@ -245,14 +245,14 @@
 	  rm -rf $(OCTAVE_HTML_TMP_DIR); exit 1; \
 	fi
 
-$(HTMLDIR_IMAGES) $(HTMLDIR_CSS) : doc/interpreter/octave.html/%: doc/interpreter/% $(OCTAVE_HTML_STAMP)
+$(HTMLDIR_IMAGES) $(HTMLDIR_CSS) : %reldir%/octave.html/%: %reldir%/% $(OCTAVE_HTML_STAMP)
 	$(AM_V_GEN)cp $< $@
 
 DOC_TARGETS += \
-  $(srcdir)/doc/interpreter/octave.info \
-  doc/interpreter/doc-cache \
-  doc/interpreter/octave.ps \
-  doc/interpreter/octave.pdf \
+  $(srcdir)/%reldir%/octave.info \
+  %reldir%/doc-cache \
+  %reldir%/octave.ps \
+  %reldir%/octave.pdf \
   $(OCTAVE_HTML_STAMP) \
   $(HTMLDIR_IMAGES) \
   $(HTMLDIR_CSS)
@@ -262,13 +262,13 @@
 
 doc_EXTRA_DIST += \
   $(BUILT_OCTAVE_TEXI_SRC) \
-  $(srcdir)/doc/interpreter/octave.info \
-  doc/interpreter/TODO \
-  doc/interpreter/doc-cache \
-  doc/interpreter/octave.dvi \
-  doc/interpreter/octave.ps \
-  doc/interpreter/octave.pdf \
-  doc/interpreter/octave.html \
+  $(srcdir)/%reldir%/octave.info \
+  %reldir%/TODO \
+  %reldir%/doc-cache \
+  %reldir%/octave.dvi \
+  %reldir%/octave.ps \
+  %reldir%/octave.pdf \
+  %reldir%/octave.html \
   $(HTMLDIR_IMAGES) \
   $(OCTAVE_CSS) \
   $(HTMLDIR_CSS)
@@ -285,54 +285,54 @@
 
 ## These two texi files have an additional dependency through the
 ## @EXAMPLEFILE macro.
-doc/interpreter/oop.texi: $(examples_code_SRC)
-doc/interpreter/external.texi: $(examples_code_SRC)
+%reldir%/oop.texi: $(examples_code_SRC)
+%reldir%/external.texi: $(examples_code_SRC)
 
-%.texi : %.txi doc/interpreter/munge-texi.pl | doc/interpreter/$(octave_dirstamp)
+%.texi : %.txi %reldir%/munge-texi.pl | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(PERL) $(srcdir)/doc/interpreter/munge-texi.pl $(top_srcdir) $(DOCSTRING_FILES) < $< > $@-t && \
+	$(PERL) $(srcdir)/%reldir%/munge-texi.pl $(top_srcdir) $(DOCSTRING_FILES) < $< > $@-t && \
 	mv $@-t $@
 
-doc/interpreter/contributors.texi: doc/interpreter/contributors.in | doc/interpreter/$(octave_dirstamp)
+%reldir%/contributors.texi: %reldir%/contributors.in | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(AWK) -f $(srcdir)/doc/interpreter/mkcontrib.awk $(srcdir)/doc/interpreter/contributors.in > $@-t && \
+	$(AWK) -f $(srcdir)/%reldir%/mkcontrib.awk $(srcdir)/%reldir%/contributors.in > $@-t && \
 	mv $@-t $@
 
-AUTHORS: doc/interpreter/preface.texi doc/interpreter/contributors.texi | doc/interpreter/$(octave_dirstamp)
+AUTHORS: %reldir%/preface.texi %reldir%/contributors.texi | %reldir%/$(octave_dirstamp)
 	$(AM_V_MAKEINFO)rm -f $@-t $@ && \
-	if [ "x$(srcdir)" != "x." ] && [ -f $(srcdir)/doc/interpreter/contributors.texi ] && [ ! -f doc/interpreter/contributors.texi ]; then \
-		cp $(srcdir)/doc/interpreter/contributors.texi doc/interpreter/contributors.texi; \
-		touch -r $(srcdir)/doc/interpreter/contributors.texi doc/interpreter/contributors.texi; \
+	if [ "x$(srcdir)" != "x." ] && [ -f $(srcdir)/%reldir%/contributors.texi ] && [ ! -f %reldir%/contributors.texi ]; then \
+		cp $(srcdir)/%reldir%/contributors.texi %reldir%/contributors.texi; \
+		touch -r $(srcdir)/%reldir%/contributors.texi %reldir%/contributors.texi; \
 	fi && \
-	$(MAKEINFO) -D AUTHORSONLY -I $(srcdir)/doc/interpreter/ \
+	$(MAKEINFO) -D AUTHORSONLY -I $(srcdir)/%reldir%/ \
 	  --no-validate --no-headers --no-split --output $@-t $< && \
 	mv $@-t $@
 
-BUGS: doc/interpreter/bugs.texi | doc/interpreter/$(octave_dirstamp)
+BUGS: %reldir%/bugs.texi | %reldir%/$(octave_dirstamp)
 	$(AM_V_MAKEINFO)rm -f $@-t $@ && \
 	$(MAKEINFO) -D BUGSONLY -I $(srcdir)/doc/interpreter \
 	  --no-validate --no-headers --no-split --output $@-t $< && \
 	mv $@-t $@
 
-INSTALL.OCTAVE: doc/interpreter/install.texi | doc/interpreter/$(octave_dirstamp)
+INSTALL.OCTAVE: %reldir%/install.texi | %reldir%/$(octave_dirstamp)
 	$(AM_V_MAKEINFO)rm -f $@-t $@ && \
 	$(MAKEINFO) -D INSTALLONLY -I $(srcdir)/doc/interpreter \
 	  --no-validate --no-headers --no-split --output $@-t $< && \
 	mv $@-t $@
 
 doc_EXTRA_DIST += \
-  doc/interpreter/config-images.sh \
-  doc/interpreter/contributors.in \
-  doc/interpreter/doc-cache \
-  doc/interpreter/genpropdoc.m \
-  doc/interpreter/graphics_properties.mk \
-  doc/interpreter/images \
-  doc/interpreter/images.awk \
-  doc/interpreter/images.mk \
-  doc/interpreter/macros.texi \
-  doc/interpreter/mk-doc-cache.pl \
-  doc/interpreter/mkcontrib.awk \
-  doc/interpreter/munge-texi.pl \
+  %reldir%/config-images.sh \
+  %reldir%/contributors.in \
+  %reldir%/doc-cache \
+  %reldir%/genpropdoc.m \
+  %reldir%/graphics_properties.mk \
+  %reldir%/images \
+  %reldir%/images.awk \
+  %reldir%/images.mk \
+  %reldir%/macros.texi \
+  %reldir%/mk-doc-cache.pl \
+  %reldir%/mkcontrib.awk \
+  %reldir%/munge-texi.pl \
   $(DOC_IMAGES) \
   $(DOC_IMAGES_SRC) \
   $(LOGOS) \
@@ -346,11 +346,11 @@
 ## The TeX software suite is used to create both PDF and PS output formats.
 ## In order to avoid race conditions between simultaneous TeX commands, the
 ## PDF and PS builds are forced to run serially through the following rule.
-doc/interpreter/octave.pdf: doc/interpreter/octave.ps
+%reldir%/octave.pdf: %reldir%/octave.ps
 
 endif
 
-DIRSTAMP_FILES += doc/interpreter/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 ## The doc-cache file can be built without TeX but it does require
 ## makeinfo, but that is needed to display function docstrings at the
@@ -358,26 +358,26 @@
 ## to display docstrings at the command line.
 
 doc_MAINTAINERCLEANFILES += \
-  doc/interpreter/doc-cache
+  %reldir%/doc-cache
 
 octetc_DATA += \
-  doc/interpreter/doc-cache \
-  doc/interpreter/macros.texi
+  %reldir%/doc-cache \
+  %reldir%/macros.texi
 
-doc/interpreter/doc-cache: $(DOCSTRING_FILES) doc/interpreter/mk-doc-cache.pl | $(OCTAVE_INTERPRETER_TARGETS) doc/interpreter/$(octave_dirstamp)
+%reldir%/doc-cache: $(DOCSTRING_FILES) %reldir%/mk-doc-cache.pl | $(OCTAVE_INTERPRETER_TARGETS) %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(PERL) $(srcdir)/doc/interpreter/mk-doc-cache.pl $(srcdir) $(srcdir)/doc/interpreter/macros.texi $(DOCSTRING_FILES) > $@-t && \
+	$(PERL) $(srcdir)/%reldir%/mk-doc-cache.pl $(srcdir) $(srcdir)/%reldir%/macros.texi $(DOCSTRING_FILES) > $@-t && \
 	mv $@-t $@
 
-doc/interpreter/undocumented_list:
+%reldir%/undocumented_list:
 	rm -f $@-t $@
 	-cd $(srcdir)/doc/interpreter; $(PERL) ./doccheck/mk_undocumented_list > $(@F)-t
 	mv $@-t $@
-.PHONY: doc/interpreter/undocumented_list
+.PHONY: %reldir%/undocumented_list
 
 SPELLCHECK_FILES = $(MUNGED_TEXI_SRC:.texi=.scheck)
 
-%.scheck: %.texi | doc/interpreter/$(octave_dirstamp)
+%.scheck: %.texi | %reldir%/$(octave_dirstamp)
 	cd $(srcdir)/doc/interpreter; ./doccheck/spellcheck $(<F) > $(@F)-t
 	mv $@-t $@
 	[ -s $@ ] || rm -f $@
@@ -395,5 +395,5 @@
 .PHONY: spellcheck
 
 doc-interpreter-clean:
-	rm -rf doc/interpreter/octave.t2d
-	rm -rf doc/interpreter/octave.t2p
+	rm -rf %reldir%/octave.t2d
+	rm -rf %reldir%/octave.t2p
--- a/doc/liboctave/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/doc/liboctave/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,51 +1,51 @@
 if AMCOND_BUILD_DOCS
 
 liboctave_TEXINFOS = \
-  doc/liboctave/array.texi \
-  doc/liboctave/bugs.texi \
-  doc/liboctave/cp-idx.texi \
-  doc/liboctave/dae.texi \
-  doc/liboctave/diffeq.texi \
-  doc/liboctave/error.texi \
-  doc/liboctave/factor.texi \
-  doc/liboctave/fn-idx.texi \
-  doc/liboctave/gpl.texi \
-  doc/liboctave/install.texi \
-  doc/liboctave/intro.texi \
-  doc/liboctave/matvec.texi \
-  doc/liboctave/nleqn.texi \
-  doc/liboctave/nlfunc.texi \
-  doc/liboctave/ode.texi \
-  doc/liboctave/optim.texi \
-  doc/liboctave/preface.texi \
-  doc/liboctave/quad.texi \
-  doc/liboctave/range.texi
+  %reldir%/array.texi \
+  %reldir%/bugs.texi \
+  %reldir%/cp-idx.texi \
+  %reldir%/dae.texi \
+  %reldir%/diffeq.texi \
+  %reldir%/error.texi \
+  %reldir%/factor.texi \
+  %reldir%/fn-idx.texi \
+  %reldir%/gpl.texi \
+  %reldir%/install.texi \
+  %reldir%/intro.texi \
+  %reldir%/matvec.texi \
+  %reldir%/nleqn.texi \
+  %reldir%/nlfunc.texi \
+  %reldir%/ode.texi \
+  %reldir%/optim.texi \
+  %reldir%/preface.texi \
+  %reldir%/quad.texi \
+  %reldir%/range.texi
 
 info_TEXINFOS += \
-  doc/liboctave/liboctave.texi
+  %reldir%/liboctave.texi
 
-INFO_DEPS += $(srcdir)/doc/liboctave/liboctave.info
-DVIS += doc/liboctave/liboctave.dvi
-PDFS += doc/liboctave/liboctave.pdf
-PSS += doc/liboctave/liboctave.ps
-HTMLS += doc/liboctave/liboctave.html
+INFO_DEPS += $(srcdir)/%reldir%/liboctave.info
+DVIS += %reldir%/liboctave.dvi
+PDFS += %reldir%/liboctave.pdf
+PSS += %reldir%/liboctave.ps
+HTMLS += %reldir%/liboctave.html
 
-doc/liboctave/liboctave.dvi: doc/liboctave/liboctave.texi $(srcdir)/doc/liboctave/version-liboctave.texi | doc/liboctave/$(am__dirstamp)
+%reldir%/liboctave.dvi: %reldir%/liboctave.texi $(srcdir)/%reldir%/version-liboctave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/liboctave -I $(srcdir)/doc/liboctave' \
 	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
-	`test -f 'doc/liboctave/liboctave.texi' || echo '$(srcdir)/'`doc/liboctave/liboctave.texi
+	`test -f '%reldir%/liboctave.texi' || echo '$(srcdir)/'`%reldir%/liboctave.texi
 
-doc/liboctave/liboctave.pdf: doc/liboctave/liboctave.texi $(srcdir)/doc/liboctave/version-liboctave.texi | doc/liboctave/$(am__dirstamp)
+%reldir%/liboctave.pdf: %reldir%/liboctave.texi $(srcdir)/%reldir%/version-liboctave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
 	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/liboctave -I $(srcdir)/doc/liboctave' \
 	$(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
-	`test -f 'doc/liboctave/liboctave.texi' || echo '$(srcdir)/'`doc/liboctave/liboctave.texi
+	`test -f '%reldir%/liboctave.texi' || echo '$(srcdir)/'`%reldir%/liboctave.texi
 
-doc/liboctave/liboctave.html: doc/liboctave/liboctave.texi $(srcdir)/doc/liboctave/version-liboctave.texi | doc/liboctave/$(am__dirstamp)
+%reldir%/liboctave.html: %reldir%/liboctave.texi $(srcdir)/%reldir%/version-liboctave.texi | %reldir%/$(am__dirstamp)
 	$(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
 	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc/liboctave -I $(srcdir)/doc/liboctave \
-	 -o $(@:.html=.htp) `test -f 'doc/liboctave/liboctave.texi' || echo '$(srcdir)/'`doc/liboctave/liboctave.texi; \
+	 -o $(@:.html=.htp) `test -f '%reldir%/liboctave.texi' || echo '$(srcdir)/'`%reldir%/liboctave.texi; \
 	then \
 	  rm -rf $@ && mv $(@:.html=.htp) $@; \
 	else \
@@ -53,28 +53,28 @@
 	fi
 
 DOC_TARGETS += \
-  $(srcdir)/doc/liboctave/liboctave.info \
-  doc/liboctave/liboctave.ps \
-  doc/liboctave/liboctave.pdf \
-  doc/liboctave/liboctave.html
+  $(srcdir)/%reldir%/liboctave.info \
+  %reldir%/liboctave.ps \
+  %reldir%/liboctave.pdf \
+  %reldir%/liboctave.html
 
 doc_EXTRA_DIST += \
   $(liboctave_TEXINFOS) \
-  $(srcdir)/doc/liboctave/liboctave.info \
-  doc/liboctave/liboctave.dvi \
-  doc/liboctave/liboctave.ps \
-  doc/liboctave/liboctave.pdf \
-  doc/liboctave/liboctave.html
+  $(srcdir)/%reldir%/liboctave.info \
+  %reldir%/liboctave.dvi \
+  %reldir%/liboctave.ps \
+  %reldir%/liboctave.pdf \
+  %reldir%/liboctave.html
 
 ## The TeX software suite is used to create both PDF and PS output formats.
 ## In order to avoid race conditions between simultaneous TeX commands, the
 ## PDF and PS builds are forced to run serially through the following rule.
-doc/liboctave/liboctave.pdf: doc/liboctave/liboctave.ps
+%reldir%/liboctave.pdf: %reldir%/liboctave.ps
 
-DIRSTAMP_FILES += doc/liboctave/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 endif
 
 doc-liboctave-clean:
-	rm -rf doc/liboctave/liboctave.t2d
-	rm -rf doc/liboctave/liboctave.t2p
+	rm -rf %reldir%/liboctave.t2d
+	rm -rf %reldir%/liboctave.t2p
--- a/doc/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/doc/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,14 +1,14 @@
-doc_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-doc_CLEANFILES =
-doc_DISTCLEANFILES =
-doc_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
-TEXINPUTS := $(PATH_SEPARATOR)$(abs_top_srcdir)/doc/interpreter$(PATH_SEPARATOR)$(PATH_SEPARATOR)$(abs_top_builddir)/doc/interpreter$(PATH_SEPARATOR)$(abs_top_builddir)/doc/.texmf-var//$(PATH_SEPARATOR)$(TEXINPUTS)$(PATH_SEPARATOR)
+TEXINPUTS := $(PATH_SEPARATOR)$(abs_top_srcdir)/%reldir%/interpreter$(PATH_SEPARATOR)$(PATH_SEPARATOR)$(abs_top_builddir)/%reldir%/interpreter$(PATH_SEPARATOR)$(abs_top_builddir)/%reldir%/.texmf-var//$(PATH_SEPARATOR)$(TEXINPUTS)$(PATH_SEPARATOR)
 
 TEXMFCNF := $(PATH_SEPARATOR)$(abs_top_srcdir)/doc$(PATH_SEPARATOR)$(abs_top_builddir)/doc$(PATH_SEPARATOR)$(TEXMFCNF)$(PATH_SEPARATOR)
 
-TEXMFVAR := $(abs_top_builddir)/doc/.texmf-var
+TEXMFVAR := $(abs_top_builddir)/%reldir%/.texmf-var
 
 export TEXINPUTS
 export TEXMFCNF
@@ -38,10 +38,10 @@
 PSS =
 HTMLS =
 
-include doc/doxyhtml/module.mk
-include doc/interpreter/module.mk
-include doc/liboctave/module.mk
-include doc/refcard/module.mk
+include %reldir%/doxyhtml/module.mk
+include %reldir%/interpreter/module.mk
+include %reldir%/liboctave/module.mk
+include %reldir%/refcard/module.mk
 
 if AMCOND_BUILD_DOCS
 
@@ -50,23 +50,23 @@
 ## also depends on the DVI file and somehow the rules are invoked
 ## twice.  Is that a bug in automake or make or what?
 
-doc_EXTRA_DIST += doc/texmf.cnf
+%canon_reldir%_EXTRA_DIST += %reldir%/texmf.cnf
 
 endif
 
-EXTRA_DIST += $(doc_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-CLEANFILES += $(doc_CLEANFILES)
-DISTCLEANFILES += $(doc_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(doc_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 doc-clean: doc-interpreter-clean doc-liboctave-clean
-	rm -f $(doc_CLEANFILES)
-	rm -rf doc/.texmf-var
+	rm -f $(%canon_reldir%_CLEANFILES)
+	rm -rf %reldir%/.texmf-var
 
 doc-distclean: doc-clean
-	rm -f $(doc_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 doc-maintainer-clean: doc-distclean
-	rm -f $(doc_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
 	rm -rf $(DVIS) $(HTMLS) $(PDFS) $(PSS)
--- a/doc/refcard/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/doc/refcard/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,25 +1,25 @@
 if AMCOND_BUILD_DOCS
 
 refcard_TEX_SRC = \
-  doc/refcard/refcard.tex \
-  doc/refcard/refcard-a4.tex \
-  doc/refcard/refcard-legal.tex \
-  doc/refcard/refcard-letter.tex
+  %reldir%/refcard.tex \
+  %reldir%/refcard-a4.tex \
+  %reldir%/refcard-legal.tex \
+  %reldir%/refcard-letter.tex
 
 refcard_DVI = \
-  doc/refcard/refcard-a4.dvi \
-  doc/refcard/refcard-legal.dvi \
-  doc/refcard/refcard-letter.dvi
+  %reldir%/refcard-a4.dvi \
+  %reldir%/refcard-legal.dvi \
+  %reldir%/refcard-letter.dvi
 
 refcard_PDF = \
-  doc/refcard/refcard-a4.pdf \
-  doc/refcard/refcard-legal.pdf \
-  doc/refcard/refcard-letter.pdf
+  %reldir%/refcard-a4.pdf \
+  %reldir%/refcard-legal.pdf \
+  %reldir%/refcard-letter.pdf
 
 refcard_PS = \
-  doc/refcard/refcard-letter.ps \
-  doc/refcard/refcard-a4.ps \
-  doc/refcard/refcard-legal.ps
+  %reldir%/refcard-letter.ps \
+  %reldir%/refcard-a4.ps \
+  %reldir%/refcard-legal.ps
 
 refcard_FORMATTED = \
   $(refcard_DVI) \
@@ -29,30 +29,30 @@
 DOC_TARGETS += \
   $(refcard_FORMATTED)
 
-doc/refcard/refcard-a4.pdf: doc/refcard/refcard.tex
-doc/refcard/refcard-a4.dvi: doc/refcard/refcard.tex
-doc/refcard/refcard-a4.ps: doc/refcard/refcard-a4.dvi
+%reldir%/refcard-a4.pdf: %reldir%/refcard.tex
+%reldir%/refcard-a4.dvi: %reldir%/refcard.tex
+%reldir%/refcard-a4.ps: %reldir%/refcard-a4.dvi
 	-$(AM_V_DVIPS)$(DVIPS) $(AM_V_texinfo) -T 297mm,210mm -o $@ $<
 
-doc/refcard/refcard-legal.pdf: doc/refcard/refcard.tex
-doc/refcard/refcard-legal.dvi: doc/refcard/refcard.tex
-doc/refcard/refcard-legal.ps: doc/refcard/refcard-legal.dvi
+%reldir%/refcard-legal.pdf: %reldir%/refcard.tex
+%reldir%/refcard-legal.dvi: %reldir%/refcard.tex
+%reldir%/refcard-legal.ps: %reldir%/refcard-legal.dvi
 	-$(AM_V_DVIPS)$(DVIPS) $(AM_V_texinfo) -T 14in,8.5in -o $@ $<
 
-doc/refcard/refcard-letter.pdf: doc/refcard/refcard.tex
-doc/refcard/refcard-letter.dvi: doc/refcard/refcard.tex
-doc/refcard/refcard-letter.ps: doc/refcard/refcard-letter.dvi
+%reldir%/refcard-letter.pdf: %reldir%/refcard.tex
+%reldir%/refcard-letter.dvi: %reldir%/refcard.tex
+%reldir%/refcard-letter.ps: %reldir%/refcard-letter.dvi
 	-$(AM_V_DVIPS)$(DVIPS) $(AM_V_texinfo) -T 11in,8.5in -o $@ $<
 
 $(srcdir)/doc/interpreter/images.mk: $(srcdir)/doc/interpreter/config-images.sh $(srcdir)/doc/interpreter/images.awk $(srcdir)/doc/interpreter/images
 	$(AM_V_GEN)$(SHELL) $(srcdir)/doc/interpreter/config-images.sh $(top_srcdir)
 
-$(refcard_DVI) : %.dvi : %.tex | doc/refcard/$(octave_dirstamp)
+$(refcard_DVI) : %.dvi : %.tex | %reldir%/$(octave_dirstamp)
 	-$(AM_V_TEX)cd $(@D) && \
 	TEXINPUTS="$(abs_top_srcdir)/doc/refcard:$(TEXINPUTS):" \
 	$(TEX) $(<F) $(AM_V_texidevnull)
 
-$(refcard_PDF) : %.pdf : %.tex | doc/refcard/$(octave_dirstamp)
+$(refcard_PDF) : %.pdf : %.tex | %reldir%/$(octave_dirstamp)
 	-$(AM_V_PDFTEX)cd $(@D) && \
 	TEXINPUTS="$(abs_top_srcdir)/doc/refcard:$(TEXINPUTS):" \
 	$(PDFTEX) $(<F) $(AM_V_texidevnull)
@@ -62,13 +62,13 @@
   $(refcard_TEX_SRC)
 
 doc_CLEANFILES += \
-  doc/refcard/refcard-a4.log \
-  doc/refcard/refcard-legal.log \
-  doc/refcard/refcard-letter.log
+  %reldir%/refcard-a4.log \
+  %reldir%/refcard-legal.log \
+  %reldir%/refcard-letter.log
 
 doc_MAINTAINERCLEANFILES += \
   $(refcard_FORMATTED)
 
-DIRSTAMP_FILES += doc/refcard/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 endif
--- a/etc/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/etc/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,36 +1,36 @@
-etc_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-etc_CLEANFILES =
-etc_DISTCLEANFILES =
-etc_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
-etc_EXTRA_DIST += \
-  etc/NEWS.1 \
-  etc/NEWS.2 \
-  etc/NEWS.3 \
-  etc/PROJECTS \
-  etc/README.Cygwin \
-  etc/README.Linux \
-  etc/README.MacOS \
-  etc/README.MinGW \
-  etc/README.Windows \
-  etc/README.gnuplot \
-  etc/README.kpathsea \
-  etc/gdbinit
+%canon_reldir%_EXTRA_DIST += \
+  %reldir%/NEWS.1 \
+  %reldir%/NEWS.2 \
+  %reldir%/NEWS.3 \
+  %reldir%/PROJECTS \
+  %reldir%/README.Cygwin \
+  %reldir%/README.Linux \
+  %reldir%/README.MacOS \
+  %reldir%/README.MinGW \
+  %reldir%/README.Windows \
+  %reldir%/README.gnuplot \
+  %reldir%/README.kpathsea \
+  %reldir%/gdbinit
 
-etc_EXTRA_DIST += \
-  etc/OLD-ChangeLogs/ChangeLog \
-  etc/OLD-ChangeLogs/ChangeLog.1 \
-  etc/OLD-ChangeLogs/doc-ChangeLog \
-  etc/OLD-ChangeLogs/libcruft-ChangeLog \
-  etc/OLD-ChangeLogs/liboctave-ChangeLog \
-  etc/OLD-ChangeLogs/scripts-ChangeLog \
-  etc/OLD-ChangeLogs/src-ChangeLog \
-  etc/OLD-ChangeLogs/test-ChangeLog
+%canon_reldir%_EXTRA_DIST += \
+  %reldir%/OLD-ChangeLogs/ChangeLog \
+  %reldir%/OLD-ChangeLogs/ChangeLog.1 \
+  %reldir%/OLD-ChangeLogs/doc-ChangeLog \
+  %reldir%/OLD-ChangeLogs/libcruft-ChangeLog \
+  %reldir%/OLD-ChangeLogs/liboctave-ChangeLog \
+  %reldir%/OLD-ChangeLogs/scripts-ChangeLog \
+  %reldir%/OLD-ChangeLogs/src-ChangeLog \
+  %reldir%/OLD-ChangeLogs/test-ChangeLog
 
 icon_IMAGE_FILES = \
-  etc/icons/octave-logo.svg \
-  etc/icons/octave-sombrero.png
+  %reldir%/icons/octave-logo.svg \
+  %reldir%/icons/octave-sombrero.png
 
 icon_PNG_SIZES = \
   512 \
@@ -43,52 +43,52 @@
   22 \
   16
 
-BUILT_PNG_ICONS = $(patsubst %,etc/icons/octave-logo-%.png,$(icon_PNG_SIZES))
+BUILT_PNG_ICONS = $(patsubst %,%reldir%/icons/octave-logo-%.png,$(icon_PNG_SIZES))
 
 WINDOWS_PNG_ICONS = $(filter %-16.png %-32.png %-48.png %-256.png,$(BUILT_PNG_ICONS))
 
 BUILT_ICONS = \
   $(BUILT_PNG_ICONS) \
-  etc/icons/octave-logo.ico
+  %reldir%/icons/octave-logo.ico
 
-etc_EXTRA_DIST += \
+%canon_reldir%_EXTRA_DIST += \
   $(BUILT_ICONS) \
   $(icon_IMAGE_FILES) \
-  etc/icons/octave.appdata.xml.in \
-  etc/icons/octave.desktop.in \
-  etc/icons/octave_branding_samples.svg
+  %reldir%/icons/octave.appdata.xml.in \
+  %reldir%/icons/octave.desktop.in \
+  %reldir%/icons/octave_branding_samples.svg
 
 image_DATA += \
   $(icon_IMAGE_FILES) \
-  etc/icons/octave-logo.ico
+  %reldir%/icons/octave-logo.ico
 
 VENDOR = www.octave.org
 
 DIRSTAMP_FILES += \
-  etc/icons/$(octave_dirstamp)
+  %reldir%/icons/$(octave_dirstamp)
 
 all-local: all-icons
 
-all-icons: etc/icons/octave.appdata.xml etc/icons/octave.desktop $(BUILT_ICONS)
+all-icons: %reldir%/icons/octave.appdata.xml %reldir%/icons/octave.desktop $(BUILT_ICONS)
 
-etc/icons/octave.appdata.xml: etc/icons/octave.appdata.xml.in | etc/icons/$(octave_dirstamp)
+%reldir%/icons/octave.appdata.xml: %reldir%/icons/octave.appdata.xml.in | %reldir%/icons/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(SED) < $< > $@-t \
 	  -e "s|%OCTAVE_DESKTOP_FILE%|${VENDOR}-octave.desktop|" && \
 	mv $@-t $@
 
-etc/icons/octave.desktop: etc/icons/octave.desktop.in | etc/icons/$(octave_dirstamp)
+%reldir%/icons/octave.desktop: %reldir%/icons/octave.desktop.in | %reldir%/icons/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(SED) < $< > $@-t \
 	  -e "s|%OCTAVE_PREFIX%|${prefix}|" && \
 	mv $@-t $@
 
-$(BUILT_PNG_ICONS): etc/icons/octave-logo.svg | etc/icons/$(octave_dirstamp)
+$(BUILT_PNG_ICONS): %reldir%/icons/octave-logo.svg | %reldir%/icons/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(RSVG_CONVERT) -w $(lastword $(subst -, ,$(patsubst %.png,%,$@))) $< > $@-t && \
 	mv $@-t $@
 
-etc/icons/octave-logo.ico: $(WINDOWS_PNG_ICONS) | etc/icons/$(octave_dirstamp)
+%reldir%/icons/octave-logo.ico: $(WINDOWS_PNG_ICONS) | %reldir%/icons/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(ICOTOOL) --create --raw  $(WINDOWS_PNG_ICONS) > $@-t && \
 	mv $@-t $@
@@ -100,7 +100,7 @@
 install-icons:
 	-if test -n "$(DESKTOP_FILE_INSTALL)"; then \
 	  $(DESKTOP_FILE_INSTALL) --dir=$(DESTDIR)$(datadir)/applications \
-	    --vendor $(VENDOR) etc/icons/octave.desktop; \
+	    --vendor $(VENDOR) %reldir%/icons/octave.desktop; \
 	fi
 	for f in $(BUILT_PNG_ICONS); do \
 	  size=`echo $$f | $(SED) -n -e "s/.*-\([0-9]\+\)\.png/\1/p"`; \
@@ -109,9 +109,9 @@
 	  $(INSTALL_DATA) "$$d$$f" $(DESTDIR)$(datadir)/icons/hicolor/$${size}x$${size}/apps/octave.png; \
 	done
 	$(MKDIR_P) $(DESTDIR)$(datadir)/icons/hicolor/scalable/apps
-	$(INSTALL_DATA) $(srcdir)/etc/icons/octave-logo.svg $(DESTDIR)$(datadir)/icons/hicolor/scalable/apps/octave.svg
+	$(INSTALL_DATA) $(srcdir)/%reldir%/icons/octave-logo.svg $(DESTDIR)$(datadir)/icons/hicolor/scalable/apps/octave.svg
 	$(MKDIR_P) $(DESTDIR)$(datadir)/appdata
-	$(INSTALL_DATA) etc/icons/octave.appdata.xml $(DESTDIR)$(datadir)/appdata/$(VENDOR)-octave.appdata.xml
+	$(INSTALL_DATA) %reldir%/icons/octave.appdata.xml $(DESTDIR)$(datadir)/appdata/$(VENDOR)-octave.appdata.xml
 
 uninstall-icons:
 	if test -n "$(DESKTOP_FILE_INSTALL)"; then \
@@ -124,24 +124,24 @@
 	rm -f $(DESTDIR)$(datadir)/icons/hicolor/scalable/apps/octave.svg
 	rm -f $(DESTDIR)$(datadir)/appdata/$(VENDOR)-octave.appdata.xml
 
-EXTRA_DIST += $(etc_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-etc_CLEANFILES += \
-  etc/icons/octave.appdata.xml \
-  etc/icons/octave.desktop
+%canon_reldir%_CLEANFILES += \
+  %reldir%/icons/octave.appdata.xml \
+  %reldir%/icons/octave.desktop
 
-etc_MAINTAINERCLEANFILES += \
+%canon_reldir%_MAINTAINERCLEANFILES += \
   $(BUILT_ICONS)
 
-CLEANFILES += $(etc_CLEANFILES)
-DISTCLEANFILES += $(etc_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(etc_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 etc-clean:
-	rm -f $(etc_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 etc-distclean: etc-clean
-	rm -f $(etc_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 etc-maintainer-clean: etc-distclean
-	rm -f $(etc_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/examples/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/examples/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,84 +1,84 @@
-examples_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-examples_CLEANFILES =
-examples_DISTCLEANFILES =
-examples_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
-examples_data_SRC = \
-   examples/data/penny.mat
+%canon_reldir%_data_SRC = \
+   %reldir%/data/penny.mat
 
 octdata_DATA += \
-  $(examples_data_SRC)
+  $(%canon_reldir%_data_SRC)
 
-examples_code_SRC = \
-  examples/code/@FIRfilter/FIRfilter.m \
-  examples/code/@FIRfilter/FIRfilter_aggregation.m \
-  examples/code/@FIRfilter/display.m \
-  examples/code/@FIRfilter/subsasgn.m \
-  examples/code/@FIRfilter/subsref.m \
-  examples/code/@polynomial/disp.m \
-  examples/code/@polynomial/double.m \
-  examples/code/@polynomial/end.m \
-  examples/code/@polynomial/get.m \
-  examples/code/@polynomial/mtimes.m \
-  examples/code/@polynomial/numel.m \
-  examples/code/@polynomial/plot.m \
-  examples/code/@polynomial/polynomial.m \
-  examples/code/@polynomial/polynomial_superiorto.m \
-  examples/code/@polynomial/polyval.m \
-  examples/code/@polynomial/roots.m \
-  examples/code/@polynomial/set.m \
-  examples/code/@polynomial/subsasgn.m \
-  examples/code/@polynomial/subsref.m \
-  examples/code/addtwomatrices.cc \
-  examples/code/celldemo.cc \
-  examples/code/embedded.cc \
-  examples/code/fortrandemo.cc \
-  examples/code/fortransub.f \
-  examples/code/funcdemo.cc \
-  examples/code/globaldemo.cc \
-  examples/code/helloworld.cc \
-  examples/code/make_int.cc \
-  examples/code/mex_demo.c \
-  examples/code/mycell.c \
-  examples/code/myfeval.c \
-  examples/code/myfevalf.f \
-  examples/code/myfunc.c \
-  examples/code/myhello.c \
-  examples/code/mypow2.c \
-  examples/code/myprop.c \
-  examples/code/myset.c \
-  examples/code/mysparse.c \
-  examples/code/mystring.c \
-  examples/code/mystruct.c \
-  examples/code/oct_demo.cc \
-  examples/code/oregonator.cc \
-  examples/code/oregonator.m \
-  examples/code/paramdemo.cc \
-  examples/code/polynomial2.m \
-  examples/code/standalone.cc \
-  examples/code/standalonebuiltin.cc \
-  examples/code/stringdemo.cc \
-  examples/code/structdemo.cc \
-  examples/code/unwinddemo.cc
+%canon_reldir%_code_SRC = \
+  %reldir%/code/@FIRfilter/FIRfilter.m \
+  %reldir%/code/@FIRfilter/FIRfilter_aggregation.m \
+  %reldir%/code/@FIRfilter/display.m \
+  %reldir%/code/@FIRfilter/subsasgn.m \
+  %reldir%/code/@FIRfilter/subsref.m \
+  %reldir%/code/@polynomial/disp.m \
+  %reldir%/code/@polynomial/double.m \
+  %reldir%/code/@polynomial/end.m \
+  %reldir%/code/@polynomial/get.m \
+  %reldir%/code/@polynomial/mtimes.m \
+  %reldir%/code/@polynomial/numel.m \
+  %reldir%/code/@polynomial/plot.m \
+  %reldir%/code/@polynomial/polynomial.m \
+  %reldir%/code/@polynomial/polynomial_superiorto.m \
+  %reldir%/code/@polynomial/polyval.m \
+  %reldir%/code/@polynomial/roots.m \
+  %reldir%/code/@polynomial/set.m \
+  %reldir%/code/@polynomial/subsasgn.m \
+  %reldir%/code/@polynomial/subsref.m \
+  %reldir%/code/addtwomatrices.cc \
+  %reldir%/code/celldemo.cc \
+  %reldir%/code/embedded.cc \
+  %reldir%/code/fortrandemo.cc \
+  %reldir%/code/fortransub.f \
+  %reldir%/code/funcdemo.cc \
+  %reldir%/code/globaldemo.cc \
+  %reldir%/code/helloworld.cc \
+  %reldir%/code/make_int.cc \
+  %reldir%/code/mex_demo.c \
+  %reldir%/code/mycell.c \
+  %reldir%/code/myfeval.c \
+  %reldir%/code/myfevalf.f \
+  %reldir%/code/myfunc.c \
+  %reldir%/code/myhello.c \
+  %reldir%/code/mypow2.c \
+  %reldir%/code/myprop.c \
+  %reldir%/code/myset.c \
+  %reldir%/code/mysparse.c \
+  %reldir%/code/mystring.c \
+  %reldir%/code/mystruct.c \
+  %reldir%/code/oct_demo.cc \
+  %reldir%/code/oregonator.cc \
+  %reldir%/code/oregonator.m \
+  %reldir%/code/paramdemo.cc \
+  %reldir%/code/polynomial2.m \
+  %reldir%/code/standalone.cc \
+  %reldir%/code/standalonebuiltin.cc \
+  %reldir%/code/stringdemo.cc \
+  %reldir%/code/structdemo.cc \
+  %reldir%/code/unwinddemo.cc
 
-examples_EXTRA_DIST += \
-  $(examples_data_SRC) \
-  $(examples_code_SRC) \
-  examples/code/COPYING \
-  examples/module.mk
+%canon_reldir%_EXTRA_DIST += \
+  $(%canon_reldir%_data_SRC) \
+  $(%canon_reldir%_code_SRC) \
+  %reldir%/code/COPYING \
+  %reldir%/module.mk
 
-EXTRA_DIST += $(examples_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-CLEANFILES += $(examples_CLEANFILES)
-DISTCLEANFILES += $(examples_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(examples_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 examples-clean:
-	rm -f $(examples_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 examples-distclean: examples-clean
-	rm -f $(examples_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 examples-maintainer-clean: examples-distclean
-	rm -f $(examples_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/libgui/graphics/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libgui/graphics/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,132 +1,132 @@
 if AMCOND_BUILD_QT_GRAPHICS
 
 OCTAVE_GUI_GRAPHICS_MOC = \
-  libgui/graphics/moc-annotation-dialog.cc \
-  libgui/graphics/moc-Backend.cc \
-  libgui/graphics/moc-ButtonControl.cc \
-  libgui/graphics/moc-ButtonGroup.cc \
-  libgui/graphics/moc-ContextMenu.cc \
-  libgui/graphics/moc-EditControl.cc \
-  libgui/graphics/moc-Figure.cc \
-  libgui/graphics/moc-FigureWindow.cc \
-  libgui/graphics/moc-ListBoxControl.cc \
-  libgui/graphics/moc-Menu.cc \
-  libgui/graphics/moc-MouseModeActionGroup.cc \
-  libgui/graphics/moc-Object.cc \
-  libgui/graphics/moc-ObjectFactory.cc \
-  libgui/graphics/moc-ObjectProxy.cc \
-  libgui/graphics/moc-PopupMenuControl.cc \
-  libgui/graphics/moc-PushTool.cc \
-  libgui/graphics/moc-SliderControl.cc \
-  libgui/graphics/moc-TextEdit.cc \
-  libgui/graphics/moc-ToggleTool.cc \
-  libgui/graphics/moc-ToolBar.cc
+  %reldir%/moc-annotation-dialog.cc \
+  %reldir%/moc-Backend.cc \
+  %reldir%/moc-ButtonControl.cc \
+  %reldir%/moc-ButtonGroup.cc \
+  %reldir%/moc-ContextMenu.cc \
+  %reldir%/moc-EditControl.cc \
+  %reldir%/moc-Figure.cc \
+  %reldir%/moc-FigureWindow.cc \
+  %reldir%/moc-ListBoxControl.cc \
+  %reldir%/moc-Menu.cc \
+  %reldir%/moc-MouseModeActionGroup.cc \
+  %reldir%/moc-Object.cc \
+  %reldir%/moc-ObjectFactory.cc \
+  %reldir%/moc-ObjectProxy.cc \
+  %reldir%/moc-PopupMenuControl.cc \
+  %reldir%/moc-PushTool.cc \
+  %reldir%/moc-SliderControl.cc \
+  %reldir%/moc-TextEdit.cc \
+  %reldir%/moc-ToggleTool.cc \
+  %reldir%/moc-ToolBar.cc
 
-$(OCTAVE_GUI_GRAPHICS_MOC): | libgui/graphics/$(octave_dirstamp)
+$(OCTAVE_GUI_GRAPHICS_MOC): | %reldir%/$(octave_dirstamp)
 
 DIRSTAMP_FILES += \
-  libgui/graphics/$(octave_dirstamp)
+  %reldir%/$(octave_dirstamp)
 
 octave_gui_MOC += \
   $(OCTAVE_GUI_GRAPHICS_MOC)
 
 octave_gui_graphics_UI = \
-  libgui/graphics/annotation-dialog.ui
+  %reldir%/annotation-dialog.ui
 
-octave_gui_graphics_UI_H = $(patsubst libgui/graphics/%.ui, libgui/graphics/ui-%.h, $(octave_gui_graphics_UI))
+octave_gui_graphics_UI_H = $(patsubst %reldir%/%.ui, %reldir%/ui-%.h, $(octave_gui_graphics_UI))
 
-$(octave_gui_graphics_UI_H): | libgui/graphics/$(octave_dirstamp)
+$(octave_gui_graphics_UI_H): | %reldir%/$(octave_dirstamp)
 
 BUILT_SOURCES += $(octave_gui_graphics_UI_H)
 
-octave_gui_graphics_RC = libgui/graphics/qrc-qthandles.cc
+octave_gui_graphics_RC = %reldir%/qrc-qthandles.cc
 
-$(octave_gui_graphics_RC): | libgui/graphics/$(octave_dirstamp)
+$(octave_gui_graphics_RC): | %reldir%/$(octave_dirstamp)
 
 noinst_HEADERS += \
-  libgui/graphics/__init_qt__.h \
-  libgui/graphics/annotation-dialog.h \
-  libgui/graphics/Backend.h \
-  libgui/graphics/BaseControl.h \
-  libgui/graphics/ButtonControl.h \
-  libgui/graphics/ButtonGroup.h \
-  libgui/graphics/Canvas.h \
-  libgui/graphics/CheckBoxControl.h \
-  libgui/graphics/Container.h \
-  libgui/graphics/ContextMenu.h \
-  libgui/graphics/EditControl.h \
-  libgui/graphics/Figure.h \
-  libgui/graphics/FigureWindow.h \
-  libgui/graphics/GenericEventNotify.h \
-  libgui/graphics/GLCanvas.h \
-  libgui/graphics/KeyMap.h \
-  libgui/graphics/ListBoxControl.h \
-  libgui/graphics/Logger.h \
-  libgui/graphics/Menu.h \
-  libgui/graphics/MenuContainer.h \
-  libgui/graphics/MouseModeActionGroup.h \
-  libgui/graphics/Object.h \
-  libgui/graphics/ObjectFactory.h \
-  libgui/graphics/ObjectProxy.h \
-  libgui/graphics/Panel.h \
-  libgui/graphics/PopupMenuControl.h \
-  libgui/graphics/PushButtonControl.h \
-  libgui/graphics/PushTool.h \
-  libgui/graphics/QtHandlesUtils.h \
-  libgui/graphics/RadioButtonControl.h \
-  libgui/graphics/SliderControl.h \
-  libgui/graphics/TextControl.h \
-  libgui/graphics/TextEdit.h \
-  libgui/graphics/ToggleButtonControl.h \
-  libgui/graphics/ToggleTool.h \
-  libgui/graphics/ToolBar.h \
-  libgui/graphics/ToolBarButton.h \
-  libgui/graphics/gl-select.h \
+  %reldir%/__init_qt__.h \
+  %reldir%/annotation-dialog.h \
+  %reldir%/Backend.h \
+  %reldir%/BaseControl.h \
+  %reldir%/ButtonControl.h \
+  %reldir%/ButtonGroup.h \
+  %reldir%/Canvas.h \
+  %reldir%/CheckBoxControl.h \
+  %reldir%/Container.h \
+  %reldir%/ContextMenu.h \
+  %reldir%/EditControl.h \
+  %reldir%/Figure.h \
+  %reldir%/FigureWindow.h \
+  %reldir%/GenericEventNotify.h \
+  %reldir%/GLCanvas.h \
+  %reldir%/KeyMap.h \
+  %reldir%/ListBoxControl.h \
+  %reldir%/Logger.h \
+  %reldir%/Menu.h \
+  %reldir%/MenuContainer.h \
+  %reldir%/MouseModeActionGroup.h \
+  %reldir%/Object.h \
+  %reldir%/ObjectFactory.h \
+  %reldir%/ObjectProxy.h \
+  %reldir%/Panel.h \
+  %reldir%/PopupMenuControl.h \
+  %reldir%/PushButtonControl.h \
+  %reldir%/PushTool.h \
+  %reldir%/QtHandlesUtils.h \
+  %reldir%/RadioButtonControl.h \
+  %reldir%/SliderControl.h \
+  %reldir%/TextControl.h \
+  %reldir%/TextEdit.h \
+  %reldir%/ToggleButtonControl.h \
+  %reldir%/ToggleTool.h \
+  %reldir%/ToolBar.h \
+  %reldir%/ToolBarButton.h \
+  %reldir%/gl-select.h \
   $(TEMPLATE_SRC)
 
-libgui_graphics_libgui_graphics_la_SOURCES = \
-  libgui/graphics/__init_qt__.cc \
-  libgui/graphics/annotation-dialog.cc \
-  libgui/graphics/Backend.cc \
-  libgui/graphics/BaseControl.cc \
-  libgui/graphics/ButtonControl.cc \
-  libgui/graphics/ButtonGroup.cc \
-  libgui/graphics/Canvas.cc \
-  libgui/graphics/CheckBoxControl.cc \
-  libgui/graphics/Container.cc \
-  libgui/graphics/ContextMenu.cc \
-  libgui/graphics/EditControl.cc \
-  libgui/graphics/Figure.cc \
-  libgui/graphics/FigureWindow.cc \
-  libgui/graphics/GLCanvas.cc \
-  libgui/graphics/KeyMap.cc \
-  libgui/graphics/ListBoxControl.cc \
-  libgui/graphics/Logger.cc \
-  libgui/graphics/Menu.cc \
-  libgui/graphics/MouseModeActionGroup.cc \
-  libgui/graphics/Object.cc \
-  libgui/graphics/ObjectFactory.cc \
-  libgui/graphics/ObjectProxy.cc \
-  libgui/graphics/Panel.cc \
-  libgui/graphics/PopupMenuControl.cc \
-  libgui/graphics/PushButtonControl.cc \
-  libgui/graphics/PushTool.cc \
-  libgui/graphics/QtHandlesUtils.cc \
-  libgui/graphics/RadioButtonControl.cc \
-  libgui/graphics/SliderControl.cc \
-  libgui/graphics/TextControl.cc \
-  libgui/graphics/TextEdit.cc \
-  libgui/graphics/ToggleButtonControl.cc \
-  libgui/graphics/ToggleTool.cc \
-  libgui/graphics/ToolBar.cc \
-  libgui/graphics/gl-select.cc
+%canon_reldir%_%canon_reldir%_la_SOURCES = \
+  %reldir%/__init_qt__.cc \
+  %reldir%/annotation-dialog.cc \
+  %reldir%/Backend.cc \
+  %reldir%/BaseControl.cc \
+  %reldir%/ButtonControl.cc \
+  %reldir%/ButtonGroup.cc \
+  %reldir%/Canvas.cc \
+  %reldir%/CheckBoxControl.cc \
+  %reldir%/Container.cc \
+  %reldir%/ContextMenu.cc \
+  %reldir%/EditControl.cc \
+  %reldir%/Figure.cc \
+  %reldir%/FigureWindow.cc \
+  %reldir%/GLCanvas.cc \
+  %reldir%/KeyMap.cc \
+  %reldir%/ListBoxControl.cc \
+  %reldir%/Logger.cc \
+  %reldir%/Menu.cc \
+  %reldir%/MouseModeActionGroup.cc \
+  %reldir%/Object.cc \
+  %reldir%/ObjectFactory.cc \
+  %reldir%/ObjectProxy.cc \
+  %reldir%/Panel.cc \
+  %reldir%/PopupMenuControl.cc \
+  %reldir%/PushButtonControl.cc \
+  %reldir%/PushTool.cc \
+  %reldir%/QtHandlesUtils.cc \
+  %reldir%/RadioButtonControl.cc \
+  %reldir%/SliderControl.cc \
+  %reldir%/TextControl.cc \
+  %reldir%/TextEdit.cc \
+  %reldir%/ToggleButtonControl.cc \
+  %reldir%/ToggleTool.cc \
+  %reldir%/ToolBar.cc \
+  %reldir%/gl-select.cc
 
 TEMPLATE_SRC = \
-  libgui/graphics/ToolBarButton.cc
+  %reldir%/ToolBarButton.cc
 
-nodist_libgui_graphics_libgui_graphics_la_SOURCES = $(octave_gui_graphics_MOC) $(octave_gui_graphics_RC)
+nodist_%canon_reldir%_%canon_reldir%_la_SOURCES = $(octave_gui_graphics_MOC) $(octave_gui_graphics_RC)
 
-libgui_graphics_libgui_graphics_la_CPPFLAGS = \
+%canon_reldir%_%canon_reldir%_la_CPPFLAGS = \
   $(AM_CPPFLAGS) \
   $(FT2_CPPFLAGS) \
   $(FONTCONFIG_CPPFLAGS) \
@@ -145,20 +145,20 @@
   -Ilibinterp/corefcn -I$(srcdir)/libinterp/corefcn \
   -I$(srcdir)/libinterp/octave-value
 
-libgui_graphics_libgui_graphics_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_%canon_reldir%_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libgui_graphics_libgui_graphics_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_%canon_reldir%_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-noinst_LTLIBRARIES += libgui/graphics/libgui-graphics.la
+noinst_LTLIBRARIES += %reldir%/libgui-graphics.la
 
 libgui_EXTRA_DIST += \
-  libgui/graphics/qthandles.qrc \
-  libgui/graphics/images/README \
-  libgui/graphics/images/pan.png \
-  libgui/graphics/images/rotate.png \
-  libgui/graphics/images/select.png \
-  libgui/graphics/images/zoom-in.png \
-  libgui/graphics/images/zoom-out.png \
+  %reldir%/qthandles.qrc \
+  %reldir%/images/README \
+  %reldir%/images/pan.png \
+  %reldir%/images/rotate.png \
+  %reldir%/images/select.png \
+  %reldir%/images/zoom-in.png \
+  %reldir%/images/zoom-out.png \
   $(octave_gui_graphics_UI)
 
 libgui_CLEANFILES += \
--- a/libgui/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libgui/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,10 +1,10 @@
 if AMCOND_BUILD_QT_GUI
 
-libgui_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-libgui_CLEANFILES =
-libgui_DISTCLEANFILES =
-libgui_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
 MOC_CPPFLAGS =
 
@@ -13,84 +13,84 @@
 ## Only keep moc-compatible options -Idir, -Dmacro, and -Umacro.
 MOC_OCTAVE_CPPFLAGS = $(filter -I% -D% -U%, $(AM_CPPFLAGS) $(CPPFLAGS))
 
-octlib_LTLIBRARIES += libgui/liboctgui.la
+octlib_LTLIBRARIES += %reldir%/liboctgui.la
 
 TRANSLATIONS = \
-  libgui/languages/be_BY.ts \
-  libgui/languages/de_DE.ts \
-  libgui/languages/en_US.ts \
-  libgui/languages/es_ES.ts \
-  libgui/languages/eu_ES.ts \
-  libgui/languages/fr_FR.ts \
-  libgui/languages/it_IT.ts \
-  libgui/languages/ja_JP.ts \
-  libgui/languages/nl_NL.ts \
-  libgui/languages/pt_BR.ts \
-  libgui/languages/pt_PT.ts \
-  libgui/languages/ru_RU.ts \
-  libgui/languages/uk_UA.ts \
-  libgui/languages/zh_CN.ts
+  %reldir%/languages/be_BY.ts \
+  %reldir%/languages/de_DE.ts \
+  %reldir%/languages/en_US.ts \
+  %reldir%/languages/es_ES.ts \
+  %reldir%/languages/eu_ES.ts \
+  %reldir%/languages/fr_FR.ts \
+  %reldir%/languages/it_IT.ts \
+  %reldir%/languages/ja_JP.ts \
+  %reldir%/languages/nl_NL.ts \
+  %reldir%/languages/pt_BR.ts \
+  %reldir%/languages/pt_PT.ts \
+  %reldir%/languages/ru_RU.ts \
+  %reldir%/languages/uk_UA.ts \
+  %reldir%/languages/zh_CN.ts
 
-LOCALES = $(patsubst libgui/languages/%.ts, libgui/languages/%.qm, $(TRANSLATIONS))
+LOCALES = $(patsubst %reldir%/languages/%.ts, %reldir%/languages/%.qm, $(TRANSLATIONS))
 
 noinst_HEADERS += \
-  libgui/liboctgui-build-info.h
+  %reldir%/liboctgui-build-info.h
 
-include libgui/src/module.mk
-include libgui/graphics/module.mk
-include libgui/qterminal-module.mk
+include %reldir%/src/module.mk
+include %reldir%/graphics/module.mk
+include %reldir%/qterminal-module.mk
 
-nodist_libgui_liboctgui_la_SOURCES = \
-  libgui/liboctgui-build-info.cc
+nodist_%canon_reldir%_liboctgui_la_SOURCES = \
+  %reldir%/liboctgui-build-info.cc
 
-libgui_liboctgui_la_CPPFLAGS = \
+%canon_reldir%_liboctgui_la_CPPFLAGS = \
   $(AM_CPPFLAGS) \
   @OCTGUI_DLL_DEFS@ \
   -Ilibgui \
   -I$(srcdir)/libgui
 
-libgui_liboctgui_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_liboctgui_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libgui_liboctgui_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_liboctgui_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-libgui_liboctgui_la_LIBADD = \
-  libgui/qterminal/libqterminal.la \
-  libgui/src/libgui-src.la \
-  libgui/graphics/libgui-graphics.la \
+%canon_reldir%_liboctgui_la_LIBADD = \
+  %reldir%/qterminal/libqterminal.la \
+  %reldir%/src/libgui-src.la \
+  %reldir%/graphics/libgui-graphics.la \
   libinterp/liboctinterp.la \
   liboctave/liboctave.la \
   $(LIBOCTGUI_LINK_DEPS)
 
 # Increment these as needed and according to the rules in the libtool manual:
-libgui_liboctgui_current = 2
-libgui_liboctgui_revision = 0
-libgui_liboctgui_age = 0
+%canon_reldir%_liboctgui_current = 2
+%canon_reldir%_liboctgui_revision = 0
+%canon_reldir%_liboctgui_age = 0
 
-libgui_liboctgui_version_info = $(libgui_liboctgui_current):$(libgui_liboctgui_revision):$(libgui_liboctgui_age)
+%canon_reldir%_liboctgui_version_info = $(%canon_reldir%_liboctgui_current):$(%canon_reldir%_liboctgui_revision):$(%canon_reldir%_liboctgui_age)
 
-libgui_liboctgui_la_LDFLAGS = \
-  -version-info $(libgui_liboctgui_version_info) \
+%canon_reldir%_liboctgui_la_LDFLAGS = \
+  -version-info $(%canon_reldir%_liboctgui_version_info) \
   $(NO_UNDEFINED_LDFLAG) \
   -bindir $(bindir) \
   $(LIBOCTGUI_LINK_OPTS) \
   $(WARN_LDFLAGS)
 
-octetc_DATA += libgui/default-qt-settings
+octetc_DATA += %reldir%/default-qt-settings
 
 octlocale_DATA += $(LOCALES)
 
-libgui/default-qt-settings: libgui/default-qt-settings.in build-aux/mk-default-qt-settings.sh | libgui/$(octave_dirstamp)
+%reldir%/default-qt-settings: %reldir%/default-qt-settings.in build-aux/mk-default-qt-settings.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/mk-default-qt-settings.sh)
 
 DIRSTAMP_FILES += \
-  libgui/$(octave_dirstamp)
+  %reldir%/$(octave_dirstamp)
 
 define moc-command
   rm -f $@-t $@ && \
   ( echo "#if defined (HAVE_CONFIG_H)"; \
     echo '#  include "config.h"'; \
     echo "#endif"; \
-    $(MOC) $(MOCFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MOC_OCTAVE_CPPFLAGS) $(MOC_CPPFLAGS) $(libgui_liboctgui_la_CPPFLAGS) $< ) > $@-t && \
+    $(MOC) $(MOCFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(MOC_OCTAVE_CPPFLAGS) $(MOC_CPPFLAGS) $(%canon_reldir%_liboctgui_la_CPPFLAGS) $< ) > $@-t && \
   mv $@-t $@
 endef
 
@@ -121,39 +121,39 @@
 am__v_lrelease_0 = -silent
 am__v_lrelease_1 =
 
-%.qm: %.ts | libgui/languages/$(octave_dirstamp)
+%.qm: %.ts | %reldir%/languages/$(octave_dirstamp)
 	$(AM_V_GEN)$(LRELEASE) $(LRELEASEFLAGS) $(AM_V_lrelease) -qm $@ $<
 
 DIRSTAMP_FILES += \
-  libgui/languages/$(octave_dirstamp)
+  %reldir%/languages/$(octave_dirstamp)
 
-libgui_EXTRA_DIST += \
+%canon_reldir%_EXTRA_DIST += \
   $(TRANSLATIONS) \
-  libgui/default-qt-settings.in \
-  libgui/liboctgui-build-info.in.cc
+  %reldir%/default-qt-settings.in \
+  %reldir%/liboctgui-build-info.in.cc
 
-EXTRA_DIST += $(libgui_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-libgui_CLEANFILES += \
-  libgui/liboctgui-build-info.cc
+%canon_reldir%_CLEANFILES += \
+  %reldir%/liboctgui-build-info.cc
 
-libgui_DISTCLEANFILES += \
-  libgui/default-qt-settings \
+%canon_reldir%_DISTCLEANFILES += \
+  %reldir%/default-qt-settings \
   $(LOCALES)
 
-CLEANFILES += $(libgui_CLEANFILES)
-DISTCLEANFILES += $(libgui_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(libgui_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 libgui-clean:
-	rm -f $(libgui_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 libgui-distclean: libgui-clean
-	rm -f $(libgui_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 libgui-maintainer-clean: libgui-distclean
-	rm -f $(libgui_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
 
-libgui/liboctgui-build-info.cc: libgui/liboctgui-build-info.in.cc HG-ID | libgui/$(octave_dirstamp)
+%reldir%/liboctgui-build-info.cc: %reldir%/liboctgui-build-info.in.cc HG-ID | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(build-info-commands)
 endif
--- a/libgui/src/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libgui/src/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,213 +1,213 @@
 octave_gui_ICONS = \
-  libgui/src/icons/applications-system.png \
-  libgui/src/icons/bp-next.png \
-  libgui/src/icons/bp-prev.png \
-  libgui/src/icons/bp-rm-all.png \
-  libgui/src/icons/bp-toggle.png \
-  libgui/src/icons/db-cont.png \
-  libgui/src/icons/db-step-in.png \
-  libgui/src/icons/db-step-out.png \
-  libgui/src/icons/db-step.png \
-  libgui/src/icons/db-stop.png \
-  libgui/src/icons/document-new.png \
-  libgui/src/icons/document-open.png \
-  libgui/src/icons/document-print.png \
-  libgui/src/icons/document-save.png \
-  libgui/src/icons/document-save-as.png \
-  libgui/src/icons/edit-copy.png \
-  libgui/src/icons/edit-cut.png \
-  libgui/src/icons/edit-delete.png \
-  libgui/src/icons/edit-find.png \
-  libgui/src/icons/edit-find-replace.png \
-  libgui/src/icons/edit-paste.png \
-  libgui/src/icons/edit-redo.png \
-  libgui/src/icons/edit-undo.png \
-  libgui/src/icons/folder.png \
-  libgui/src/icons/folder-new.png \
-  libgui/src/icons/go-first.png \
-  libgui/src/icons/go-last.png \
-  libgui/src/icons/go-up.png \
-  libgui/src/icons/graphic_logo_DocumentationDockWidget.png \
-  libgui/src/icons/graphic_logo_FileEditor.png \
-  libgui/src/icons/graphic_logo_FilesDockWidget.png \
-  libgui/src/icons/graphic_logo_HistoryDockWidget.png \
-  libgui/src/icons/graphic_logo_NewsDockWidget.png \
-  libgui/src/icons/graphic_logo_TerminalDockWidget.png \
-  libgui/src/icons/graphic_logo_WorkspaceView.png \
-  libgui/src/icons/graphic_logo_ReleaseWidget.png \
-  libgui/src/icons/graphic_logo_DocumentationDockWidget.svg \
-  libgui/src/icons/graphic_logo_FileEditor.svg \
-  libgui/src/icons/graphic_logo_FilesDockWidget.svg \
-  libgui/src/icons/graphic_logo_HistoryDockWidget.svg \
-  libgui/src/icons/graphic_logo_NewsDockWidget.svg \
-  libgui/src/icons/graphic_logo_TerminalDockWidget.svg \
-  libgui/src/icons/graphic_logo_WorkspaceView.svg \
-  libgui/src/icons/graphic_logo_ReleaseWidget.svg \
-  libgui/src/icons/icons_license \
-  libgui/src/icons/letter_logo_DocumentationDockWidget.png \
-  libgui/src/icons/letter_logo_FileEditor.png \
-  libgui/src/icons/letter_logo_FilesDockWidget.png \
-  libgui/src/icons/letter_logo_HistoryDockWidget.png \
-  libgui/src/icons/letter_logo_NewsDockWidget.png \
-  libgui/src/icons/letter_logo_TerminalDockWidget.png \
-  libgui/src/icons/letter_logo_WorkspaceView.png \
-  libgui/src/icons/letter_logo_ReleaseWidget.png \
-  libgui/src/icons/letter_logo_DocumentationDockWidget.svg \
-  libgui/src/icons/letter_logo_FileEditor.svg \
-  libgui/src/icons/letter_logo_FilesDockWidget.svg \
-  libgui/src/icons/letter_logo_HistoryDockWidget.svg \
-  libgui/src/icons/letter_logo_NewsDockWidget.svg \
-  libgui/src/icons/letter_logo_TerminalDockWidget.svg \
-  libgui/src/icons/letter_logo_WorkspaceView.svg \
-  libgui/src/icons/letter_logo_ReleaseWidget.svg \
-  libgui/src/icons/logo.png \
-  libgui/src/icons/preferences-system.png \
-  libgui/src/icons/system-run.png \
-  libgui/src/icons/user-home.png \
-  libgui/src/icons/view-refresh.png \
-  libgui/src/icons/widget-close.png \
-  libgui/src/icons/widget-dock.png \
-  libgui/src/icons/widget-undock.png \
-  libgui/src/icons/widget-close-light.png \
-  libgui/src/icons/widget-dock-light.png \
-  libgui/src/icons/widget-undock-light.png \
-  libgui/src/icons/zoom-in.png \
-  libgui/src/icons/zoom-out.png
+  %reldir%/icons/applications-system.png \
+  %reldir%/icons/bp-next.png \
+  %reldir%/icons/bp-prev.png \
+  %reldir%/icons/bp-rm-all.png \
+  %reldir%/icons/bp-toggle.png \
+  %reldir%/icons/db-cont.png \
+  %reldir%/icons/db-step-in.png \
+  %reldir%/icons/db-step-out.png \
+  %reldir%/icons/db-step.png \
+  %reldir%/icons/db-stop.png \
+  %reldir%/icons/document-new.png \
+  %reldir%/icons/document-open.png \
+  %reldir%/icons/document-print.png \
+  %reldir%/icons/document-save.png \
+  %reldir%/icons/document-save-as.png \
+  %reldir%/icons/edit-copy.png \
+  %reldir%/icons/edit-cut.png \
+  %reldir%/icons/edit-delete.png \
+  %reldir%/icons/edit-find.png \
+  %reldir%/icons/edit-find-replace.png \
+  %reldir%/icons/edit-paste.png \
+  %reldir%/icons/edit-redo.png \
+  %reldir%/icons/edit-undo.png \
+  %reldir%/icons/folder.png \
+  %reldir%/icons/folder-new.png \
+  %reldir%/icons/go-first.png \
+  %reldir%/icons/go-last.png \
+  %reldir%/icons/go-up.png \
+  %reldir%/icons/graphic_logo_DocumentationDockWidget.png \
+  %reldir%/icons/graphic_logo_FileEditor.png \
+  %reldir%/icons/graphic_logo_FilesDockWidget.png \
+  %reldir%/icons/graphic_logo_HistoryDockWidget.png \
+  %reldir%/icons/graphic_logo_NewsDockWidget.png \
+  %reldir%/icons/graphic_logo_TerminalDockWidget.png \
+  %reldir%/icons/graphic_logo_WorkspaceView.png \
+  %reldir%/icons/graphic_logo_ReleaseWidget.png \
+  %reldir%/icons/graphic_logo_DocumentationDockWidget.svg \
+  %reldir%/icons/graphic_logo_FileEditor.svg \
+  %reldir%/icons/graphic_logo_FilesDockWidget.svg \
+  %reldir%/icons/graphic_logo_HistoryDockWidget.svg \
+  %reldir%/icons/graphic_logo_NewsDockWidget.svg \
+  %reldir%/icons/graphic_logo_TerminalDockWidget.svg \
+  %reldir%/icons/graphic_logo_WorkspaceView.svg \
+  %reldir%/icons/graphic_logo_ReleaseWidget.svg \
+  %reldir%/icons/icons_license \
+  %reldir%/icons/letter_logo_DocumentationDockWidget.png \
+  %reldir%/icons/letter_logo_FileEditor.png \
+  %reldir%/icons/letter_logo_FilesDockWidget.png \
+  %reldir%/icons/letter_logo_HistoryDockWidget.png \
+  %reldir%/icons/letter_logo_NewsDockWidget.png \
+  %reldir%/icons/letter_logo_TerminalDockWidget.png \
+  %reldir%/icons/letter_logo_WorkspaceView.png \
+  %reldir%/icons/letter_logo_ReleaseWidget.png \
+  %reldir%/icons/letter_logo_DocumentationDockWidget.svg \
+  %reldir%/icons/letter_logo_FileEditor.svg \
+  %reldir%/icons/letter_logo_FilesDockWidget.svg \
+  %reldir%/icons/letter_logo_HistoryDockWidget.svg \
+  %reldir%/icons/letter_logo_NewsDockWidget.svg \
+  %reldir%/icons/letter_logo_TerminalDockWidget.svg \
+  %reldir%/icons/letter_logo_WorkspaceView.svg \
+  %reldir%/icons/letter_logo_ReleaseWidget.svg \
+  %reldir%/icons/logo.png \
+  %reldir%/icons/preferences-system.png \
+  %reldir%/icons/system-run.png \
+  %reldir%/icons/user-home.png \
+  %reldir%/icons/view-refresh.png \
+  %reldir%/icons/widget-close.png \
+  %reldir%/icons/widget-dock.png \
+  %reldir%/icons/widget-undock.png \
+  %reldir%/icons/widget-close-light.png \
+  %reldir%/icons/widget-dock-light.png \
+  %reldir%/icons/widget-undock-light.png \
+  %reldir%/icons/zoom-in.png \
+  %reldir%/icons/zoom-out.png
 
 octave_gui_MOC =
 
 if AMCOND_HAVE_QSCINTILLA
 
 OCTAVE_GUI_SRC_M_EDITOR_MOC = \
-  libgui/src/m-editor/moc-file-editor-interface.cc \
-  libgui/src/m-editor/moc-file-editor-tab.cc \
-  libgui/src/m-editor/moc-file-editor.cc \
-  libgui/src/m-editor/moc-find-dialog.cc \
-  libgui/src/m-editor/moc-octave-qscintilla.cc \
-  libgui/src/m-editor/moc-octave-txt-lexer.cc \
-  libgui/src/m-editor/moc-marker.cc
+  %reldir%/m-editor/moc-file-editor-interface.cc \
+  %reldir%/m-editor/moc-file-editor-tab.cc \
+  %reldir%/m-editor/moc-file-editor.cc \
+  %reldir%/m-editor/moc-find-dialog.cc \
+  %reldir%/m-editor/moc-octave-qscintilla.cc \
+  %reldir%/m-editor/moc-octave-txt-lexer.cc \
+  %reldir%/m-editor/moc-marker.cc
 
-$(OCTAVE_GUI_SRC_M_EDITOR_MOC): | libgui/src/m-editor/$(octave_dirstamp)
+$(OCTAVE_GUI_SRC_M_EDITOR_MOC): | %reldir%/m-editor/$(octave_dirstamp)
 
 octave_gui_MOC += \
   $(OCTAVE_GUI_SRC_M_EDITOR_MOC)
 
 DIRSTAMP_FILES += \
-  libgui/src/m-editor/$(octave_dirstamp)
+  %reldir%/m-editor/$(octave_dirstamp)
 
 endif
 
 OCTAVE_GUI_SRC_MOC = \
-  libgui/src/moc-external-editor-interface.cc \
-  libgui/src/moc-dialog.cc \
-  libgui/src/moc-documentation-dock-widget.cc \
-  libgui/src/moc-files-dock-widget.cc \
-  libgui/src/moc-history-dock-widget.cc \
-  libgui/src/moc-main-window.cc \
-  libgui/src/moc-octave-cmd.cc \
-  libgui/src/moc-octave-qt-link.cc \
-  libgui/src/moc-settings-dialog.cc \
-  libgui/src/moc-terminal-dock-widget.cc \
-  libgui/src/moc-color-picker.cc \
-  libgui/src/moc-resource-manager.cc \
-  libgui/src/moc-shortcut-manager.cc \
-  libgui/src/moc-welcome-wizard.cc \
-  libgui/src/moc-workspace-model.cc \
-  libgui/src/moc-workspace-view.cc \
-  libgui/src/moc-find-files-dialog.cc \
-  libgui/src/moc-find-files-model.cc \
-  libgui/src/qtinfo/moc-parser.cc \
-  libgui/src/qtinfo/moc-webinfo.cc \
-  libgui/src/moc-octave-dock-widget.cc
+  %reldir%/moc-external-editor-interface.cc \
+  %reldir%/moc-dialog.cc \
+  %reldir%/moc-documentation-dock-widget.cc \
+  %reldir%/moc-files-dock-widget.cc \
+  %reldir%/moc-history-dock-widget.cc \
+  %reldir%/moc-main-window.cc \
+  %reldir%/moc-octave-cmd.cc \
+  %reldir%/moc-octave-qt-link.cc \
+  %reldir%/moc-settings-dialog.cc \
+  %reldir%/moc-terminal-dock-widget.cc \
+  %reldir%/moc-color-picker.cc \
+  %reldir%/moc-resource-manager.cc \
+  %reldir%/moc-shortcut-manager.cc \
+  %reldir%/moc-welcome-wizard.cc \
+  %reldir%/moc-workspace-model.cc \
+  %reldir%/moc-workspace-view.cc \
+  %reldir%/moc-find-files-dialog.cc \
+  %reldir%/moc-find-files-model.cc \
+  %reldir%/qtinfo/moc-parser.cc \
+  %reldir%/qtinfo/moc-webinfo.cc \
+  %reldir%/moc-octave-dock-widget.cc
 
 octave_gui_MOC += \
   $(OCTAVE_GUI_SRC_MOC) \
   $(OCTAVE_GUI_EDITOR_MOC)
 
-octave_gui_RC = libgui/src/qrc-resource.cc
+octave_gui_RC = %reldir%/qrc-resource.cc
 
-$(octave_gui_RC): | libgui/src/$(octave_dirstamp)
+$(octave_gui_RC): | %reldir%/$(octave_dirstamp)
 
 DIRSTAMP_FILES += \
-  libgui/src/$(octave_dirstamp)
+  %reldir%/$(octave_dirstamp)
 
 octave_gui_UI = \
-  libgui/src/settings-dialog.ui
+  %reldir%/settings-dialog.ui
 
-octave_gui_UI_H = $(patsubst libgui/src/%.ui, libgui/src/ui-%.h, $(octave_gui_UI))
+octave_gui_UI_H = $(patsubst %reldir%/%.ui, %reldir%/ui-%.h, $(octave_gui_UI))
 
-$(octave_gui_UI_H): | libgui/src/$(octave_dirstamp)
+$(octave_gui_UI_H): | %reldir%/$(octave_dirstamp)
 
 BUILT_SOURCES += $(octave_gui_UI_H)
 
 noinst_HEADERS += \
-  libgui/src/dialog.h \
-  libgui/src/octave-dock-widget.h \
-  libgui/src/documentation-dock-widget.h \
-  libgui/src/external-editor-interface.h \
-  libgui/src/files-dock-widget.h \
-  libgui/src/history-dock-widget.h \
-  libgui/src/m-editor/file-editor-interface.h \
-  libgui/src/m-editor/file-editor-tab.h \
-  libgui/src/m-editor/file-editor.h \
-  libgui/src/m-editor/find-dialog.h \
-  libgui/src/m-editor/octave-qscintilla.h \
-  libgui/src/m-editor/octave-txt-lexer.h \
-  libgui/src/m-editor/marker.h \
-  libgui/src/main-window.h \
-  libgui/src/octave-gui.h \
-  libgui/src/octave-cmd.h \
-  libgui/src/octave-qt-link.h \
-  libgui/src/qtinfo/parser.h \
-  libgui/src/qtinfo/webinfo.h \
-  libgui/src/resource-manager.h \
-  libgui/src/settings-dialog.h \
-  libgui/src/shortcut-manager.h \
-  libgui/src/thread-manager.h \
-  libgui/src/terminal-dock-widget.h \
-  libgui/src/color-picker.h \
-  libgui/src/welcome-wizard.h \
-  libgui/src/find-files-dialog.h \
-  libgui/src/find-files-model.h \
-  libgui/src/workspace-model.h \
-  libgui/src/workspace-view.h
+  %reldir%/dialog.h \
+  %reldir%/octave-dock-widget.h \
+  %reldir%/documentation-dock-widget.h \
+  %reldir%/external-editor-interface.h \
+  %reldir%/files-dock-widget.h \
+  %reldir%/history-dock-widget.h \
+  %reldir%/m-editor/file-editor-interface.h \
+  %reldir%/m-editor/file-editor-tab.h \
+  %reldir%/m-editor/file-editor.h \
+  %reldir%/m-editor/find-dialog.h \
+  %reldir%/m-editor/octave-qscintilla.h \
+  %reldir%/m-editor/octave-txt-lexer.h \
+  %reldir%/m-editor/marker.h \
+  %reldir%/main-window.h \
+  %reldir%/octave-gui.h \
+  %reldir%/octave-cmd.h \
+  %reldir%/octave-qt-link.h \
+  %reldir%/qtinfo/parser.h \
+  %reldir%/qtinfo/webinfo.h \
+  %reldir%/resource-manager.h \
+  %reldir%/settings-dialog.h \
+  %reldir%/shortcut-manager.h \
+  %reldir%/thread-manager.h \
+  %reldir%/terminal-dock-widget.h \
+  %reldir%/color-picker.h \
+  %reldir%/welcome-wizard.h \
+  %reldir%/find-files-dialog.h \
+  %reldir%/find-files-model.h \
+  %reldir%/workspace-model.h \
+  %reldir%/workspace-view.h
 
-libgui_src_libgui_src_la_SOURCES = \
-  libgui/src/dialog.cc \
-  libgui/src/documentation-dock-widget.cc \
-  libgui/src/external-editor-interface.cc \
-  libgui/src/files-dock-widget.cc \
-  libgui/src/history-dock-widget.cc \
-  libgui/src/m-editor/file-editor-tab.cc \
-  libgui/src/m-editor/file-editor.cc \
-  libgui/src/m-editor/find-dialog.cc \
-  libgui/src/m-editor/octave-qscintilla.cc \
-  libgui/src/m-editor/octave-txt-lexer.cc \
-  libgui/src/m-editor/marker.cc \
-  libgui/src/main-window.cc \
-  libgui/src/octave-cmd.cc \
-  libgui/src/octave-dock-widget.cc \
-  libgui/src/octave-gui.cc \
-  libgui/src/octave-qt-link.cc \
-  libgui/src/qtinfo/parser.cc \
-  libgui/src/qtinfo/webinfo.cc \
-  libgui/src/resource-manager.cc \
-  libgui/src/settings-dialog.cc \
-  libgui/src/shortcut-manager.cc \
-  libgui/src/thread-manager.cc \
-  libgui/src/terminal-dock-widget.cc \
-  libgui/src/color-picker.cc \
-  libgui/src/welcome-wizard.cc \
-  libgui/src/find-files-dialog.cc \
-  libgui/src/find-files-model.cc \
-  libgui/src/workspace-model.cc \
-  libgui/src/workspace-view.cc
+%canon_reldir%_%canon_reldir%_la_SOURCES = \
+  %reldir%/dialog.cc \
+  %reldir%/documentation-dock-widget.cc \
+  %reldir%/external-editor-interface.cc \
+  %reldir%/files-dock-widget.cc \
+  %reldir%/history-dock-widget.cc \
+  %reldir%/m-editor/file-editor-tab.cc \
+  %reldir%/m-editor/file-editor.cc \
+  %reldir%/m-editor/find-dialog.cc \
+  %reldir%/m-editor/octave-qscintilla.cc \
+  %reldir%/m-editor/octave-txt-lexer.cc \
+  %reldir%/m-editor/marker.cc \
+  %reldir%/main-window.cc \
+  %reldir%/octave-cmd.cc \
+  %reldir%/octave-dock-widget.cc \
+  %reldir%/octave-gui.cc \
+  %reldir%/octave-qt-link.cc \
+  %reldir%/qtinfo/parser.cc \
+  %reldir%/qtinfo/webinfo.cc \
+  %reldir%/resource-manager.cc \
+  %reldir%/settings-dialog.cc \
+  %reldir%/shortcut-manager.cc \
+  %reldir%/thread-manager.cc \
+  %reldir%/terminal-dock-widget.cc \
+  %reldir%/color-picker.cc \
+  %reldir%/welcome-wizard.cc \
+  %reldir%/find-files-dialog.cc \
+  %reldir%/find-files-model.cc \
+  %reldir%/workspace-model.cc \
+  %reldir%/workspace-view.cc
 
-nodist_libgui_src_libgui_src_la_SOURCES = \
+nodist_%canon_reldir%_%canon_reldir%_la_SOURCES = \
   $(octave_gui_MOC) \
   $(octave_gui_RC)
 
-libgui_src_libgui_src_la_CPPFLAGS = \
+%canon_reldir%_%canon_reldir%_la_CPPFLAGS = \
   $(AM_CPPFLAGS) \
   $(FT2_CPPFLAGS) \
   $(FONTCONFIG_CPPFLAGS) \
@@ -215,8 +215,8 @@
   @QT_CPPFLAGS@ \
   -I$(srcdir)/libgui/qterminal/libqterminal \
   -Ilibgui/src -I$(srcdir)/libgui/src \
-  -I$(srcdir)/libgui/src/m-editor \
-  -I$(srcdir)/libgui/src/qtinfo \
+  -I$(srcdir)/%reldir%/m-editor \
+  -I$(srcdir)/%reldir%/qtinfo \
   -I$(srcdir)/libgui/graphics \
   -I$(srcdir)/liboctave/array \
   -Iliboctave/numeric -I$(srcdir)/liboctave/numeric \
@@ -229,14 +229,14 @@
   -I$(srcdir)/libinterp/octave-value \
   -I$(srcdir)/liboctave/wrappers
 
-libgui_src_libgui_src_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_%canon_reldir%_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libgui_src_libgui_src_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_%canon_reldir%_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-noinst_LTLIBRARIES += libgui/src/libgui-src.la
+noinst_LTLIBRARIES += %reldir%/libgui-src.la
 
 libgui_EXTRA_DIST += \
-  libgui/src/resource.qrc \
+  %reldir%/resource.qrc \
   $(octave_gui_UI) \
   $(octave_gui_ICONS)
 
--- a/libinterp/corefcn/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/corefcn/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,269 +1,269 @@
 ## Options functions for Fortran packages like LSODE, DASPK.
 ## These are generated automagically by configure and Perl.
 OPT_HANDLERS = \
-  libinterp/corefcn/DASPK-opts.cc \
-  libinterp/corefcn/DASRT-opts.cc \
-  libinterp/corefcn/DASSL-opts.cc \
-  libinterp/corefcn/LSODE-opts.cc \
-  libinterp/corefcn/Quad-opts.cc
+  %reldir%/DASPK-opts.cc \
+  %reldir%/DASRT-opts.cc \
+  %reldir%/DASSL-opts.cc \
+  %reldir%/LSODE-opts.cc \
+  %reldir%/Quad-opts.cc
 
-$(OPT_HANDLERS): libinterp/corefcn/%.cc : liboctave/numeric/%.in | libinterp/corefcn/$(octave_dirstamp)
+$(OPT_HANDLERS): %reldir%/%.cc : liboctave/numeric/%.in | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(PERL) $(srcdir)/build-aux/mk-opts.pl --opt-handler-fcns $< > $@-t && \
 	mv $@-t $@
 
 $(OPT_HANDLERS): $(srcdir)/build-aux/mk-opts.pl
 
-DIRSTAMP_FILES += libinterp/corefcn/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 COREFCN_INC = \
-  libinterp/corefcn/base-text-renderer.h \
-  libinterp/corefcn/Cell.h \
-  libinterp/corefcn/c-file-ptr-stream.h \
-  libinterp/corefcn/call-stack.h \
-  libinterp/corefcn/cdisplay.h \
-  libinterp/corefcn/comment-list.h \
-  libinterp/corefcn/data.h \
-  libinterp/corefcn/defun-dld.h \
-  libinterp/corefcn/defun-int.h \
-  libinterp/corefcn/defun.h \
-  libinterp/corefcn/dirfns.h \
-  libinterp/corefcn/display.h \
-  libinterp/corefcn/dynamic-ld.h \
-  libinterp/corefcn/error.h \
-  libinterp/corefcn/errwarn.h \
-  libinterp/corefcn/event-queue.h \
-  libinterp/corefcn/file-io.h \
-  libinterp/corefcn/ft-text-renderer.h \
-  libinterp/corefcn/gl-render.h \
-  libinterp/corefcn/gl2ps-print.h \
-  libinterp/corefcn/gripes.h \
-  libinterp/corefcn/help.h \
-  libinterp/corefcn/hook-fcn.h \
-  libinterp/corefcn/input.h \
-  libinterp/corefcn/interpreter.h \
-  libinterp/corefcn/load-path.h \
-  libinterp/corefcn/load-save.h \
-  libinterp/corefcn/ls-ascii-helper.h \
-  libinterp/corefcn/ls-hdf5.h \
-  libinterp/corefcn/ls-mat-ascii.h \
-  libinterp/corefcn/ls-mat4.h \
-  libinterp/corefcn/ls-mat5.h \
-  libinterp/corefcn/ls-oct-text.h \
-  libinterp/corefcn/ls-oct-binary.h \
-  libinterp/corefcn/ls-utils.h \
-  libinterp/corefcn/mex.h \
-  libinterp/corefcn/mexproto.h \
-  libinterp/corefcn/oct-errno.h \
-  libinterp/corefcn/oct-fstrm.h \
-  libinterp/corefcn/oct-handle.h \
-  libinterp/corefcn/oct-hdf5-types.h \
-  libinterp/corefcn/oct-hist.h \
-  libinterp/corefcn/oct-iostrm.h \
-  libinterp/corefcn/oct-lvalue.h \
-  libinterp/corefcn/oct-map.h \
-  libinterp/corefcn/oct-obj.h \
-  libinterp/corefcn/oct-prcstrm.h \
-  libinterp/corefcn/oct-procbuf.h \
-  libinterp/corefcn/oct-stdstrm.h \
-  libinterp/corefcn/oct-stream.h \
-  libinterp/corefcn/oct-strstrm.h \
-  libinterp/corefcn/oct.h \
-  libinterp/corefcn/octave-default-image.h \
-  libinterp/corefcn/octave-link.h \
-  libinterp/corefcn/octave-preserve-stream-state.h \
-  libinterp/corefcn/pager.h \
-  libinterp/corefcn/pr-output.h \
-  libinterp/corefcn/procstream.h \
-  libinterp/corefcn/profiler.h \
-  libinterp/corefcn/sighandlers.h \
-  libinterp/corefcn/sparse-xdiv.h \
-  libinterp/corefcn/sparse-xpow.h \
-  libinterp/corefcn/symtab.h \
-  libinterp/corefcn/sysdep.h \
-  libinterp/corefcn/text-renderer.h \
-  libinterp/corefcn/toplev.h \
-  libinterp/corefcn/txt-eng.h \
-  libinterp/corefcn/utils.h \
-  libinterp/corefcn/variables.h \
-  libinterp/corefcn/workspace-element.h \
-  libinterp/corefcn/xdiv.h \
-  libinterp/corefcn/xnorm.h \
-  libinterp/corefcn/xpow.h \
-  libinterp/corefcn/zfstream.h
+  %reldir%/base-text-renderer.h \
+  %reldir%/Cell.h \
+  %reldir%/c-file-ptr-stream.h \
+  %reldir%/call-stack.h \
+  %reldir%/cdisplay.h \
+  %reldir%/comment-list.h \
+  %reldir%/data.h \
+  %reldir%/defun-dld.h \
+  %reldir%/defun-int.h \
+  %reldir%/defun.h \
+  %reldir%/dirfns.h \
+  %reldir%/display.h \
+  %reldir%/dynamic-ld.h \
+  %reldir%/error.h \
+  %reldir%/errwarn.h \
+  %reldir%/event-queue.h \
+  %reldir%/file-io.h \
+  %reldir%/ft-text-renderer.h \
+  %reldir%/gl-render.h \
+  %reldir%/gl2ps-print.h \
+  %reldir%/gripes.h \
+  %reldir%/help.h \
+  %reldir%/hook-fcn.h \
+  %reldir%/input.h \
+  %reldir%/interpreter.h \
+  %reldir%/load-path.h \
+  %reldir%/load-save.h \
+  %reldir%/ls-ascii-helper.h \
+  %reldir%/ls-hdf5.h \
+  %reldir%/ls-mat-ascii.h \
+  %reldir%/ls-mat4.h \
+  %reldir%/ls-mat5.h \
+  %reldir%/ls-oct-text.h \
+  %reldir%/ls-oct-binary.h \
+  %reldir%/ls-utils.h \
+  %reldir%/mex.h \
+  %reldir%/mexproto.h \
+  %reldir%/oct-errno.h \
+  %reldir%/oct-fstrm.h \
+  %reldir%/oct-handle.h \
+  %reldir%/oct-hdf5-types.h \
+  %reldir%/oct-hist.h \
+  %reldir%/oct-iostrm.h \
+  %reldir%/oct-lvalue.h \
+  %reldir%/oct-map.h \
+  %reldir%/oct-obj.h \
+  %reldir%/oct-prcstrm.h \
+  %reldir%/oct-procbuf.h \
+  %reldir%/oct-stdstrm.h \
+  %reldir%/oct-stream.h \
+  %reldir%/oct-strstrm.h \
+  %reldir%/oct.h \
+  %reldir%/octave-default-image.h \
+  %reldir%/octave-link.h \
+  %reldir%/octave-preserve-stream-state.h \
+  %reldir%/pager.h \
+  %reldir%/pr-output.h \
+  %reldir%/procstream.h \
+  %reldir%/profiler.h \
+  %reldir%/sighandlers.h \
+  %reldir%/sparse-xdiv.h \
+  %reldir%/sparse-xpow.h \
+  %reldir%/symtab.h \
+  %reldir%/sysdep.h \
+  %reldir%/text-renderer.h \
+  %reldir%/toplev.h \
+  %reldir%/txt-eng.h \
+  %reldir%/utils.h \
+  %reldir%/variables.h \
+  %reldir%/workspace-element.h \
+  %reldir%/xdiv.h \
+  %reldir%/xnorm.h \
+  %reldir%/xpow.h \
+  %reldir%/zfstream.h
 
 NOINSTALL_COREFCN_INC = \
-  libinterp/corefcn/interpreter-private.h \
-  libinterp/corefcn/oct-hdf5.h \
-  libinterp/corefcn/oct-opengl.h
+  %reldir%/interpreter-private.h \
+  %reldir%/oct-hdf5.h \
+  %reldir%/oct-opengl.h
 
 ## oct-tex-parser.h is in the SRC list so that it will be distributed
 ## but not installed.
 
 COREFCN_SRC = \
-  libinterp/corefcn/Cell.cc \
-  libinterp/corefcn/__contourc__.cc \
-  libinterp/corefcn/__dsearchn__.cc \
-  libinterp/corefcn/__ichol__.cc \
-  libinterp/corefcn/__ilu__.cc \
-  libinterp/corefcn/__lin_interpn__.cc \
-  libinterp/corefcn/__luinc__.cc \
-  libinterp/corefcn/__magick_read__.cc \
-  libinterp/corefcn/__pchip_deriv__.cc \
-  libinterp/corefcn/__qp__.cc \
-  libinterp/corefcn/balance.cc \
-  libinterp/corefcn/besselj.cc \
-  libinterp/corefcn/betainc.cc \
-  libinterp/corefcn/bitfcns.cc \
-  libinterp/corefcn/bsxfun.cc \
-  libinterp/corefcn/c-file-ptr-stream.cc \
-  libinterp/corefcn/call-stack.cc \
-  libinterp/corefcn/cdisplay.c \
-  libinterp/corefcn/cellfun.cc \
-  libinterp/corefcn/colloc.cc \
-  libinterp/corefcn/coct-hdf5-types.c \
-  libinterp/corefcn/comment-list.cc \
-  libinterp/corefcn/conv2.cc \
-  libinterp/corefcn/daspk.cc \
-  libinterp/corefcn/dasrt.cc \
-  libinterp/corefcn/dassl.cc \
-  libinterp/corefcn/data.cc \
-  libinterp/corefcn/debug.cc \
-  libinterp/corefcn/defaults.cc \
-  libinterp/corefcn/defun.cc \
-  libinterp/corefcn/det.cc \
-  libinterp/corefcn/dirfns.cc \
-  libinterp/corefcn/display.cc \
-  libinterp/corefcn/dlmread.cc \
-  libinterp/corefcn/dot.cc \
-  libinterp/corefcn/dynamic-ld.cc \
-  libinterp/corefcn/eig.cc \
-  libinterp/corefcn/ellipj.cc \
-  libinterp/corefcn/error.cc \
-  libinterp/corefcn/errwarn.cc \
-  libinterp/corefcn/event-queue.cc \
-  libinterp/corefcn/fft.cc \
-  libinterp/corefcn/fft2.cc \
-  libinterp/corefcn/fftn.cc \
-  libinterp/corefcn/file-io.cc \
-  libinterp/corefcn/filter.cc \
-  libinterp/corefcn/find.cc \
-  libinterp/corefcn/ft-text-renderer.cc \
-  libinterp/corefcn/gammainc.cc \
-  libinterp/corefcn/gcd.cc \
-  libinterp/corefcn/getgrent.cc \
-  libinterp/corefcn/getpwent.cc \
-  libinterp/corefcn/getrusage.cc \
-  libinterp/corefcn/givens.cc \
-  libinterp/corefcn/gl-render.cc \
-  libinterp/corefcn/gl2ps-print.cc \
-  libinterp/corefcn/graphics.cc \
-  libinterp/corefcn/gripes.cc \
-  libinterp/corefcn/gsvd.cc \
-  libinterp/corefcn/hash.cc \
-  libinterp/corefcn/help.cc \
-  libinterp/corefcn/hess.cc \
-  libinterp/corefcn/hex2num.cc \
-  libinterp/corefcn/hook-fcn.cc \
-  libinterp/corefcn/input.cc \
-  libinterp/corefcn/inv.cc \
-  libinterp/corefcn/interpreter-private.cc \
-  libinterp/corefcn/interpreter.cc \
-  libinterp/corefcn/kron.cc \
-  libinterp/corefcn/load-path.cc \
-  libinterp/corefcn/load-save.cc \
-  libinterp/corefcn/lookup.cc \
-  libinterp/corefcn/ls-ascii-helper.cc \
-  libinterp/corefcn/ls-hdf5.cc \
-  libinterp/corefcn/ls-mat-ascii.cc \
-  libinterp/corefcn/ls-mat4.cc \
-  libinterp/corefcn/ls-mat5.cc \
-  libinterp/corefcn/ls-oct-text.cc \
-  libinterp/corefcn/ls-oct-binary.cc \
-  libinterp/corefcn/ls-utils.cc \
-  libinterp/corefcn/lsode.cc \
-  libinterp/corefcn/lu.cc \
-  libinterp/corefcn/mappers.cc \
-  libinterp/corefcn/matrix_type.cc \
-  libinterp/corefcn/max.cc \
-  libinterp/corefcn/mex.cc \
-  libinterp/corefcn/mgorth.cc \
-  libinterp/corefcn/nproc.cc \
-  libinterp/corefcn/oct-fstrm.cc \
-  libinterp/corefcn/oct-hdf5-types.cc \
-  libinterp/corefcn/oct-hist.cc \
-  libinterp/corefcn/oct-iostrm.cc \
-  libinterp/corefcn/oct-lvalue.cc \
-  libinterp/corefcn/oct-map.cc \
-  libinterp/corefcn/oct-prcstrm.cc \
-  libinterp/corefcn/oct-procbuf.cc \
-  libinterp/corefcn/oct-stream.cc \
-  libinterp/corefcn/oct-strstrm.cc \
-  libinterp/corefcn/oct-tex-lexer.ll \
-  libinterp/corefcn/oct-tex-parser.h \
-  libinterp/corefcn/oct-tex-parser.yy \
-  libinterp/corefcn/octave-link.cc \
-  libinterp/corefcn/ordschur.cc \
-  libinterp/corefcn/pager.cc \
-  libinterp/corefcn/pinv.cc \
-  libinterp/corefcn/pr-output.cc \
-  libinterp/corefcn/procstream.cc \
-  libinterp/corefcn/profiler.cc \
-  libinterp/corefcn/psi.cc \
-  libinterp/corefcn/quad.cc \
-  libinterp/corefcn/quadcc.cc \
-  libinterp/corefcn/qz.cc \
-  libinterp/corefcn/rand.cc \
-  libinterp/corefcn/rcond.cc \
-  libinterp/corefcn/regexp.cc \
-  libinterp/corefcn/schur.cc \
-  libinterp/corefcn/sighandlers.cc \
-  libinterp/corefcn/sparse-xdiv.cc \
-  libinterp/corefcn/sparse-xpow.cc \
-  libinterp/corefcn/sparse.cc \
-  libinterp/corefcn/spparms.cc \
-  libinterp/corefcn/sqrtm.cc \
-  libinterp/corefcn/str2double.cc \
-  libinterp/corefcn/strfind.cc \
-  libinterp/corefcn/strfns.cc \
-  libinterp/corefcn/sub2ind.cc \
-  libinterp/corefcn/svd.cc \
-  libinterp/corefcn/sylvester.cc \
-  libinterp/corefcn/symtab.cc \
-  libinterp/corefcn/syscalls.cc \
-  libinterp/corefcn/sysdep.cc \
-  libinterp/corefcn/time.cc \
-  libinterp/corefcn/text-renderer.cc \
-  libinterp/corefcn/toplev.cc \
-  libinterp/corefcn/tril.cc \
-  libinterp/corefcn/tsearch.cc \
-  libinterp/corefcn/txt-eng.cc \
-  libinterp/corefcn/typecast.cc \
-  libinterp/corefcn/urlwrite.cc \
-  libinterp/corefcn/utils.cc \
-  libinterp/corefcn/variables.cc \
-  libinterp/corefcn/xdiv.cc \
-  libinterp/corefcn/xnorm.cc \
-  libinterp/corefcn/xpow.cc \
-  libinterp/corefcn/zfstream.cc \
+  %reldir%/Cell.cc \
+  %reldir%/__contourc__.cc \
+  %reldir%/__dsearchn__.cc \
+  %reldir%/__ichol__.cc \
+  %reldir%/__ilu__.cc \
+  %reldir%/__lin_interpn__.cc \
+  %reldir%/__luinc__.cc \
+  %reldir%/__magick_read__.cc \
+  %reldir%/__pchip_deriv__.cc \
+  %reldir%/__qp__.cc \
+  %reldir%/balance.cc \
+  %reldir%/besselj.cc \
+  %reldir%/betainc.cc \
+  %reldir%/bitfcns.cc \
+  %reldir%/bsxfun.cc \
+  %reldir%/c-file-ptr-stream.cc \
+  %reldir%/call-stack.cc \
+  %reldir%/cdisplay.c \
+  %reldir%/cellfun.cc \
+  %reldir%/colloc.cc \
+  %reldir%/coct-hdf5-types.c \
+  %reldir%/comment-list.cc \
+  %reldir%/conv2.cc \
+  %reldir%/daspk.cc \
+  %reldir%/dasrt.cc \
+  %reldir%/dassl.cc \
+  %reldir%/data.cc \
+  %reldir%/debug.cc \
+  %reldir%/defaults.cc \
+  %reldir%/defun.cc \
+  %reldir%/det.cc \
+  %reldir%/dirfns.cc \
+  %reldir%/display.cc \
+  %reldir%/dlmread.cc \
+  %reldir%/dot.cc \
+  %reldir%/dynamic-ld.cc \
+  %reldir%/eig.cc \
+  %reldir%/ellipj.cc \
+  %reldir%/error.cc \
+  %reldir%/errwarn.cc \
+  %reldir%/event-queue.cc \
+  %reldir%/fft.cc \
+  %reldir%/fft2.cc \
+  %reldir%/fftn.cc \
+  %reldir%/file-io.cc \
+  %reldir%/filter.cc \
+  %reldir%/find.cc \
+  %reldir%/ft-text-renderer.cc \
+  %reldir%/gammainc.cc \
+  %reldir%/gcd.cc \
+  %reldir%/getgrent.cc \
+  %reldir%/getpwent.cc \
+  %reldir%/getrusage.cc \
+  %reldir%/givens.cc \
+  %reldir%/gl-render.cc \
+  %reldir%/gl2ps-print.cc \
+  %reldir%/graphics.cc \
+  %reldir%/gripes.cc \
+  %reldir%/gsvd.cc \
+  %reldir%/hash.cc \
+  %reldir%/help.cc \
+  %reldir%/hess.cc \
+  %reldir%/hex2num.cc \
+  %reldir%/hook-fcn.cc \
+  %reldir%/input.cc \
+  %reldir%/inv.cc \
+  %reldir%/interpreter-private.cc \
+  %reldir%/interpreter.cc \
+  %reldir%/kron.cc \
+  %reldir%/load-path.cc \
+  %reldir%/load-save.cc \
+  %reldir%/lookup.cc \
+  %reldir%/ls-ascii-helper.cc \
+  %reldir%/ls-hdf5.cc \
+  %reldir%/ls-mat-ascii.cc \
+  %reldir%/ls-mat4.cc \
+  %reldir%/ls-mat5.cc \
+  %reldir%/ls-oct-text.cc \
+  %reldir%/ls-oct-binary.cc \
+  %reldir%/ls-utils.cc \
+  %reldir%/lsode.cc \
+  %reldir%/lu.cc \
+  %reldir%/mappers.cc \
+  %reldir%/matrix_type.cc \
+  %reldir%/max.cc \
+  %reldir%/mex.cc \
+  %reldir%/mgorth.cc \
+  %reldir%/nproc.cc \
+  %reldir%/oct-fstrm.cc \
+  %reldir%/oct-hdf5-types.cc \
+  %reldir%/oct-hist.cc \
+  %reldir%/oct-iostrm.cc \
+  %reldir%/oct-lvalue.cc \
+  %reldir%/oct-map.cc \
+  %reldir%/oct-prcstrm.cc \
+  %reldir%/oct-procbuf.cc \
+  %reldir%/oct-stream.cc \
+  %reldir%/oct-strstrm.cc \
+  %reldir%/oct-tex-lexer.ll \
+  %reldir%/oct-tex-parser.h \
+  %reldir%/oct-tex-parser.yy \
+  %reldir%/octave-link.cc \
+  %reldir%/ordschur.cc \
+  %reldir%/pager.cc \
+  %reldir%/pinv.cc \
+  %reldir%/pr-output.cc \
+  %reldir%/procstream.cc \
+  %reldir%/profiler.cc \
+  %reldir%/psi.cc \
+  %reldir%/quad.cc \
+  %reldir%/quadcc.cc \
+  %reldir%/qz.cc \
+  %reldir%/rand.cc \
+  %reldir%/rcond.cc \
+  %reldir%/regexp.cc \
+  %reldir%/schur.cc \
+  %reldir%/sighandlers.cc \
+  %reldir%/sparse-xdiv.cc \
+  %reldir%/sparse-xpow.cc \
+  %reldir%/sparse.cc \
+  %reldir%/spparms.cc \
+  %reldir%/sqrtm.cc \
+  %reldir%/str2double.cc \
+  %reldir%/strfind.cc \
+  %reldir%/strfns.cc \
+  %reldir%/sub2ind.cc \
+  %reldir%/svd.cc \
+  %reldir%/sylvester.cc \
+  %reldir%/symtab.cc \
+  %reldir%/syscalls.cc \
+  %reldir%/sysdep.cc \
+  %reldir%/time.cc \
+  %reldir%/text-renderer.cc \
+  %reldir%/toplev.cc \
+  %reldir%/tril.cc \
+  %reldir%/tsearch.cc \
+  %reldir%/txt-eng.cc \
+  %reldir%/typecast.cc \
+  %reldir%/urlwrite.cc \
+  %reldir%/utils.cc \
+  %reldir%/variables.cc \
+  %reldir%/xdiv.cc \
+  %reldir%/xnorm.cc \
+  %reldir%/xpow.cc \
+  %reldir%/zfstream.cc \
   $(NOINSTALL_COREFCN_INC)
 
 ## Special rules for sources which must be built before rest of compilation.
 
-libinterp/corefcn/defaults.h: libinterp/corefcn/defaults.in.h build-aux/subst-default-vals.sh | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/defaults.h: %reldir%/defaults.in.h build-aux/subst-default-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-default-vals.sh)
 
-libinterp/corefcn/graphics.h: libinterp/corefcn/graphics.in.h libinterp/genprops.awk | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/graphics.h: %reldir%/graphics.in.h libinterp/genprops.awk | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	$(AWK) -f $(srcdir)/libinterp/genprops.awk $< > $@-t && \
 	mv $@-t $@
 
-libinterp/corefcn/graphics-props.cc: libinterp/corefcn/graphics.in.h libinterp/genprops.awk | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/graphics-props.cc: %reldir%/graphics.in.h libinterp/genprops.awk | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	$(AWK) -v emit_graphics_props=1 -f $(srcdir)/libinterp/genprops.awk $< > $@-t && \
 	mv $@-t $@
 
-libinterp/corefcn/oct-errno.cc: libinterp/corefcn/oct-errno.in.cc | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/oct-errno.cc: %reldir%/oct-errno.in.cc | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	if test -n "$(PERL)"; then \
 	  $(SHELL) $(srcdir)/libinterp/mk-errno-list --perl "$(PERL)" < $< > $@-t; \
@@ -274,30 +274,30 @@
 	fi && \
 	mv $@-t $@
 
-libinterp/corefcn/mxarray.h: libinterp/corefcn/mxarray.in.h build-aux/mk-mxarray-h.sh | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/mxarray.h: %reldir%/mxarray.in.h build-aux/mk-mxarray-h.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/mk-mxarray-h.sh)
 
-libinterp/corefcn/oct-tex-lexer.ll: libinterp/corefcn/oct-tex-lexer.in.ll libinterp/corefcn/oct-tex-symbols.in | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/oct-tex-lexer.ll: %reldir%/oct-tex-lexer.in.ll %reldir%/oct-tex-symbols.in | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
-	$(AWK) 'BEGIN { print "/* DO NOT EDIT. AUTOMATICALLY GENERATED FROM oct-tex-lexer.in.ll and oct-tex-symbols.in. */"; } /^@SYMBOL_RULES@$$/ { count = 0; while (getline < "$(srcdir)/libinterp/corefcn/oct-tex-symbols.in") { if ($$0 !~ /^#.*/ && NF == 3) { printf("\"\\\\%s\" { yylval->sym = %d; return SYM; }\n", $$1, count); count++; } } getline } ! /^@SYMBOL_RULES@$$/ { print }' $< > $@-t && \
+	$(AWK) 'BEGIN { print "/* DO NOT EDIT. AUTOMATICALLY GENERATED FROM oct-tex-lexer.in.ll and oct-tex-symbols.in. */"; } /^@SYMBOL_RULES@$$/ { count = 0; while (getline < "$(srcdir)/%reldir%/oct-tex-symbols.in") { if ($$0 !~ /^#.*/ && NF == 3) { printf("\"\\\\%s\" { yylval->sym = %d; return SYM; }\n", $$1, count); count++; } } getline } ! /^@SYMBOL_RULES@$$/ { print }' $< > $@-t && \
 	mv $@-t $@
 
-libinterp/corefcn/oct-tex-symbols.cc: libinterp/corefcn/oct-tex-symbols.in | libinterp/corefcn/$(octave_dirstamp)
+%reldir%/oct-tex-symbols.cc: %reldir%/oct-tex-symbols.in | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	$(AWK) 'BEGIN { print "// DO NOT EDIT. AUTOMATICALLY GENERATED FROM oct-tex-symbols.in."; print "static uint32_t symbol_codes[][2] = {"; count = 0; } END { print "};"; printf("static int num_symbol_codes = %d;\n", count); } !/^#/ && (NF == 3) { printf("  { %s, %s },\n", $$2, $$3); count++; }' $< > $@-t && \
 	mv $@-t $@
 
-libinterp/corefcn/oct-tex-lexer.cc: LEX_OUTPUT_ROOT := lex.octave_tex_
+%reldir%/oct-tex-lexer.cc: LEX_OUTPUT_ROOT := lex.octave_tex_
 
-libinterp/corefcn/oct-tex-parser.yy: libinterp/corefcn/oct-tex-parser.in.yy
+%reldir%/oct-tex-parser.yy: %reldir%/oct-tex-parser.in.yy
 	$(AM_V_GEN)$(call subst-bison-api-decls,octave_tex_)
 
 noinst_LTLIBRARIES += \
-  libinterp/corefcn/libcorefcn.la
+  %reldir%/libcorefcn.la
 
-libinterp_corefcn_libcorefcn_la_SOURCES = $(COREFCN_SRC)
+%canon_reldir%_libcorefcn_la_SOURCES = $(COREFCN_SRC)
 
-libinterp_corefcn_libcorefcn_la_CPPFLAGS = \
+%canon_reldir%_libcorefcn_la_CPPFLAGS = \
   $(libinterp_liboctinterp_la_CPPFLAGS) \
   $(FFTW_XCPPFLAGS) \
   $(FONTCONFIG_CPPFLAGS) \
@@ -306,15 +306,15 @@
   $(LLVM_CPPFLAGS) \
   $(Z_CPPFLAGS)
 
-libinterp_corefcn_libcorefcn_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_libcorefcn_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libinterp_corefcn_libcorefcn_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS) $(LLVM_CXXFLAGS)
+%canon_reldir%_libcorefcn_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS) $(LLVM_CXXFLAGS)
 
 libinterp_EXTRA_DIST += \
-  libinterp/corefcn/defaults.in.h \
-  libinterp/corefcn/graphics.in.h \
-  libinterp/corefcn/mxarray.in.h \
-  libinterp/corefcn/oct-errno.in.cc \
-  libinterp/corefcn/oct-tex-lexer.in.ll \
-  libinterp/corefcn/oct-tex-parser.in.yy \
-  libinterp/corefcn/oct-tex-symbols.in
+  %reldir%/defaults.in.h \
+  %reldir%/graphics.in.h \
+  %reldir%/mxarray.in.h \
+  %reldir%/oct-errno.in.cc \
+  %reldir%/oct-tex-lexer.in.ll \
+  %reldir%/oct-tex-parser.in.yy \
+  %reldir%/oct-tex-symbols.in
--- a/libinterp/dldfcn/config-module.awk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/dldfcn/config-module.awk	Mon May 15 16:17:58 2017 -0400
@@ -23,10 +23,10 @@
   print "## DO NOT EDIT -- generated from module-files by config-module.awk";
   print ""
   print "EXTRA_DIST += \\"
-  print "  libinterp/dldfcn/config-module.sh \\"
-  print "  libinterp/dldfcn/config-module.awk \\"
-  print "  libinterp/dldfcn/module-files \\"
-  print "  libinterp/dldfcn/oct-qhull.h"
+  print "  %reldir%/config-module.sh \\"
+  print "  %reldir%/config-module.awk \\"
+  print "  %reldir%/module-files \\"
+  print "  %reldir%/oct-qhull.h"
   print ""
 }
 /^#.*/ { next; }
@@ -42,7 +42,7 @@
   for (i = 1; i <= nfiles; i++) {
     if (i == nfiles)
       sep = "\n";
-    printf ("  libinterp/dldfcn/%s%s", files[i], sep);
+    printf ("  %%reldir%%/%s%s", files[i], sep);
   }
   print "";
 
@@ -57,7 +57,7 @@
   print "## of symbolic links";
   print "";
   print "%.oct : %.la"
-  print "	$(AM_V_GEN)$(INSTALL_PROGRAM) libinterp/dldfcn/.libs/$(shell $(SED) -n -e \"s/dlname='\\([^']*\\)'/\\1/p\" < $<) $@"
+  print "	$(AM_V_GEN)$(INSTALL_PROGRAM) %reldir%/.libs/$(shell $(SED) -n -e \"s/dlname='\\([^']*\\)'/\\1/p\" < $<) $@"
   print ""
   print "else";
   print "";
@@ -69,20 +69,20 @@
     basename = files[i];
     sub (/\.cc$/, "", basename);
     print "";
-    printf ("libinterp_dldfcn_%s_la_SOURCES = libinterp/dldfcn/%s\n",
+    printf ("%%canon_reldir%%_%s_la_SOURCES = %%reldir%%/%s\n",
             basename, files[i]);
     if (cppflags[i])
       {
-        printf ("libinterp_dldfcn_%s_la_CPPFLAGS = $(libinterp_liboctinterp_la_CPPFLAGS) %s\n",
+        printf ("%%canon_reldir%%_%s_la_CPPFLAGS = $(libinterp_liboctinterp_la_CPPFLAGS) %s\n",
                 basename, cppflags[i]);
       }
-    printf ("libinterp_dldfcn_%s_la_CFLAGS = $(libinterp_liboctinterp_la_CFLAGS) %s\n",
+    printf ("%%canon_reldir%%_%s_la_CFLAGS = $(libinterp_liboctinterp_la_CFLAGS) %s\n",
             basename, cppflags[i]);
-    printf ("libinterp_dldfcn_%s_la_CXXFLAGS = $(libinterp_liboctinterp_la_CXXFLAGS) %s\n",
+    printf ("%%canon_reldir%%_%s_la_CXXFLAGS = $(libinterp_liboctinterp_la_CXXFLAGS) %s\n",
             basename, cppflags[i]);
-    printf ("libinterp_dldfcn_%s_la_LDFLAGS = -avoid-version -module $(NO_UNDEFINED_LDFLAG) %s $(OCT_LINK_OPTS) $(WARN_LDFLAGS)\n",
+    printf ("%%canon_reldir%%_%s_la_LDFLAGS = -avoid-version -module $(NO_UNDEFINED_LDFLAG) %s $(OCT_LINK_OPTS) $(WARN_LDFLAGS)\n",
             basename, ldflags[i]);
-    printf ("libinterp_dldfcn_%s_la_LIBADD = $(DLD_LIBOCTINTERP_LIBADD) liboctave/liboctave.la %s $(OCT_LINK_DEPS)\n",
+    printf ("%%canon_reldir%%_%s_la_LIBADD = $(DLD_LIBOCTINTERP_LIBADD) liboctave/liboctave.la %s $(OCT_LINK_DEPS)\n",
             basename, libraries[i]);
   }
 }
--- a/libinterp/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,11 +1,11 @@
-libinterp_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-libinterp_CLEANFILES =
-libinterp_DISTCLEANFILES =
-libinterp_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
 ## Search local directories before those specified by the user.
-libinterp_liboctinterp_la_CPPFLAGS = \
+%canon_reldir%_liboctinterp_la_CPPFLAGS = \
   @OCTINTERP_DLL_DEFS@ \
   -Iliboctave -I$(srcdir)/liboctave \
   -I$(srcdir)/liboctave/array \
@@ -13,43 +13,43 @@
   -Iliboctave/operators -I$(srcdir)/liboctave/operators \
   -I$(srcdir)/liboctave/system \
   -I$(srcdir)/liboctave/util \
-  -I$(srcdir)/libinterp/octave-value \
+  -I$(srcdir)/%reldir%/octave-value \
   -Ilibinterp -I$(srcdir)/libinterp \
-  -I$(srcdir)/libinterp/operators \
-  -Ilibinterp/parse-tree -I$(srcdir)/libinterp/parse-tree \
-  -Ilibinterp/corefcn -I$(srcdir)/libinterp/corefcn \
+  -I$(srcdir)/%reldir%/operators \
+  -I%reldir%/parse-tree -I$(srcdir)/%reldir%/parse-tree \
+  -I%reldir%/corefcn -I$(srcdir)/%reldir%/corefcn \
   -I$(srcdir)/liboctave/wrappers \
   $(HDF5_CPPFLAGS) \
   $(MAGICK_CPPFLAGS)
 
-libinterp_liboctinterp_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_liboctinterp_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libinterp_liboctinterp_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_liboctinterp_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-octlib_LTLIBRARIES += libinterp/liboctinterp.la
+octlib_LTLIBRARIES += %reldir%/liboctinterp.la
 
 BUILT_SOURCES += \
-  libinterp/builtin-defun-decls.h \
-  libinterp/corefcn/defaults.h \
-  libinterp/corefcn/graphics-props.cc \
-  libinterp/corefcn/graphics.h \
-  libinterp/corefcn/mxarray.h \
-  libinterp/corefcn/oct-tex-parser.h \
-  libinterp/corefcn/oct-tex-symbols.cc \
-  libinterp/parse-tree/oct-gperf.h \
-  libinterp/parse-tree/oct-parse.h \
-  libinterp/version.h
+  %reldir%/builtin-defun-decls.h \
+  %reldir%/corefcn/defaults.h \
+  %reldir%/corefcn/graphics-props.cc \
+  %reldir%/corefcn/graphics.h \
+  %reldir%/corefcn/mxarray.h \
+  %reldir%/corefcn/oct-tex-parser.h \
+  %reldir%/corefcn/oct-tex-symbols.cc \
+  %reldir%/parse-tree/oct-gperf.h \
+  %reldir%/parse-tree/oct-parse.h \
+  %reldir%/version.h
 
 ULT_PARSER_SRC := \
-  libinterp/corefcn/oct-tex-lexer.in.ll \
-  libinterp/corefcn/oct-tex-parser.in.yy \
-  libinterp/parse-tree/oct-parse.in.yy
+  %reldir%/corefcn/oct-tex-lexer.in.ll \
+  %reldir%/corefcn/oct-tex-parser.in.yy \
+  %reldir%/parse-tree/oct-parse.in.yy
 
 GENERATED_PARSER_FILES := \
-  libinterp/corefcn/oct-tex-lexer.ll \
-  libinterp/corefcn/oct-tex-parser.h \
-  libinterp/corefcn/oct-tex-parser.yy \
-  libinterp/parse-tree/oct-parse.yy
+  %reldir%/corefcn/oct-tex-lexer.ll \
+  %reldir%/corefcn/oct-tex-parser.h \
+  %reldir%/corefcn/oct-tex-parser.yy \
+  %reldir%/parse-tree/oct-parse.yy
 
 ## These generated files are included in the source distribution to
 ## avoid needing certain tools to build from a distribution tarball.
@@ -57,47 +57,47 @@
 LIBINTERP_BUILT_DISTFILES = \
   $(GENERATED_PARSER_FILES) \
   $(OPT_HANDLERS) \
-  libinterp/corefcn/oct-tex-parser.h \
-  libinterp/corefcn/oct-tex-symbols.cc \
-  libinterp/parse-tree/oct-gperf.h \
-  libinterp/parse-tree/oct-parse.h
+  %reldir%/corefcn/oct-tex-parser.h \
+  %reldir%/corefcn/oct-tex-symbols.cc \
+  %reldir%/parse-tree/oct-gperf.h \
+  %reldir%/parse-tree/oct-parse.h
 
 ## Files that are created during build process and installed,
 ## BUT not distributed in tarball.
 LIBINTERP_BUILT_NODISTFILES = \
-  libinterp/build-env.cc \
-  libinterp/build-env-features.cc \
-  libinterp/liboctinterp-build-info.cc \
-  libinterp/corefcn/mxarray.h \
-  libinterp/corefcn/oct-errno.cc \
-  libinterp/corefcn/defaults.h \
-  libinterp/corefcn/graphics-props.cc \
-  libinterp/corefcn/graphics.h \
-  libinterp/builtin-defun-decls.h \
-  libinterp/operators/ops.cc \
-  libinterp/version.h \
-  libinterp/builtins.cc
+  %reldir%/build-env.cc \
+  %reldir%/build-env-features.cc \
+  %reldir%/liboctinterp-build-info.cc \
+  %reldir%/corefcn/mxarray.h \
+  %reldir%/corefcn/oct-errno.cc \
+  %reldir%/corefcn/defaults.h \
+  %reldir%/corefcn/graphics-props.cc \
+  %reldir%/corefcn/graphics.h \
+  %reldir%/builtin-defun-decls.h \
+  %reldir%/operators/ops.cc \
+  %reldir%/version.h \
+  %reldir%/builtins.cc
 
-libinterp_EXTRA_DIST += \
-  libinterp/DOCSTRINGS \
-  libinterp/build-env.in.cc \
-  libinterp/build-env-features.sh \
-  libinterp/deprecated-config.h \
-  libinterp/gendoc.pl \
-  libinterp/genprops.awk \
-  libinterp/liboctinterp-build-info.in.cc \
-  libinterp/mk-errno-list \
-  libinterp/mk-pkg-add \
-  libinterp/mkops \
-  libinterp/op-kw-docs \
-  libinterp/version.in.h \
+%canon_reldir%_EXTRA_DIST += \
+  %reldir%/DOCSTRINGS \
+  %reldir%/build-env.in.cc \
+  %reldir%/build-env-features.sh \
+  %reldir%/deprecated-config.h \
+  %reldir%/gendoc.pl \
+  %reldir%/genprops.awk \
+  %reldir%/liboctinterp-build-info.in.cc \
+  %reldir%/mk-errno-list \
+  %reldir%/mk-pkg-add \
+  %reldir%/mkops \
+  %reldir%/op-kw-docs \
+  %reldir%/version.in.h \
   $(LIBINTERP_BUILT_DISTFILES)
 
 octinclude_HEADERS += \
-  libinterp/builtins.h \
-  libinterp/build-env.h \
-  libinterp/liboctinterp-build-info.h \
-  libinterp/octave.h \
+  %reldir%/builtins.h \
+  %reldir%/build-env.h \
+  %reldir%/liboctinterp-build-info.h \
+  %reldir%/octave.h \
   $(COREFCN_INC) \
   $(LIBINTERP_OPERATORS_INC) \
   $(OCTAVE_VALUE_INC) \
@@ -105,37 +105,37 @@
   $(PARSER_INC)
 
 noinst_HEADERS += \
-  libinterp/options-usage.h \
+  %reldir%/options-usage.h \
   $(NOINSTALL_LIBINTERP_OPERATORS_INC)
 
 nodist_octinclude_HEADERS += \
-  libinterp/builtin-defun-decls.h \
-  libinterp/corefcn/defaults.h \
-  libinterp/corefcn/graphics-props.cc \
-  libinterp/corefcn/graphics.h \
-  libinterp/corefcn/mxarray.h \
-  libinterp/version.h
+  %reldir%/builtin-defun-decls.h \
+  %reldir%/corefcn/defaults.h \
+  %reldir%/corefcn/graphics-props.cc \
+  %reldir%/corefcn/graphics.h \
+  %reldir%/corefcn/mxarray.h \
+  %reldir%/version.h
 
 DIST_SRC += \
-  libinterp/octave.cc \
-  libinterp/version.cc \
+  %reldir%/octave.cc \
+  %reldir%/version.cc \
   $(OCTAVE_VALUE_SRC) \
   $(PARSE_TREE_SRC) \
   $(COREFCN_SRC)
 
-include libinterp/parse-tree/module.mk
-include libinterp/octave-value/module.mk
-include libinterp/operators/module.mk
-include libinterp/template-inst/module.mk
-include libinterp/corefcn/module.mk
-include libinterp/dldfcn/module.mk
+include %reldir%/parse-tree/module.mk
+include %reldir%/octave-value/module.mk
+include %reldir%/operators/module.mk
+include %reldir%/template-inst/module.mk
+include %reldir%/corefcn/module.mk
+include %reldir%/dldfcn/module.mk
 
-$(srcdir)/libinterp/dldfcn/module.mk: $(srcdir)/libinterp/dldfcn/config-module.sh $(srcdir)/libinterp/dldfcn/config-module.awk $(srcdir)/libinterp/dldfcn/module-files
-	$(AM_V_GEN)$(SHELL) $(srcdir)/libinterp/dldfcn/config-module.sh $(srcdir)
+$(srcdir)/%reldir%/dldfcn/module.mk: $(srcdir)/%reldir%/dldfcn/config-module.sh $(srcdir)/%reldir%/dldfcn/config-module.awk $(srcdir)/%reldir%/dldfcn/module-files
+	$(AM_V_GEN)$(SHELL) $(srcdir)/%reldir%/dldfcn/config-module.sh $(srcdir)
 
 if AMCOND_ENABLE_DYNAMIC_LINKING
   OCT_FILES = $(DLDFCN_LIBS:.la=.oct)
-  DLD_LIBOCTINTERP_LIBADD = libinterp/liboctinterp.la
+  DLD_LIBOCTINTERP_LIBADD = %reldir%/liboctinterp.la
   LIBINTERP_DLDFCN_LIBADD =
 else
   OCT_FILES =
@@ -143,42 +143,42 @@
   LIBINTERP_DLDFCN_LIBADD = $(DLDFCN_LIBS)
 endif
 
-libinterp_liboctinterp_la_SOURCES = \
-  libinterp/octave.cc \
-  libinterp/version.cc \
+%canon_reldir%_liboctinterp_la_SOURCES = \
+  %reldir%/octave.cc \
+  %reldir%/version.cc \
   $(LIBINTERP_OPERATORS_SRC) \
   $(TEMPLATE_INST_SRC)
 
-nodist_libinterp_liboctinterp_la_SOURCES = \
-  libinterp/corefcn/mxarray.h \
-  libinterp/corefcn/oct-errno.cc \
-  libinterp/corefcn/defaults.h \
-  libinterp/corefcn/graphics.h \
-  libinterp/operators/ops.cc \
-  libinterp/builtin-defun-decls.h \
-  libinterp/builtins.cc \
-  libinterp/build-env.cc \
-  libinterp/build-env-features.cc \
-  libinterp/liboctinterp-build-info.cc \
-  libinterp/version.h
+nodist_%canon_reldir%_liboctinterp_la_SOURCES = \
+  %reldir%/corefcn/mxarray.h \
+  %reldir%/corefcn/oct-errno.cc \
+  %reldir%/corefcn/defaults.h \
+  %reldir%/corefcn/graphics.h \
+  %reldir%/operators/ops.cc \
+  %reldir%/builtin-defun-decls.h \
+  %reldir%/builtins.cc \
+  %reldir%/build-env.cc \
+  %reldir%/build-env-features.cc \
+  %reldir%/liboctinterp-build-info.cc \
+  %reldir%/version.h
 
-libinterp_liboctinterp_la_LIBADD = \
-  libinterp/octave-value/liboctave-value.la \
-  libinterp/parse-tree/libparse-tree.la \
-  libinterp/corefcn/libcorefcn.la \
+%canon_reldir%_liboctinterp_la_LIBADD = \
+  %reldir%/octave-value/liboctave-value.la \
+  %reldir%/parse-tree/libparse-tree.la \
+  %reldir%/corefcn/libcorefcn.la \
   $(LIBINTERP_DLDFCN_LIBADD) \
   liboctave/liboctave.la \
   $(LIBOCTINTERP_LINK_DEPS)
 
 # Increment these as needed and according to the rules in the libtool manual:
-libinterp_liboctinterp_current = 4
-libinterp_liboctinterp_revision = 0
-libinterp_liboctinterp_age = 0
+%canon_reldir%_liboctinterp_current = 4
+%canon_reldir%_liboctinterp_revision = 0
+%canon_reldir%_liboctinterp_age = 0
 
-libinterp_liboctinterp_version_info = $(libinterp_liboctinterp_current):$(libinterp_liboctinterp_revision):$(libinterp_liboctinterp_age)
+%canon_reldir%_liboctinterp_version_info = $(%canon_reldir%_liboctinterp_current):$(%canon_reldir%_liboctinterp_revision):$(%canon_reldir%_liboctinterp_age)
 
-libinterp_liboctinterp_la_LDFLAGS = \
-  -version-info $(libinterp_liboctinterp_version_info) \
+%canon_reldir%_liboctinterp_la_LDFLAGS = \
+  -version-info $(%canon_reldir%_liboctinterp_version_info) \
   $(NO_UNDEFINED_LDFLAG) \
   -bindir $(bindir) \
   $(LIBOCTINTERP_LINK_OPTS) \
@@ -233,18 +233,18 @@
 ## Special rules:
 ## Mostly for sources which must be built before rest of compilation.
 
-libinterp/build-env.cc: libinterp/build-env.in.cc build-aux/subst-config-vals.sh | libinterp/$(octave_dirstamp)
+%reldir%/build-env.cc: %reldir%/build-env.in.cc build-aux/subst-config-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-config-vals.sh)
 
-libinterp/build-env-features.cc: config.h libinterp/build-env-features.sh | libinterp/$(octave_dirstamp)
+%reldir%/build-env-features.cc: config.h %reldir%/build-env-features.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
-	$(SHELL) $(srcdir)/libinterp/build-env-features.sh $< > $@-t && \
+	$(SHELL) $(srcdir)/%reldir%/build-env-features.sh $< > $@-t && \
 	mv $@-t $@
 
-libinterp/version.h: libinterp/version.in.h build-aux/mk-version-h.sh | libinterp/$(octave_dirstamp)
+%reldir%/version.h: %reldir%/version.in.h build-aux/mk-version-h.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/mk-version-h.sh)
 
-libinterp/liboctinterp-build-info.cc: libinterp/liboctinterp-build-info.in.cc HG-ID | libinterp/$(octave_dirstamp)
+%reldir%/liboctinterp-build-info.cc: %reldir%/liboctinterp-build-info.in.cc HG-ID | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(build-info-commands)
 
 if AMCOND_ENABLE_DYNAMIC_LINKING
@@ -253,38 +253,38 @@
   mkbuiltins_dld_opt = --disable-dl
 endif
 
-libinterp/builtins.cc: $(LIBINTERP_DEFUN_FILES) build-aux/mk-builtins.pl | libinterp/$(octave_dirstamp)
+%reldir%/builtins.cc: $(LIBINTERP_DEFUN_FILES) build-aux/mk-builtins.pl | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	$(PERL) $(srcdir)/build-aux/mk-builtins.pl --source $(mkbuiltins_dld_opt) "$(srcdir)" -- $(LIBINTERP_DEFUN_FILES) > $@-t && \
 	mv $@-t $@
 
-libinterp/builtin-defun-decls.h: $(LIBINTERP_DEFUN_FILES) build-aux/mk-builtins.pl | libinterp/$(octave_dirstamp)
+%reldir%/builtin-defun-decls.h: $(LIBINTERP_DEFUN_FILES) build-aux/mk-builtins.pl | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
 	$(PERL) $(srcdir)/build-aux/mk-builtins.pl --header $(mkbuiltins_dld_opt) "$(srcdir)" -- $(LIBINTERP_DEFUN_FILES) > $@-t && \
 	$(simple_move_if_change_rule)
 
 if AMCOND_ENABLE_DYNAMIC_LINKING
-DLDFCN_PKG_ADD_FILE = libinterp/dldfcn/PKG_ADD
+DLDFCN_PKG_ADD_FILE = %reldir%/dldfcn/PKG_ADD
 
-libinterp/dldfcn/PKG_ADD: $(DLDFCN_DEFUN_FILES) libinterp/mk-pkg-add | libinterp/$(octave_dirstamp)
+%reldir%/dldfcn/PKG_ADD: $(DLDFCN_DEFUN_FILES) %reldir%/mk-pkg-add | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t && \
-	$(SHELL) $(srcdir)/libinterp/mk-pkg-add "$(srcdir)" $(DLDFCN_DEFUN_FILES) > $@-t && \
+	$(SHELL) $(srcdir)/%reldir%/mk-pkg-add "$(srcdir)" $(DLDFCN_DEFUN_FILES) > $@-t && \
 	mv $@-t $@
 endif
 
-DOCSTRING_FILES += libinterp/DOCSTRINGS
+DOCSTRING_FILES += %reldir%/DOCSTRINGS
 
-libinterp/DOCSTRINGS: $(LIBINTERP_DEFUN_FILES) libinterp/op-kw-docs | libinterp/$(octave_dirstamp)
-	$(AM_V_GEN)rm -f libinterp/DOCSTRINGS-t && \
-	( $(PERL) $(srcdir)/libinterp/gendoc.pl "$(srcdir)" $(LIBINTERP_DEFUN_FILES); $(SED) -ne '/^\x1d/,$$p' $(srcdir)/libinterp/op-kw-docs ) > libinterp/DOCSTRINGS-t && \
-	$(call move_if_change_rule,libinterp/DOCSTRINGS-t,$@)
+%reldir%/DOCSTRINGS: $(LIBINTERP_DEFUN_FILES) %reldir%/op-kw-docs | %reldir%/$(octave_dirstamp)
+	$(AM_V_GEN)rm -f %reldir%/DOCSTRINGS-t && \
+	( $(PERL) $(srcdir)/%reldir%/gendoc.pl "$(srcdir)" $(LIBINTERP_DEFUN_FILES); $(SED) -ne '/^\x1d/,$$p' $(srcdir)/%reldir%/op-kw-docs ) > %reldir%/DOCSTRINGS-t && \
+	$(call move_if_change_rule,%reldir%/DOCSTRINGS-t,$@)
 
 OCTAVE_INTERPRETER_TARGETS += \
   $(OCT_FILES) \
   $(DLDFCN_PKG_ADD_FILE) \
   $(LIBINTERP_TST_FILES)
 
-DIRSTAMP_FILES += libinterp/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 install-data-hook: install-oct install-built-in-docstrings install-deprecated-config-h
 
@@ -320,7 +320,7 @@
 endif
 .PHONY: install-oct uninstall-oct
 
-install-built-in-docstrings: libinterp/DOCSTRINGS
+install-built-in-docstrings: %reldir%/DOCSTRINGS
 	$(MKDIR_P) $(DESTDIR)$(octetcdir)
 	$(INSTALL_DATA) $< $(DESTDIR)$(octetcdir)/built-in-docstrings
 .PHONY: install-built-in-docstrings
@@ -329,7 +329,7 @@
 	rm -f $(DESTDIR)$(octetcdir)/built-in-docstrings
 .PHONY: uninstall-built-in-docstrings
 
-install-deprecated-config-h: libinterp/deprecated-config.h
+install-deprecated-config-h: %reldir%/deprecated-config.h
 	$(MKDIR_P) $(DESTDIR)$(octincludedir)
 	$(INSTALL_DATA) $< $(DESTDIR)$(octincludedir)/config.h
 .PHONY: install-deprecated-config-h
@@ -338,32 +338,32 @@
 	rm -f $(DESTDIR)$(octincludedir)/config.h
 .PHONY: uninstall-deprecated-config-h
 
-EXTRA_DIST += $(libinterp_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-libinterp_CLEANFILES += \
+%canon_reldir%_CLEANFILES += \
   $(DLDFCN_PKG_ADD_FILE) \
   $(LIBINTERP_BUILT_NODISTFILES) \
   $(LIBINTERP_TST_FILES) \
   $(OCT_FILES) \
-  libinterp/corefcn/oct-tex-parser.output \
-  libinterp/parse-tree/oct-parse.output
+  %reldir%/corefcn/oct-tex-parser.output \
+  %reldir%/parse-tree/oct-parse.output
 
-libinterp_MAINTAINERCLEANFILES += \
-  libinterp/DOCSTRINGS \
+%canon_reldir%_MAINTAINERCLEANFILES += \
+  %reldir%/DOCSTRINGS \
   $(LIBINTERP_BUILT_DISTFILES)
 
 BUILT_DISTFILES += $(LIBINTERP_BUILT_DISTFILES)
 BUILT_NODISTFILES += $(LIBINTERP_BUILT_NODISTFILES)
 
-CLEANFILES += $(libinterp_CLEANFILES)
-DISTCLEANFILES += $(libinterp_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(libinterp_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 libinterp-clean:
-	rm -f $(libinterp_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 libinterp-distclean: libinterp-clean
-	rm -f $(libinterp_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 libinterp-maintainer-clean: libinterp-distclean
-	rm -f $(libinterp_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/libinterp/octave-value/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/octave-value/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,123 +1,123 @@
 OV_INTTYPE_INC = \
-  libinterp/octave-value/ov-base-int.h \
-  libinterp/octave-value/ov-int-traits.h \
-  libinterp/octave-value/ov-int16.h \
-  libinterp/octave-value/ov-int32.h \
-  libinterp/octave-value/ov-int64.h \
-  libinterp/octave-value/ov-int8.h \
-  libinterp/octave-value/ov-intx.h \
-  libinterp/octave-value/ov-uint16.h \
-  libinterp/octave-value/ov-uint32.h \
-  libinterp/octave-value/ov-uint64.h \
-  libinterp/octave-value/ov-uint8.h
+  %reldir%/ov-base-int.h \
+  %reldir%/ov-int-traits.h \
+  %reldir%/ov-int16.h \
+  %reldir%/ov-int32.h \
+  %reldir%/ov-int64.h \
+  %reldir%/ov-int8.h \
+  %reldir%/ov-intx.h \
+  %reldir%/ov-uint16.h \
+  %reldir%/ov-uint32.h \
+  %reldir%/ov-uint64.h \
+  %reldir%/ov-uint8.h
 
 OV_SPARSE_INC = \
-  libinterp/octave-value/ov-base-sparse.h \
-  libinterp/octave-value/ov-bool-sparse.h \
-  libinterp/octave-value/ov-cx-sparse.h \
-  libinterp/octave-value/ov-re-sparse.h
+  %reldir%/ov-base-sparse.h \
+  %reldir%/ov-bool-sparse.h \
+  %reldir%/ov-cx-sparse.h \
+  %reldir%/ov-re-sparse.h
 
 OCTAVE_VALUE_INC = \
-  libinterp/octave-value/ov-base-diag.h \
-  libinterp/octave-value/ov-base-mat.h \
-  libinterp/octave-value/ov-base-scalar.h \
-  libinterp/octave-value/ov-base.h \
-  libinterp/octave-value/ov-bool-mat.h \
-  libinterp/octave-value/ov-bool.h \
-  libinterp/octave-value/ov-builtin.h \
-  libinterp/octave-value/ov-cell.h \
-  libinterp/octave-value/ov-ch-mat.h \
-  libinterp/octave-value/ov-class.h \
-  libinterp/octave-value/ov-classdef.h \
-  libinterp/octave-value/ov-colon.h \
-  libinterp/octave-value/ov-complex.h \
-  libinterp/octave-value/ov-cs-list.h \
-  libinterp/octave-value/ov-cx-diag.h \
-  libinterp/octave-value/ov-cx-mat.h \
-  libinterp/octave-value/ov-dld-fcn.h \
-  libinterp/octave-value/ov-fcn-handle.h \
-  libinterp/octave-value/ov-fcn-inline.h \
-  libinterp/octave-value/ov-fcn.h \
-  libinterp/octave-value/ov-float.h \
-  libinterp/octave-value/ov-flt-complex.h \
-  libinterp/octave-value/ov-flt-cx-diag.h \
-  libinterp/octave-value/ov-flt-cx-mat.h \
-  libinterp/octave-value/ov-flt-re-diag.h \
-  libinterp/octave-value/ov-flt-re-mat.h \
-  libinterp/octave-value/ov-java.h \
-  libinterp/octave-value/ov-lazy-idx.h \
-  libinterp/octave-value/ov-mex-fcn.h \
-  libinterp/octave-value/ov-null-mat.h \
-  libinterp/octave-value/ov-oncleanup.h \
-  libinterp/octave-value/ov-perm.h \
-  libinterp/octave-value/ov-range.h \
-  libinterp/octave-value/ov-re-diag.h \
-  libinterp/octave-value/ov-re-mat.h \
-  libinterp/octave-value/ov-scalar.h \
-  libinterp/octave-value/ov-str-mat.h \
-  libinterp/octave-value/ov-struct.h \
-  libinterp/octave-value/ov-typeinfo.h \
-  libinterp/octave-value/ov-usr-fcn.h \
-  libinterp/octave-value/ov.h \
-  libinterp/octave-value/ovl.h \
+  %reldir%/ov-base-diag.h \
+  %reldir%/ov-base-mat.h \
+  %reldir%/ov-base-scalar.h \
+  %reldir%/ov-base.h \
+  %reldir%/ov-bool-mat.h \
+  %reldir%/ov-bool.h \
+  %reldir%/ov-builtin.h \
+  %reldir%/ov-cell.h \
+  %reldir%/ov-ch-mat.h \
+  %reldir%/ov-class.h \
+  %reldir%/ov-classdef.h \
+  %reldir%/ov-colon.h \
+  %reldir%/ov-complex.h \
+  %reldir%/ov-cs-list.h \
+  %reldir%/ov-cx-diag.h \
+  %reldir%/ov-cx-mat.h \
+  %reldir%/ov-dld-fcn.h \
+  %reldir%/ov-fcn-handle.h \
+  %reldir%/ov-fcn-inline.h \
+  %reldir%/ov-fcn.h \
+  %reldir%/ov-float.h \
+  %reldir%/ov-flt-complex.h \
+  %reldir%/ov-flt-cx-diag.h \
+  %reldir%/ov-flt-cx-mat.h \
+  %reldir%/ov-flt-re-diag.h \
+  %reldir%/ov-flt-re-mat.h \
+  %reldir%/ov-java.h \
+  %reldir%/ov-lazy-idx.h \
+  %reldir%/ov-mex-fcn.h \
+  %reldir%/ov-null-mat.h \
+  %reldir%/ov-oncleanup.h \
+  %reldir%/ov-perm.h \
+  %reldir%/ov-range.h \
+  %reldir%/ov-re-diag.h \
+  %reldir%/ov-re-mat.h \
+  %reldir%/ov-scalar.h \
+  %reldir%/ov-str-mat.h \
+  %reldir%/ov-struct.h \
+  %reldir%/ov-typeinfo.h \
+  %reldir%/ov-usr-fcn.h \
+  %reldir%/ov.h \
+  %reldir%/ovl.h \
   $(OV_INTTYPE_INC) \
   $(OV_SPARSE_INC)
 
 OV_INTTYPE_SRC = \
-  libinterp/octave-value/ov-int16.cc \
-  libinterp/octave-value/ov-int32.cc \
-  libinterp/octave-value/ov-int64.cc \
-  libinterp/octave-value/ov-int8.cc \
-  libinterp/octave-value/ov-uint16.cc \
-  libinterp/octave-value/ov-uint32.cc \
-  libinterp/octave-value/ov-uint64.cc \
-  libinterp/octave-value/ov-uint8.cc
+  %reldir%/ov-int16.cc \
+  %reldir%/ov-int32.cc \
+  %reldir%/ov-int64.cc \
+  %reldir%/ov-int8.cc \
+  %reldir%/ov-uint16.cc \
+  %reldir%/ov-uint32.cc \
+  %reldir%/ov-uint64.cc \
+  %reldir%/ov-uint8.cc
 
 OV_SPARSE_SRC = \
-  libinterp/octave-value/ov-bool-sparse.cc \
-  libinterp/octave-value/ov-cx-sparse.cc \
-  libinterp/octave-value/ov-re-sparse.cc
+  %reldir%/ov-bool-sparse.cc \
+  %reldir%/ov-cx-sparse.cc \
+  %reldir%/ov-re-sparse.cc
 
 OCTAVE_VALUE_SRC = \
-  libinterp/octave-value/ov-base.cc \
-  libinterp/octave-value/ov-bool-mat.cc \
-  libinterp/octave-value/ov-bool.cc \
-  libinterp/octave-value/ov-builtin.cc \
-  libinterp/octave-value/ov-cell.cc \
-  libinterp/octave-value/ov-ch-mat.cc \
-  libinterp/octave-value/ov-class.cc \
-  libinterp/octave-value/ov-classdef.cc \
-  libinterp/octave-value/ov-colon.cc \
-  libinterp/octave-value/ov-complex.cc \
-  libinterp/octave-value/ov-cs-list.cc \
-  libinterp/octave-value/ov-cx-diag.cc \
-  libinterp/octave-value/ov-cx-mat.cc \
-  libinterp/octave-value/ov-dld-fcn.cc \
-  libinterp/octave-value/ov-fcn-handle.cc \
-  libinterp/octave-value/ov-fcn-inline.cc \
-  libinterp/octave-value/ov-fcn.cc \
-  libinterp/octave-value/ov-float.cc \
-  libinterp/octave-value/ov-flt-complex.cc \
-  libinterp/octave-value/ov-flt-cx-diag.cc \
-  libinterp/octave-value/ov-flt-cx-mat.cc \
-  libinterp/octave-value/ov-flt-re-diag.cc \
-  libinterp/octave-value/ov-flt-re-mat.cc \
-  libinterp/octave-value/ov-java.cc \
-  libinterp/octave-value/ov-lazy-idx.cc \
-  libinterp/octave-value/ov-mex-fcn.cc \
-  libinterp/octave-value/ov-null-mat.cc \
-  libinterp/octave-value/ov-oncleanup.cc \
-  libinterp/octave-value/ov-perm.cc \
-  libinterp/octave-value/ov-range.cc \
-  libinterp/octave-value/ov-re-diag.cc \
-  libinterp/octave-value/ov-re-mat.cc \
-  libinterp/octave-value/ov-scalar.cc \
-  libinterp/octave-value/ov-str-mat.cc \
-  libinterp/octave-value/ov-struct.cc \
-  libinterp/octave-value/ov-typeinfo.cc \
-  libinterp/octave-value/ov-usr-fcn.cc \
-  libinterp/octave-value/ov.cc \
-  libinterp/octave-value/ovl.cc \
+  %reldir%/ov-base.cc \
+  %reldir%/ov-bool-mat.cc \
+  %reldir%/ov-bool.cc \
+  %reldir%/ov-builtin.cc \
+  %reldir%/ov-cell.cc \
+  %reldir%/ov-ch-mat.cc \
+  %reldir%/ov-class.cc \
+  %reldir%/ov-classdef.cc \
+  %reldir%/ov-colon.cc \
+  %reldir%/ov-complex.cc \
+  %reldir%/ov-cs-list.cc \
+  %reldir%/ov-cx-diag.cc \
+  %reldir%/ov-cx-mat.cc \
+  %reldir%/ov-dld-fcn.cc \
+  %reldir%/ov-fcn-handle.cc \
+  %reldir%/ov-fcn-inline.cc \
+  %reldir%/ov-fcn.cc \
+  %reldir%/ov-float.cc \
+  %reldir%/ov-flt-complex.cc \
+  %reldir%/ov-flt-cx-diag.cc \
+  %reldir%/ov-flt-cx-mat.cc \
+  %reldir%/ov-flt-re-diag.cc \
+  %reldir%/ov-flt-re-mat.cc \
+  %reldir%/ov-java.cc \
+  %reldir%/ov-lazy-idx.cc \
+  %reldir%/ov-mex-fcn.cc \
+  %reldir%/ov-null-mat.cc \
+  %reldir%/ov-oncleanup.cc \
+  %reldir%/ov-perm.cc \
+  %reldir%/ov-range.cc \
+  %reldir%/ov-re-diag.cc \
+  %reldir%/ov-re-mat.cc \
+  %reldir%/ov-scalar.cc \
+  %reldir%/ov-str-mat.cc \
+  %reldir%/ov-struct.cc \
+  %reldir%/ov-typeinfo.cc \
+  %reldir%/ov-usr-fcn.cc \
+  %reldir%/ov.cc \
+  %reldir%/ovl.cc \
   $(OV_INTTYPE_SRC) \
   $(OV_SPARSE_SRC)
 
@@ -126,28 +126,28 @@
 ## so they should not appear in the OCTAVE_VALUE_SRC list.
 
 libinterp_EXTRA_DIST += \
-  libinterp/octave-value/ov-base-diag.cc \
-  libinterp/octave-value/ov-base-int.cc \
-  libinterp/octave-value/ov-base-mat.cc \
-  libinterp/octave-value/ov-base-scalar.cc \
-  libinterp/octave-value/ov-base-sparse.cc
+  %reldir%/ov-base-diag.cc \
+  %reldir%/ov-base-int.cc \
+  %reldir%/ov-base-mat.cc \
+  %reldir%/ov-base-scalar.cc \
+  %reldir%/ov-base-sparse.cc
 
-noinst_LTLIBRARIES += libinterp/octave-value/liboctave-value.la
+noinst_LTLIBRARIES += %reldir%/liboctave-value.la
 
-libinterp_octave_value_liboctave_value_la_SOURCES = $(OCTAVE_VALUE_SRC)
+%canon_reldir%_liboctave_value_la_SOURCES = $(OCTAVE_VALUE_SRC)
 
 ## FIXME: maybe it would be better to limit the JAVA flags to
 ## the compile commands for ov-java.cc?  Does JAVA_LIBS need to be
 ## added to LIBOCTINTERP_LINK_DEPS (see libinterp/link-deps.mk)?
 ## Should we have a separate set of JAVA_LDFLAGS?
 
-libinterp_octave_value_liboctave_value_la_CPPFLAGS = \
+%canon_reldir%_liboctave_value_la_CPPFLAGS = \
   $(libinterp_liboctinterp_la_CPPFLAGS) \
   $(HDF5_CPPFLAGS) \
   $(JAVA_CPPFLAGS)
 
-libinterp_octave_value_liboctave_value_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_liboctave_value_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libinterp_octave_value_liboctave_value_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_liboctave_value_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-libinterp_octave_value_liboctave_value_la_LIBADD = $(JAVA_LIBS)
+%canon_reldir%_liboctave_value_la_LIBADD = $(JAVA_LIBS)
--- a/libinterp/operators/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/operators/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,141 +1,141 @@
 LIBINTERP_OPERATORS_SRC = \
-  libinterp/operators/op-b-b.cc \
-  libinterp/operators/op-b-bm.cc \
-  libinterp/operators/op-b-sbm.cc \
-  libinterp/operators/op-bm-b.cc \
-  libinterp/operators/op-bm-bm.cc \
-  libinterp/operators/op-bm-sbm.cc \
-  libinterp/operators/op-cdm-cdm.cc \
-  libinterp/operators/op-cdm-cm.cc \
-  libinterp/operators/op-cdm-cs.cc \
-  libinterp/operators/op-cdm-dm.cc \
-  libinterp/operators/op-cdm-m.cc \
-  libinterp/operators/op-cdm-s.cc \
-  libinterp/operators/op-cell.cc \
-  libinterp/operators/op-chm.cc \
-  libinterp/operators/op-class.cc \
-  libinterp/operators/op-cm-cdm.cc \
-  libinterp/operators/op-cm-cm.cc \
-  libinterp/operators/op-cm-cs.cc \
-  libinterp/operators/op-cm-dm.cc \
-  libinterp/operators/op-cm-m.cc \
-  libinterp/operators/op-cm-pm.cc \
-  libinterp/operators/op-cm-s.cc \
-  libinterp/operators/op-cm-scm.cc \
-  libinterp/operators/op-cm-sm.cc \
-  libinterp/operators/op-cs-cm.cc \
-  libinterp/operators/op-cs-cs.cc \
-  libinterp/operators/op-cs-m.cc \
-  libinterp/operators/op-cs-s.cc \
-  libinterp/operators/op-cs-scm.cc \
-  libinterp/operators/op-cs-sm.cc \
-  libinterp/operators/op-dm-cdm.cc \
-  libinterp/operators/op-dm-cm.cc \
-  libinterp/operators/op-dm-cs.cc \
-  libinterp/operators/op-dm-dm.cc \
-  libinterp/operators/op-dm-m.cc \
-  libinterp/operators/op-dm-s.cc \
-  libinterp/operators/op-dm-scm.cc \
-  libinterp/operators/op-dm-sm.cc \
-  libinterp/operators/op-fcdm-fcdm.cc \
-  libinterp/operators/op-fcdm-fcm.cc \
-  libinterp/operators/op-fcdm-fcs.cc \
-  libinterp/operators/op-fcdm-fdm.cc \
-  libinterp/operators/op-fcdm-fm.cc \
-  libinterp/operators/op-fcdm-fs.cc \
-  libinterp/operators/op-fcm-fcdm.cc \
-  libinterp/operators/op-fcm-fcm.cc \
-  libinterp/operators/op-fcm-fcs.cc \
-  libinterp/operators/op-fcm-fdm.cc \
-  libinterp/operators/op-fcm-fm.cc \
-  libinterp/operators/op-fcm-fs.cc \
-  libinterp/operators/op-fcm-pm.cc \
-  libinterp/operators/op-fcn.cc \
-  libinterp/operators/op-fcs-fcm.cc \
-  libinterp/operators/op-fcs-fcs.cc \
-  libinterp/operators/op-fcs-fm.cc \
-  libinterp/operators/op-fcs-fs.cc \
-  libinterp/operators/op-fdm-fcdm.cc \
-  libinterp/operators/op-fdm-fcm.cc \
-  libinterp/operators/op-fdm-fcs.cc \
-  libinterp/operators/op-fdm-fdm.cc \
-  libinterp/operators/op-fdm-fm.cc \
-  libinterp/operators/op-fdm-fs.cc \
-  libinterp/operators/op-fm-fcdm.cc \
-  libinterp/operators/op-fm-fcm.cc \
-  libinterp/operators/op-fm-fcs.cc \
-  libinterp/operators/op-fm-fdm.cc \
-  libinterp/operators/op-fm-fm.cc \
-  libinterp/operators/op-fm-fs.cc \
-  libinterp/operators/op-fm-pm.cc \
-  libinterp/operators/op-fs-fcm.cc \
-  libinterp/operators/op-fs-fcs.cc \
-  libinterp/operators/op-fs-fm.cc \
-  libinterp/operators/op-fs-fs.cc \
-  libinterp/operators/op-i16-i16.cc \
-  libinterp/operators/op-i32-i32.cc \
-  libinterp/operators/op-i64-i64.cc \
-  libinterp/operators/op-i8-i8.cc \
-  libinterp/operators/op-int-concat.cc \
-  libinterp/operators/op-m-cdm.cc \
-  libinterp/operators/op-m-cm.cc \
-  libinterp/operators/op-m-cs.cc \
-  libinterp/operators/op-m-dm.cc \
-  libinterp/operators/op-m-m.cc \
-  libinterp/operators/op-m-pm.cc \
-  libinterp/operators/op-m-s.cc \
-  libinterp/operators/op-m-scm.cc \
-  libinterp/operators/op-m-sm.cc \
-  libinterp/operators/op-pm-cm.cc \
-  libinterp/operators/op-pm-fcm.cc \
-  libinterp/operators/op-pm-fm.cc \
-  libinterp/operators/op-pm-m.cc \
-  libinterp/operators/op-pm-pm.cc \
-  libinterp/operators/op-pm-scm.cc \
-  libinterp/operators/op-pm-sm.cc \
-  libinterp/operators/op-range.cc \
-  libinterp/operators/op-s-cm.cc \
-  libinterp/operators/op-s-cs.cc \
-  libinterp/operators/op-s-m.cc \
-  libinterp/operators/op-s-s.cc \
-  libinterp/operators/op-s-scm.cc \
-  libinterp/operators/op-s-sm.cc \
-  libinterp/operators/op-sbm-b.cc \
-  libinterp/operators/op-sbm-bm.cc \
-  libinterp/operators/op-sbm-sbm.cc \
-  libinterp/operators/op-scm-cm.cc \
-  libinterp/operators/op-scm-cs.cc \
-  libinterp/operators/op-scm-m.cc \
-  libinterp/operators/op-scm-s.cc \
-  libinterp/operators/op-scm-scm.cc \
-  libinterp/operators/op-scm-sm.cc \
-  libinterp/operators/op-sm-cm.cc \
-  libinterp/operators/op-sm-cs.cc \
-  libinterp/operators/op-sm-m.cc \
-  libinterp/operators/op-sm-s.cc \
-  libinterp/operators/op-sm-scm.cc \
-  libinterp/operators/op-sm-sm.cc \
-  libinterp/operators/op-str-m.cc \
-  libinterp/operators/op-str-s.cc \
-  libinterp/operators/op-str-str.cc \
-  libinterp/operators/op-struct.cc \
-  libinterp/operators/op-ui16-ui16.cc \
-  libinterp/operators/op-ui32-ui32.cc \
-  libinterp/operators/op-ui64-ui64.cc \
-  libinterp/operators/op-ui8-ui8.cc
+  %reldir%/op-b-b.cc \
+  %reldir%/op-b-bm.cc \
+  %reldir%/op-b-sbm.cc \
+  %reldir%/op-bm-b.cc \
+  %reldir%/op-bm-bm.cc \
+  %reldir%/op-bm-sbm.cc \
+  %reldir%/op-cdm-cdm.cc \
+  %reldir%/op-cdm-cm.cc \
+  %reldir%/op-cdm-cs.cc \
+  %reldir%/op-cdm-dm.cc \
+  %reldir%/op-cdm-m.cc \
+  %reldir%/op-cdm-s.cc \
+  %reldir%/op-cell.cc \
+  %reldir%/op-chm.cc \
+  %reldir%/op-class.cc \
+  %reldir%/op-cm-cdm.cc \
+  %reldir%/op-cm-cm.cc \
+  %reldir%/op-cm-cs.cc \
+  %reldir%/op-cm-dm.cc \
+  %reldir%/op-cm-m.cc \
+  %reldir%/op-cm-pm.cc \
+  %reldir%/op-cm-s.cc \
+  %reldir%/op-cm-scm.cc \
+  %reldir%/op-cm-sm.cc \
+  %reldir%/op-cs-cm.cc \
+  %reldir%/op-cs-cs.cc \
+  %reldir%/op-cs-m.cc \
+  %reldir%/op-cs-s.cc \
+  %reldir%/op-cs-scm.cc \
+  %reldir%/op-cs-sm.cc \
+  %reldir%/op-dm-cdm.cc \
+  %reldir%/op-dm-cm.cc \
+  %reldir%/op-dm-cs.cc \
+  %reldir%/op-dm-dm.cc \
+  %reldir%/op-dm-m.cc \
+  %reldir%/op-dm-s.cc \
+  %reldir%/op-dm-scm.cc \
+  %reldir%/op-dm-sm.cc \
+  %reldir%/op-fcdm-fcdm.cc \
+  %reldir%/op-fcdm-fcm.cc \
+  %reldir%/op-fcdm-fcs.cc \
+  %reldir%/op-fcdm-fdm.cc \
+  %reldir%/op-fcdm-fm.cc \
+  %reldir%/op-fcdm-fs.cc \
+  %reldir%/op-fcm-fcdm.cc \
+  %reldir%/op-fcm-fcm.cc \
+  %reldir%/op-fcm-fcs.cc \
+  %reldir%/op-fcm-fdm.cc \
+  %reldir%/op-fcm-fm.cc \
+  %reldir%/op-fcm-fs.cc \
+  %reldir%/op-fcm-pm.cc \
+  %reldir%/op-fcn.cc \
+  %reldir%/op-fcs-fcm.cc \
+  %reldir%/op-fcs-fcs.cc \
+  %reldir%/op-fcs-fm.cc \
+  %reldir%/op-fcs-fs.cc \
+  %reldir%/op-fdm-fcdm.cc \
+  %reldir%/op-fdm-fcm.cc \
+  %reldir%/op-fdm-fcs.cc \
+  %reldir%/op-fdm-fdm.cc \
+  %reldir%/op-fdm-fm.cc \
+  %reldir%/op-fdm-fs.cc \
+  %reldir%/op-fm-fcdm.cc \
+  %reldir%/op-fm-fcm.cc \
+  %reldir%/op-fm-fcs.cc \
+  %reldir%/op-fm-fdm.cc \
+  %reldir%/op-fm-fm.cc \
+  %reldir%/op-fm-fs.cc \
+  %reldir%/op-fm-pm.cc \
+  %reldir%/op-fs-fcm.cc \
+  %reldir%/op-fs-fcs.cc \
+  %reldir%/op-fs-fm.cc \
+  %reldir%/op-fs-fs.cc \
+  %reldir%/op-i16-i16.cc \
+  %reldir%/op-i32-i32.cc \
+  %reldir%/op-i64-i64.cc \
+  %reldir%/op-i8-i8.cc \
+  %reldir%/op-int-concat.cc \
+  %reldir%/op-m-cdm.cc \
+  %reldir%/op-m-cm.cc \
+  %reldir%/op-m-cs.cc \
+  %reldir%/op-m-dm.cc \
+  %reldir%/op-m-m.cc \
+  %reldir%/op-m-pm.cc \
+  %reldir%/op-m-s.cc \
+  %reldir%/op-m-scm.cc \
+  %reldir%/op-m-sm.cc \
+  %reldir%/op-pm-cm.cc \
+  %reldir%/op-pm-fcm.cc \
+  %reldir%/op-pm-fm.cc \
+  %reldir%/op-pm-m.cc \
+  %reldir%/op-pm-pm.cc \
+  %reldir%/op-pm-scm.cc \
+  %reldir%/op-pm-sm.cc \
+  %reldir%/op-range.cc \
+  %reldir%/op-s-cm.cc \
+  %reldir%/op-s-cs.cc \
+  %reldir%/op-s-m.cc \
+  %reldir%/op-s-s.cc \
+  %reldir%/op-s-scm.cc \
+  %reldir%/op-s-sm.cc \
+  %reldir%/op-sbm-b.cc \
+  %reldir%/op-sbm-bm.cc \
+  %reldir%/op-sbm-sbm.cc \
+  %reldir%/op-scm-cm.cc \
+  %reldir%/op-scm-cs.cc \
+  %reldir%/op-scm-m.cc \
+  %reldir%/op-scm-s.cc \
+  %reldir%/op-scm-scm.cc \
+  %reldir%/op-scm-sm.cc \
+  %reldir%/op-sm-cm.cc \
+  %reldir%/op-sm-cs.cc \
+  %reldir%/op-sm-m.cc \
+  %reldir%/op-sm-s.cc \
+  %reldir%/op-sm-scm.cc \
+  %reldir%/op-sm-sm.cc \
+  %reldir%/op-str-m.cc \
+  %reldir%/op-str-s.cc \
+  %reldir%/op-str-str.cc \
+  %reldir%/op-struct.cc \
+  %reldir%/op-ui16-ui16.cc \
+  %reldir%/op-ui32-ui32.cc \
+  %reldir%/op-ui64-ui64.cc \
+  %reldir%/op-ui8-ui8.cc
 
 LIBINTERP_OPERATORS_INC = \
-  libinterp/operators/ops.h
+  %reldir%/ops.h
 
 ## These look like included header files to Autotools build process
 NOINSTALL_LIBINTERP_OPERATORS_INC = \
-  libinterp/operators/op-dm-template.cc \
-  libinterp/operators/op-dms-template.cc \
-  libinterp/operators/op-int.h \
-  libinterp/operators/op-pm-template.cc
+  %reldir%/op-dm-template.cc \
+  %reldir%/op-dms-template.cc \
+  %reldir%/op-int.h \
+  %reldir%/op-pm-template.cc
 
 ## Special rules for sources which must be built before rest of compilation.
-libinterp/operators/ops.cc: $(LIBINTERP_OPERATORS_SRC) libinterp/mkops
+%reldir%/ops.cc: $(LIBINTERP_OPERATORS_SRC) libinterp/mkops
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(SHELL) $(srcdir)/libinterp/mkops $(LIBINTERP_OPERATORS_SRC) > $@-t && \
 	mv $@-t $@
--- a/libinterp/parse-tree/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/parse-tree/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,91 +1,91 @@
 PARSE_TREE_INC = \
-  libinterp/parse-tree/bp-table.h \
-  libinterp/parse-tree/jit-ir.h \
-  libinterp/parse-tree/jit-typeinfo.h \
-  libinterp/parse-tree/jit-util.h \
-  libinterp/parse-tree/lex.h \
-  libinterp/parse-tree/parse.h \
-  libinterp/parse-tree/pt-all.h \
-  libinterp/parse-tree/pt-arg-list.h \
-  libinterp/parse-tree/pt-array-list.h \
-  libinterp/parse-tree/pt-assign.h \
-  libinterp/parse-tree/pt-binop.h \
-  libinterp/parse-tree/pt-bp.h \
-  libinterp/parse-tree/pt-cbinop.h \
-  libinterp/parse-tree/pt-cell.h \
-  libinterp/parse-tree/pt-check.h \
-  libinterp/parse-tree/pt-classdef.h \
-  libinterp/parse-tree/pt-cmd.h \
-  libinterp/parse-tree/pt-colon.h \
-  libinterp/parse-tree/pt-const.h \
-  libinterp/parse-tree/pt-decl.h \
-  libinterp/parse-tree/pt-eval.h \
-  libinterp/parse-tree/pt-except.h \
-  libinterp/parse-tree/pt-exp.h \
-  libinterp/parse-tree/pt-fcn-handle.h \
-  libinterp/parse-tree/pt-funcall.h \
-  libinterp/parse-tree/pt-id.h \
-  libinterp/parse-tree/pt-idx.h \
-  libinterp/parse-tree/pt-jit.h \
-  libinterp/parse-tree/pt-jump.h \
-  libinterp/parse-tree/pt-loop.h \
-  libinterp/parse-tree/pt-mat.h \
-  libinterp/parse-tree/pt-misc.h \
-  libinterp/parse-tree/pt-pr-code.h \
-  libinterp/parse-tree/pt-select.h \
-  libinterp/parse-tree/pt-stmt.h \
-  libinterp/parse-tree/pt-tm-const.h \
-  libinterp/parse-tree/pt-unop.h \
-  libinterp/parse-tree/pt-walk.h \
-  libinterp/parse-tree/pt.h \
-  libinterp/parse-tree/token.h
+  %reldir%/bp-table.h \
+  %reldir%/jit-ir.h \
+  %reldir%/jit-typeinfo.h \
+  %reldir%/jit-util.h \
+  %reldir%/lex.h \
+  %reldir%/parse.h \
+  %reldir%/pt-all.h \
+  %reldir%/pt-arg-list.h \
+  %reldir%/pt-array-list.h \
+  %reldir%/pt-assign.h \
+  %reldir%/pt-binop.h \
+  %reldir%/pt-bp.h \
+  %reldir%/pt-cbinop.h \
+  %reldir%/pt-cell.h \
+  %reldir%/pt-check.h \
+  %reldir%/pt-classdef.h \
+  %reldir%/pt-cmd.h \
+  %reldir%/pt-colon.h \
+  %reldir%/pt-const.h \
+  %reldir%/pt-decl.h \
+  %reldir%/pt-eval.h \
+  %reldir%/pt-except.h \
+  %reldir%/pt-exp.h \
+  %reldir%/pt-fcn-handle.h \
+  %reldir%/pt-funcall.h \
+  %reldir%/pt-id.h \
+  %reldir%/pt-idx.h \
+  %reldir%/pt-jit.h \
+  %reldir%/pt-jump.h \
+  %reldir%/pt-loop.h \
+  %reldir%/pt-mat.h \
+  %reldir%/pt-misc.h \
+  %reldir%/pt-pr-code.h \
+  %reldir%/pt-select.h \
+  %reldir%/pt-stmt.h \
+  %reldir%/pt-tm-const.h \
+  %reldir%/pt-unop.h \
+  %reldir%/pt-walk.h \
+  %reldir%/pt.h \
+  %reldir%/token.h
 
 
 ## oct-gperf.h and oct-parse.h are in the SRC list so that they will
 ## be distributed but not installed.
 
 PARSE_TREE_SRC = \
-  libinterp/parse-tree/bp-table.cc \
-  libinterp/parse-tree/jit-ir.cc \
-  libinterp/parse-tree/jit-typeinfo.cc \
-  libinterp/parse-tree/jit-util.cc \
-  libinterp/parse-tree/lex.ll \
-  libinterp/parse-tree/oct-gperf.h \
-  libinterp/parse-tree/oct-parse.h \
-  libinterp/parse-tree/oct-parse.yy \
-  libinterp/parse-tree/pt-arg-list.cc \
-  libinterp/parse-tree/pt-array-list.cc \
-  libinterp/parse-tree/pt-assign.cc \
-  libinterp/parse-tree/pt-binop.cc \
-  libinterp/parse-tree/pt-bp.cc \
-  libinterp/parse-tree/pt-cbinop.cc \
-  libinterp/parse-tree/pt-cell.cc \
-  libinterp/parse-tree/pt-check.cc \
-  libinterp/parse-tree/pt-classdef.cc \
-  libinterp/parse-tree/pt-cmd.cc \
-  libinterp/parse-tree/pt-colon.cc \
-  libinterp/parse-tree/pt-const.cc \
-  libinterp/parse-tree/pt-decl.cc \
-  libinterp/parse-tree/pt-eval.cc \
-  libinterp/parse-tree/pt-except.cc \
-  libinterp/parse-tree/pt-exp.cc \
-  libinterp/parse-tree/pt-fcn-handle.cc \
-  libinterp/parse-tree/pt-funcall.cc \
-  libinterp/parse-tree/pt-id.cc \
-  libinterp/parse-tree/pt-idx.cc \
-  libinterp/parse-tree/pt-jit.cc \
-  libinterp/parse-tree/pt-jump.cc \
-  libinterp/parse-tree/pt-loop.cc \
-  libinterp/parse-tree/pt-mat.cc \
-  libinterp/parse-tree/pt-misc.cc \
-  libinterp/parse-tree/pt-pr-code.cc \
-  libinterp/parse-tree/pt-select.cc \
-  libinterp/parse-tree/pt-stmt.cc \
-  libinterp/parse-tree/pt-tm-const.cc \
-  libinterp/parse-tree/pt-unop.cc \
-  libinterp/parse-tree/pt-walk.cc \
-  libinterp/parse-tree/pt.cc \
-  libinterp/parse-tree/token.cc
+  %reldir%/bp-table.cc \
+  %reldir%/jit-ir.cc \
+  %reldir%/jit-typeinfo.cc \
+  %reldir%/jit-util.cc \
+  %reldir%/lex.ll \
+  %reldir%/oct-gperf.h \
+  %reldir%/oct-parse.h \
+  %reldir%/oct-parse.yy \
+  %reldir%/pt-arg-list.cc \
+  %reldir%/pt-array-list.cc \
+  %reldir%/pt-assign.cc \
+  %reldir%/pt-binop.cc \
+  %reldir%/pt-bp.cc \
+  %reldir%/pt-cbinop.cc \
+  %reldir%/pt-cell.cc \
+  %reldir%/pt-check.cc \
+  %reldir%/pt-classdef.cc \
+  %reldir%/pt-cmd.cc \
+  %reldir%/pt-colon.cc \
+  %reldir%/pt-const.cc \
+  %reldir%/pt-decl.cc \
+  %reldir%/pt-eval.cc \
+  %reldir%/pt-except.cc \
+  %reldir%/pt-exp.cc \
+  %reldir%/pt-fcn-handle.cc \
+  %reldir%/pt-funcall.cc \
+  %reldir%/pt-id.cc \
+  %reldir%/pt-idx.cc \
+  %reldir%/pt-jit.cc \
+  %reldir%/pt-jump.cc \
+  %reldir%/pt-loop.cc \
+  %reldir%/pt-mat.cc \
+  %reldir%/pt-misc.cc \
+  %reldir%/pt-pr-code.cc \
+  %reldir%/pt-select.cc \
+  %reldir%/pt-stmt.cc \
+  %reldir%/pt-tm-const.cc \
+  %reldir%/pt-unop.cc \
+  %reldir%/pt-walk.cc \
+  %reldir%/pt.cc \
+  %reldir%/token.cc
 
 ## Special rules for sources which must be built before rest of compilation.
 
@@ -93,27 +93,27 @@
 ## is missing but sed is not, the exit status of the pipeline
 ## will still be success and we will end up creating an empty
 ## oct-gperf.h file.
-libinterp/parse-tree/oct-gperf.h: libinterp/parse-tree/octave.gperf
+%reldir%/oct-gperf.h: %reldir%/octave.gperf
 	$(AM_V_GEN)rm -f $@-t $@t1 $@ && \
 	$(GPERF) -t -C -D -G -L C++ -Z octave_kw_hash $< > $@-t1 && \
 	$(SED) -e 's,lookup\[,gperf_lookup[,' -e 's,register ,,g' < $@-t1 > $@-t && \
 	mv $@-t $@ && \
 	rm -f $@-t1
 
-libinterp/parse-tree/oct-parse.yy: libinterp/parse-tree/oct-parse.in.yy
+%reldir%/oct-parse.yy: %reldir%/oct-parse.in.yy
 	$(AM_V_GEN)$(call subst-bison-api-decls,octave_)
 
 noinst_LTLIBRARIES += \
-  libinterp/parse-tree/libparse-tree.la
+  %reldir%/libparse-tree.la
 
-libinterp_parse_tree_libparse_tree_la_SOURCES = $(PARSE_TREE_SRC)
+%canon_reldir%_libparse_tree_la_SOURCES = $(PARSE_TREE_SRC)
 
-libinterp_parse_tree_libparse_tree_la_CPPFLAGS = $(libinterp_liboctinterp_la_CPPFLAGS)
+%canon_reldir%_libparse_tree_la_CPPFLAGS = $(libinterp_liboctinterp_la_CPPFLAGS)
 
-libinterp_parse_tree_libparse_tree_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_libparse_tree_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-libinterp_parse_tree_libparse_tree_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_libparse_tree_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
 libinterp_EXTRA_DIST += \
-  libinterp/parse-tree/oct-parse.in.yy \
-  libinterp/parse-tree/octave.gperf
+  %reldir%/oct-parse.in.yy \
+  %reldir%/octave.gperf
--- a/libinterp/template-inst/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/libinterp/template-inst/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,3 +1,3 @@
 TEMPLATE_INST_SRC = \
-  libinterp/template-inst/Array-tc.cc \
-  libinterp/template-inst/Array-jit.cc
+  %reldir%/Array-tc.cc \
+  %reldir%/Array-jit.cc
--- a/liboctave/array/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/array/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,139 +1,139 @@
 ARRAY_INC = \
-  liboctave/array/Array.h \
-  liboctave/array/Array-util.h \
-  liboctave/array/boolMatrix.h \
-  liboctave/array/boolNDArray.h \
-  liboctave/array/boolSparse.h \
-  liboctave/array/CColVector.h \
-  liboctave/array/CDiagMatrix.h \
-  liboctave/array/chMatrix.h \
-  liboctave/array/chNDArray.h \
-  liboctave/array/CMatrix.h \
-  liboctave/array/CNDArray.h \
-  liboctave/array/CRowVector.h \
-  liboctave/array/CSparse.h \
-  liboctave/array/dColVector.h \
-  liboctave/array/dDiagMatrix.h \
-  liboctave/array/DiagArray2.h \
-  liboctave/array/dim-vector.h \
-  liboctave/array/dMatrix.h \
-  liboctave/array/dNDArray.h \
-  liboctave/array/dRowVector.h \
-  liboctave/array/dSparse.h \
-  liboctave/array/fCColVector.h \
-  liboctave/array/fCDiagMatrix.h \
-  liboctave/array/fCMatrix.h \
-  liboctave/array/fCNDArray.h \
-  liboctave/array/fColVector.h \
-  liboctave/array/fCRowVector.h \
-  liboctave/array/fDiagMatrix.h \
-  liboctave/array/fMatrix.h \
-  liboctave/array/fNDArray.h \
-  liboctave/array/fRowVector.h \
-  liboctave/array/idx-vector.h \
-  liboctave/array/int16NDArray.h \
-  liboctave/array/int32NDArray.h \
-  liboctave/array/int64NDArray.h \
-  liboctave/array/int8NDArray.h \
-  liboctave/array/intNDArray.h \
-  liboctave/array/MArray.h \
-  liboctave/array/Matrix.h \
-  liboctave/array/MatrixType.h \
-  liboctave/array/MDiagArray2.h \
-  liboctave/array/MSparse.h \
-  liboctave/array/PermMatrix.h \
-  liboctave/array/Range.h \
-  liboctave/array/Sparse.h \
-  liboctave/array/uint16NDArray.h \
-  liboctave/array/uint32NDArray.h \
-  liboctave/array/uint64NDArray.h \
-  liboctave/array/uint8NDArray.h
+  %reldir%/Array.h \
+  %reldir%/Array-util.h \
+  %reldir%/boolMatrix.h \
+  %reldir%/boolNDArray.h \
+  %reldir%/boolSparse.h \
+  %reldir%/CColVector.h \
+  %reldir%/CDiagMatrix.h \
+  %reldir%/chMatrix.h \
+  %reldir%/chNDArray.h \
+  %reldir%/CMatrix.h \
+  %reldir%/CNDArray.h \
+  %reldir%/CRowVector.h \
+  %reldir%/CSparse.h \
+  %reldir%/dColVector.h \
+  %reldir%/dDiagMatrix.h \
+  %reldir%/DiagArray2.h \
+  %reldir%/dim-vector.h \
+  %reldir%/dMatrix.h \
+  %reldir%/dNDArray.h \
+  %reldir%/dRowVector.h \
+  %reldir%/dSparse.h \
+  %reldir%/fCColVector.h \
+  %reldir%/fCDiagMatrix.h \
+  %reldir%/fCMatrix.h \
+  %reldir%/fCNDArray.h \
+  %reldir%/fColVector.h \
+  %reldir%/fCRowVector.h \
+  %reldir%/fDiagMatrix.h \
+  %reldir%/fMatrix.h \
+  %reldir%/fNDArray.h \
+  %reldir%/fRowVector.h \
+  %reldir%/idx-vector.h \
+  %reldir%/int16NDArray.h \
+  %reldir%/int32NDArray.h \
+  %reldir%/int64NDArray.h \
+  %reldir%/int8NDArray.h \
+  %reldir%/intNDArray.h \
+  %reldir%/MArray.h \
+  %reldir%/Matrix.h \
+  %reldir%/MatrixType.h \
+  %reldir%/MDiagArray2.h \
+  %reldir%/MSparse.h \
+  %reldir%/PermMatrix.h \
+  %reldir%/Range.h \
+  %reldir%/Sparse.h \
+  %reldir%/uint16NDArray.h \
+  %reldir%/uint32NDArray.h \
+  %reldir%/uint64NDArray.h \
+  %reldir%/uint8NDArray.h
 
 ARRAY_SRC = \
-  liboctave/array/Array-b.cc \
-  liboctave/array/Array-C.cc \
-  liboctave/array/Array-ch.cc \
-  liboctave/array/Array-d.cc \
-  liboctave/array/Array-f.cc \
-  liboctave/array/Array-fC.cc \
-  liboctave/array/Array-i.cc \
-  liboctave/array/Array-idx-vec.cc \
-  liboctave/array/Array-s.cc \
-  liboctave/array/Array-str.cc \
-  liboctave/array/Array-util.cc \
-  liboctave/array/Array-voidp.cc \
-  liboctave/array/boolMatrix.cc \
-  liboctave/array/boolNDArray.cc \
-  liboctave/array/boolSparse.cc \
-  liboctave/array/CColVector.cc \
-  liboctave/array/CDiagMatrix.cc \
-  liboctave/array/chMatrix.cc \
-  liboctave/array/chNDArray.cc \
-  liboctave/array/CMatrix.cc \
-  liboctave/array/CNDArray.cc \
-  liboctave/array/CRowVector.cc \
-  liboctave/array/CSparse.cc \
-  liboctave/array/dColVector.cc \
-  liboctave/array/dDiagMatrix.cc \
-  liboctave/array/dim-vector.cc \
-  liboctave/array/dMatrix.cc \
-  liboctave/array/dNDArray.cc \
-  liboctave/array/dRowVector.cc \
-  liboctave/array/dSparse.cc \
-  liboctave/array/fCColVector.cc \
-  liboctave/array/fCDiagMatrix.cc \
-  liboctave/array/fCMatrix.cc \
-  liboctave/array/fCNDArray.cc \
-  liboctave/array/fColVector.cc \
-  liboctave/array/fCRowVector.cc \
-  liboctave/array/fDiagMatrix.cc \
-  liboctave/array/fMatrix.cc \
-  liboctave/array/fNDArray.cc \
-  liboctave/array/fRowVector.cc \
-  liboctave/array/idx-vector.cc \
-  liboctave/array/int16NDArray.cc \
-  liboctave/array/int32NDArray.cc \
-  liboctave/array/int64NDArray.cc \
-  liboctave/array/int8NDArray.cc \
-  liboctave/array/MArray-C.cc \
-  liboctave/array/MArray-d.cc \
-  liboctave/array/MArray-f.cc \
-  liboctave/array/MArray-fC.cc \
-  liboctave/array/MArray-i.cc \
-  liboctave/array/MArray-s.cc \
-  liboctave/array/MatrixType.cc \
-  liboctave/array/MSparse-C.cc \
-  liboctave/array/MSparse-d.cc \
-  liboctave/array/PermMatrix.cc \
-  liboctave/array/Range.cc \
-  liboctave/array/Sparse-b.cc \
-  liboctave/array/Sparse-C.cc \
-  liboctave/array/Sparse-d.cc \
-  liboctave/array/uint16NDArray.cc \
-  liboctave/array/uint32NDArray.cc \
-  liboctave/array/uint64NDArray.cc \
-  liboctave/array/uint8NDArray.cc
+  %reldir%/Array-b.cc \
+  %reldir%/Array-C.cc \
+  %reldir%/Array-ch.cc \
+  %reldir%/Array-d.cc \
+  %reldir%/Array-f.cc \
+  %reldir%/Array-fC.cc \
+  %reldir%/Array-i.cc \
+  %reldir%/Array-idx-vec.cc \
+  %reldir%/Array-s.cc \
+  %reldir%/Array-str.cc \
+  %reldir%/Array-util.cc \
+  %reldir%/Array-voidp.cc \
+  %reldir%/boolMatrix.cc \
+  %reldir%/boolNDArray.cc \
+  %reldir%/boolSparse.cc \
+  %reldir%/CColVector.cc \
+  %reldir%/CDiagMatrix.cc \
+  %reldir%/chMatrix.cc \
+  %reldir%/chNDArray.cc \
+  %reldir%/CMatrix.cc \
+  %reldir%/CNDArray.cc \
+  %reldir%/CRowVector.cc \
+  %reldir%/CSparse.cc \
+  %reldir%/dColVector.cc \
+  %reldir%/dDiagMatrix.cc \
+  %reldir%/dim-vector.cc \
+  %reldir%/dMatrix.cc \
+  %reldir%/dNDArray.cc \
+  %reldir%/dRowVector.cc \
+  %reldir%/dSparse.cc \
+  %reldir%/fCColVector.cc \
+  %reldir%/fCDiagMatrix.cc \
+  %reldir%/fCMatrix.cc \
+  %reldir%/fCNDArray.cc \
+  %reldir%/fColVector.cc \
+  %reldir%/fCRowVector.cc \
+  %reldir%/fDiagMatrix.cc \
+  %reldir%/fMatrix.cc \
+  %reldir%/fNDArray.cc \
+  %reldir%/fRowVector.cc \
+  %reldir%/idx-vector.cc \
+  %reldir%/int16NDArray.cc \
+  %reldir%/int32NDArray.cc \
+  %reldir%/int64NDArray.cc \
+  %reldir%/int8NDArray.cc \
+  %reldir%/MArray-C.cc \
+  %reldir%/MArray-d.cc \
+  %reldir%/MArray-f.cc \
+  %reldir%/MArray-fC.cc \
+  %reldir%/MArray-i.cc \
+  %reldir%/MArray-s.cc \
+  %reldir%/MatrixType.cc \
+  %reldir%/MSparse-C.cc \
+  %reldir%/MSparse-d.cc \
+  %reldir%/PermMatrix.cc \
+  %reldir%/Range.cc \
+  %reldir%/Sparse-b.cc \
+  %reldir%/Sparse-C.cc \
+  %reldir%/Sparse-d.cc \
+  %reldir%/uint16NDArray.cc \
+  %reldir%/uint32NDArray.cc \
+  %reldir%/uint64NDArray.cc \
+  %reldir%/uint8NDArray.cc
 
 LIBOCTAVE_TEMPLATE_SRC += \
-  liboctave/array/Array.cc \
-  liboctave/array/DiagArray2.cc \
-  liboctave/array/intNDArray.cc \
-  liboctave/array/MArray.cc \
-  liboctave/array/MDiagArray2.cc \
-  liboctave/array/MSparse.cc \
-  liboctave/array/Sparse.cc
+  %reldir%/Array.cc \
+  %reldir%/DiagArray2.cc \
+  %reldir%/intNDArray.cc \
+  %reldir%/MArray.cc \
+  %reldir%/MDiagArray2.cc \
+  %reldir%/MSparse.cc \
+  %reldir%/Sparse.cc
 
-noinst_LTLIBRARIES += liboctave/array/libarray.la
+noinst_LTLIBRARIES += %reldir%/libarray.la
 
-liboctave_array_libarray_la_SOURCES = $(ARRAY_SRC)
+%canon_reldir%_libarray_la_SOURCES = $(ARRAY_SRC)
 
-liboctave_array_libarray_la_CPPFLAGS = \
+%canon_reldir%_libarray_la_CPPFLAGS = \
   $(liboctave_liboctave_la_CPPFLAGS) \
   $(FFTW_XCPPFLAGS) \
   $(SPARSE_XCPPFLAGS)
 
-liboctave_array_libarray_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libarray_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_array_libarray_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_libarray_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/array/libarray.la
+liboctave_liboctave_la_LIBADD += %reldir%/libarray.la
--- a/liboctave/external/Faddeeva/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/Faddeeva/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,3 +1,3 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/Faddeeva/Faddeeva.cc \
-  liboctave/external/Faddeeva/Faddeeva.hh
+  %reldir%/Faddeeva.cc \
+  %reldir%/Faddeeva.hh
--- a/liboctave/external/amos/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/amos/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,70 +1,70 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/amos/cacai.f \
-  liboctave/external/amos/cacon.f \
-  liboctave/external/amos/cbesh.f \
-  liboctave/external/amos/cbesi.f \
-  liboctave/external/amos/cbesj.f \
-  liboctave/external/amos/cbesk.f \
-  liboctave/external/amos/cbesy.f \
-  liboctave/external/amos/cbinu.f \
-  liboctave/external/amos/cbuni.f \
-  liboctave/external/amos/cbunk.f \
-  liboctave/external/amos/cunk1.f \
-  liboctave/external/amos/cunk2.f \
-  liboctave/external/amos/crati.f \
-  liboctave/external/amos/cshch.f \
-  liboctave/external/amos/cuni1.f \
-  liboctave/external/amos/cuoik.f \
-  liboctave/external/amos/cairy.f \
-  liboctave/external/amos/cbiry.f \
-  liboctave/external/amos/ckscl.f \
-  liboctave/external/amos/cs1s2.f \
-  liboctave/external/amos/cuchk.f \
-  liboctave/external/amos/cuni2.f \
-  liboctave/external/amos/cwrsk.f \
-  liboctave/external/amos/casyi.f \
-  liboctave/external/amos/cbknu.f \
-  liboctave/external/amos/cmlri.f \
-  liboctave/external/amos/cseri.f \
-  liboctave/external/amos/cunhj.f \
-  liboctave/external/amos/cunik.f \
-  liboctave/external/amos/dgamln.f \
-  liboctave/external/amos/gamln.f \
-  liboctave/external/amos/xzabs.f \
-  liboctave/external/amos/xzexp.f \
-  liboctave/external/amos/xzlog.f \
-  liboctave/external/amos/xzsqrt.f \
-  liboctave/external/amos/zacai.f \
-  liboctave/external/amos/zacon.f \
-  liboctave/external/amos/zairy.f \
-  liboctave/external/amos/zasyi.f \
-  liboctave/external/amos/zbesh.f \
-  liboctave/external/amos/zbesi.f \
-  liboctave/external/amos/zbesj.f \
-  liboctave/external/amos/zbesk.f \
-  liboctave/external/amos/zbesy.f \
-  liboctave/external/amos/zbinu.f \
-  liboctave/external/amos/zbiry.f \
-  liboctave/external/amos/zbknu.f \
-  liboctave/external/amos/zbuni.f \
-  liboctave/external/amos/zbunk.f \
-  liboctave/external/amos/zdiv.f \
-  liboctave/external/amos/zkscl.f \
-  liboctave/external/amos/zmlri.f \
-  liboctave/external/amos/zmlt.f \
-  liboctave/external/amos/zrati.f \
-  liboctave/external/amos/zs1s2.f \
-  liboctave/external/amos/zseri.f \
-  liboctave/external/amos/zshch.f \
-  liboctave/external/amos/zuchk.f \
-  liboctave/external/amos/zunhj.f \
-  liboctave/external/amos/zuni1.f \
-  liboctave/external/amos/zuni2.f \
-  liboctave/external/amos/zunik.f \
-  liboctave/external/amos/zunk1.f \
-  liboctave/external/amos/zunk2.f \
-  liboctave/external/amos/zuoik.f \
-  liboctave/external/amos/zwrsk.f
+  %reldir%/cacai.f \
+  %reldir%/cacon.f \
+  %reldir%/cbesh.f \
+  %reldir%/cbesi.f \
+  %reldir%/cbesj.f \
+  %reldir%/cbesk.f \
+  %reldir%/cbesy.f \
+  %reldir%/cbinu.f \
+  %reldir%/cbuni.f \
+  %reldir%/cbunk.f \
+  %reldir%/cunk1.f \
+  %reldir%/cunk2.f \
+  %reldir%/crati.f \
+  %reldir%/cshch.f \
+  %reldir%/cuni1.f \
+  %reldir%/cuoik.f \
+  %reldir%/cairy.f \
+  %reldir%/cbiry.f \
+  %reldir%/ckscl.f \
+  %reldir%/cs1s2.f \
+  %reldir%/cuchk.f \
+  %reldir%/cuni2.f \
+  %reldir%/cwrsk.f \
+  %reldir%/casyi.f \
+  %reldir%/cbknu.f \
+  %reldir%/cmlri.f \
+  %reldir%/cseri.f \
+  %reldir%/cunhj.f \
+  %reldir%/cunik.f \
+  %reldir%/dgamln.f \
+  %reldir%/gamln.f \
+  %reldir%/xzabs.f \
+  %reldir%/xzexp.f \
+  %reldir%/xzlog.f \
+  %reldir%/xzsqrt.f \
+  %reldir%/zacai.f \
+  %reldir%/zacon.f \
+  %reldir%/zairy.f \
+  %reldir%/zasyi.f \
+  %reldir%/zbesh.f \
+  %reldir%/zbesi.f \
+  %reldir%/zbesj.f \
+  %reldir%/zbesk.f \
+  %reldir%/zbesy.f \
+  %reldir%/zbinu.f \
+  %reldir%/zbiry.f \
+  %reldir%/zbknu.f \
+  %reldir%/zbuni.f \
+  %reldir%/zbunk.f \
+  %reldir%/zdiv.f \
+  %reldir%/zkscl.f \
+  %reldir%/zmlri.f \
+  %reldir%/zmlt.f \
+  %reldir%/zrati.f \
+  %reldir%/zs1s2.f \
+  %reldir%/zseri.f \
+  %reldir%/zshch.f \
+  %reldir%/zuchk.f \
+  %reldir%/zunhj.f \
+  %reldir%/zuni1.f \
+  %reldir%/zuni2.f \
+  %reldir%/zunik.f \
+  %reldir%/zunk1.f \
+  %reldir%/zunk2.f \
+  %reldir%/zuoik.f \
+  %reldir%/zwrsk.f
 
 liboctave_EXTRA_DIST += \
-  liboctave/external/amos/README
+  %reldir%/README
--- a/liboctave/external/blas-xtra/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/blas-xtra/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,26 +1,26 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/blas-xtra/ddot3.f \
-  liboctave/external/blas-xtra/zdotc3.f \
-  liboctave/external/blas-xtra/sdot3.f \
-  liboctave/external/blas-xtra/cdotc3.f \
-  liboctave/external/blas-xtra/dmatm3.f \
-  liboctave/external/blas-xtra/zmatm3.f \
-  liboctave/external/blas-xtra/smatm3.f \
-  liboctave/external/blas-xtra/cmatm3.f \
-  liboctave/external/blas-xtra/xddot.f \
-  liboctave/external/blas-xtra/xdnrm2.f \
-  liboctave/external/blas-xtra/xdznrm2.f \
-  liboctave/external/blas-xtra/xzdotc.f \
-  liboctave/external/blas-xtra/xzdotu.f \
-  liboctave/external/blas-xtra/xsdot.f \
-  liboctave/external/blas-xtra/xsnrm2.f \
-  liboctave/external/blas-xtra/xscnrm2.f \
-  liboctave/external/blas-xtra/xcdotc.f \
-  liboctave/external/blas-xtra/xcdotu.f \
-  liboctave/external/blas-xtra/xerbla.f \
-  liboctave/external/blas-xtra/cconv2.f \
-  liboctave/external/blas-xtra/csconv2.f \
-  liboctave/external/blas-xtra/dconv2.f \
-  liboctave/external/blas-xtra/sconv2.f \
-  liboctave/external/blas-xtra/zconv2.f \
-  liboctave/external/blas-xtra/zdconv2.f
+  %reldir%/ddot3.f \
+  %reldir%/zdotc3.f \
+  %reldir%/sdot3.f \
+  %reldir%/cdotc3.f \
+  %reldir%/dmatm3.f \
+  %reldir%/zmatm3.f \
+  %reldir%/smatm3.f \
+  %reldir%/cmatm3.f \
+  %reldir%/xddot.f \
+  %reldir%/xdnrm2.f \
+  %reldir%/xdznrm2.f \
+  %reldir%/xzdotc.f \
+  %reldir%/xzdotu.f \
+  %reldir%/xsdot.f \
+  %reldir%/xsnrm2.f \
+  %reldir%/xscnrm2.f \
+  %reldir%/xcdotc.f \
+  %reldir%/xcdotu.f \
+  %reldir%/xerbla.f \
+  %reldir%/cconv2.f \
+  %reldir%/csconv2.f \
+  %reldir%/dconv2.f \
+  %reldir%/sconv2.f \
+  %reldir%/zconv2.f \
+  %reldir%/zdconv2.f
--- a/liboctave/external/daspk/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/daspk/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,29 +1,29 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/daspk/datv.f \
-  liboctave/external/daspk/dcnst0.f \
-  liboctave/external/daspk/dcnstr.f \
-  liboctave/external/daspk/ddasic.f \
-  liboctave/external/daspk/ddasid.f \
-  liboctave/external/daspk/ddasik.f \
-  liboctave/external/daspk/ddaspk.f \
-  liboctave/external/daspk/ddstp.f \
-  liboctave/external/daspk/ddwnrm.f \
-  liboctave/external/daspk/dfnrmd.f \
-  liboctave/external/daspk/dfnrmk.f \
-  liboctave/external/daspk/dhels.f \
-  liboctave/external/daspk/dheqr.f \
-  liboctave/external/daspk/dinvwt.f \
-  liboctave/external/daspk/dlinsd.f \
-  liboctave/external/daspk/dlinsk.f \
-  liboctave/external/daspk/dmatd.f \
-  liboctave/external/daspk/dnedd.f \
-  liboctave/external/daspk/dnedk.f \
-  liboctave/external/daspk/dnsd.f \
-  liboctave/external/daspk/dnsid.f \
-  liboctave/external/daspk/dnsik.f \
-  liboctave/external/daspk/dnsk.f \
-  liboctave/external/daspk/dorth.f \
-  liboctave/external/daspk/dslvd.f \
-  liboctave/external/daspk/dslvk.f \
-  liboctave/external/daspk/dspigm.f \
-  liboctave/external/daspk/dyypnw.f
+  %reldir%/datv.f \
+  %reldir%/dcnst0.f \
+  %reldir%/dcnstr.f \
+  %reldir%/ddasic.f \
+  %reldir%/ddasid.f \
+  %reldir%/ddasik.f \
+  %reldir%/ddaspk.f \
+  %reldir%/ddstp.f \
+  %reldir%/ddwnrm.f \
+  %reldir%/dfnrmd.f \
+  %reldir%/dfnrmk.f \
+  %reldir%/dhels.f \
+  %reldir%/dheqr.f \
+  %reldir%/dinvwt.f \
+  %reldir%/dlinsd.f \
+  %reldir%/dlinsk.f \
+  %reldir%/dmatd.f \
+  %reldir%/dnedd.f \
+  %reldir%/dnedk.f \
+  %reldir%/dnsd.f \
+  %reldir%/dnsid.f \
+  %reldir%/dnsik.f \
+  %reldir%/dnsk.f \
+  %reldir%/dorth.f \
+  %reldir%/dslvd.f \
+  %reldir%/dslvk.f \
+  %reldir%/dspigm.f \
+  %reldir%/dyypnw.f
--- a/liboctave/external/dasrt/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/dasrt/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,4 +1,4 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/dasrt/ddasrt.f \
-  liboctave/external/dasrt/drchek.f \
-  liboctave/external/dasrt/droots.f
+  %reldir%/ddasrt.f \
+  %reldir%/drchek.f \
+  %reldir%/droots.f
--- a/liboctave/external/dassl/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/dassl/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,9 +1,9 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/dassl/ddaini.f \
-  liboctave/external/dassl/ddajac.f \
-  liboctave/external/dassl/ddanrm.f \
-  liboctave/external/dassl/ddaslv.f \
-  liboctave/external/dassl/ddassl.f \
-  liboctave/external/dassl/ddastp.f \
-  liboctave/external/dassl/ddatrp.f \
-  liboctave/external/dassl/ddawts.f
+  %reldir%/ddaini.f \
+  %reldir%/ddajac.f \
+  %reldir%/ddanrm.f \
+  %reldir%/ddaslv.f \
+  %reldir%/ddassl.f \
+  %reldir%/ddastp.f \
+  %reldir%/ddatrp.f \
+  %reldir%/ddawts.f
--- a/liboctave/external/fftpack/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/fftpack/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,36 +1,36 @@
 FFTPACK_SRC = \
-  liboctave/external/fftpack/cfftb.f \
-  liboctave/external/fftpack/cfftb1.f \
-  liboctave/external/fftpack/cfftf.f \
-  liboctave/external/fftpack/cfftf1.f \
-  liboctave/external/fftpack/cffti.f \
-  liboctave/external/fftpack/cffti1.f \
-  liboctave/external/fftpack/passb.f \
-  liboctave/external/fftpack/passb2.f \
-  liboctave/external/fftpack/passb3.f \
-  liboctave/external/fftpack/passb4.f \
-  liboctave/external/fftpack/passb5.f \
-  liboctave/external/fftpack/passf.f \
-  liboctave/external/fftpack/passf2.f \
-  liboctave/external/fftpack/passf3.f \
-  liboctave/external/fftpack/passf4.f \
-  liboctave/external/fftpack/passf5.f \
-  liboctave/external/fftpack/zfftb.f \
-  liboctave/external/fftpack/zfftb1.f \
-  liboctave/external/fftpack/zfftf.f \
-  liboctave/external/fftpack/zfftf1.f \
-  liboctave/external/fftpack/zffti.f \
-  liboctave/external/fftpack/zffti1.f \
-  liboctave/external/fftpack/zpassb.f \
-  liboctave/external/fftpack/zpassb2.f \
-  liboctave/external/fftpack/zpassb3.f \
-  liboctave/external/fftpack/zpassb4.f \
-  liboctave/external/fftpack/zpassb5.f \
-  liboctave/external/fftpack/zpassf.f \
-  liboctave/external/fftpack/zpassf2.f \
-  liboctave/external/fftpack/zpassf3.f \
-  liboctave/external/fftpack/zpassf4.f \
-  liboctave/external/fftpack/zpassf5.f
+  %reldir%/cfftb.f \
+  %reldir%/cfftb1.f \
+  %reldir%/cfftf.f \
+  %reldir%/cfftf1.f \
+  %reldir%/cffti.f \
+  %reldir%/cffti1.f \
+  %reldir%/passb.f \
+  %reldir%/passb2.f \
+  %reldir%/passb3.f \
+  %reldir%/passb4.f \
+  %reldir%/passb5.f \
+  %reldir%/passf.f \
+  %reldir%/passf2.f \
+  %reldir%/passf3.f \
+  %reldir%/passf4.f \
+  %reldir%/passf5.f \
+  %reldir%/zfftb.f \
+  %reldir%/zfftb1.f \
+  %reldir%/zfftf.f \
+  %reldir%/zfftf1.f \
+  %reldir%/zffti.f \
+  %reldir%/zffti1.f \
+  %reldir%/zpassb.f \
+  %reldir%/zpassb2.f \
+  %reldir%/zpassb3.f \
+  %reldir%/zpassb4.f \
+  %reldir%/zpassb5.f \
+  %reldir%/zpassf.f \
+  %reldir%/zpassf2.f \
+  %reldir%/zpassf3.f \
+  %reldir%/zpassf4.f \
+  %reldir%/zpassf5.f
 
 if AMCOND_HAVE_FFTW
   liboctave_EXTRA_DIST += $(FFTPACK_SRC)
@@ -39,4 +39,4 @@
 endif
 
 liboctave_EXTRA_DIST += \
-  liboctave/external/fftpack/fftpack.doc
+  %reldir%/fftpack.doc
--- a/liboctave/external/lapack-xtra/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/lapack-xtra/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,10 +1,10 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/lapack-xtra/xclange.f \
-  liboctave/external/lapack-xtra/xdlamch.f \
-  liboctave/external/lapack-xtra/xdlange.f \
-  liboctave/external/lapack-xtra/xilaenv.f \
-  liboctave/external/lapack-xtra/xslamch.f \
-  liboctave/external/lapack-xtra/xslange.f \
-  liboctave/external/lapack-xtra/xzlange.f \
-  liboctave/external/lapack-xtra/zrsf2csf.f \
-  liboctave/external/lapack-xtra/crsf2csf.f
+  %reldir%/xclange.f \
+  %reldir%/xdlamch.f \
+  %reldir%/xdlange.f \
+  %reldir%/xilaenv.f \
+  %reldir%/xslamch.f \
+  %reldir%/xslange.f \
+  %reldir%/xzlange.f \
+  %reldir%/zrsf2csf.f \
+  %reldir%/crsf2csf.f
--- a/liboctave/external/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,46 +1,46 @@
-nodist_liboctave_external_libexternal_la_SOURCES =
+nodist_%canon_reldir%_libexternal_la_SOURCES =
 
-liboctave_external_libexternal_la_FFLAGS = $(F77_INTEGER_8_FLAG)
+%canon_reldir%_libexternal_la_FFLAGS = $(F77_INTEGER_8_FLAG)
 
-liboctave_external_libexternal_la_DEPENDENCIES = liboctave/external/external.def
+%canon_reldir%_libexternal_la_DEPENDENCIES = %reldir%/external.def
 
 EXTERNAL_INC =
 
 EXTERNAL_SOURCES =
 
-include liboctave/external/amos/module.mk
-include liboctave/external/blas-xtra/module.mk
-include liboctave/external/daspk/module.mk
-include liboctave/external/dasrt/module.mk
-include liboctave/external/dassl/module.mk
-include liboctave/external/Faddeeva/module.mk
-include liboctave/external/fftpack/module.mk
-include liboctave/external/lapack-xtra/module.mk
-include liboctave/external/odepack/module.mk
-include liboctave/external/ordered-qz/module.mk
-include liboctave/external/quadpack/module.mk
-include liboctave/external/ranlib/module.mk
-include liboctave/external/slatec-err/module.mk
-include liboctave/external/slatec-fn/module.mk
+include %reldir%/amos/module.mk
+include %reldir%/blas-xtra/module.mk
+include %reldir%/daspk/module.mk
+include %reldir%/dasrt/module.mk
+include %reldir%/dassl/module.mk
+include %reldir%/Faddeeva/module.mk
+include %reldir%/fftpack/module.mk
+include %reldir%/lapack-xtra/module.mk
+include %reldir%/odepack/module.mk
+include %reldir%/ordered-qz/module.mk
+include %reldir%/quadpack/module.mk
+include %reldir%/ranlib/module.mk
+include %reldir%/slatec-err/module.mk
+include %reldir%/slatec-fn/module.mk
 
-liboctave/external/external.def: $(liboctave_external_libexternal_la_SOURCES) build-aux/mk-f77-def.sh
+%reldir%/external.def: $(%canon_reldir%_libexternal_la_SOURCES) build-aux/mk-f77-def.sh
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(SHELL) build-aux/mk-f77-def.sh $(srcdir) $(liboctave_external_libexternal_la_SOURCES) > $@-t && \
+	$(SHELL) build-aux/mk-f77-def.sh $(srcdir) $(%canon_reldir%_libexternal_la_SOURCES) > $@-t && \
 	mv $@-t $@
 
 liboctave_CLEANFILES += \
-  liboctave/external/external.def \
-  liboctave/external/ranlib/ranlib.def \
-  $(nodist_liboctave_external_libexternal_la_SOURCES)
+  %reldir%/external.def \
+  %reldir%/ranlib/ranlib.def \
+  $(nodist_%canon_reldir%_libexternal_la_SOURCES)
 
-noinst_LTLIBRARIES += liboctave/external/libexternal.la
+noinst_LTLIBRARIES += %reldir%/libexternal.la
 
-liboctave_external_libexternal_la_SOURCES = $(EXTERNAL_SOURCES)
+%canon_reldir%_libexternal_la_SOURCES = $(EXTERNAL_SOURCES)
 
-liboctave_external_libexternal_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
+%canon_reldir%_libexternal_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
 
-liboctave_external_libexternal_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libexternal_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_external_libexternal_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_libexternal_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/external/libexternal.la
+liboctave_liboctave_la_LIBADD += %reldir%/libexternal.la
--- a/liboctave/external/odepack/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/odepack/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,17 +1,17 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/odepack/cfode.f \
-  liboctave/external/odepack/dlsode.f \
-  liboctave/external/odepack/ewset.f \
-  liboctave/external/odepack/intdy.f \
-  liboctave/external/odepack/prepj.f \
-  liboctave/external/odepack/solsy.f \
-  liboctave/external/odepack/stode.f \
-  liboctave/external/odepack/vnorm.f \
-  liboctave/external/odepack/scfode.f \
-  liboctave/external/odepack/sewset.f \
-  liboctave/external/odepack/sintdy.f \
-  liboctave/external/odepack/slsode.f \
-  liboctave/external/odepack/sprepj.f \
-  liboctave/external/odepack/ssolsy.f \
-  liboctave/external/odepack/sstode.f \
-  liboctave/external/odepack/svnorm.f
+  %reldir%/cfode.f \
+  %reldir%/dlsode.f \
+  %reldir%/ewset.f \
+  %reldir%/intdy.f \
+  %reldir%/prepj.f \
+  %reldir%/solsy.f \
+  %reldir%/stode.f \
+  %reldir%/vnorm.f \
+  %reldir%/scfode.f \
+  %reldir%/sewset.f \
+  %reldir%/sintdy.f \
+  %reldir%/slsode.f \
+  %reldir%/sprepj.f \
+  %reldir%/ssolsy.f \
+  %reldir%/sstode.f \
+  %reldir%/svnorm.f
--- a/liboctave/external/ordered-qz/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/ordered-qz/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,8 +1,8 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/ordered-qz/dsubsp.f \
-  liboctave/external/ordered-qz/exchqz.f \
-  liboctave/external/ordered-qz/ssubsp.f \
-  liboctave/external/ordered-qz/sexchqz.f
+  %reldir%/dsubsp.f \
+  %reldir%/exchqz.f \
+  %reldir%/ssubsp.f \
+  %reldir%/sexchqz.f
 
 liboctave_EXTRA_DIST += \
-  liboctave/external/ordered-qz/README
+  %reldir%/README
--- a/liboctave/external/quadpack/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/quadpack/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,18 +1,18 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/quadpack/dqagi.f \
-  liboctave/external/quadpack/dqagie.f \
-  liboctave/external/quadpack/dqagp.f \
-  liboctave/external/quadpack/dqagpe.f \
-  liboctave/external/quadpack/dqelg.f \
-  liboctave/external/quadpack/dqk15i.f \
-  liboctave/external/quadpack/dqk21.f \
-  liboctave/external/quadpack/dqpsrt.f \
-  liboctave/external/quadpack/qagie.f \
-  liboctave/external/quadpack/qagi.f \
-  liboctave/external/quadpack/qagpe.f \
-  liboctave/external/quadpack/qagp.f \
-  liboctave/external/quadpack/qelg.f \
-  liboctave/external/quadpack/qk15i.f \
-  liboctave/external/quadpack/qk21.f \
-  liboctave/external/quadpack/qpsrt.f \
-  liboctave/external/quadpack/xerror.f
+  %reldir%/dqagi.f \
+  %reldir%/dqagie.f \
+  %reldir%/dqagp.f \
+  %reldir%/dqagpe.f \
+  %reldir%/dqelg.f \
+  %reldir%/dqk15i.f \
+  %reldir%/dqk21.f \
+  %reldir%/dqpsrt.f \
+  %reldir%/qagie.f \
+  %reldir%/qagi.f \
+  %reldir%/qagpe.f \
+  %reldir%/qagp.f \
+  %reldir%/qelg.f \
+  %reldir%/qk15i.f \
+  %reldir%/qk21.f \
+  %reldir%/qpsrt.f \
+  %reldir%/xerror.f
--- a/liboctave/external/ranlib/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/ranlib/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,63 +1,63 @@
 RANLIB_SRC = \
-  liboctave/external/ranlib/advnst.f \
-  liboctave/external/ranlib/genbet.f \
-  liboctave/external/ranlib/genchi.f \
-  liboctave/external/ranlib/genexp.f \
-  liboctave/external/ranlib/genf.f \
-  liboctave/external/ranlib/gengam.f \
-  liboctave/external/ranlib/genmn.f \
-  liboctave/external/ranlib/genmul.f \
-  liboctave/external/ranlib/gennch.f \
-  liboctave/external/ranlib/gennf.f \
-  liboctave/external/ranlib/gennor.f \
-  liboctave/external/ranlib/genprm.f \
-  liboctave/external/ranlib/genunf.f \
-  liboctave/external/ranlib/getcgn.f \
-  liboctave/external/ranlib/getsd.f \
-  liboctave/external/ranlib/ignbin.f \
-  liboctave/external/ranlib/ignlgi.f \
-  liboctave/external/ranlib/ignnbn.f \
-  liboctave/external/ranlib/ignpoi.f \
-  liboctave/external/ranlib/ignuin.f \
-  liboctave/external/ranlib/initgn.f \
-  liboctave/external/ranlib/inrgcm.f \
-  liboctave/external/ranlib/lennob.f \
-  liboctave/external/ranlib/mltmod.f \
-  liboctave/external/ranlib/phrtsd.f \
-  liboctave/external/ranlib/qrgnin.f \
-  liboctave/external/ranlib/ranf.f \
-  liboctave/external/ranlib/setall.f \
-  liboctave/external/ranlib/setant.f \
-  liboctave/external/ranlib/setgmn.f \
-  liboctave/external/ranlib/setsd.f \
-  liboctave/external/ranlib/sexpo.f \
-  liboctave/external/ranlib/sgamma.f \
-  liboctave/external/ranlib/snorm.f \
-  liboctave/external/ranlib/wrap.f
+  %reldir%/advnst.f \
+  %reldir%/genbet.f \
+  %reldir%/genchi.f \
+  %reldir%/genexp.f \
+  %reldir%/genf.f \
+  %reldir%/gengam.f \
+  %reldir%/genmn.f \
+  %reldir%/genmul.f \
+  %reldir%/gennch.f \
+  %reldir%/gennf.f \
+  %reldir%/gennor.f \
+  %reldir%/genprm.f \
+  %reldir%/genunf.f \
+  %reldir%/getcgn.f \
+  %reldir%/getsd.f \
+  %reldir%/ignbin.f \
+  %reldir%/ignlgi.f \
+  %reldir%/ignnbn.f \
+  %reldir%/ignpoi.f \
+  %reldir%/ignuin.f \
+  %reldir%/initgn.f \
+  %reldir%/inrgcm.f \
+  %reldir%/lennob.f \
+  %reldir%/mltmod.f \
+  %reldir%/phrtsd.f \
+  %reldir%/qrgnin.f \
+  %reldir%/ranf.f \
+  %reldir%/setall.f \
+  %reldir%/setant.f \
+  %reldir%/setgmn.f \
+  %reldir%/setsd.f \
+  %reldir%/sexpo.f \
+  %reldir%/sgamma.f \
+  %reldir%/snorm.f \
+  %reldir%/wrap.f
 
-noinst_LTLIBRARIES += liboctave/external/ranlib/libranlib.la
+noinst_LTLIBRARIES += %reldir%/libranlib.la
 
-liboctave_external_ranlib_libranlib_la_SOURCES = $(RANLIB_SRC)
+%canon_reldir%_libranlib_la_SOURCES = $(RANLIB_SRC)
 
-liboctave_external_ranlib_libranlib_la_DEPENDENCIES = liboctave/external/ranlib/ranlib.def
+%canon_reldir%_libranlib_la_DEPENDENCIES = %reldir%/ranlib.def
 
 ## Special rules for files which must be built before compilation
 ## ranlib directory may not exist in VPATH build; create it if necessary.
-liboctave/external/ranlib/ranlib.def: $(RANLIB_SRC) build-aux/mk-f77-def.sh | liboctave/external/ranlib/$(octave_dirstamp)
+%reldir%/ranlib.def: $(RANLIB_SRC) build-aux/mk-f77-def.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(SHELL) build-aux/mk-f77-def.sh $(srcdir) $(RANLIB_SRC) > $@-t && \
 	mv $@-t $@
 
-liboctave_liboctave_la_LIBADD += liboctave/external/ranlib/libranlib.la
+liboctave_liboctave_la_LIBADD += %reldir%/libranlib.la
 
 liboctave_EXTRA_DIST += \
-  liboctave/external/ranlib/Basegen.doc \
-  liboctave/external/ranlib/HOWTOGET \
-  liboctave/external/ranlib/README \
-  liboctave/external/ranlib/randlib.chs \
-  liboctave/external/ranlib/randlib.fdoc \
-  liboctave/external/ranlib/tstbot.for \
-  liboctave/external/ranlib/tstgmn.for \
-  liboctave/external/ranlib/tstmid.for
+  %reldir%/Basegen.doc \
+  %reldir%/HOWTOGET \
+  %reldir%/README \
+  %reldir%/randlib.chs \
+  %reldir%/randlib.fdoc \
+  %reldir%/tstbot.for \
+  %reldir%/tstgmn.for \
+  %reldir%/tstmid.for
 
-DIRSTAMP_FILES += liboctave/external/ranlib/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/liboctave/external/slatec-err/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/slatec-err/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,15 +1,15 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/slatec-err/fdump.f \
-  liboctave/external/slatec-err/ixsav.f \
-  liboctave/external/slatec-err/j4save.f \
-  liboctave/external/slatec-err/xerclr.f \
-  liboctave/external/slatec-err/xercnt.f \
-  liboctave/external/slatec-err/xerhlt.f \
-  liboctave/external/slatec-err/xermsg.f \
-  liboctave/external/slatec-err/xerprn.f \
-  liboctave/external/slatec-err/xerrwd.f \
-  liboctave/external/slatec-err/xersve.f \
-  liboctave/external/slatec-err/xgetf.f \
-  liboctave/external/slatec-err/xgetua.f \
-  liboctave/external/slatec-err/xsetf.f \
-  liboctave/external/slatec-err/xsetua.f
+  %reldir%/fdump.f \
+  %reldir%/ixsav.f \
+  %reldir%/j4save.f \
+  %reldir%/xerclr.f \
+  %reldir%/xercnt.f \
+  %reldir%/xerhlt.f \
+  %reldir%/xermsg.f \
+  %reldir%/xerprn.f \
+  %reldir%/xerrwd.f \
+  %reldir%/xersve.f \
+  %reldir%/xgetf.f \
+  %reldir%/xgetua.f \
+  %reldir%/xsetf.f \
+  %reldir%/xsetua.f
--- a/liboctave/external/slatec-fn/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/external/slatec-fn/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,81 +1,81 @@
 EXTERNAL_SOURCES += \
-  liboctave/external/slatec-fn/albeta.f \
-  liboctave/external/slatec-fn/alngam.f \
-  liboctave/external/slatec-fn/alnrel.f \
-  liboctave/external/slatec-fn/algams.f \
-  liboctave/external/slatec-fn/acosh.f \
-  liboctave/external/slatec-fn/asinh.f \
-  liboctave/external/slatec-fn/atanh.f \
-  liboctave/external/slatec-fn/betai.f \
-  liboctave/external/slatec-fn/csevl.f \
-  liboctave/external/slatec-fn/d9gmit.f \
-  liboctave/external/slatec-fn/d9lgic.f \
-  liboctave/external/slatec-fn/d9lgit.f \
-  liboctave/external/slatec-fn/d9lgmc.f \
-  liboctave/external/slatec-fn/dacosh.f \
-  liboctave/external/slatec-fn/dasinh.f \
-  liboctave/external/slatec-fn/datanh.f \
-  liboctave/external/slatec-fn/dbetai.f \
-  liboctave/external/slatec-fn/dcsevl.f \
-  liboctave/external/slatec-fn/derf.f \
-  liboctave/external/slatec-fn/dgami.f \
-  liboctave/external/slatec-fn/dgamit.f \
-  liboctave/external/slatec-fn/dgamlm.f \
-  liboctave/external/slatec-fn/dgamma.f \
-  liboctave/external/slatec-fn/dgamr.f \
-  liboctave/external/slatec-fn/dlbeta.f \
-  liboctave/external/slatec-fn/dlgams.f \
-  liboctave/external/slatec-fn/dlngam.f \
-  liboctave/external/slatec-fn/dlnrel.f \
-  liboctave/external/slatec-fn/dpchim.f \
-  liboctave/external/slatec-fn/dpchst.f \
-  liboctave/external/slatec-fn/dpsifn.f \
-  liboctave/external/slatec-fn/erf.f \
-  liboctave/external/slatec-fn/gami.f \
-  liboctave/external/slatec-fn/gamit.f \
-  liboctave/external/slatec-fn/gamlim.f \
-  liboctave/external/slatec-fn/gamma.f \
-  liboctave/external/slatec-fn/gamr.f \
-  liboctave/external/slatec-fn/initds.f \
-  liboctave/external/slatec-fn/inits.f \
-  liboctave/external/slatec-fn/pchim.f \
-  liboctave/external/slatec-fn/pchst.f \
-  liboctave/external/slatec-fn/psifn.f \
-  liboctave/external/slatec-fn/r9lgmc.f \
-  liboctave/external/slatec-fn/r9lgit.f \
-  liboctave/external/slatec-fn/r9gmit.f \
-  liboctave/external/slatec-fn/r9lgic.f \
-  liboctave/external/slatec-fn/xdacosh.f \
-  liboctave/external/slatec-fn/xdasinh.f \
-  liboctave/external/slatec-fn/xdatanh.f \
-  liboctave/external/slatec-fn/xdbetai.f \
-  liboctave/external/slatec-fn/xderf.f \
-  liboctave/external/slatec-fn/xderfc.f \
-  liboctave/external/slatec-fn/xdgami.f \
-  liboctave/external/slatec-fn/xdgamit.f \
-  liboctave/external/slatec-fn/xdgamma.f \
-  liboctave/external/slatec-fn/xgmainc.f \
-  liboctave/external/slatec-fn/xacosh.f \
-  liboctave/external/slatec-fn/xasinh.f \
-  liboctave/external/slatec-fn/xatanh.f \
-  liboctave/external/slatec-fn/xerf.f \
-  liboctave/external/slatec-fn/xerfc.f \
-  liboctave/external/slatec-fn/xsgmainc.f \
-  liboctave/external/slatec-fn/xgamma.f \
-  liboctave/external/slatec-fn/xbetai.f
+  %reldir%/albeta.f \
+  %reldir%/alngam.f \
+  %reldir%/alnrel.f \
+  %reldir%/algams.f \
+  %reldir%/acosh.f \
+  %reldir%/asinh.f \
+  %reldir%/atanh.f \
+  %reldir%/betai.f \
+  %reldir%/csevl.f \
+  %reldir%/d9gmit.f \
+  %reldir%/d9lgic.f \
+  %reldir%/d9lgit.f \
+  %reldir%/d9lgmc.f \
+  %reldir%/dacosh.f \
+  %reldir%/dasinh.f \
+  %reldir%/datanh.f \
+  %reldir%/dbetai.f \
+  %reldir%/dcsevl.f \
+  %reldir%/derf.f \
+  %reldir%/dgami.f \
+  %reldir%/dgamit.f \
+  %reldir%/dgamlm.f \
+  %reldir%/dgamma.f \
+  %reldir%/dgamr.f \
+  %reldir%/dlbeta.f \
+  %reldir%/dlgams.f \
+  %reldir%/dlngam.f \
+  %reldir%/dlnrel.f \
+  %reldir%/dpchim.f \
+  %reldir%/dpchst.f \
+  %reldir%/dpsifn.f \
+  %reldir%/erf.f \
+  %reldir%/gami.f \
+  %reldir%/gamit.f \
+  %reldir%/gamlim.f \
+  %reldir%/gamma.f \
+  %reldir%/gamr.f \
+  %reldir%/initds.f \
+  %reldir%/inits.f \
+  %reldir%/pchim.f \
+  %reldir%/pchst.f \
+  %reldir%/psifn.f \
+  %reldir%/r9lgmc.f \
+  %reldir%/r9lgit.f \
+  %reldir%/r9gmit.f \
+  %reldir%/r9lgic.f \
+  %reldir%/xdacosh.f \
+  %reldir%/xdasinh.f \
+  %reldir%/xdatanh.f \
+  %reldir%/xdbetai.f \
+  %reldir%/xderf.f \
+  %reldir%/xderfc.f \
+  %reldir%/xdgami.f \
+  %reldir%/xdgamit.f \
+  %reldir%/xdgamma.f \
+  %reldir%/xgmainc.f \
+  %reldir%/xacosh.f \
+  %reldir%/xasinh.f \
+  %reldir%/xatanh.f \
+  %reldir%/xerf.f \
+  %reldir%/xerfc.f \
+  %reldir%/xsgmainc.f \
+  %reldir%/xgamma.f \
+  %reldir%/xbetai.f
 
 nodist_liboctave_external_libexternal_la_SOURCES += \
-  liboctave/external/slatec-fn/derfc.f \
-  liboctave/external/slatec-fn/erfc.f
+  %reldir%/derfc.f \
+  %reldir%/erfc.f
 
-liboctave/external/slatec-fn/erfc.f: liboctave/external/slatec-fn/erfc.in.f build-aux/subst-f77-isnan-macro.sh | liboctave/external/slatec-fn/$(octave_dirstamp)
+%reldir%/erfc.f: %reldir%/erfc.in.f build-aux/subst-f77-isnan-macro.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-f77-isnan-macro.sh)
 
-liboctave/external/slatec-fn/derfc.f: liboctave/external/slatec-fn/derfc.in.f build-aux/subst-f77-isnan-macro.sh | liboctave/external/slatec-fn/$(octave_dirstamp)
+%reldir%/derfc.f: %reldir%/derfc.in.f build-aux/subst-f77-isnan-macro.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-f77-isnan-macro.sh)
 
 liboctave_EXTRA_DIST += \
-  liboctave/external/slatec-fn/derfc.in.f \
-  liboctave/external/slatec-fn/erfc.in.f
+  %reldir%/derfc.in.f \
+  %reldir%/erfc.in.f
 
-DIRSTAMP_FILES += liboctave/external/slatec-fn/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/liboctave/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,27 +1,27 @@
-liboctave_EXTRA_DIST = \
-  liboctave/liboctave-build-info.in.cc
+%canon_reldir%_EXTRA_DIST = \
+  %reldir%/liboctave-build-info.in.cc
 
-liboctave_CLEANFILES =
-liboctave_DISTCLEANFILES =
-liboctave_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
 ## Search local directories before those specified by the user.
-liboctave_liboctave_la_CPPFLAGS = \
+%canon_reldir%_%canon_reldir%_la_CPPFLAGS = \
   @OCTAVE_DLL_DEFS@ \
   @EXTERNAL_DLL_DEFS@ \
   -Iliboctave -I$(srcdir)/liboctave \
-  -I$(srcdir)/liboctave/array \
-  -Iliboctave/numeric -I$(srcdir)/liboctave/numeric \
-  -Iliboctave/operators -I$(srcdir)/liboctave/operators \
-  -I$(srcdir)/liboctave/system \
-  -I$(srcdir)/liboctave/util \
-  -I$(srcdir)/liboctave/wrappers
+  -I$(srcdir)/%reldir%/array \
+  -I%reldir%/numeric -I$(srcdir)/%reldir%/numeric \
+  -I%reldir%/operators -I$(srcdir)/%reldir%/operators \
+  -I$(srcdir)/%reldir%/system \
+  -I$(srcdir)/%reldir%/util \
+  -I$(srcdir)/%reldir%/wrappers
 
-liboctave_liboctave_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
+%canon_reldir%_%canon_reldir%_la_CFLAGS = $(AM_CFLAGS) $(WARN_CFLAGS)
 
-liboctave_liboctave_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
+%canon_reldir%_%canon_reldir%_la_CXXFLAGS = $(AM_CXXFLAGS) $(WARN_CXXFLAGS)
 
-octlib_LTLIBRARIES += liboctave/liboctave.la
+octlib_LTLIBRARIES += %reldir%/liboctave.la
 
 BUILT_INCS = \
   $(BUILT_LIBOCTAVE_OPERATORS_INC) \
@@ -32,10 +32,10 @@
   $(BUILT_LIBOCTAVE_OPERATORS_SOURCES)
 
 LIBOCTAVE_BUILT_NODISTFILES = \
-  liboctave/liboctave-build-info.cc
+  %reldir%/liboctave-build-info.cc
 
 octinclude_HEADERS += \
-  liboctave/liboctave-build-info.h \
+  %reldir%/liboctave-build-info.h \
   $(ARRAY_INC) \
   $(EXTERNAL_INC) \
   $(NUMERIC_INC) \
@@ -55,32 +55,32 @@
 
 ## A list of all files that could include tests
 
-liboctave_liboctave_la_LIBADD =
+%canon_reldir%_%canon_reldir%_la_LIBADD =
 
-include liboctave/array/module.mk
-include liboctave/external/module.mk
-include liboctave/numeric/module.mk
-include liboctave/operators/module.mk
-include liboctave/system/module.mk
-include liboctave/util/module.mk
-include liboctave/wrappers/module.mk
+include %reldir%/array/module.mk
+include %reldir%/external/module.mk
+include %reldir%/numeric/module.mk
+include %reldir%/operators/module.mk
+include %reldir%/system/module.mk
+include %reldir%/util/module.mk
+include %reldir%/wrappers/module.mk
 
-nodist_liboctave_liboctave_la_SOURCES = \
-  liboctave/liboctave-build-info.cc
+nodist_%canon_reldir%_%canon_reldir%_la_SOURCES = \
+  %reldir%/liboctave-build-info.cc
 
-liboctave_liboctave_la_LIBADD += \
+%canon_reldir%_%canon_reldir%_la_LIBADD += \
   libgnu/libgnu.la \
   $(LIBOCTAVE_LINK_DEPS)
 
 # Increment these as needed and according to the rules in the libtool manual:
-liboctave_liboctave_current = 4
-liboctave_liboctave_revision = 0
-liboctave_liboctave_age = 0
+%canon_reldir%_%canon_reldir%_current = 4
+%canon_reldir%_%canon_reldir%_revision = 0
+%canon_reldir%_%canon_reldir%_age = 0
 
-liboctave_liboctave_version_info = $(liboctave_liboctave_current):$(liboctave_liboctave_revision):$(liboctave_liboctave_age)
+%canon_reldir%_%canon_reldir%_version_info = $(%canon_reldir%_%canon_reldir%_current):$(%canon_reldir%_%canon_reldir%_revision):$(%canon_reldir%_%canon_reldir%_age)
 
-liboctave_liboctave_la_LDFLAGS = \
-  -version-info $(liboctave_liboctave_version_info) \
+%canon_reldir%_%canon_reldir%_la_LDFLAGS = \
+  -version-info $(%canon_reldir%_%canon_reldir%_version_info) \
   $(NO_UNDEFINED_LDFLAG) \
   @XTRA_EXTERNAL_SH_LDFLAGS@ \
   -bindir $(bindir) \
@@ -90,10 +90,10 @@
 ## Rules to build test files
 
 LIBOCTAVE_TST_SRC = \
-  $(liboctave_array_libarray_la_SOURCES) \
-  $(liboctave_numeric_libnumeric_la_SOURCES) \
-  $(liboctave_system_libsystem_la_SOURCES) \
-  $(liboctave_util_libutil_la_SOURCES) \
+  $(%canon_reldir%_array_libarray_la_SOURCES) \
+  $(%canon_reldir%_numeric_libnumeric_la_SOURCES) \
+  $(%canon_reldir%_system_libsystem_la_SOURCES) \
+  $(%canon_reldir%_util_libutil_la_SOURCES) \
   $(LIBOCTAVE_TEMPLATE_SRC)
 
 LIBOCTAVE_TST_FILES_SRC := $(shell $(SHELL) $(srcdir)/build-aux/find-files-with-tests.sh "$(srcdir)" $(LIBOCTAVE_TST_SRC))
@@ -104,31 +104,31 @@
 
 nobase_liboctavetests_DATA = $(LIBOCTAVE_TST_FILES)
 
-liboctave/liboctave-build-info.cc: liboctave/liboctave-build-info.in.cc HG-ID | liboctave/$(octave_dirstamp)
+%reldir%/liboctave-build-info.cc: %reldir%/liboctave-build-info.in.cc HG-ID | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(build-info-commands)
 
 OCTAVE_INTERPRETER_TARGETS += \
   $(LIBOCTAVE_TST_FILES)
 
-DIRSTAMP_FILES += liboctave/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
-EXTRA_DIST += $(liboctave_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-liboctave_CLEANFILES += \
+%canon_reldir%_CLEANFILES += \
   $(LIBOCTAVE_BUILT_NODISTFILES) \
   $(LIBOCTAVE_TST_FILES)
 
 BUILT_NODISTFILES += $(LIBOCTAVE_BUILT_NODISTFILES)
 
-CLEANFILES += $(liboctave_CLEANFILES)
-DISTCLEANFILES += $(liboctave_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(liboctave_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 liboctave-clean:
-	rm -f $(liboctave_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 liboctave-distclean: liboctave-clean
-	rm -f $(liboctave_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 liboctave-maintainer-clean: liboctave-distclean
-	rm -f $(liboctave_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/liboctave/numeric/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/numeric/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,107 +1,107 @@
 LIBOCTAVE_OPT_INC = \
-  liboctave/numeric/DASPK-opts.h \
-  liboctave/numeric/DASRT-opts.h \
-  liboctave/numeric/DASSL-opts.h \
-  liboctave/numeric/LSODE-opts.h \
-  liboctave/numeric/Quad-opts.h
+  %reldir%/DASPK-opts.h \
+  %reldir%/DASRT-opts.h \
+  %reldir%/DASSL-opts.h \
+  %reldir%/LSODE-opts.h \
+  %reldir%/Quad-opts.h
 
 LIBOCTAVE_OPT_IN = $(LIBOCTAVE_OPT_INC:.h=.in)
 
 NUMERIC_INC = \
-  liboctave/numeric/CollocWt.h \
-  liboctave/numeric/DAE.h \
-  liboctave/numeric/DAEFunc.h \
-  liboctave/numeric/DAERT.h \
-  liboctave/numeric/DAERTFunc.h \
-  liboctave/numeric/DASPK.h \
-  liboctave/numeric/DASRT.h \
-  liboctave/numeric/DASSL.h \
-  liboctave/numeric/DET.h \
-  liboctave/numeric/EIG.h \
-  liboctave/numeric/gsvd.h \
-  liboctave/numeric/LSODE.h \
-  liboctave/numeric/ODE.h \
-  liboctave/numeric/ODEFunc.h \
-  liboctave/numeric/ODES.h \
-  liboctave/numeric/ODESFunc.h \
-  liboctave/numeric/Quad.h \
-  liboctave/numeric/aepbalance.h \
-  liboctave/numeric/base-dae.h \
-  liboctave/numeric/base-de.h \
-  liboctave/numeric/base-min.h \
-  liboctave/numeric/bsxfun-decl.h \
-  liboctave/numeric/bsxfun.h \
-  liboctave/numeric/chol.h \
-  liboctave/numeric/eigs-base.h \
-  liboctave/numeric/fEIG.h \
-  liboctave/numeric/gepbalance.h \
-  liboctave/numeric/hess.h \
-  liboctave/numeric/lo-amos-proto.h \
-  liboctave/numeric/lo-arpack-proto.h \
-  liboctave/numeric/lo-blas-proto.h \
-  liboctave/numeric/lo-fftpack-proto.h \
-  liboctave/numeric/lo-lapack-proto.h \
-  liboctave/numeric/lo-mappers.h \
-  liboctave/numeric/lo-qrupdate-proto.h \
-  liboctave/numeric/lo-ranlib-proto.h \
-  liboctave/numeric/lo-slatec-proto.h \
-  liboctave/numeric/lo-specfun.h \
-  liboctave/numeric/lu.h \
-  liboctave/numeric/oct-convn.h \
-  liboctave/numeric/oct-fftw.h \
-  liboctave/numeric/oct-norm.h \
-  liboctave/numeric/oct-rand.h \
-  liboctave/numeric/oct-spparms.h \
-  liboctave/numeric/qr.h \
-  liboctave/numeric/qrp.h \
-  liboctave/numeric/randgamma.h \
-  liboctave/numeric/randmtzig.h \
-  liboctave/numeric/randpoisson.h \
-  liboctave/numeric/schur.h \
-  liboctave/numeric/sparse-chol.h \
-  liboctave/numeric/sparse-dmsolve.h \
-  liboctave/numeric/sparse-lu.h \
-  liboctave/numeric/sparse-qr.h \
-  liboctave/numeric/svd.h
+  %reldir%/CollocWt.h \
+  %reldir%/DAE.h \
+  %reldir%/DAEFunc.h \
+  %reldir%/DAERT.h \
+  %reldir%/DAERTFunc.h \
+  %reldir%/DASPK.h \
+  %reldir%/DASRT.h \
+  %reldir%/DASSL.h \
+  %reldir%/DET.h \
+  %reldir%/EIG.h \
+  %reldir%/gsvd.h \
+  %reldir%/LSODE.h \
+  %reldir%/ODE.h \
+  %reldir%/ODEFunc.h \
+  %reldir%/ODES.h \
+  %reldir%/ODESFunc.h \
+  %reldir%/Quad.h \
+  %reldir%/aepbalance.h \
+  %reldir%/base-dae.h \
+  %reldir%/base-de.h \
+  %reldir%/base-min.h \
+  %reldir%/bsxfun-decl.h \
+  %reldir%/bsxfun.h \
+  %reldir%/chol.h \
+  %reldir%/eigs-base.h \
+  %reldir%/fEIG.h \
+  %reldir%/gepbalance.h \
+  %reldir%/hess.h \
+  %reldir%/lo-amos-proto.h \
+  %reldir%/lo-arpack-proto.h \
+  %reldir%/lo-blas-proto.h \
+  %reldir%/lo-fftpack-proto.h \
+  %reldir%/lo-lapack-proto.h \
+  %reldir%/lo-mappers.h \
+  %reldir%/lo-qrupdate-proto.h \
+  %reldir%/lo-ranlib-proto.h \
+  %reldir%/lo-slatec-proto.h \
+  %reldir%/lo-specfun.h \
+  %reldir%/lu.h \
+  %reldir%/oct-convn.h \
+  %reldir%/oct-fftw.h \
+  %reldir%/oct-norm.h \
+  %reldir%/oct-rand.h \
+  %reldir%/oct-spparms.h \
+  %reldir%/qr.h \
+  %reldir%/qrp.h \
+  %reldir%/randgamma.h \
+  %reldir%/randmtzig.h \
+  %reldir%/randpoisson.h \
+  %reldir%/schur.h \
+  %reldir%/sparse-chol.h \
+  %reldir%/sparse-dmsolve.h \
+  %reldir%/sparse-lu.h \
+  %reldir%/sparse-qr.h \
+  %reldir%/svd.h
 
 NUMERIC_SRC = \
-  liboctave/numeric/CollocWt.cc \
-  liboctave/numeric/DASPK.cc \
-  liboctave/numeric/DASRT.cc \
-  liboctave/numeric/DASSL.cc \
-  liboctave/numeric/EIG.cc \
-  liboctave/numeric/gsvd.cc \
-  liboctave/numeric/LSODE.cc \
-  liboctave/numeric/ODES.cc \
-  liboctave/numeric/Quad.cc \
-  liboctave/numeric/aepbalance.cc \
-  liboctave/numeric/chol.cc \
-  liboctave/numeric/eigs-base.cc \
-  liboctave/numeric/fEIG.cc \
-  liboctave/numeric/gepbalance.cc \
-  liboctave/numeric/hess.cc \
-  liboctave/numeric/lo-mappers.cc \
-  liboctave/numeric/lo-specfun.cc \
-  liboctave/numeric/lu.cc \
-  liboctave/numeric/oct-convn.cc \
-  liboctave/numeric/oct-fftw.cc \
-  liboctave/numeric/oct-norm.cc \
-  liboctave/numeric/oct-rand.cc \
-  liboctave/numeric/oct-spparms.cc \
-  liboctave/numeric/qr.cc \
-  liboctave/numeric/qrp.cc \
-  liboctave/numeric/randgamma.cc \
-  liboctave/numeric/randmtzig.cc \
-  liboctave/numeric/randpoisson.cc \
-  liboctave/numeric/schur.cc \
-  liboctave/numeric/sparse-chol.cc \
-  liboctave/numeric/sparse-dmsolve.cc \
-  liboctave/numeric/sparse-lu.cc \
-  liboctave/numeric/sparse-qr.cc \
-  liboctave/numeric/svd.cc
+  %reldir%/CollocWt.cc \
+  %reldir%/DASPK.cc \
+  %reldir%/DASRT.cc \
+  %reldir%/DASSL.cc \
+  %reldir%/EIG.cc \
+  %reldir%/gsvd.cc \
+  %reldir%/LSODE.cc \
+  %reldir%/ODES.cc \
+  %reldir%/Quad.cc \
+  %reldir%/aepbalance.cc \
+  %reldir%/chol.cc \
+  %reldir%/eigs-base.cc \
+  %reldir%/fEIG.cc \
+  %reldir%/gepbalance.cc \
+  %reldir%/hess.cc \
+  %reldir%/lo-mappers.cc \
+  %reldir%/lo-specfun.cc \
+  %reldir%/lu.cc \
+  %reldir%/oct-convn.cc \
+  %reldir%/oct-fftw.cc \
+  %reldir%/oct-norm.cc \
+  %reldir%/oct-rand.cc \
+  %reldir%/oct-spparms.cc \
+  %reldir%/qr.cc \
+  %reldir%/qrp.cc \
+  %reldir%/randgamma.cc \
+  %reldir%/randmtzig.cc \
+  %reldir%/randpoisson.cc \
+  %reldir%/schur.cc \
+  %reldir%/sparse-chol.cc \
+  %reldir%/sparse-dmsolve.cc \
+  %reldir%/sparse-lu.cc \
+  %reldir%/sparse-qr.cc \
+  %reldir%/svd.cc
 
 LIBOCTAVE_TEMPLATE_SRC += \
-  liboctave/numeric/bsxfun-defs.cc
+  %reldir%/bsxfun-defs.cc
 
 ## Special rules for sources which must be built before rest of compilation.
 $(LIBOCTAVE_OPT_INC) : %.h : %.in
@@ -111,21 +111,21 @@
 
 $(LIBOCTAVE_OPT_INC) : $(srcdir)/build-aux/mk-opts.pl
 
-noinst_LTLIBRARIES += liboctave/numeric/libnumeric.la
+noinst_LTLIBRARIES += %reldir%/libnumeric.la
 
-liboctave_numeric_libnumeric_la_SOURCES = $(NUMERIC_SRC)
+%canon_reldir%_libnumeric_la_SOURCES = $(NUMERIC_SRC)
 
-liboctave_numeric_libnumeric_la_CPPFLAGS = \
+%canon_reldir%_libnumeric_la_CPPFLAGS = \
   $(liboctave_liboctave_la_CPPFLAGS) \
   -I$(srcdir)/liboctave/external/Faddeeva \
   $(FFTW_XCPPFLAGS) \
   $(SPARSE_XCPPFLAGS)
 
-liboctave_numeric_libnumeric_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libnumeric_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_numeric_libnumeric_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_libnumeric_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/numeric/libnumeric.la
+liboctave_liboctave_la_LIBADD += %reldir%/libnumeric.la
 
 liboctave_EXTRA_DIST += $(LIBOCTAVE_OPT_IN)
 
--- a/liboctave/operators/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/operators/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,10 +1,10 @@
-include liboctave/operators/vx-op-inc.mk
-include liboctave/operators/mx-op-inc.mk
-include liboctave/operators/smx-op-inc.mk
+include %reldir%/vx-op-inc.mk
+include %reldir%/mx-op-inc.mk
+include %reldir%/smx-op-inc.mk
 
-include liboctave/operators/vx-op-src.mk
-include liboctave/operators/mx-op-src.mk
-include liboctave/operators/smx-op-src.mk
+include %reldir%/vx-op-src.mk
+include %reldir%/mx-op-src.mk
+include %reldir%/smx-op-src.mk
 
 BUILT_LIBOCTAVE_OPERATORS_SOURCES = \
   $(MX_OP_SRC) \
@@ -12,9 +12,9 @@
   $(SMX_OP_SRC)
 
 BUILT_LIBOCTAVE_OPERATORS_INC = \
-  liboctave/operators/mx-ops.h \
-  liboctave/operators/smx-ops.h \
-  liboctave/operators/vx-ops.h \
+  %reldir%/mx-ops.h \
+  %reldir%/smx-ops.h \
+  %reldir%/vx-ops.h \
   $(MX_OP_INC) \
   $(VX_OP_INC) \
   $(SMX_OP_INC)
@@ -24,40 +24,40 @@
   $(BUILT_LIBOCTAVE_OPERATORS_INC)
 
 BUILT_FULL_MATRIX_OPERATORS_FILES = \
-  liboctave/operators/mx-ops.h \
+  %reldir%/mx-ops.h \
   $(MX_OP_INC) \
   $(MX_OP_SRC)
 
 BUILT_SPARSE_MATRIX_OPERATORS_FILES = \
-  liboctave/operators/smx-ops.h \
+  %reldir%/smx-ops.h \
   $(SMX_OP_INC) \
   $(SMX_OP_SRC)
 
 BUILT_VECTOR_OPERATORS_FILES = \
-  liboctave/operators/vx-ops.h \
+  %reldir%/vx-ops.h \
   $(VX_OP_INC) \
   $(VX_OP_SRC)
 
 LIBOCTAVE_OPERATORS_INC = \
-  liboctave/operators/mx-base.h \
-  liboctave/operators/mx-defs.h \
-  liboctave/operators/mx-ext.h \
-  liboctave/operators/mx-op-decl.h \
-  liboctave/operators/mx-op-defs.h \
-  liboctave/operators/Sparse-diag-op-defs.h \
-  liboctave/operators/Sparse-op-decls.h \
-  liboctave/operators/Sparse-op-defs.h \
-  liboctave/operators/Sparse-perm-op-defs.h
+  %reldir%/mx-base.h \
+  %reldir%/mx-defs.h \
+  %reldir%/mx-ext.h \
+  %reldir%/mx-op-decl.h \
+  %reldir%/mx-op-defs.h \
+  %reldir%/Sparse-diag-op-defs.h \
+  %reldir%/Sparse-op-decls.h \
+  %reldir%/Sparse-op-defs.h \
+  %reldir%/Sparse-perm-op-defs.h
 
 ## There are no distributed source files in this directory
 LIBOCTAVE_OPERATORS_SRC =
 
 LIBOCTAVE_TEMPLATE_SRC += \
-  liboctave/operators/mx-inlines.cc
+  %reldir%/mx-inlines.cc
 
 ## Special rules for sources which must be built before rest of compilation.
 
-OP_SRCDIR = $(srcdir)/liboctave/operators
+OP_SRCDIR = $(srcdir)/%reldir%
 
 define run-mk-ops
   rm -f $@-t $@ && \
@@ -65,35 +65,35 @@
   mv $@-t $@
 endef
 
-$(BUILT_FULL_MATRIX_OPERATORS_FILES): liboctave/operators/mx-ops liboctave/operators/mk-ops.awk
+$(BUILT_FULL_MATRIX_OPERATORS_FILES): %reldir%/mx-ops %reldir%/mk-ops.awk
 	$(AM_V_GEN)$(run-mk-ops)
 
-$(BUILT_SPARSE_MATRIX_OPERATORS_FILES): liboctave/operators/smx-ops liboctave/operators/mk-ops.awk
+$(BUILT_SPARSE_MATRIX_OPERATORS_FILES): %reldir%/smx-ops %reldir%/mk-ops.awk
 	$(AM_V_GEN)$(run-mk-ops)
 
-$(BUILT_VECTOR_OPERATORS_FILES): liboctave/operators/vx-ops liboctave/operators/mk-ops.awk
+$(BUILT_VECTOR_OPERATORS_FILES): %reldir%/vx-ops %reldir%/mk-ops.awk
 	$(AM_V_GEN)$(run-mk-ops)
 
-noinst_LTLIBRARIES += liboctave/operators/liboperators.la
+noinst_LTLIBRARIES += %reldir%/liboperators.la
 
-liboctave_operators_liboperators_la_SOURCES = $(LIBOCTAVE_OPERATORS_SRC)
+%canon_reldir%_liboperators_la_SOURCES = $(LIBOCTAVE_OPERATORS_SRC)
 
-nodist_liboctave_operators_liboperators_la_SOURCES = $(BUILT_LIBOCTAVE_OPERATORS_SOURCES)
+nodist_%canon_reldir%_liboperators_la_SOURCES = $(BUILT_LIBOCTAVE_OPERATORS_SOURCES)
 
-liboctave_operators_liboperators_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
+%canon_reldir%_liboperators_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
 
-liboctave_operators_liboperators_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_liboperators_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_operators_liboperators_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_liboperators_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/operators/liboperators.la
+liboctave_liboctave_la_LIBADD += %reldir%/liboperators.la
 
 liboctave_EXTRA_DIST += \
-  liboctave/operators/config-ops.sh \
-  liboctave/operators/mk-ops.awk \
-  liboctave/operators/mx-ops \
-  liboctave/operators/smx-ops \
-  liboctave/operators/vx-ops
+  %reldir%/config-ops.sh \
+  %reldir%/mk-ops.awk \
+  %reldir%/mx-ops \
+  %reldir%/smx-ops \
+  %reldir%/vx-ops
 
 liboctave_CLEANFILES += \
   $(BUILT_LIBOCTAVE_OPERATORS_FILES)
--- a/liboctave/system/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/system/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,39 +1,39 @@
 SYSTEM_INC = \
-  liboctave/system/child-list.h \
-  liboctave/system/dir-ops.h \
-  liboctave/system/file-ops.h \
-  liboctave/system/file-stat.h \
-  liboctave/system/lo-sysdep.h \
-  liboctave/system/mach-info.h \
-  liboctave/system/oct-env.h \
-  liboctave/system/oct-group.h \
-  liboctave/system/oct-passwd.h \
-  liboctave/system/oct-syscalls.h \
-  liboctave/system/oct-time.h \
-  liboctave/system/oct-uname.h
+  %reldir%/child-list.h \
+  %reldir%/dir-ops.h \
+  %reldir%/file-ops.h \
+  %reldir%/file-stat.h \
+  %reldir%/lo-sysdep.h \
+  %reldir%/mach-info.h \
+  %reldir%/oct-env.h \
+  %reldir%/oct-group.h \
+  %reldir%/oct-passwd.h \
+  %reldir%/oct-syscalls.h \
+  %reldir%/oct-time.h \
+  %reldir%/oct-uname.h
 
 SYSTEM_SRC = \
-  liboctave/system/child-list.cc \
-  liboctave/system/dir-ops.cc \
-  liboctave/system/file-ops.cc \
-  liboctave/system/file-stat.cc \
-  liboctave/system/lo-sysdep.cc \
-  liboctave/system/mach-info.cc \
-  liboctave/system/oct-env.cc \
-  liboctave/system/oct-group.cc \
-  liboctave/system/oct-passwd.cc \
-  liboctave/system/oct-syscalls.cc \
-  liboctave/system/oct-time.cc \
-  liboctave/system/oct-uname.cc
+  %reldir%/child-list.cc \
+  %reldir%/dir-ops.cc \
+  %reldir%/file-ops.cc \
+  %reldir%/file-stat.cc \
+  %reldir%/lo-sysdep.cc \
+  %reldir%/mach-info.cc \
+  %reldir%/oct-env.cc \
+  %reldir%/oct-group.cc \
+  %reldir%/oct-passwd.cc \
+  %reldir%/oct-syscalls.cc \
+  %reldir%/oct-time.cc \
+  %reldir%/oct-uname.cc
 
-noinst_LTLIBRARIES += liboctave/system/libsystem.la
+noinst_LTLIBRARIES += %reldir%/libsystem.la
 
-liboctave_system_libsystem_la_SOURCES = $(SYSTEM_SRC)
+%canon_reldir%_libsystem_la_SOURCES = $(SYSTEM_SRC)
 
-liboctave_system_libsystem_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
+%canon_reldir%_libsystem_la_CPPFLAGS = $(liboctave_liboctave_la_CPPFLAGS)
 
-liboctave_system_libsystem_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libsystem_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_system_libsystem_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_libsystem_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/system/libsystem.la
+liboctave_liboctave_la_LIBADD += %reldir%/libsystem.la
--- a/liboctave/util/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/util/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,118 +1,118 @@
 UTIL_INC = \
-  liboctave/util/action-container.h \
-  liboctave/util/base-list.h \
-  liboctave/util/byte-swap.h \
-  liboctave/util/caseless-str.h \
-  liboctave/util/cmd-edit.h \
-  liboctave/util/cmd-hist.h \
-  liboctave/util/data-conv.h \
-  liboctave/util/functor.h \
-  liboctave/util/glob-match.h \
-  liboctave/util/lo-array-errwarn.h \
-  liboctave/util/lo-array-gripes.h \
-  liboctave/util/lo-cutils.h \
-  liboctave/util/lo-hash.h \
-  liboctave/util/lo-ieee.h \
-  liboctave/util/lo-math.h \
-  liboctave/util/lo-regexp.h \
-  liboctave/util/lo-traits.h \
-  liboctave/util/lo-utils.h \
-  liboctave/util/f77-fcn.h \
-  liboctave/util/lo-error.h \
-  liboctave/util/quit.h \
-  liboctave/util/oct-base64.h \
-  liboctave/util/oct-binmap.h \
-  liboctave/util/oct-cmplx.h \
-  liboctave/util/oct-glob.h \
-  liboctave/util/oct-inttypes-fwd.h \
-  liboctave/util/oct-inttypes.h \
-  liboctave/util/oct-locbuf.h \
-  liboctave/util/oct-mutex.h \
-  liboctave/util/oct-refcount.h \
-  liboctave/util/oct-rl-edit.h \
-  liboctave/util/oct-rl-hist.h \
-  liboctave/util/oct-shlib.h \
-  liboctave/util/oct-sort.h \
-  liboctave/util/oct-string.h \
-  liboctave/util/pathsearch.h \
-  liboctave/util/singleton-cleanup.h \
-  liboctave/util/sparse-sort.h \
-  liboctave/util/sparse-util.h \
-  liboctave/util/str-vec.h \
-  liboctave/util/sun-utils.h \
-  liboctave/util/unwind-prot.h \
-  liboctave/util/url-transfer.h
+  %reldir%/action-container.h \
+  %reldir%/base-list.h \
+  %reldir%/byte-swap.h \
+  %reldir%/caseless-str.h \
+  %reldir%/cmd-edit.h \
+  %reldir%/cmd-hist.h \
+  %reldir%/data-conv.h \
+  %reldir%/functor.h \
+  %reldir%/glob-match.h \
+  %reldir%/lo-array-errwarn.h \
+  %reldir%/lo-array-gripes.h \
+  %reldir%/lo-cutils.h \
+  %reldir%/lo-hash.h \
+  %reldir%/lo-ieee.h \
+  %reldir%/lo-math.h \
+  %reldir%/lo-regexp.h \
+  %reldir%/lo-traits.h \
+  %reldir%/lo-utils.h \
+  %reldir%/f77-fcn.h \
+  %reldir%/lo-error.h \
+  %reldir%/quit.h \
+  %reldir%/oct-base64.h \
+  %reldir%/oct-binmap.h \
+  %reldir%/oct-cmplx.h \
+  %reldir%/oct-glob.h \
+  %reldir%/oct-inttypes-fwd.h \
+  %reldir%/oct-inttypes.h \
+  %reldir%/oct-locbuf.h \
+  %reldir%/oct-mutex.h \
+  %reldir%/oct-refcount.h \
+  %reldir%/oct-rl-edit.h \
+  %reldir%/oct-rl-hist.h \
+  %reldir%/oct-shlib.h \
+  %reldir%/oct-sort.h \
+  %reldir%/oct-string.h \
+  %reldir%/pathsearch.h \
+  %reldir%/singleton-cleanup.h \
+  %reldir%/sparse-sort.h \
+  %reldir%/sparse-util.h \
+  %reldir%/str-vec.h \
+  %reldir%/sun-utils.h \
+  %reldir%/unwind-prot.h \
+  %reldir%/url-transfer.h
 
 NOINSTALL_UTIL_INC = \
-  liboctave/util/kpse.h \
-  liboctave/util/oct-sparse.h
+  %reldir%/kpse.h \
+  %reldir%/oct-sparse.h
 
 UTIL_F77_SRC = \
-  liboctave/util/d1mach.f \
-  liboctave/util/i1mach.f \
-  liboctave/util/r1mach.f
+  %reldir%/d1mach.f \
+  %reldir%/i1mach.f \
+  %reldir%/r1mach.f
 
 UTIL_C_SRC = \
-  liboctave/util/f2c-main.c \
-  liboctave/util/lo-cutils.c \
-  liboctave/util/blaswrap.c \
-  liboctave/util/cquit.c \
-  liboctave/util/f77-fcn.c \
-  liboctave/util/lo-error.c \
-  liboctave/util/oct-rl-edit.c \
-  liboctave/util/oct-rl-hist.c
+  %reldir%/f2c-main.c \
+  %reldir%/lo-cutils.c \
+  %reldir%/blaswrap.c \
+  %reldir%/cquit.c \
+  %reldir%/f77-fcn.c \
+  %reldir%/lo-error.c \
+  %reldir%/oct-rl-edit.c \
+  %reldir%/oct-rl-hist.c
 
 UTIL_SRC = \
-  liboctave/util/cmd-edit.cc \
-  liboctave/util/cmd-hist.cc \
-  liboctave/util/data-conv.cc \
-  liboctave/util/glob-match.cc \
-  liboctave/util/kpse.cc \
-  liboctave/util/lo-array-errwarn.cc \
-  liboctave/util/lo-array-gripes.cc \
-  liboctave/util/lo-hash.cc \
-  liboctave/util/lo-ieee.cc \
-  liboctave/util/lo-regexp.cc \
-  liboctave/util/lo-utils.cc \
-  liboctave/util/f77-extern.cc \
-  liboctave/util/quit.cc \
-  liboctave/util/oct-base64.cc \
-  liboctave/util/oct-glob.cc \
-  liboctave/util/oct-inttypes.cc \
-  liboctave/util/oct-locbuf.cc \
-  liboctave/util/oct-mutex.cc \
-  liboctave/util/oct-shlib.cc \
-  liboctave/util/oct-sparse.cc \
-  liboctave/util/oct-string.cc \
-  liboctave/util/pathsearch.cc \
-  liboctave/util/singleton-cleanup.cc \
-  liboctave/util/sparse-sort.cc \
-  liboctave/util/sparse-util.cc \
-  liboctave/util/str-vec.cc \
-  liboctave/util/unwind-prot.cc \
-  liboctave/util/url-transfer.cc \
+  %reldir%/cmd-edit.cc \
+  %reldir%/cmd-hist.cc \
+  %reldir%/data-conv.cc \
+  %reldir%/glob-match.cc \
+  %reldir%/kpse.cc \
+  %reldir%/lo-array-errwarn.cc \
+  %reldir%/lo-array-gripes.cc \
+  %reldir%/lo-hash.cc \
+  %reldir%/lo-ieee.cc \
+  %reldir%/lo-regexp.cc \
+  %reldir%/lo-utils.cc \
+  %reldir%/f77-extern.cc \
+  %reldir%/quit.cc \
+  %reldir%/oct-base64.cc \
+  %reldir%/oct-glob.cc \
+  %reldir%/oct-inttypes.cc \
+  %reldir%/oct-locbuf.cc \
+  %reldir%/oct-mutex.cc \
+  %reldir%/oct-shlib.cc \
+  %reldir%/oct-sparse.cc \
+  %reldir%/oct-string.cc \
+  %reldir%/pathsearch.cc \
+  %reldir%/singleton-cleanup.cc \
+  %reldir%/sparse-sort.cc \
+  %reldir%/sparse-util.cc \
+  %reldir%/str-vec.cc \
+  %reldir%/unwind-prot.cc \
+  %reldir%/url-transfer.cc \
   $(UTIL_F77_SRC) \
   $(UTIL_C_SRC) \
   $(NOINSTALL_UTIL_INC)
 
 liboctave_EXTRA_DIST += \
-  liboctave/util/d1mach-tst.for
+  %reldir%/d1mach-tst.for
 
 LIBOCTAVE_TEMPLATE_SRC += \
-  liboctave/util/oct-sort.cc
+  %reldir%/oct-sort.cc
 
-noinst_LTLIBRARIES += liboctave/util/libutil.la
+noinst_LTLIBRARIES += %reldir%/libutil.la
 
-liboctave_util_libutil_la_SOURCES = $(UTIL_SRC)
+%canon_reldir%_libutil_la_SOURCES = $(UTIL_SRC)
 
-liboctave_util_libutil_la_CPPFLAGS = \
+%canon_reldir%_libutil_la_CPPFLAGS = \
   $(liboctave_liboctave_la_CPPFLAGS) \
   $(CURL_CPPFLAGS) \
   $(PCRE_CPPFLAGS) \
   $(SPARSE_XCPPFLAGS)
 
-liboctave_util_libutil_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libutil_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_util_libutil_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
+%canon_reldir%_libutil_la_CXXFLAGS = $(liboctave_liboctave_la_CXXFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/util/libutil.la
+liboctave_liboctave_la_LIBADD += %reldir%/libutil.la
--- a/liboctave/wrappers/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/liboctave/wrappers/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,85 +1,85 @@
 NOINSTALL_WRAPPERS_INC = \
-  liboctave/wrappers/areadlink-wrapper.h \
-  liboctave/wrappers/async-system-wrapper.h \
-  liboctave/wrappers/base64-wrappers.h \
-  liboctave/wrappers/canonicalize-file-name-wrapper.h \
-  liboctave/wrappers/dirent-wrappers.h \
-  liboctave/wrappers/fcntl-wrappers.h \
-  liboctave/wrappers/filepos-wrappers.h \
-  liboctave/wrappers/fpucw-wrappers.h \
-  liboctave/wrappers/gen-tempname-wrapper.h \
-  liboctave/wrappers/getopt-wrapper.h \
-  liboctave/wrappers/glob-wrappers.h \
-  liboctave/wrappers/hash-wrappers.h \
-  liboctave/wrappers/localcharset-wrapper.h \
-  liboctave/wrappers/math-wrappers.h \
-  liboctave/wrappers/mkostemp-wrapper.h \
-  liboctave/wrappers/nanosleep-wrapper.h \
-  liboctave/wrappers/nproc-wrapper.h \
-  liboctave/wrappers/octave-popen2.h \
-  liboctave/wrappers/putenv-wrapper.h \
-  liboctave/wrappers/set-program-name-wrapper.h \
-  liboctave/wrappers/signal-wrappers.h \
-  liboctave/wrappers/stat-wrappers.h \
-  liboctave/wrappers/strdup-wrapper.h \
-  liboctave/wrappers/strftime-wrapper.h \
-  liboctave/wrappers/strmode-wrapper.h \
-  liboctave/wrappers/strptime-wrapper.h \
-  liboctave/wrappers/time-wrappers.h \
-  liboctave/wrappers/tmpfile-wrapper.h \
-  liboctave/wrappers/uname-wrapper.h \
-  liboctave/wrappers/uniconv-wrappers.h \
-  liboctave/wrappers/unistd-wrappers.h \
-  liboctave/wrappers/unsetenv-wrapper.h \
-  liboctave/wrappers/vasprintf-wrapper.h \
-  liboctave/wrappers/wait-for-input.h \
-  liboctave/wrappers/wait-wrappers.h
+  %reldir%/areadlink-wrapper.h \
+  %reldir%/async-system-wrapper.h \
+  %reldir%/base64-wrappers.h \
+  %reldir%/canonicalize-file-name-wrapper.h \
+  %reldir%/dirent-wrappers.h \
+  %reldir%/fcntl-wrappers.h \
+  %reldir%/filepos-wrappers.h \
+  %reldir%/fpucw-wrappers.h \
+  %reldir%/gen-tempname-wrapper.h \
+  %reldir%/getopt-wrapper.h \
+  %reldir%/glob-wrappers.h \
+  %reldir%/hash-wrappers.h \
+  %reldir%/localcharset-wrapper.h \
+  %reldir%/math-wrappers.h \
+  %reldir%/mkostemp-wrapper.h \
+  %reldir%/nanosleep-wrapper.h \
+  %reldir%/nproc-wrapper.h \
+  %reldir%/octave-popen2.h \
+  %reldir%/putenv-wrapper.h \
+  %reldir%/set-program-name-wrapper.h \
+  %reldir%/signal-wrappers.h \
+  %reldir%/stat-wrappers.h \
+  %reldir%/strdup-wrapper.h \
+  %reldir%/strftime-wrapper.h \
+  %reldir%/strmode-wrapper.h \
+  %reldir%/strptime-wrapper.h \
+  %reldir%/time-wrappers.h \
+  %reldir%/tmpfile-wrapper.h \
+  %reldir%/uname-wrapper.h \
+  %reldir%/uniconv-wrappers.h \
+  %reldir%/unistd-wrappers.h \
+  %reldir%/unsetenv-wrapper.h \
+  %reldir%/vasprintf-wrapper.h \
+  %reldir%/wait-for-input.h \
+  %reldir%/wait-wrappers.h
 
 WRAPPERS_SRC = \
-  liboctave/wrappers/areadlink-wrapper.c \
-  liboctave/wrappers/async-system-wrapper.c \
-  liboctave/wrappers/base64-wrappers.c \
-  liboctave/wrappers/canonicalize-file-name-wrapper.c \
-  liboctave/wrappers/dirent-wrappers.c \
-  liboctave/wrappers/fcntl-wrappers.c \
-  liboctave/wrappers/filepos-wrappers.c \
-  liboctave/wrappers/fpucw-wrappers.c \
-  liboctave/wrappers/gen-tempname-wrapper.c \
-  liboctave/wrappers/getopt-wrapper.c \
-  liboctave/wrappers/glob-wrappers.c \
-  liboctave/wrappers/hash-wrappers.c \
-  liboctave/wrappers/localcharset-wrapper.c \
-  liboctave/wrappers/math-wrappers.c \
-  liboctave/wrappers/mkostemp-wrapper.c \
-  liboctave/wrappers/nanosleep-wrapper.c \
-  liboctave/wrappers/nproc-wrapper.c \
-  liboctave/wrappers/octave-popen2.c \
-  liboctave/wrappers/putenv-wrapper.c \
-  liboctave/wrappers/set-program-name-wrapper.c \
-  liboctave/wrappers/signal-wrappers.c \
-  liboctave/wrappers/stat-wrappers.c \
-  liboctave/wrappers/strdup-wrapper.c \
-  liboctave/wrappers/strftime-wrapper.c \
-  liboctave/wrappers/strmode-wrapper.c \
-  liboctave/wrappers/strptime-wrapper.c \
-  liboctave/wrappers/time-wrappers.c \
-  liboctave/wrappers/tmpfile-wrapper.c \
-  liboctave/wrappers/uname-wrapper.c \
-  liboctave/wrappers/uniconv-wrappers.c \
-  liboctave/wrappers/unistd-wrappers.c \
-  liboctave/wrappers/unsetenv-wrapper.c \
-  liboctave/wrappers/vasprintf-wrapper.c \
-  liboctave/wrappers/wait-for-input.c \
-  liboctave/wrappers/wait-wrappers.c \
+  %reldir%/areadlink-wrapper.c \
+  %reldir%/async-system-wrapper.c \
+  %reldir%/base64-wrappers.c \
+  %reldir%/canonicalize-file-name-wrapper.c \
+  %reldir%/dirent-wrappers.c \
+  %reldir%/fcntl-wrappers.c \
+  %reldir%/filepos-wrappers.c \
+  %reldir%/fpucw-wrappers.c \
+  %reldir%/gen-tempname-wrapper.c \
+  %reldir%/getopt-wrapper.c \
+  %reldir%/glob-wrappers.c \
+  %reldir%/hash-wrappers.c \
+  %reldir%/localcharset-wrapper.c \
+  %reldir%/math-wrappers.c \
+  %reldir%/mkostemp-wrapper.c \
+  %reldir%/nanosleep-wrapper.c \
+  %reldir%/nproc-wrapper.c \
+  %reldir%/octave-popen2.c \
+  %reldir%/putenv-wrapper.c \
+  %reldir%/set-program-name-wrapper.c \
+  %reldir%/signal-wrappers.c \
+  %reldir%/stat-wrappers.c \
+  %reldir%/strdup-wrapper.c \
+  %reldir%/strftime-wrapper.c \
+  %reldir%/strmode-wrapper.c \
+  %reldir%/strptime-wrapper.c \
+  %reldir%/time-wrappers.c \
+  %reldir%/tmpfile-wrapper.c \
+  %reldir%/uname-wrapper.c \
+  %reldir%/uniconv-wrappers.c \
+  %reldir%/unistd-wrappers.c \
+  %reldir%/unsetenv-wrapper.c \
+  %reldir%/vasprintf-wrapper.c \
+  %reldir%/wait-for-input.c \
+  %reldir%/wait-wrappers.c \
   $(NOINSTALL_WRAPPERS_INC)
 
-noinst_LTLIBRARIES += liboctave/wrappers/libwrappers.la
+noinst_LTLIBRARIES += %reldir%/libwrappers.la
 
-liboctave_wrappers_libwrappers_la_SOURCES = $(WRAPPERS_SRC)
+%canon_reldir%_libwrappers_la_SOURCES = $(WRAPPERS_SRC)
 
-liboctave_wrappers_libwrappers_la_CPPFLAGS = \
+%canon_reldir%_libwrappers_la_CPPFLAGS = \
   -Ilibgnu -I$(srcdir)/libgnu
 
-liboctave_wrappers_libwrappers_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
+%canon_reldir%_libwrappers_la_CFLAGS = $(liboctave_liboctave_la_CFLAGS)
 
-liboctave_liboctave_la_LIBADD += liboctave/wrappers/libwrappers.la
+liboctave_liboctave_la_LIBADD += %reldir%/libwrappers.la
--- a/m4/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/m4/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,15 +1,15 @@
 EXTRA_DIST += \
-  m4/module.mk \
-  m4/ax_blas.m4 \
-  m4/ax_compare_version.m4 \
-  m4/ax_lapack.m4 \
-  m4/ax_openmp.m4 \
-  m4/ax_pthread.m4 \
-  m4/gnulib-cache.m4 \
-  m4/libtool.m4 \
-  m4/ltoptions.m4 \
-  m4/ltsugar.m4 \
-  m4/ltversion.m4 \
-  m4/lt~obsolete.m4 \
-  m4/octave_blas_f77_func.m4 \
-  m4/pkg.m4
+  %reldir%/module.mk \
+  %reldir%/ax_blas.m4 \
+  %reldir%/ax_compare_version.m4 \
+  %reldir%/ax_lapack.m4 \
+  %reldir%/ax_openmp.m4 \
+  %reldir%/ax_pthread.m4 \
+  %reldir%/gnulib-cache.m4 \
+  %reldir%/libtool.m4 \
+  %reldir%/ltoptions.m4 \
+  %reldir%/ltsugar.m4 \
+  %reldir%/ltversion.m4 \
+  %reldir%/lt~obsolete.m4 \
+  %reldir%/octave_blas_f77_func.m4 \
+  %reldir%/pkg.m4
--- a/scripts/+containers/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/+containers/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,14 +1,14 @@
 FCN_FILE_DIRS += scripts/+containers
 
-scripts_containers_FCN_FILES = \
-  scripts/+containers/Map.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/Map.m
 
-scripts_containersdir = $(fcnfiledir)/+containers
+%canon_reldir%dir = $(fcnfiledir)/+containers
 
-scripts_containers_DATA = $(scripts_containers_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_containers_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/+containers/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/+containers/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/@ftp/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/@ftp/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,4 +1,4 @@
-## Automake fails to process "include scripts/@ftp/module.mk" in the directory
+## Automake fails to process "include %reldir%/module.mk" in the directory
 ## above.  All of the commands which would normally be in this file were
 ## manually placed in scripts/module.mk to avoid using the "include" directive.
 ##
--- a/scripts/audio/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/audio/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,65 +1,65 @@
 FCN_FILE_DIRS += \
   scripts/audio \
-  scripts/audio/@audioplayer \
-  scripts/audio/@audiorecorder
+  %reldir%/@audioplayer \
+  %reldir%/@audiorecorder
 
-scripts_audio_FCN_FILES = \
-  scripts/audio/lin2mu.m \
-  scripts/audio/mu2lin.m \
-  scripts/audio/record.m \
-  scripts/audio/sound.m \
-  scripts/audio/soundsc.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/lin2mu.m \
+  %reldir%/mu2lin.m \
+  %reldir%/record.m \
+  %reldir%/sound.m \
+  %reldir%/soundsc.m
 
-scripts_audio_@audioplayer_FCN_FILES = \
-  scripts/audio/@audioplayer/__get_properties__.m \
-  scripts/audio/@audioplayer/audioplayer.m \
-  scripts/audio/@audioplayer/disp.m \
-  scripts/audio/@audioplayer/get.m \
-  scripts/audio/@audioplayer/isplaying.m \
-  scripts/audio/@audioplayer/pause.m  \
-  scripts/audio/@audioplayer/play.m \
-  scripts/audio/@audioplayer/playblocking.m \
-  scripts/audio/@audioplayer/resume.m \
-  scripts/audio/@audioplayer/set.m \
-  scripts/audio/@audioplayer/stop.m \
-  scripts/audio/@audioplayer/subsasgn.m \
-  scripts/audio/@audioplayer/subsref.m
+%canon_reldir%_@audioplayer_FCN_FILES = \
+  %reldir%/@audioplayer/__get_properties__.m \
+  %reldir%/@audioplayer/audioplayer.m \
+  %reldir%/@audioplayer/disp.m \
+  %reldir%/@audioplayer/get.m \
+  %reldir%/@audioplayer/isplaying.m \
+  %reldir%/@audioplayer/pause.m  \
+  %reldir%/@audioplayer/play.m \
+  %reldir%/@audioplayer/playblocking.m \
+  %reldir%/@audioplayer/resume.m \
+  %reldir%/@audioplayer/set.m \
+  %reldir%/@audioplayer/stop.m \
+  %reldir%/@audioplayer/subsasgn.m \
+  %reldir%/@audioplayer/subsref.m
 
-scripts_audio_@audiorecorder_FCN_FILES = \
-  scripts/audio/@audiorecorder/__get_properties__.m \
-  scripts/audio/@audiorecorder/audiorecorder.m \
-  scripts/audio/@audiorecorder/disp.m \
-  scripts/audio/@audiorecorder/get.m \
-  scripts/audio/@audiorecorder/getaudiodata.m \
-  scripts/audio/@audiorecorder/getplayer.m \
-  scripts/audio/@audiorecorder/isrecording.m \
-  scripts/audio/@audiorecorder/pause.m \
-  scripts/audio/@audiorecorder/play.m \
-  scripts/audio/@audiorecorder/record.m \
-  scripts/audio/@audiorecorder/recordblocking.m \
-  scripts/audio/@audiorecorder/resume.m \
-  scripts/audio/@audiorecorder/set.m \
-  scripts/audio/@audiorecorder/stop.m \
-  scripts/audio/@audiorecorder/subsasgn.m \
-  scripts/audio/@audiorecorder/subsref.m
+%canon_reldir%_@audiorecorder_FCN_FILES = \
+  %reldir%/@audiorecorder/__get_properties__.m \
+  %reldir%/@audiorecorder/audiorecorder.m \
+  %reldir%/@audiorecorder/disp.m \
+  %reldir%/@audiorecorder/get.m \
+  %reldir%/@audiorecorder/getaudiodata.m \
+  %reldir%/@audiorecorder/getplayer.m \
+  %reldir%/@audiorecorder/isrecording.m \
+  %reldir%/@audiorecorder/pause.m \
+  %reldir%/@audiorecorder/play.m \
+  %reldir%/@audiorecorder/record.m \
+  %reldir%/@audiorecorder/recordblocking.m \
+  %reldir%/@audiorecorder/resume.m \
+  %reldir%/@audiorecorder/set.m \
+  %reldir%/@audiorecorder/stop.m \
+  %reldir%/@audiorecorder/subsasgn.m \
+  %reldir%/@audiorecorder/subsref.m
 
-scripts_audiodir = $(fcnfiledir)/audio
+%canon_reldir%dir = $(fcnfiledir)/audio
 
-scripts_audio_DATA = $(scripts_audio_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_audio_@audioplayerdir = $(fcnfiledir)/audio/@audioplayer
+%canon_reldir%_@audioplayerdir = $(fcnfiledir)/audio/@audioplayer
 
-scripts_audio_@audioplayer_DATA = $(scripts_audio_@audioplayer_FCN_FILES)
+%canon_reldir%_@audioplayer_DATA = $(%canon_reldir%_@audioplayer_FCN_FILES)
 
-scripts_audio_@audiorecorderdir = $(fcnfiledir)/audio/@audiorecorder
+%canon_reldir%_@audiorecorderdir = $(fcnfiledir)/audio/@audiorecorder
 
-scripts_audio_@audiorecorder_DATA = $(scripts_audio_@audiorecorder_FCN_FILES)
+%canon_reldir%_@audiorecorder_DATA = $(%canon_reldir%_@audiorecorder_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_audio_FCN_FILES) \
-  $(scripts_audio_@audioplayer_FCN_FILES) \
-  $(scripts_audio_@audiorecorder_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_@audioplayer_FCN_FILES) \
+  $(%canon_reldir%_@audiorecorder_FCN_FILES)
 
-PKG_ADD_FILES += scripts/audio/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/audio/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/deprecated/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/deprecated/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,26 +1,26 @@
 FCN_FILE_DIRS += scripts/deprecated
 
-scripts_deprecated_FCN_FILES = \
-  scripts/deprecated/bitmax.m \
-  scripts/deprecated/comma.m \
-  scripts/deprecated/isstr.m \
-  scripts/deprecated/mahalanobis.m \
-  scripts/deprecated/md5sum.m \
-  scripts/deprecated/octave_config_info.m \
-  scripts/deprecated/onenormest.m \
-  scripts/deprecated/paren.m \
-  scripts/deprecated/semicolon.m \
-  scripts/deprecated/sleep.m \
-  scripts/deprecated/usleep.m \
-  scripts/deprecated/wavread.m \
-  scripts/deprecated/wavwrite.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/bitmax.m \
+  %reldir%/comma.m \
+  %reldir%/isstr.m \
+  %reldir%/mahalanobis.m \
+  %reldir%/md5sum.m \
+  %reldir%/octave_config_info.m \
+  %reldir%/onenormest.m \
+  %reldir%/paren.m \
+  %reldir%/semicolon.m \
+  %reldir%/sleep.m \
+  %reldir%/usleep.m \
+  %reldir%/wavread.m \
+  %reldir%/wavwrite.m
 
-scripts_deprecateddir = $(fcnfiledir)/deprecated
+%canon_reldir%dir = $(fcnfiledir)/deprecated
 
-scripts_deprecated_DATA = $(scripts_deprecated_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_deprecated_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/deprecated/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/deprecated/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/elfun/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/elfun/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,38 +1,38 @@
 FCN_FILE_DIRS += scripts/elfun
 
-scripts_elfun_FCN_FILES = \
-  scripts/elfun/acosd.m \
-  scripts/elfun/acot.m \
-  scripts/elfun/acotd.m \
-  scripts/elfun/acoth.m \
-  scripts/elfun/acsc.m \
-  scripts/elfun/acscd.m \
-  scripts/elfun/acsch.m \
-  scripts/elfun/asec.m \
-  scripts/elfun/asecd.m \
-  scripts/elfun/asech.m \
-  scripts/elfun/asind.m \
-  scripts/elfun/atan2d.m \
-  scripts/elfun/atand.m \
-  scripts/elfun/cosd.m \
-  scripts/elfun/cot.m \
-  scripts/elfun/cotd.m \
-  scripts/elfun/coth.m \
-  scripts/elfun/csc.m \
-  scripts/elfun/cscd.m \
-  scripts/elfun/csch.m \
-  scripts/elfun/sec.m \
-  scripts/elfun/secd.m \
-  scripts/elfun/sech.m \
-  scripts/elfun/sind.m \
-  scripts/elfun/tand.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/acosd.m \
+  %reldir%/acot.m \
+  %reldir%/acotd.m \
+  %reldir%/acoth.m \
+  %reldir%/acsc.m \
+  %reldir%/acscd.m \
+  %reldir%/acsch.m \
+  %reldir%/asec.m \
+  %reldir%/asecd.m \
+  %reldir%/asech.m \
+  %reldir%/asind.m \
+  %reldir%/atan2d.m \
+  %reldir%/atand.m \
+  %reldir%/cosd.m \
+  %reldir%/cot.m \
+  %reldir%/cotd.m \
+  %reldir%/coth.m \
+  %reldir%/csc.m \
+  %reldir%/cscd.m \
+  %reldir%/csch.m \
+  %reldir%/sec.m \
+  %reldir%/secd.m \
+  %reldir%/sech.m \
+  %reldir%/sind.m \
+  %reldir%/tand.m
 
-scripts_elfundir = $(fcnfiledir)/elfun
+%canon_reldir%dir = $(fcnfiledir)/elfun
 
-scripts_elfun_DATA = $(scripts_elfun_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_elfun_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/elfun/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/elfun/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/general/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/general/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,100 +1,100 @@
 FCN_FILE_DIRS += \
   scripts/general \
-  scripts/general/private
+  %reldir%/private
 
-scripts_general_PRIVATE_FCN_FILES = \
-  scripts/general/private/__isequal__.m \
-  scripts/general/private/__publish_html_output__.m \
-  scripts/general/private/__publish_latex_output__.m \
-  scripts/general/private/__splinen__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__isequal__.m \
+  %reldir%/private/__publish_html_output__.m \
+  %reldir%/private/__publish_latex_output__.m \
+  %reldir%/private/__splinen__.m
 
-scripts_general_FCN_FILES = \
-  scripts/general/accumarray.m \
-  scripts/general/accumdim.m \
-  scripts/general/bincoeff.m \
-  scripts/general/bitcmp.m \
-  scripts/general/bitget.m \
-  scripts/general/bitset.m \
-  scripts/general/blkdiag.m \
-  scripts/general/cart2pol.m \
-  scripts/general/cart2sph.m \
-  scripts/general/cell2mat.m \
-  scripts/general/celldisp.m \
-  scripts/general/chop.m \
-  scripts/general/circshift.m \
-  scripts/general/common_size.m \
-  scripts/general/cplxpair.m \
-  scripts/general/cumtrapz.m \
-  scripts/general/curl.m \
-  scripts/general/dblquad.m \
-  scripts/general/deal.m \
-  scripts/general/deg2rad.m \
-  scripts/general/del2.m \
-  scripts/general/divergence.m \
-  scripts/general/fieldnames.m \
-  scripts/general/flip.m \
-  scripts/general/flipdim.m \
-  scripts/general/fliplr.m \
-  scripts/general/flipud.m \
-  scripts/general/grabcode.m \
-  scripts/general/gradient.m \
-  scripts/general/idivide.m \
-  scripts/general/inputParser.m \
-  scripts/general/int2str.m \
-  scripts/general/interp1.m \
-  scripts/general/interp2.m \
-  scripts/general/interp3.m \
-  scripts/general/interpft.m \
-  scripts/general/interpn.m \
-  scripts/general/isdir.m \
-  scripts/general/isequal.m \
-  scripts/general/isequaln.m \
-  scripts/general/loadobj.m \
-  scripts/general/logspace.m \
-  scripts/general/methods.m \
-  scripts/general/nargchk.m \
-  scripts/general/narginchk.m \
-  scripts/general/nargoutchk.m \
-  scripts/general/nextpow2.m \
-  scripts/general/nthargout.m \
-  scripts/general/num2str.m \
-  scripts/general/pol2cart.m \
-  scripts/general/polyarea.m \
-  scripts/general/postpad.m \
-  scripts/general/prepad.m \
-  scripts/general/publish.m \
-  scripts/general/quadgk.m \
-  scripts/general/quadl.m \
-  scripts/general/quadv.m \
-  scripts/general/rad2deg.m \
-  scripts/general/randi.m \
-  scripts/general/rat.m \
-  scripts/general/repmat.m \
-  scripts/general/rot90.m \
-  scripts/general/rotdim.m \
-  scripts/general/saveobj.m \
-  scripts/general/shift.m \
-  scripts/general/shiftdim.m \
-  scripts/general/sortrows.m \
-  scripts/general/sph2cart.m \
-  scripts/general/structfun.m \
-  scripts/general/subsindex.m \
-  scripts/general/trapz.m \
-  scripts/general/triplequad.m \
-  scripts/general/validateattributes.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/accumarray.m \
+  %reldir%/accumdim.m \
+  %reldir%/bincoeff.m \
+  %reldir%/bitcmp.m \
+  %reldir%/bitget.m \
+  %reldir%/bitset.m \
+  %reldir%/blkdiag.m \
+  %reldir%/cart2pol.m \
+  %reldir%/cart2sph.m \
+  %reldir%/cell2mat.m \
+  %reldir%/celldisp.m \
+  %reldir%/chop.m \
+  %reldir%/circshift.m \
+  %reldir%/common_size.m \
+  %reldir%/cplxpair.m \
+  %reldir%/cumtrapz.m \
+  %reldir%/curl.m \
+  %reldir%/dblquad.m \
+  %reldir%/deal.m \
+  %reldir%/deg2rad.m \
+  %reldir%/del2.m \
+  %reldir%/divergence.m \
+  %reldir%/fieldnames.m \
+  %reldir%/flip.m \
+  %reldir%/flipdim.m \
+  %reldir%/fliplr.m \
+  %reldir%/flipud.m \
+  %reldir%/grabcode.m \
+  %reldir%/gradient.m \
+  %reldir%/idivide.m \
+  %reldir%/inputParser.m \
+  %reldir%/int2str.m \
+  %reldir%/interp1.m \
+  %reldir%/interp2.m \
+  %reldir%/interp3.m \
+  %reldir%/interpft.m \
+  %reldir%/interpn.m \
+  %reldir%/isdir.m \
+  %reldir%/isequal.m \
+  %reldir%/isequaln.m \
+  %reldir%/loadobj.m \
+  %reldir%/logspace.m \
+  %reldir%/methods.m \
+  %reldir%/nargchk.m \
+  %reldir%/narginchk.m \
+  %reldir%/nargoutchk.m \
+  %reldir%/nextpow2.m \
+  %reldir%/nthargout.m \
+  %reldir%/num2str.m \
+  %reldir%/pol2cart.m \
+  %reldir%/polyarea.m \
+  %reldir%/postpad.m \
+  %reldir%/prepad.m \
+  %reldir%/publish.m \
+  %reldir%/quadgk.m \
+  %reldir%/quadl.m \
+  %reldir%/quadv.m \
+  %reldir%/rad2deg.m \
+  %reldir%/randi.m \
+  %reldir%/rat.m \
+  %reldir%/repmat.m \
+  %reldir%/rot90.m \
+  %reldir%/rotdim.m \
+  %reldir%/saveobj.m \
+  %reldir%/shift.m \
+  %reldir%/shiftdim.m \
+  %reldir%/sortrows.m \
+  %reldir%/sph2cart.m \
+  %reldir%/structfun.m \
+  %reldir%/subsindex.m \
+  %reldir%/trapz.m \
+  %reldir%/triplequad.m \
+  %reldir%/validateattributes.m
 
-scripts_generaldir = $(fcnfiledir)/general
+%canon_reldir%dir = $(fcnfiledir)/general
 
-scripts_general_DATA = $(scripts_general_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_general_privatedir = $(fcnfiledir)/general/private
+%canon_reldir%_privatedir = $(fcnfiledir)/general/private
 
-scripts_general_private_DATA = $(scripts_general_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_general_FCN_FILES) \
-  $(scripts_general_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/general/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/general/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/geometry/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/geometry/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,26 +1,26 @@
 FCN_FILE_DIRS += scripts/geometry
 
-scripts_geometry_FCN_FILES = \
-  scripts/geometry/convhull.m \
-  scripts/geometry/delaunayn.m \
-  scripts/geometry/delaunay.m \
-  scripts/geometry/dsearch.m \
-  scripts/geometry/dsearchn.m \
-  scripts/geometry/griddata.m \
-  scripts/geometry/griddata3.m \
-  scripts/geometry/griddatan.m \
-  scripts/geometry/inpolygon.m \
-  scripts/geometry/rectint.m \
-  scripts/geometry/tsearchn.m \
-  scripts/geometry/voronoi.m \
-  scripts/geometry/voronoin.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/convhull.m \
+  %reldir%/delaunayn.m \
+  %reldir%/delaunay.m \
+  %reldir%/dsearch.m \
+  %reldir%/dsearchn.m \
+  %reldir%/griddata.m \
+  %reldir%/griddata3.m \
+  %reldir%/griddatan.m \
+  %reldir%/inpolygon.m \
+  %reldir%/rectint.m \
+  %reldir%/tsearchn.m \
+  %reldir%/voronoi.m \
+  %reldir%/voronoin.m
 
-scripts_geometrydir = $(fcnfiledir)/geometry
+%canon_reldir%dir = $(fcnfiledir)/geometry
 
-scripts_geometry_DATA = $(scripts_geometry_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_geometry_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/geometry/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/geometry/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/gui/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/gui/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,56 +1,56 @@
 FCN_FILE_DIRS += \
   scripts/gui \
-  scripts/gui/private
+  %reldir%/private
 
-scripts_gui_PRIVATE_FCN_FILES = \
-  scripts/gui/private/__file_filter__.m \
-  scripts/gui/private/__fltk_file_filter__.m \
-  scripts/gui/private/__get_funcname__.m \
-  scripts/gui/private/__is_function__.m \
-  scripts/gui/private/__uigetdir_fltk__.m \
-  scripts/gui/private/__uigetfile_fltk__.m \
-  scripts/gui/private/__uiobject_split_args__.m \
-  scripts/gui/private/__uiputfile_fltk__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__file_filter__.m \
+  %reldir%/private/__fltk_file_filter__.m \
+  %reldir%/private/__get_funcname__.m \
+  %reldir%/private/__is_function__.m \
+  %reldir%/private/__uigetdir_fltk__.m \
+  %reldir%/private/__uigetfile_fltk__.m \
+  %reldir%/private/__uiobject_split_args__.m \
+  %reldir%/private/__uiputfile_fltk__.m
 
-scripts_gui_FCN_FILES = \
-  scripts/gui/dialog.m \
-  scripts/gui/errordlg.m \
-  scripts/gui/guidata.m \
-  scripts/gui/guihandles.m \
-  scripts/gui/helpdlg.m \
-  scripts/gui/inputdlg.m \
-  scripts/gui/listdlg.m \
-  scripts/gui/msgbox.m \
-  scripts/gui/questdlg.m \
-  scripts/gui/uibuttongroup.m \
-  scripts/gui/uicontextmenu.m \
-  scripts/gui/uicontrol.m \
-  scripts/gui/uigetdir.m \
-  scripts/gui/uigetfile.m \
-  scripts/gui/uimenu.m \
-  scripts/gui/uipanel.m \
-  scripts/gui/uipushtool.m \
-  scripts/gui/uiputfile.m \
-  scripts/gui/uiresume.m \
-  scripts/gui/uitoggletool.m \
-  scripts/gui/uitoolbar.m \
-  scripts/gui/uiwait.m \
-  scripts/gui/waitbar.m \
-  scripts/gui/waitforbuttonpress.m \
-  scripts/gui/warndlg.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/dialog.m \
+  %reldir%/errordlg.m \
+  %reldir%/guidata.m \
+  %reldir%/guihandles.m \
+  %reldir%/helpdlg.m \
+  %reldir%/inputdlg.m \
+  %reldir%/listdlg.m \
+  %reldir%/msgbox.m \
+  %reldir%/questdlg.m \
+  %reldir%/uibuttongroup.m \
+  %reldir%/uicontextmenu.m \
+  %reldir%/uicontrol.m \
+  %reldir%/uigetdir.m \
+  %reldir%/uigetfile.m \
+  %reldir%/uimenu.m \
+  %reldir%/uipanel.m \
+  %reldir%/uipushtool.m \
+  %reldir%/uiputfile.m \
+  %reldir%/uiresume.m \
+  %reldir%/uitoggletool.m \
+  %reldir%/uitoolbar.m \
+  %reldir%/uiwait.m \
+  %reldir%/waitbar.m \
+  %reldir%/waitforbuttonpress.m \
+  %reldir%/warndlg.m
 
-scripts_guidir = $(fcnfiledir)/gui
+%canon_reldir%dir = $(fcnfiledir)/gui
 
-scripts_gui_DATA = $(scripts_gui_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_gui_privatedir = $(fcnfiledir)/gui/private
+%canon_reldir%_privatedir = $(fcnfiledir)/gui/private
 
-scripts_gui_private_DATA = $(scripts_gui_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_gui_FCN_FILES) \
-  $(scripts_gui_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/gui/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/gui/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/help/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/help/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,40 +1,40 @@
 FCN_FILE_DIRS += \
   scripts/help \
-  scripts/help/private
+  %reldir%/private
 
-scripts_help_PRIVATE_FCN_FILES = \
-  scripts/help/private/__additional_help_message__.m \
-  scripts/help/private/__strip_html_tags__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__additional_help_message__.m \
+  %reldir%/private/__strip_html_tags__.m
 
-scripts_help_FCN_FILES = \
-  scripts/help/__gripe_missing_component__.m \
-  scripts/help/__makeinfo__.m \
-  scripts/help/__unimplemented__.m \
-  scripts/help/ans.m \
-  scripts/help/doc.m \
-  scripts/help/doc_cache_create.m \
-  scripts/help/get_first_help_sentence.m \
-  scripts/help/error_ids.m \
-  scripts/help/help.m \
-  scripts/help/lookfor.m \
-  scripts/help/print_usage.m \
-  scripts/help/slash.m \
-  scripts/help/type.m \
-  scripts/help/warning_ids.m \
-  scripts/help/which.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__gripe_missing_component__.m \
+  %reldir%/__makeinfo__.m \
+  %reldir%/__unimplemented__.m \
+  %reldir%/ans.m \
+  %reldir%/doc.m \
+  %reldir%/doc_cache_create.m \
+  %reldir%/get_first_help_sentence.m \
+  %reldir%/error_ids.m \
+  %reldir%/help.m \
+  %reldir%/lookfor.m \
+  %reldir%/print_usage.m \
+  %reldir%/slash.m \
+  %reldir%/type.m \
+  %reldir%/warning_ids.m \
+  %reldir%/which.m
 
-scripts_helpdir = $(fcnfiledir)/help
+%canon_reldir%dir = $(fcnfiledir)/help
 
-scripts_help_DATA = $(scripts_help_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_help_privatedir = $(fcnfiledir)/help/private
+%canon_reldir%_privatedir = $(fcnfiledir)/help/private
 
-scripts_help_private_DATA = $(scripts_help_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_help_FCN_FILES) \
-  $(scripts_help_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/help/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/help/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/image/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/image/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,81 +1,81 @@
 FCN_FILE_DIRS += \
   scripts/image \
-  scripts/image/private
+  %reldir%/private
 
-scripts_image_PRIVATE_FCN_FILES = \
-  scripts/image/private/__imfinfo__.m \
-  scripts/image/private/__imread__.m \
-  scripts/image/private/__imwrite__.m \
-  scripts/image/private/colorspace_conversion_input_check.m \
-  scripts/image/private/colorspace_conversion_revert.m \
-  scripts/image/private/imageIO.m \
-  scripts/image/private/imwrite_filename.m \
-  scripts/image/private/ind2x.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__imfinfo__.m \
+  %reldir%/private/__imread__.m \
+  %reldir%/private/__imwrite__.m \
+  %reldir%/private/colorspace_conversion_input_check.m \
+  %reldir%/private/colorspace_conversion_revert.m \
+  %reldir%/private/imageIO.m \
+  %reldir%/private/imwrite_filename.m \
+  %reldir%/private/ind2x.m
 
-scripts_image_FCN_FILES = \
-  scripts/image/autumn.m \
-  scripts/image/bone.m \
-  scripts/image/brighten.m \
-  scripts/image/cmpermute.m \
-  scripts/image/cmunique.m \
-  scripts/image/colorcube.m \
-  scripts/image/colormap.m \
-  scripts/image/contrast.m \
-  scripts/image/cool.m \
-  scripts/image/copper.m \
-  scripts/image/cubehelix.m \
-  scripts/image/flag.m \
-  scripts/image/frame2im.m \
-  scripts/image/gray.m \
-  scripts/image/gray2ind.m \
-  scripts/image/hot.m \
-  scripts/image/hsv.m \
-  scripts/image/hsv2rgb.m \
-  scripts/image/im2double.m \
-  scripts/image/im2frame.m \
-  scripts/image/image.m \
-  scripts/image/imagesc.m \
-  scripts/image/imfinfo.m \
-  scripts/image/imformats.m \
-  scripts/image/imread.m \
-  scripts/image/imshow.m \
-  scripts/image/iscolormap.m \
-  scripts/image/imwrite.m \
-  scripts/image/ind2gray.m \
-  scripts/image/ind2rgb.m \
-  scripts/image/jet.m \
-  scripts/image/lines.m \
-  scripts/image/ntsc2rgb.m \
-  scripts/image/ocean.m \
-  scripts/image/pink.m \
-  scripts/image/prism.m \
-  scripts/image/rainbow.m \
-  scripts/image/rgb2hsv.m \
-  scripts/image/rgb2ind.m \
-  scripts/image/rgb2ntsc.m \
-  scripts/image/rgbplot.m \
-  scripts/image/spinmap.m \
-  scripts/image/spring.m \
-  scripts/image/summer.m \
-  scripts/image/viridis.m \
-  scripts/image/white.m \
-  scripts/image/winter.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/autumn.m \
+  %reldir%/bone.m \
+  %reldir%/brighten.m \
+  %reldir%/cmpermute.m \
+  %reldir%/cmunique.m \
+  %reldir%/colorcube.m \
+  %reldir%/colormap.m \
+  %reldir%/contrast.m \
+  %reldir%/cool.m \
+  %reldir%/copper.m \
+  %reldir%/cubehelix.m \
+  %reldir%/flag.m \
+  %reldir%/frame2im.m \
+  %reldir%/gray.m \
+  %reldir%/gray2ind.m \
+  %reldir%/hot.m \
+  %reldir%/hsv.m \
+  %reldir%/hsv2rgb.m \
+  %reldir%/im2double.m \
+  %reldir%/im2frame.m \
+  %reldir%/image.m \
+  %reldir%/imagesc.m \
+  %reldir%/imfinfo.m \
+  %reldir%/imformats.m \
+  %reldir%/imread.m \
+  %reldir%/imshow.m \
+  %reldir%/iscolormap.m \
+  %reldir%/imwrite.m \
+  %reldir%/ind2gray.m \
+  %reldir%/ind2rgb.m \
+  %reldir%/jet.m \
+  %reldir%/lines.m \
+  %reldir%/ntsc2rgb.m \
+  %reldir%/ocean.m \
+  %reldir%/pink.m \
+  %reldir%/prism.m \
+  %reldir%/rainbow.m \
+  %reldir%/rgb2hsv.m \
+  %reldir%/rgb2ind.m \
+  %reldir%/rgb2ntsc.m \
+  %reldir%/rgbplot.m \
+  %reldir%/spinmap.m \
+  %reldir%/spring.m \
+  %reldir%/summer.m \
+  %reldir%/viridis.m \
+  %reldir%/white.m \
+  %reldir%/winter.m
 
 SCRIPTS_IMAGES += \
-  scripts/image/default.img
+  %reldir%/default.img
 
-scripts_imagedir = $(fcnfiledir)/image
+%canon_reldir%dir = $(fcnfiledir)/image
 
-scripts_image_DATA = $(scripts_image_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_image_privatedir = $(fcnfiledir)/image/private
+%canon_reldir%_privatedir = $(fcnfiledir)/image/private
 
-scripts_image_private_DATA = $(scripts_image_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_image_FCN_FILES) \
-  $(scripts_image_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/image/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/image/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/io/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/io/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,22 +1,22 @@
 FCN_FILE_DIRS += scripts/io
 
-scripts_io_FCN_FILES = \
-  scripts/io/beep.m \
-  scripts/io/csvread.m \
-  scripts/io/csvwrite.m \
-  scripts/io/dlmwrite.m \
-  scripts/io/fileread.m \
-  scripts/io/importdata.m \
-  scripts/io/is_valid_file_id.m \
-  scripts/io/strread.m \
-  scripts/io/textread.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/beep.m \
+  %reldir%/csvread.m \
+  %reldir%/csvwrite.m \
+  %reldir%/dlmwrite.m \
+  %reldir%/fileread.m \
+  %reldir%/importdata.m \
+  %reldir%/is_valid_file_id.m \
+  %reldir%/strread.m \
+  %reldir%/textread.m
 
-scripts_iodir = $(fcnfiledir)/io
+%canon_reldir%dir = $(fcnfiledir)/io
 
-scripts_io_DATA = $(scripts_io_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_io_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/io/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/io/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/java/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/java/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,20 +1,20 @@
 FCN_FILE_DIRS += scripts/java
 
-scripts_java_FCN_FILES = \
-  scripts/java/java_get.m \
-  scripts/java/java_set.m \
-  scripts/java/javaArray.m \
-  scripts/java/javaaddpath.m \
-  scripts/java/javachk.m \
-  scripts/java/javaclasspath.m \
-  scripts/java/javamem.m \
-  scripts/java/javarmpath.m \
-  scripts/java/usejava.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/java_get.m \
+  %reldir%/java_set.m \
+  %reldir%/javaArray.m \
+  %reldir%/javaaddpath.m \
+  %reldir%/javachk.m \
+  %reldir%/javaclasspath.m \
+  %reldir%/javamem.m \
+  %reldir%/javarmpath.m \
+  %reldir%/usejava.m
 
 if AMCOND_HAVE_JAVA
-scripts_java_JAR_FILES = scripts/java/octave.jar
+%canon_reldir%_JAR_FILES = %reldir%/octave.jar
 
-JAR_FILES += $(scripts_java_JAR_FILES)
+JAR_FILES += $(%canon_reldir%_JAR_FILES)
 endif
 
 org_octave_dir = org/octave
@@ -30,38 +30,38 @@
 
 JAVA_CLASSES = $(JAVA_SRC:.java=.class)
 
-scripts_java_JAVA_SRC = $(addprefix scripts/java/, $(JAVA_SRC))
+%canon_reldir%_JAVA_SRC = $(addprefix %reldir%/, $(JAVA_SRC))
 
-scripts_java_JAVA_CLASSES = $(addprefix scripts/java/, $(JAVA_CLASSES))
+%canon_reldir%_JAVA_CLASSES = $(addprefix %reldir%/, $(JAVA_CLASSES))
 
-$(scripts_java_JAVA_CLASSES) : %.class : %.java | scripts/java/$(octave_dirstamp)
-	$(AM_V_GEN)$(MKDIR_P) scripts/java/$(org_octave_dir) && \
+$(%canon_reldir%_JAVA_CLASSES) : %.class : %.java | %reldir%/$(octave_dirstamp)
+	$(AM_V_GEN)$(MKDIR_P) %reldir%/$(org_octave_dir) && \
 		( cd $(srcdir)/scripts/java; "$(JAVAC)" -source 1.3 -target 1.3 -Xlint:-options -d $(abs_top_builddir)/scripts/java $(org_octave_dir)/$(<F) )
 
 if AMCOND_HAVE_JAVA
-scripts/java/octave.jar: $(scripts_java_JAVA_CLASSES)
+%reldir%/octave.jar: $(%canon_reldir%_JAVA_CLASSES)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	( cd scripts/java; \
 	  "$(JAR)" cf octave.jar-t $(JAVA_CLASSES) ) && \
 	mv $@-t $@
 endif
 
-scripts_javadir = $(fcnfiledir)/java
+%canon_reldir%dir = $(fcnfiledir)/java
 
-scripts_java_DATA = \
-  $(scripts_java_FCN_FILES) \
-  $(scripts_java_JAR_FILES)
+%canon_reldir%_DATA = \
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_JAR_FILES)
 
-FCN_FILES += $(scripts_java_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/java/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/java/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 scripts_EXTRA_DIST += \
-  $(scripts_java_JAR_FILES) \
-  $(scripts_java_JAVA_SRC)
+  $(%canon_reldir%_JAR_FILES) \
+  $(%canon_reldir%_JAVA_SRC)
 
 scripts_CLEANFILES += \
-  $(scripts_java_JAR_FILES) \
-  $(scripts_java_JAVA_CLASSES)
+  $(%canon_reldir%_JAR_FILES) \
+  $(%canon_reldir%_JAVA_CLASSES)
--- a/scripts/linear-algebra/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/linear-algebra/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,43 +1,43 @@
 FCN_FILE_DIRS += scripts/linear-algebra
 
 scripts_linear_algebra_FCN_FILES = \
-  scripts/linear-algebra/bandwidth.m \
-  scripts/linear-algebra/commutation_matrix.m \
-  scripts/linear-algebra/cond.m \
-  scripts/linear-algebra/condest.m \
-  scripts/linear-algebra/condeig.m \
-  scripts/linear-algebra/cross.m \
-  scripts/linear-algebra/duplication_matrix.m \
-  scripts/linear-algebra/expm.m \
-  scripts/linear-algebra/housh.m \
-  scripts/linear-algebra/isbanded.m \
-  scripts/linear-algebra/isdefinite.m \
-  scripts/linear-algebra/isdiag.m \
-  scripts/linear-algebra/ishermitian.m \
-  scripts/linear-algebra/issymmetric.m \
-  scripts/linear-algebra/istril.m \
-  scripts/linear-algebra/istriu.m \
-  scripts/linear-algebra/krylov.m \
-  scripts/linear-algebra/linsolve.m \
-  scripts/linear-algebra/logm.m \
-  scripts/linear-algebra/normest.m \
-  scripts/linear-algebra/normest1.m \
-  scripts/linear-algebra/null.m \
-  scripts/linear-algebra/orth.m \
-  scripts/linear-algebra/planerot.m \
-  scripts/linear-algebra/qzhess.m \
-  scripts/linear-algebra/rank.m \
-  scripts/linear-algebra/rref.m \
-  scripts/linear-algebra/subspace.m \
-  scripts/linear-algebra/trace.m \
-  scripts/linear-algebra/vech.m
+  %reldir%/bandwidth.m \
+  %reldir%/commutation_matrix.m \
+  %reldir%/cond.m \
+  %reldir%/condest.m \
+  %reldir%/condeig.m \
+  %reldir%/cross.m \
+  %reldir%/duplication_matrix.m \
+  %reldir%/expm.m \
+  %reldir%/housh.m \
+  %reldir%/isbanded.m \
+  %reldir%/isdefinite.m \
+  %reldir%/isdiag.m \
+  %reldir%/ishermitian.m \
+  %reldir%/issymmetric.m \
+  %reldir%/istril.m \
+  %reldir%/istriu.m \
+  %reldir%/krylov.m \
+  %reldir%/linsolve.m \
+  %reldir%/logm.m \
+  %reldir%/normest.m \
+  %reldir%/normest1.m \
+  %reldir%/null.m \
+  %reldir%/orth.m \
+  %reldir%/planerot.m \
+  %reldir%/qzhess.m \
+  %reldir%/rank.m \
+  %reldir%/rref.m \
+  %reldir%/subspace.m \
+  %reldir%/trace.m \
+  %reldir%/vech.m
 
-scripts_linear_algebradir = $(fcnfiledir)/linear-algebra
+%canon_reldir%dir = $(fcnfiledir)/linear-algebra
 
 scripts_linear_algebra_DATA = $(scripts_linear_algebra_FCN_FILES)
 
 FCN_FILES += $(scripts_linear_algebra_FCN_FILES)
 
-PKG_ADD_FILES += scripts/linear-algebra/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/linear-algebra/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/miscellaneous/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/miscellaneous/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,91 +1,91 @@
 FCN_FILE_DIRS += \
   scripts/miscellaneous \
-  scripts/miscellaneous/private
+  %reldir%/private
 
-scripts_miscellaneous_PRIVATE_FCN_FILES = \
-  scripts/miscellaneous/private/display_info_file.m \
-  scripts/miscellaneous/private/__w2mpth__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/display_info_file.m \
+  %reldir%/private/__w2mpth__.m
 
-scripts_miscellaneous_FCN_FILES = \
-  scripts/miscellaneous/bug_report.m \
-  scripts/miscellaneous/bunzip2.m \
-  scripts/miscellaneous/cast.m \
-  scripts/miscellaneous/citation.m \
-  scripts/miscellaneous/compare_versions.m \
-  scripts/miscellaneous/computer.m \
-  scripts/miscellaneous/copyfile.m \
-  scripts/miscellaneous/debug.m \
-  scripts/miscellaneous/delete.m \
-  scripts/miscellaneous/desktop.m \
-  scripts/miscellaneous/dir.m \
-  scripts/miscellaneous/dos.m \
-  scripts/miscellaneous/edit.m \
-  scripts/miscellaneous/fact.m \
-  scripts/miscellaneous/fileattrib.m \
-  scripts/miscellaneous/fileparts.m \
-  scripts/miscellaneous/fullfile.m \
-  scripts/miscellaneous/genvarname.m \
-  scripts/miscellaneous/getappdata.m \
-  scripts/miscellaneous/getfield.m \
-  scripts/miscellaneous/gunzip.m \
-  scripts/miscellaneous/info.m \
-  scripts/miscellaneous/inputname.m \
-  scripts/miscellaneous/isappdata.m \
-  scripts/miscellaneous/isdeployed.m \
-  scripts/miscellaneous/ismac.m \
-  scripts/miscellaneous/ispc.m \
-  scripts/miscellaneous/isunix.m \
-  scripts/miscellaneous/license.m \
-  scripts/miscellaneous/list_primes.m \
-  scripts/miscellaneous/ls.m \
-  scripts/miscellaneous/ls_command.m \
-  scripts/miscellaneous/menu.m \
-  scripts/miscellaneous/mex.m \
-  scripts/miscellaneous/mexext.m \
-  scripts/miscellaneous/mkdir.m \
-  scripts/miscellaneous/mkoctfile.m \
-  scripts/miscellaneous/movefile.m \
-  scripts/miscellaneous/namelengthmax.m \
-  scripts/miscellaneous/news.m \
-  scripts/miscellaneous/open.m \
-  scripts/miscellaneous/orderfields.m \
-  scripts/miscellaneous/pack.m \
-  scripts/miscellaneous/parseparams.m \
-  scripts/miscellaneous/perl.m \
-  scripts/miscellaneous/python.m \
-  scripts/miscellaneous/recycle.m \
-  scripts/miscellaneous/rmappdata.m \
-  scripts/miscellaneous/run.m \
-  scripts/miscellaneous/setappdata.m \
-  scripts/miscellaneous/setfield.m \
-  scripts/miscellaneous/substruct.m \
-  scripts/miscellaneous/swapbytes.m \
-  scripts/miscellaneous/symvar.m \
-  scripts/miscellaneous/tar.m \
-  scripts/miscellaneous/tempdir.m \
-  scripts/miscellaneous/tmpnam.m \
-  scripts/miscellaneous/unix.m \
-  scripts/miscellaneous/unpack.m \
-  scripts/miscellaneous/untar.m \
-  scripts/miscellaneous/unzip.m \
-  scripts/miscellaneous/ver.m \
-  scripts/miscellaneous/version.m \
-  scripts/miscellaneous/what.m \
-  scripts/miscellaneous/xor.m \
-  scripts/miscellaneous/zip.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/bug_report.m \
+  %reldir%/bunzip2.m \
+  %reldir%/cast.m \
+  %reldir%/citation.m \
+  %reldir%/compare_versions.m \
+  %reldir%/computer.m \
+  %reldir%/copyfile.m \
+  %reldir%/debug.m \
+  %reldir%/delete.m \
+  %reldir%/desktop.m \
+  %reldir%/dir.m \
+  %reldir%/dos.m \
+  %reldir%/edit.m \
+  %reldir%/fact.m \
+  %reldir%/fileattrib.m \
+  %reldir%/fileparts.m \
+  %reldir%/fullfile.m \
+  %reldir%/genvarname.m \
+  %reldir%/getappdata.m \
+  %reldir%/getfield.m \
+  %reldir%/gunzip.m \
+  %reldir%/info.m \
+  %reldir%/inputname.m \
+  %reldir%/isappdata.m \
+  %reldir%/isdeployed.m \
+  %reldir%/ismac.m \
+  %reldir%/ispc.m \
+  %reldir%/isunix.m \
+  %reldir%/license.m \
+  %reldir%/list_primes.m \
+  %reldir%/ls.m \
+  %reldir%/ls_command.m \
+  %reldir%/menu.m \
+  %reldir%/mex.m \
+  %reldir%/mexext.m \
+  %reldir%/mkdir.m \
+  %reldir%/mkoctfile.m \
+  %reldir%/movefile.m \
+  %reldir%/namelengthmax.m \
+  %reldir%/news.m \
+  %reldir%/open.m \
+  %reldir%/orderfields.m \
+  %reldir%/pack.m \
+  %reldir%/parseparams.m \
+  %reldir%/perl.m \
+  %reldir%/python.m \
+  %reldir%/recycle.m \
+  %reldir%/rmappdata.m \
+  %reldir%/run.m \
+  %reldir%/setappdata.m \
+  %reldir%/setfield.m \
+  %reldir%/substruct.m \
+  %reldir%/swapbytes.m \
+  %reldir%/symvar.m \
+  %reldir%/tar.m \
+  %reldir%/tempdir.m \
+  %reldir%/tmpnam.m \
+  %reldir%/unix.m \
+  %reldir%/unpack.m \
+  %reldir%/untar.m \
+  %reldir%/unzip.m \
+  %reldir%/ver.m \
+  %reldir%/version.m \
+  %reldir%/what.m \
+  %reldir%/xor.m \
+  %reldir%/zip.m
 
-scripts_miscellaneousdir = $(fcnfiledir)/miscellaneous
+%canon_reldir%dir = $(fcnfiledir)/miscellaneous
 
-scripts_miscellaneous_DATA = $(scripts_miscellaneous_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_miscellaneous_privatedir = $(fcnfiledir)/miscellaneous/private
+%canon_reldir%_privatedir = $(fcnfiledir)/miscellaneous/private
 
-scripts_miscellaneous_private_DATA = $(scripts_miscellaneous_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_miscellaneous_FCN_FILES) \
-  $(scripts_miscellaneous_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/miscellaneous/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/miscellaneous/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,81 +1,81 @@
-scripts_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-scripts_CLEANFILES =
-scripts_DISTCLEANFILES =
-scripts_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
-include scripts/+containers/module.mk
-include scripts/audio/module.mk
-include scripts/deprecated/module.mk
-include scripts/elfun/module.mk
-include scripts/general/module.mk
-include scripts/geometry/module.mk
-include scripts/gui/module.mk
-include scripts/help/module.mk
-include scripts/image/module.mk
-include scripts/io/module.mk
-include scripts/java/module.mk
-include scripts/linear-algebra/module.mk
-include scripts/miscellaneous/module.mk
-include scripts/ode/module.mk
-include scripts/optimization/module.mk
-include scripts/path/module.mk
-include scripts/pkg/module.mk
-include scripts/plot/appearance/module.mk
-include scripts/plot/draw/module.mk
-include scripts/plot/util/module.mk
-include scripts/polynomial/module.mk
-include scripts/prefs/module.mk
-include scripts/profiler/module.mk
-include scripts/set/module.mk
-include scripts/signal/module.mk
-include scripts/sparse/module.mk
-include scripts/specfun/module.mk
-include scripts/special-matrix/module.mk
-include scripts/startup/module.mk
-include scripts/statistics/base/module.mk
-include scripts/statistics/distributions/module.mk
-include scripts/statistics/models/module.mk
-include scripts/statistics/tests/module.mk
-include scripts/strings/module.mk
-include scripts/testfun/module.mk
-include scripts/time/module.mk
+include %reldir%/+containers/module.mk
+include %reldir%/audio/module.mk
+include %reldir%/deprecated/module.mk
+include %reldir%/elfun/module.mk
+include %reldir%/general/module.mk
+include %reldir%/geometry/module.mk
+include %reldir%/gui/module.mk
+include %reldir%/help/module.mk
+include %reldir%/image/module.mk
+include %reldir%/io/module.mk
+include %reldir%/java/module.mk
+include %reldir%/linear-algebra/module.mk
+include %reldir%/miscellaneous/module.mk
+include %reldir%/ode/module.mk
+include %reldir%/optimization/module.mk
+include %reldir%/path/module.mk
+include %reldir%/pkg/module.mk
+include %reldir%/plot/appearance/module.mk
+include %reldir%/plot/draw/module.mk
+include %reldir%/plot/util/module.mk
+include %reldir%/polynomial/module.mk
+include %reldir%/prefs/module.mk
+include %reldir%/profiler/module.mk
+include %reldir%/set/module.mk
+include %reldir%/signal/module.mk
+include %reldir%/sparse/module.mk
+include %reldir%/specfun/module.mk
+include %reldir%/special-matrix/module.mk
+include %reldir%/startup/module.mk
+include %reldir%/statistics/base/module.mk
+include %reldir%/statistics/distributions/module.mk
+include %reldir%/statistics/models/module.mk
+include %reldir%/statistics/tests/module.mk
+include %reldir%/strings/module.mk
+include %reldir%/testfun/module.mk
+include %reldir%/time/module.mk
 
-## include scripts/@ftp/module.mk
+## include %reldir%/@ftp/module.mk
 ## The include above fails because Automake cannot process the '@' character.
-## As a work around, the contents of scripts/@ftp/module.mk are placed directly
+## As a work around, the contents of %reldir%/@ftp/module.mk are placed directly
 ## in this module.mk file.
-scripts_EXTRA_DIST += scripts/@ftp/module.mk
-######################## include scripts/@ftp/module.mk ########################
-FCN_FILE_DIRS += scripts/@ftp
+%canon_reldir%_EXTRA_DIST += %reldir%/@ftp/module.mk
+######################## include %reldir%/@ftp/module.mk ########################
+FCN_FILE_DIRS += %reldir%/@ftp
 
-scripts_@ftp_FCN_FILES = \
-  scripts/@ftp/ascii.m \
-  scripts/@ftp/binary.m  \
-  scripts/@ftp/cd.m  \
-  scripts/@ftp/close.m  \
-  scripts/@ftp/delete.m  \
-  scripts/@ftp/dir.m  \
-  scripts/@ftp/disp.m  \
-  scripts/@ftp/ftp.m  \
-  scripts/@ftp/loadobj.m  \
-  scripts/@ftp/mget.m  \
-  scripts/@ftp/mkdir.m  \
-  scripts/@ftp/mput.m  \
-  scripts/@ftp/rename.m  \
-  scripts/@ftp/rmdir.m  \
-  scripts/@ftp/saveobj.m
+%canon_reldir%_@ftp_FCN_FILES = \
+  %reldir%/@ftp/ascii.m \
+  %reldir%/@ftp/binary.m  \
+  %reldir%/@ftp/cd.m  \
+  %reldir%/@ftp/close.m  \
+  %reldir%/@ftp/delete.m  \
+  %reldir%/@ftp/dir.m  \
+  %reldir%/@ftp/disp.m  \
+  %reldir%/@ftp/ftp.m  \
+  %reldir%/@ftp/loadobj.m  \
+  %reldir%/@ftp/mget.m  \
+  %reldir%/@ftp/mkdir.m  \
+  %reldir%/@ftp/mput.m  \
+  %reldir%/@ftp/rename.m  \
+  %reldir%/@ftp/rmdir.m  \
+  %reldir%/@ftp/saveobj.m
 
-scripts_@ftpdir = $(fcnfiledir)/@ftp
+%canon_reldir%_@ftpdir = $(fcnfiledir)/@ftp
 
-scripts_@ftp_DATA = $(scripts_@ftp_FCN_FILES)
+%canon_reldir%_@ftp_DATA = $(%canon_reldir%_@ftp_FCN_FILES)
 
-FCN_FILES += $(scripts_@ftp_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_@ftp_FCN_FILES)
 
-PKG_ADD_FILES += scripts/@ftp/PKG_ADD
+PKG_ADD_FILES += %reldir%/@ftp/PKG_ADD
 
-DIRSTAMP_FILES += scripts/@ftp/$(octave_dirstamp)
-####################### end include scripts/@ftp/module.mk #####################
+DIRSTAMP_FILES += %reldir%/@ftp/$(octave_dirstamp)
+####################### end include %reldir%/@ftp/module.mk #####################
 
 image_DATA += $(SCRIPTS_IMAGES)
 
@@ -89,9 +89,9 @@
   $(PKG_ADD_FILES)
 
 define PKG_ADD_FILE_TEMPLATE
-$(1)/PKG_ADD: $$($(2)_FCN_FILES) $$($(2)_GEN_FCN_FILES) $(1)/$(octave_dirstamp) scripts/mk-pkg-add
+$(1)/PKG_ADD: $$($(2)_FCN_FILES) $$($(2)_GEN_FCN_FILES) $(1)/$(octave_dirstamp) %reldir%/mk-pkg-add
 	$$(AM_V_GEN)rm -f $$@-t $$@ && \
-	$$(SHELL) $$(srcdir)/scripts/mk-pkg-add $(srcdir) $$($(2)_FCN_FILES) -- $$($(2)_GEN_FCN_FILES) > $$@-t && \
+	$$(SHELL) $$(srcdir)/%reldir%/mk-pkg-add $(srcdir) $$($(2)_FCN_FILES) -- $$($(2)_GEN_FCN_FILES) > $$@-t && \
 	mv $$@-t $$@
 endef
 
@@ -104,21 +104,21 @@
 
 $(foreach f, $(GEN_FCN_FILES), $(eval $(call GEN_FCN_FILES_TEMPLATE, $(f))))
 
-DOCSTRING_FILES += scripts/DOCSTRINGS
+DOCSTRING_FILES += %reldir%/DOCSTRINGS
 
-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,$@)
+%reldir%/DOCSTRINGS: $(FCN_FILES) $(GEN_FCN_FILES_IN) | %reldir%/$(octave_dirstamp)
+	$(AM_V_GEN)rm -f %reldir%/DOCSTRINGS-t && \
+	$(PERL) $(srcdir)/%reldir%/mkdoc.pl "$(srcdir)" $(FCN_FILES) $(GEN_FCN_FILES_IN) > %reldir%/DOCSTRINGS-t && \
+	$(call move_if_change_rule,%reldir%/DOCSTRINGS-t,$@)
 
-DIRSTAMP_FILES += scripts/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 check-m-sources:
 	@echo "checking whether files in source tree are listed in module.mk files..."; \
 	for f in $$(find $(srcdir)/scripts -name '*.m'); do \
 	  found=false; \
 	  for m in $(FCN_FILES) $(GEN_FCN_FILES); do \
-	    if [ "$$f" = $(srcdir)/scripts/"$$m" ]; then \
+	    if [ "$$f" = $(srcdir)/%reldir%/"$$m" ]; then \
 	      found=true; \
 	      break; \
 	    fi; \
@@ -158,7 +158,7 @@
 install-pkg-add:
 	for f in $(PKG_ADD_FILES); do \
 	  if [ -n "`cat $$f`" ]; then \
-	    base=`echo $$f | $(SED) 's,^scripts/,,'`; \
+	    base=`echo $$f | $(SED) 's,^%reldir%/,,'`; \
 	    $(MKDIR_P) $(DESTDIR)$(fcnfiledir)/`echo $$base | $(SED) 's,/[^/]*$$,,'`; \
 	    $(INSTALL_DATA) $$f $(DESTDIR)$(fcnfiledir)/$$base; \
 	  fi \
@@ -167,7 +167,7 @@
 
 uninstall-pkg-add:
 	for f in $(PKG_ADD_FILES); do \
-	  base=`echo $$f | $(SED) 's,^scripts/,,'`; \
+	  base=`echo $$f | $(SED) 's,^%reldir%/,,'`; \
 	  rm -f $(DESTDIR)$(fcnfiledir)/$$base; \
 	done
 .PHONY: uninstall-pkg-add
@@ -179,35 +179,35 @@
 	@echo "Packaging distribution requires Java." ; exit 1;
 endif
 
-scripts_EXTRA_DIST += \
+%canon_reldir%_EXTRA_DIST += \
   $(SCRIPTS_IMAGES) \
   $(FCN_FILES) \
   $(GEN_FCN_FILES_IN) \
-  scripts/DOCSTRINGS \
-  scripts/mkdoc.pl \
-  scripts/mk-pkg-add
+  %reldir%/DOCSTRINGS \
+  %reldir%/mkdoc.pl \
+  %reldir%/mk-pkg-add
 
-EXTRA_DIST += $(scripts_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-scripts_CLEANFILES += \
+%canon_reldir%_CLEANFILES += \
   $(GEN_FCN_FILES) \
   $(PKG_ADD_FILES)
 
-scripts_DISTCLEANFILES += \
+%canon_reldir%_DISTCLEANFILES += \
   $(DIRSTAMP_FILES)
 
-scripts_MAINTAINERCLEANFILES += \
-  scripts/DOCSTRINGS
+%canon_reldir%_MAINTAINERCLEANFILES += \
+  %reldir%/DOCSTRINGS
 
-CLEANFILES += $(scripts_CLEANFILES)
-DISTCLEANFILES += $(scripts_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(scripts_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 scripts-clean:
-	rm -f $(scripts_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 scripts-distclean: scripts-clean
-	rm -f $(scripts_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 scripts-maintainer-clean: scripts-distclean
-	rm -f $(scripts_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/scripts/ode/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/ode/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,42 +1,42 @@
 FCN_FILE_DIRS += \
   scripts/ode \
-  scripts/ode/private
+  %reldir%/private
 
-scripts_ode_PRIVATE_FCN_FILES = \
-  scripts/ode/private/AbsRel_norm.m \
-  scripts/ode/private/check_default_input.m \
-  scripts/ode/private/integrate_adaptive.m \
-  scripts/ode/private/kahan.m \
-  scripts/ode/private/odedefaults.m \
-  scripts/ode/private/odemergeopts.m \
-  scripts/ode/private/ode_event_handler.m \
-  scripts/ode/private/runge_kutta_23.m \
-  scripts/ode/private/runge_kutta_45_dorpri.m \
-  scripts/ode/private/runge_kutta_interpolate.m \
-  scripts/ode/private/starting_stepsize.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/AbsRel_norm.m \
+  %reldir%/private/check_default_input.m \
+  %reldir%/private/integrate_adaptive.m \
+  %reldir%/private/kahan.m \
+  %reldir%/private/odedefaults.m \
+  %reldir%/private/odemergeopts.m \
+  %reldir%/private/ode_event_handler.m \
+  %reldir%/private/runge_kutta_23.m \
+  %reldir%/private/runge_kutta_45_dorpri.m \
+  %reldir%/private/runge_kutta_interpolate.m \
+  %reldir%/private/starting_stepsize.m
 
-scripts_ode_FCN_FILES =  \
-  scripts/ode/ode15i.m \
-  scripts/ode/ode15s.m \
-  scripts/ode/ode23.m \
-  scripts/ode/ode45.m \
-  scripts/ode/odeset.m \
-  scripts/ode/odeget.m \
-  scripts/ode/odeplot.m \
-  scripts/ode/decic.m
+%canon_reldir%_FCN_FILES =  \
+  %reldir%/ode15i.m \
+  %reldir%/ode15s.m \
+  %reldir%/ode23.m \
+  %reldir%/ode45.m \
+  %reldir%/odeset.m \
+  %reldir%/odeget.m \
+  %reldir%/odeplot.m \
+  %reldir%/decic.m
 
-scripts_odedir = $(fcnfiledir)/ode
+%canon_reldir%dir = $(fcnfiledir)/ode
 
-scripts_ode_DATA = $(scripts_ode_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_ode_privatedir = $(fcnfiledir)/ode/private
+%canon_reldir%_privatedir = $(fcnfiledir)/ode/private
 
-scripts_ode_private_DATA = $(scripts_ode_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_ode_FCN_FILES) \
-  $(scripts_ode_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/ode/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/ode/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/optimization/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/optimization/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,37 +1,37 @@
 FCN_FILE_DIRS += \
   scripts/optimization \
-  scripts/optimization/private
+  %reldir%/private
 
-scripts_optimization_PRIVATE_FCN_FILES = \
-  scripts/optimization/private/__fdjac__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__fdjac__.m
 
-scripts_optimization_FCN_FILES = \
-  scripts/optimization/__all_opts__.m \
-  scripts/optimization/fminbnd.m \
-  scripts/optimization/fminsearch.m \
-  scripts/optimization/fminunc.m \
-  scripts/optimization/fsolve.m \
-  scripts/optimization/fzero.m \
-  scripts/optimization/glpk.m \
-  scripts/optimization/lsqnonneg.m \
-  scripts/optimization/optimget.m \
-  scripts/optimization/optimset.m \
-  scripts/optimization/pqpnonneg.m \
-  scripts/optimization/qp.m \
-  scripts/optimization/sqp.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__all_opts__.m \
+  %reldir%/fminbnd.m \
+  %reldir%/fminsearch.m \
+  %reldir%/fminunc.m \
+  %reldir%/fsolve.m \
+  %reldir%/fzero.m \
+  %reldir%/glpk.m \
+  %reldir%/lsqnonneg.m \
+  %reldir%/optimget.m \
+  %reldir%/optimset.m \
+  %reldir%/pqpnonneg.m \
+  %reldir%/qp.m \
+  %reldir%/sqp.m
 
-scripts_optimizationdir = $(fcnfiledir)/optimization
+%canon_reldir%dir = $(fcnfiledir)/optimization
 
-scripts_optimization_DATA = $(scripts_optimization_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_optimization_privatedir = $(fcnfiledir)/optimization/private
+%canon_reldir%_privatedir = $(fcnfiledir)/optimization/private
 
-scripts_optimization_private_DATA = $(scripts_optimization_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_optimization_FCN_FILES) \
-  $(scripts_optimization_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/optimization/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/optimization/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/path/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/path/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,27 +1,27 @@
 FCN_FILE_DIRS += \
   scripts/path \
-  scripts/path/private
+  %reldir%/private
 
-scripts_path_PRIVATE_FCN_FILES = \
-  scripts/path/private/getsavepath.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/getsavepath.m
 
-scripts_path_FCN_FILES = \
-  scripts/path/matlabroot.m \
-  scripts/path/pathdef.m \
-  scripts/path/savepath.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/matlabroot.m \
+  %reldir%/pathdef.m \
+  %reldir%/savepath.m
 
-scripts_pathdir = $(fcnfiledir)/path
+%canon_reldir%dir = $(fcnfiledir)/path
 
-scripts_path_DATA = $(scripts_path_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_path_privatedir = $(fcnfiledir)/path/private
+%canon_reldir%_privatedir = $(fcnfiledir)/path/private
 
-scripts_path_private_DATA = $(scripts_path_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_path_FCN_FILES) \
-  $(scripts_path_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/path/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/path/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/pkg/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/pkg/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,43 +1,43 @@
 FCN_FILE_DIRS += \
   scripts/pkg \
-  scripts/pkg/private
+  %reldir%/private
 
-scripts_pkg_PRIVATE_FCN_FILES = \
-  scripts/pkg/private/build.m \
-  scripts/pkg/private/configure_make.m \
-  scripts/pkg/private/default_prefix.m \
-  scripts/pkg/private/describe.m \
-  scripts/pkg/private/dirempty.m \
-  scripts/pkg/private/get_description.m \
-  scripts/pkg/private/get_forge_download.m \
-  scripts/pkg/private/get_forge_pkg.m \
-  scripts/pkg/private/getarch.m \
-  scripts/pkg/private/getarchdir.m \
-  scripts/pkg/private/get_unsatisfied_deps.m \
-  scripts/pkg/private/install.m \
-  scripts/pkg/private/installed_packages.m \
-  scripts/pkg/private/list_forge_packages.m \
-  scripts/pkg/private/load_packages.m \
-  scripts/pkg/private/load_packages_and_dependencies.m \
-  scripts/pkg/private/rebuild.m \
-  scripts/pkg/private/save_order.m \
-  scripts/pkg/private/uninstall.m \
-  scripts/pkg/private/unload_packages.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/build.m \
+  %reldir%/private/configure_make.m \
+  %reldir%/private/default_prefix.m \
+  %reldir%/private/describe.m \
+  %reldir%/private/dirempty.m \
+  %reldir%/private/get_description.m \
+  %reldir%/private/get_forge_download.m \
+  %reldir%/private/get_forge_pkg.m \
+  %reldir%/private/getarch.m \
+  %reldir%/private/getarchdir.m \
+  %reldir%/private/get_unsatisfied_deps.m \
+  %reldir%/private/install.m \
+  %reldir%/private/installed_packages.m \
+  %reldir%/private/list_forge_packages.m \
+  %reldir%/private/load_packages.m \
+  %reldir%/private/load_packages_and_dependencies.m \
+  %reldir%/private/rebuild.m \
+  %reldir%/private/save_order.m \
+  %reldir%/private/uninstall.m \
+  %reldir%/private/unload_packages.m
 
-scripts_pkg_FCN_FILES = scripts/pkg/pkg.m
+%canon_reldir%_FCN_FILES = %reldir%/pkg.m
 
-scripts_pkgdir = $(fcnfiledir)/pkg
+%canon_reldir%dir = $(fcnfiledir)/pkg
 
-scripts_pkg_DATA = $(scripts_pkg_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_pkg_privatedir = $(fcnfiledir)/pkg/private
+%canon_reldir%_privatedir = $(fcnfiledir)/pkg/private
 
-scripts_pkg_private_DATA = $(scripts_pkg_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_pkg_FCN_FILES) \
-  $(scripts_pkg_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/pkg/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/pkg/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/plot/appearance/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/plot/appearance/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,55 +1,55 @@
 FCN_FILE_DIRS += \
   scripts/plot/appearance \
-  scripts/plot/appearance/private
+  %reldir%/private
 
-scripts_plot_appearance_PRIVATE_FCN_FILES = \
-  scripts/plot/appearance/private/__axis_limits__.m \
-  scripts/plot/appearance/private/__axis_label__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__axis_limits__.m \
+  %reldir%/private/__axis_label__.m
 
-scripts_plot_appearance_FCN_FILES = \
-  scripts/plot/appearance/__clabel__.m \
-  scripts/plot/appearance/__getlegenddata__.m \
-  scripts/plot/appearance/annotation.m \
-  scripts/plot/appearance/axis.m \
-  scripts/plot/appearance/box.m \
-  scripts/plot/appearance/caxis.m \
-  scripts/plot/appearance/clabel.m \
-  scripts/plot/appearance/daspect.m \
-  scripts/plot/appearance/datetick.m \
-  scripts/plot/appearance/diffuse.m \
-  scripts/plot/appearance/grid.m \
-  scripts/plot/appearance/gtext.m \
-  scripts/plot/appearance/hidden.m \
-  scripts/plot/appearance/legend.m \
-  scripts/plot/appearance/lighting.m \
-  scripts/plot/appearance/material.m \
-  scripts/plot/appearance/orient.m \
-  scripts/plot/appearance/pbaspect.m \
-  scripts/plot/appearance/shading.m \
-  scripts/plot/appearance/specular.m \
-  scripts/plot/appearance/text.m \
-  scripts/plot/appearance/title.m \
-  scripts/plot/appearance/view.m \
-  scripts/plot/appearance/whitebg.m \
-  scripts/plot/appearance/xlabel.m \
-  scripts/plot/appearance/xlim.m \
-  scripts/plot/appearance/ylabel.m \
-  scripts/plot/appearance/ylim.m \
-  scripts/plot/appearance/zlabel.m \
-  scripts/plot/appearance/zlim.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__clabel__.m \
+  %reldir%/__getlegenddata__.m \
+  %reldir%/annotation.m \
+  %reldir%/axis.m \
+  %reldir%/box.m \
+  %reldir%/caxis.m \
+  %reldir%/clabel.m \
+  %reldir%/daspect.m \
+  %reldir%/datetick.m \
+  %reldir%/diffuse.m \
+  %reldir%/grid.m \
+  %reldir%/gtext.m \
+  %reldir%/hidden.m \
+  %reldir%/legend.m \
+  %reldir%/lighting.m \
+  %reldir%/material.m \
+  %reldir%/orient.m \
+  %reldir%/pbaspect.m \
+  %reldir%/shading.m \
+  %reldir%/specular.m \
+  %reldir%/text.m \
+  %reldir%/title.m \
+  %reldir%/view.m \
+  %reldir%/whitebg.m \
+  %reldir%/xlabel.m \
+  %reldir%/xlim.m \
+  %reldir%/ylabel.m \
+  %reldir%/ylim.m \
+  %reldir%/zlabel.m \
+  %reldir%/zlim.m
 
-scripts_plot_appearancedir = $(fcnfiledir)/plot/appearance
+%canon_reldir%dir = $(fcnfiledir)/plot/appearance
 
-scripts_plot_appearance_DATA = $(scripts_plot_appearance_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_plot_appearance_privatedir = $(fcnfiledir)/plot/appearance/private
+%canon_reldir%_privatedir = $(fcnfiledir)/plot/appearance/private
 
-scripts_plot_appearance_private_DATA = $(scripts_plot_appearance_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_plot_appearance_FCN_FILES) \
-  $(scripts_plot_appearance_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/plot/appearance/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/plot/appearance/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/plot/draw/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/plot/draw/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,122 +1,122 @@
 FCN_FILE_DIRS += \
   scripts/plot/draw \
-  scripts/plot/draw/private
+  %reldir%/private
 
-scripts_plot_draw_PRIVATE_FCN_FILES = \
-  scripts/plot/draw/private/__add_datasource__.m \
-  scripts/plot/draw/private/__bar__.m \
-  scripts/plot/draw/private/__calc_isovalue_from_data__.m \
-  scripts/plot/draw/private/__contour__.m \
-  scripts/plot/draw/private/__errplot__.m \
-  scripts/plot/draw/private/__ezplot__.m \
-  scripts/plot/draw/private/__interp_cube__.m \
-  scripts/plot/draw/private/__line__.m \
-  scripts/plot/draw/private/__marching_cube__.m \
-  scripts/plot/draw/private/__patch__.m \
-  scripts/plot/draw/private/__pie__.m \
-  scripts/plot/draw/private/__plt__.m \
-  scripts/plot/draw/private/__quiver__.m \
-  scripts/plot/draw/private/__rotate_around_axis__.m \
-  scripts/plot/draw/private/__scatter__.m \
-  scripts/plot/draw/private/__stem__.m \
-  scripts/plot/draw/private/__unite_shared_vertices__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__add_datasource__.m \
+  %reldir%/private/__bar__.m \
+  %reldir%/private/__calc_isovalue_from_data__.m \
+  %reldir%/private/__contour__.m \
+  %reldir%/private/__errplot__.m \
+  %reldir%/private/__ezplot__.m \
+  %reldir%/private/__interp_cube__.m \
+  %reldir%/private/__line__.m \
+  %reldir%/private/__marching_cube__.m \
+  %reldir%/private/__patch__.m \
+  %reldir%/private/__pie__.m \
+  %reldir%/private/__plt__.m \
+  %reldir%/private/__quiver__.m \
+  %reldir%/private/__rotate_around_axis__.m \
+  %reldir%/private/__scatter__.m \
+  %reldir%/private/__stem__.m \
+  %reldir%/private/__unite_shared_vertices__.m
 
-scripts_plot_draw_FCN_FILES = \
-  scripts/plot/draw/area.m \
-  scripts/plot/draw/barh.m \
-  scripts/plot/draw/bar.m \
-  scripts/plot/draw/camlight.m \
-  scripts/plot/draw/colorbar.m \
-  scripts/plot/draw/comet3.m \
-  scripts/plot/draw/comet.m \
-  scripts/plot/draw/compass.m \
-  scripts/plot/draw/contour3.m \
-  scripts/plot/draw/contourc.m \
-  scripts/plot/draw/contourf.m \
-  scripts/plot/draw/contour.m \
-  scripts/plot/draw/cylinder.m \
-  scripts/plot/draw/ellipsoid.m \
-  scripts/plot/draw/errorbar.m \
-  scripts/plot/draw/ezcontourf.m \
-  scripts/plot/draw/ezcontour.m \
-  scripts/plot/draw/ezmeshc.m \
-  scripts/plot/draw/ezmesh.m \
-  scripts/plot/draw/ezplot3.m \
-  scripts/plot/draw/ezplot.m \
-  scripts/plot/draw/ezpolar.m \
-  scripts/plot/draw/ezsurfc.m \
-  scripts/plot/draw/ezsurf.m \
-  scripts/plot/draw/feather.m \
-  scripts/plot/draw/fill.m \
-  scripts/plot/draw/fplot.m \
-  scripts/plot/draw/hist.m \
-  scripts/plot/draw/isocaps.m \
-  scripts/plot/draw/isocolors.m \
-  scripts/plot/draw/isonormals.m \
-  scripts/plot/draw/isosurface.m \
-  scripts/plot/draw/light.m \
-  scripts/plot/draw/line.m \
-  scripts/plot/draw/loglogerr.m \
-  scripts/plot/draw/loglog.m \
-  scripts/plot/draw/meshc.m \
-  scripts/plot/draw/mesh.m \
-  scripts/plot/draw/meshz.m \
-  scripts/plot/draw/pareto.m \
-  scripts/plot/draw/patch.m \
-  scripts/plot/draw/pcolor.m \
-  scripts/plot/draw/peaks.m \
-  scripts/plot/draw/pie3.m \
-  scripts/plot/draw/pie.m \
-  scripts/plot/draw/plot3.m \
-  scripts/plot/draw/plot.m \
-  scripts/plot/draw/plotmatrix.m \
-  scripts/plot/draw/plotyy.m \
-  scripts/plot/draw/polar.m \
-  scripts/plot/draw/quiver3.m \
-  scripts/plot/draw/quiver.m \
-  scripts/plot/draw/rectangle.m \
-  scripts/plot/draw/reducepatch.m \
-  scripts/plot/draw/reducevolume.m \
-  scripts/plot/draw/ribbon.m \
-  scripts/plot/draw/rose.m \
-  scripts/plot/draw/scatter3.m \
-  scripts/plot/draw/scatter.m \
-  scripts/plot/draw/semilogxerr.m \
-  scripts/plot/draw/semilogx.m \
-  scripts/plot/draw/semilogyerr.m \
-  scripts/plot/draw/semilogy.m \
-  scripts/plot/draw/shrinkfaces.m \
-  scripts/plot/draw/slice.m \
-  scripts/plot/draw/smooth3.m \
-  scripts/plot/draw/sombrero.m \
-  scripts/plot/draw/sphere.m \
-  scripts/plot/draw/stairs.m \
-  scripts/plot/draw/stem3.m \
-  scripts/plot/draw/stemleaf.m \
-  scripts/plot/draw/stem.m \
-  scripts/plot/draw/surface.m \
-  scripts/plot/draw/surfc.m \
-  scripts/plot/draw/surfl.m \
-  scripts/plot/draw/surf.m \
-  scripts/plot/draw/surfnorm.m \
-  scripts/plot/draw/tetramesh.m \
-  scripts/plot/draw/trimesh.m \
-  scripts/plot/draw/triplot.m \
-  scripts/plot/draw/trisurf.m \
-  scripts/plot/draw/waterfall.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/area.m \
+  %reldir%/barh.m \
+  %reldir%/bar.m \
+  %reldir%/camlight.m \
+  %reldir%/colorbar.m \
+  %reldir%/comet3.m \
+  %reldir%/comet.m \
+  %reldir%/compass.m \
+  %reldir%/contour3.m \
+  %reldir%/contourc.m \
+  %reldir%/contourf.m \
+  %reldir%/contour.m \
+  %reldir%/cylinder.m \
+  %reldir%/ellipsoid.m \
+  %reldir%/errorbar.m \
+  %reldir%/ezcontourf.m \
+  %reldir%/ezcontour.m \
+  %reldir%/ezmeshc.m \
+  %reldir%/ezmesh.m \
+  %reldir%/ezplot3.m \
+  %reldir%/ezplot.m \
+  %reldir%/ezpolar.m \
+  %reldir%/ezsurfc.m \
+  %reldir%/ezsurf.m \
+  %reldir%/feather.m \
+  %reldir%/fill.m \
+  %reldir%/fplot.m \
+  %reldir%/hist.m \
+  %reldir%/isocaps.m \
+  %reldir%/isocolors.m \
+  %reldir%/isonormals.m \
+  %reldir%/isosurface.m \
+  %reldir%/light.m \
+  %reldir%/line.m \
+  %reldir%/loglogerr.m \
+  %reldir%/loglog.m \
+  %reldir%/meshc.m \
+  %reldir%/mesh.m \
+  %reldir%/meshz.m \
+  %reldir%/pareto.m \
+  %reldir%/patch.m \
+  %reldir%/pcolor.m \
+  %reldir%/peaks.m \
+  %reldir%/pie3.m \
+  %reldir%/pie.m \
+  %reldir%/plot3.m \
+  %reldir%/plot.m \
+  %reldir%/plotmatrix.m \
+  %reldir%/plotyy.m \
+  %reldir%/polar.m \
+  %reldir%/quiver3.m \
+  %reldir%/quiver.m \
+  %reldir%/rectangle.m \
+  %reldir%/reducepatch.m \
+  %reldir%/reducevolume.m \
+  %reldir%/ribbon.m \
+  %reldir%/rose.m \
+  %reldir%/scatter3.m \
+  %reldir%/scatter.m \
+  %reldir%/semilogxerr.m \
+  %reldir%/semilogx.m \
+  %reldir%/semilogyerr.m \
+  %reldir%/semilogy.m \
+  %reldir%/shrinkfaces.m \
+  %reldir%/slice.m \
+  %reldir%/smooth3.m \
+  %reldir%/sombrero.m \
+  %reldir%/sphere.m \
+  %reldir%/stairs.m \
+  %reldir%/stem3.m \
+  %reldir%/stemleaf.m \
+  %reldir%/stem.m \
+  %reldir%/surface.m \
+  %reldir%/surfc.m \
+  %reldir%/surfl.m \
+  %reldir%/surf.m \
+  %reldir%/surfnorm.m \
+  %reldir%/tetramesh.m \
+  %reldir%/trimesh.m \
+  %reldir%/triplot.m \
+  %reldir%/trisurf.m \
+  %reldir%/waterfall.m
 
-scripts_plot_drawdir = $(fcnfiledir)/plot/draw
+%canon_reldir%dir = $(fcnfiledir)/plot/draw
 
-scripts_plot_draw_DATA = $(scripts_plot_draw_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_plot_draw_privatedir = $(fcnfiledir)/plot/draw/private
+%canon_reldir%_privatedir = $(fcnfiledir)/plot/draw/private
 
-scripts_plot_draw_private_DATA = $(scripts_plot_draw_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_plot_draw_FCN_FILES) \
-  $(scripts_plot_draw_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/plot/draw/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/plot/draw/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/plot/util/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/plot/util/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,100 +1,100 @@
 FCN_FILE_DIRS += \
   scripts/plot/util \
-  scripts/plot/util/private
+  %reldir%/private
 
-scripts_plot_util_GEN_FCN_FILES = \
-  scripts/plot/util/gnuplot_binary.m
+%canon_reldir%_GEN_FCN_FILES = \
+  %reldir%/gnuplot_binary.m
 
-GEN_FCN_FILES += $(scripts_plot_util_GEN_FCN_FILES)
+GEN_FCN_FILES += $(%canon_reldir%_GEN_FCN_FILES)
 
-scripts_plot_util_PRIVATE_FCN_FILES = \
-  scripts/plot/util/private/__add_default_menu__.m \
-  scripts/plot/util/private/__ghostscript__.m \
-  scripts/plot/util/private/__gnuplot_get_var__.m \
-  scripts/plot/util/private/__gnuplot_ginput__.m \
-  scripts/plot/util/private/__gnuplot_has_feature__.m \
-  scripts/plot/util/private/__gnuplot_has_terminal__.m \
-  scripts/plot/util/private/__gnuplot_open_stream__.m \
-  scripts/plot/util/private/__gnuplot_print__.m \
-  scripts/plot/util/private/__gnuplot_version__.m \
-  scripts/plot/util/private/__gnuplot_draw_axes__.m \
-  scripts/plot/util/private/__gnuplot_draw_figure__.m \
-  scripts/plot/util/private/__opengl_print__.m \
-  scripts/plot/util/private/__print_parse_opts__.m \
-  scripts/plot/util/private/__set_default_mouse_modes__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__add_default_menu__.m \
+  %reldir%/private/__ghostscript__.m \
+  %reldir%/private/__gnuplot_get_var__.m \
+  %reldir%/private/__gnuplot_ginput__.m \
+  %reldir%/private/__gnuplot_has_feature__.m \
+  %reldir%/private/__gnuplot_has_terminal__.m \
+  %reldir%/private/__gnuplot_open_stream__.m \
+  %reldir%/private/__gnuplot_print__.m \
+  %reldir%/private/__gnuplot_version__.m \
+  %reldir%/private/__gnuplot_draw_axes__.m \
+  %reldir%/private/__gnuplot_draw_figure__.m \
+  %reldir%/private/__opengl_print__.m \
+  %reldir%/private/__print_parse_opts__.m \
+  %reldir%/private/__set_default_mouse_modes__.m
 
-scripts_plot_util_FCN_FILES = \
-  scripts/plot/util/__actual_axis_position__.m \
-  scripts/plot/util/__default_plot_options__.m \
-  scripts/plot/util/__gnuplot_drawnow__.m \
-  scripts/plot/util/__next_line_color__.m \
-  scripts/plot/util/__next_line_style__.m \
-  scripts/plot/util/__opengl_info__.m \
-  scripts/plot/util/__plt_get_axis_arg__.m \
-  scripts/plot/util/__pltopt__.m \
-  scripts/plot/util/allchild.m \
-  scripts/plot/util/ancestor.m \
-  scripts/plot/util/axes.m \
-  scripts/plot/util/cla.m \
-  scripts/plot/util/clf.m \
-  scripts/plot/util/close.m \
-  scripts/plot/util/closereq.m \
-  scripts/plot/util/colstyle.m \
-  scripts/plot/util/copyobj.m \
-  scripts/plot/util/figure.m \
-  scripts/plot/util/findall.m \
-  scripts/plot/util/findfigs.m \
-  scripts/plot/util/findobj.m \
-  scripts/plot/util/gca.m \
-  scripts/plot/util/gcbf.m \
-  scripts/plot/util/gcbo.m \
-  scripts/plot/util/gcf.m \
-  scripts/plot/util/gco.m \
-  scripts/plot/util/ginput.m \
-  scripts/plot/util/graphics_toolkit.m \
-  scripts/plot/util/hdl2struct.m \
-  scripts/plot/util/hggroup.m \
-  scripts/plot/util/hgload.m \
-  scripts/plot/util/hgsave.m \
-  scripts/plot/util/hgtransform.m \
-  scripts/plot/util/hold.m \
-  scripts/plot/util/isaxes.m \
-  scripts/plot/util/isfigure.m \
-  scripts/plot/util/ishghandle.m \
-  scripts/plot/util/ishold.m \
-  scripts/plot/util/isprop.m \
-  scripts/plot/util/linkaxes.m \
-  scripts/plot/util/linkprop.m \
-  scripts/plot/util/meshgrid.m \
-  scripts/plot/util/ndgrid.m \
-  scripts/plot/util/newplot.m \
-  scripts/plot/util/pan.m \
-  scripts/plot/util/print.m \
-  scripts/plot/util/printd.m \
-  scripts/plot/util/refresh.m \
-  scripts/plot/util/refreshdata.m \
-  scripts/plot/util/rotate.m \
-  scripts/plot/util/rotate3d.m \
-  scripts/plot/util/saveas.m \
-  scripts/plot/util/shg.m \
-  scripts/plot/util/struct2hdl.m \
-  scripts/plot/util/subplot.m \
-  scripts/plot/util/zoom.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__actual_axis_position__.m \
+  %reldir%/__default_plot_options__.m \
+  %reldir%/__gnuplot_drawnow__.m \
+  %reldir%/__next_line_color__.m \
+  %reldir%/__next_line_style__.m \
+  %reldir%/__opengl_info__.m \
+  %reldir%/__plt_get_axis_arg__.m \
+  %reldir%/__pltopt__.m \
+  %reldir%/allchild.m \
+  %reldir%/ancestor.m \
+  %reldir%/axes.m \
+  %reldir%/cla.m \
+  %reldir%/clf.m \
+  %reldir%/close.m \
+  %reldir%/closereq.m \
+  %reldir%/colstyle.m \
+  %reldir%/copyobj.m \
+  %reldir%/figure.m \
+  %reldir%/findall.m \
+  %reldir%/findfigs.m \
+  %reldir%/findobj.m \
+  %reldir%/gca.m \
+  %reldir%/gcbf.m \
+  %reldir%/gcbo.m \
+  %reldir%/gcf.m \
+  %reldir%/gco.m \
+  %reldir%/ginput.m \
+  %reldir%/graphics_toolkit.m \
+  %reldir%/hdl2struct.m \
+  %reldir%/hggroup.m \
+  %reldir%/hgload.m \
+  %reldir%/hgsave.m \
+  %reldir%/hgtransform.m \
+  %reldir%/hold.m \
+  %reldir%/isaxes.m \
+  %reldir%/isfigure.m \
+  %reldir%/ishghandle.m \
+  %reldir%/ishold.m \
+  %reldir%/isprop.m \
+  %reldir%/linkaxes.m \
+  %reldir%/linkprop.m \
+  %reldir%/meshgrid.m \
+  %reldir%/ndgrid.m \
+  %reldir%/newplot.m \
+  %reldir%/pan.m \
+  %reldir%/print.m \
+  %reldir%/printd.m \
+  %reldir%/refresh.m \
+  %reldir%/refreshdata.m \
+  %reldir%/rotate.m \
+  %reldir%/rotate3d.m \
+  %reldir%/saveas.m \
+  %reldir%/shg.m \
+  %reldir%/struct2hdl.m \
+  %reldir%/subplot.m \
+  %reldir%/zoom.m
 
-scripts_plot_utildir = $(fcnfiledir)/plot/util
+%canon_reldir%dir = $(fcnfiledir)/plot/util
 
-scripts_plot_util_DATA = \
-  $(scripts_plot_util_FCN_FILES) \
-  $(scripts_plot_util_GEN_FCN_FILES)
+%canon_reldir%_DATA = \
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_GEN_FCN_FILES)
 
-scripts_plot_util_privatedir = $(fcnfiledir)/plot/util/private
+%canon_reldir%_privatedir = $(fcnfiledir)/plot/util/private
 
-scripts_plot_util_private_DATA = $(scripts_plot_util_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_plot_util_FCN_FILES) \
-  $(scripts_plot_util_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/plot/util/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/plot/util/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/polynomial/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/polynomial/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,51 +1,51 @@
 FCN_FILE_DIRS += \
   scripts/polynomial \
-  scripts/polynomial/private
+  %reldir%/private
 
-scripts_polynomial_PRIVATE_FCN_FILES = \
-  scripts/polynomial/private/__splinefit__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__splinefit__.m
 
-scripts_polynomial_FCN_FILES = \
-  scripts/polynomial/compan.m \
-  scripts/polynomial/conv.m \
-  scripts/polynomial/deconv.m \
-  scripts/polynomial/mkpp.m \
-  scripts/polynomial/mpoles.m \
-  scripts/polynomial/padecoef.m \
-  scripts/polynomial/pchip.m \
-  scripts/polynomial/poly.m \
-  scripts/polynomial/polyaffine.m \
-  scripts/polynomial/polyder.m \
-  scripts/polynomial/polyeig.m \
-  scripts/polynomial/polyfit.m \
-  scripts/polynomial/polygcd.m \
-  scripts/polynomial/polyint.m \
-  scripts/polynomial/polyout.m \
-  scripts/polynomial/polyreduce.m \
-  scripts/polynomial/polyval.m \
-  scripts/polynomial/polyvalm.m \
-  scripts/polynomial/ppval.m \
-  scripts/polynomial/ppder.m \
-  scripts/polynomial/ppint.m \
-  scripts/polynomial/ppjumps.m \
-  scripts/polynomial/residue.m \
-  scripts/polynomial/roots.m \
-  scripts/polynomial/spline.m \
-  scripts/polynomial/splinefit.m \
-  scripts/polynomial/unmkpp.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/compan.m \
+  %reldir%/conv.m \
+  %reldir%/deconv.m \
+  %reldir%/mkpp.m \
+  %reldir%/mpoles.m \
+  %reldir%/padecoef.m \
+  %reldir%/pchip.m \
+  %reldir%/poly.m \
+  %reldir%/polyaffine.m \
+  %reldir%/polyder.m \
+  %reldir%/polyeig.m \
+  %reldir%/polyfit.m \
+  %reldir%/polygcd.m \
+  %reldir%/polyint.m \
+  %reldir%/polyout.m \
+  %reldir%/polyreduce.m \
+  %reldir%/polyval.m \
+  %reldir%/polyvalm.m \
+  %reldir%/ppval.m \
+  %reldir%/ppder.m \
+  %reldir%/ppint.m \
+  %reldir%/ppjumps.m \
+  %reldir%/residue.m \
+  %reldir%/roots.m \
+  %reldir%/spline.m \
+  %reldir%/splinefit.m \
+  %reldir%/unmkpp.m
 
-scripts_polynomialdir = $(fcnfiledir)/polynomial
+%canon_reldir%dir = $(fcnfiledir)/polynomial
 
-scripts_polynomial_DATA = $(scripts_polynomial_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_polynomial_privatedir = $(fcnfiledir)/polynomial/private
+%canon_reldir%_privatedir = $(fcnfiledir)/polynomial/private
 
-scripts_polynomial_private_DATA = $(scripts_polynomial_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_polynomial_FCN_FILES) \
-  $(scripts_polynomial_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/polynomial/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/polynomial/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/prefs/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/prefs/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,33 +1,33 @@
 FCN_FILE_DIRS += \
   scripts/prefs \
-  scripts/prefs/private
+  %reldir%/private
 
-scripts_prefs_PRIVATE_FCN_FILES = \
-  scripts/prefs/private/loadprefs.m \
-  scripts/prefs/private/prefsfile.m \
-  scripts/prefs/private/saveprefs.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/loadprefs.m \
+  %reldir%/private/prefsfile.m \
+  %reldir%/private/saveprefs.m
 
-scripts_prefs_FCN_FILES = \
-  scripts/prefs/addpref.m \
-  scripts/prefs/getpref.m \
-  scripts/prefs/ispref.m \
-  scripts/prefs/prefdir.m \
-  scripts/prefs/preferences.m \
-  scripts/prefs/rmpref.m \
-  scripts/prefs/setpref.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/addpref.m \
+  %reldir%/getpref.m \
+  %reldir%/ispref.m \
+  %reldir%/prefdir.m \
+  %reldir%/preferences.m \
+  %reldir%/rmpref.m \
+  %reldir%/setpref.m
 
-scripts_prefsdir = $(fcnfiledir)/prefs
+%canon_reldir%dir = $(fcnfiledir)/prefs
 
-scripts_prefs_DATA = $(scripts_prefs_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_prefs_privatedir = $(fcnfiledir)/prefs/private
+%canon_reldir%_privatedir = $(fcnfiledir)/prefs/private
 
-scripts_prefs_private_DATA = $(scripts_prefs_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_prefs_FCN_FILES) \
-  $(scripts_prefs_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/prefs/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/prefs/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/profiler/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/profiler/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,30 +1,32 @@
 FCN_FILE_DIRS += \
   scripts/profiler
 
-scripts_profiler_FCN_FILES = \
-  scripts/profiler/profexplore.m \
-  scripts/profiler/profexport.m \
-  scripts/profiler/profile.m \
-  scripts/profiler/profshow.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/profexplore.m \
+  %reldir%/profexport.m \
+  %reldir%/profile.m \
+  %reldir%/profshow.m
 
-scripts_profilerdir = $(fcnfiledir)/profiler
-scripts_profiler_DATA = $(scripts_profiler_FCN_FILES)
+%canon_reldir%dir = $(fcnfiledir)/profiler
+
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_profiler_htmldir = $(octetcdir)/profiler
-scripts_profiler_html_DATA = \
-  scripts/profiler/html/flat.html \
-  scripts/profiler/html/flat_entry.html \
-  scripts/profiler/html/function.html \
-  scripts/profiler/html/hierarchical.html \
-  scripts/profiler/html/hierarchical_entry.html \
-  scripts/profiler/html/style.css
+%canon_reldir%_htmldir = $(octetcdir)/profiler
+
+%canon_reldir%_html_DATA = \
+  %reldir%/html/flat.html \
+  %reldir%/html/flat_entry.html \
+  %reldir%/html/function.html \
+  %reldir%/html/hierarchical.html \
+  %reldir%/html/hierarchical_entry.html \
+  %reldir%/html/style.css
 
 FCN_FILES += \
-  $(scripts_profiler_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/profiler/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/profiler/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 scripts_EXTRA_DIST += \
-  $(scripts_profiler_html_DATA)
+  $(%canon_reldir%_html_DATA)
--- a/scripts/set/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/set/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,30 +1,30 @@
 FCN_FILE_DIRS += \
   scripts/set \
-  scripts/set/private
+  %reldir%/private
 
-scripts_set_PRIVATE_FCN_FILES = scripts/set/private/validsetargs.m
+%canon_reldir%_PRIVATE_FCN_FILES = %reldir%/private/validsetargs.m
 
-scripts_set_FCN_FILES = \
-  scripts/set/intersect.m \
-  scripts/set/ismember.m \
-  scripts/set/powerset.m \
-  scripts/set/setdiff.m \
-  scripts/set/setxor.m \
-  scripts/set/union.m \
-  scripts/set/unique.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/intersect.m \
+  %reldir%/ismember.m \
+  %reldir%/powerset.m \
+  %reldir%/setdiff.m \
+  %reldir%/setxor.m \
+  %reldir%/union.m \
+  %reldir%/unique.m
 
-scripts_setdir = $(fcnfiledir)/set
+%canon_reldir%dir = $(fcnfiledir)/set
 
-scripts_set_DATA = $(scripts_set_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_set_privatedir = $(fcnfiledir)/set/private
+%canon_reldir%_privatedir = $(fcnfiledir)/set/private
 
-scripts_set_private_DATA = $(scripts_set_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_set_FCN_FILES) \
-  $(scripts_set_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/set/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/set/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/signal/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/signal/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,59 +1,59 @@
 FCN_FILE_DIRS += \
   scripts/signal \
-  scripts/signal/private
+  %reldir%/private
 
-scripts_signal_PRIVATE_FCN_FILES = \
-  scripts/signal/private/rectangle_lw.m  \
-  scripts/signal/private/rectangle_sw.m  \
-  scripts/signal/private/triangle_lw.m  \
-  scripts/signal/private/triangle_sw.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/rectangle_lw.m  \
+  %reldir%/private/rectangle_sw.m  \
+  %reldir%/private/triangle_lw.m  \
+  %reldir%/private/triangle_sw.m
 
-scripts_signal_FCN_FILES = \
-  scripts/signal/arch_fit.m \
-  scripts/signal/arch_rnd.m \
-  scripts/signal/arch_test.m \
-  scripts/signal/arma_rnd.m \
-  scripts/signal/autoreg_matrix.m \
-  scripts/signal/bartlett.m \
-  scripts/signal/blackman.m \
-  scripts/signal/detrend.m \
-  scripts/signal/diffpara.m \
-  scripts/signal/durbinlevinson.m \
-  scripts/signal/fftconv.m \
-  scripts/signal/fftfilt.m \
-  scripts/signal/fftshift.m \
-  scripts/signal/filter2.m \
-  scripts/signal/fractdiff.m \
-  scripts/signal/freqz.m \
-  scripts/signal/freqz_plot.m \
-  scripts/signal/hamming.m \
-  scripts/signal/hanning.m \
-  scripts/signal/hurst.m \
-  scripts/signal/ifftshift.m \
-  scripts/signal/periodogram.m \
-  scripts/signal/sinc.m \
-  scripts/signal/sinetone.m \
-  scripts/signal/sinewave.m \
-  scripts/signal/spectral_adf.m \
-  scripts/signal/spectral_xdf.m \
-  scripts/signal/spencer.m \
-  scripts/signal/stft.m \
-  scripts/signal/synthesis.m \
-  scripts/signal/unwrap.m \
-  scripts/signal/yulewalker.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/arch_fit.m \
+  %reldir%/arch_rnd.m \
+  %reldir%/arch_test.m \
+  %reldir%/arma_rnd.m \
+  %reldir%/autoreg_matrix.m \
+  %reldir%/bartlett.m \
+  %reldir%/blackman.m \
+  %reldir%/detrend.m \
+  %reldir%/diffpara.m \
+  %reldir%/durbinlevinson.m \
+  %reldir%/fftconv.m \
+  %reldir%/fftfilt.m \
+  %reldir%/fftshift.m \
+  %reldir%/filter2.m \
+  %reldir%/fractdiff.m \
+  %reldir%/freqz.m \
+  %reldir%/freqz_plot.m \
+  %reldir%/hamming.m \
+  %reldir%/hanning.m \
+  %reldir%/hurst.m \
+  %reldir%/ifftshift.m \
+  %reldir%/periodogram.m \
+  %reldir%/sinc.m \
+  %reldir%/sinetone.m \
+  %reldir%/sinewave.m \
+  %reldir%/spectral_adf.m \
+  %reldir%/spectral_xdf.m \
+  %reldir%/spencer.m \
+  %reldir%/stft.m \
+  %reldir%/synthesis.m \
+  %reldir%/unwrap.m \
+  %reldir%/yulewalker.m
 
-scripts_signaldir = $(fcnfiledir)/signal
+%canon_reldir%dir = $(fcnfiledir)/signal
 
-scripts_signal_DATA = $(scripts_signal_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_signal_privatedir = $(fcnfiledir)/signal/private
+%canon_reldir%_privatedir = $(fcnfiledir)/signal/private
 
-scripts_signal_private_DATA = $(scripts_signal_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_signal_FCN_FILES) \
-  $(scripts_signal_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/signal/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/signal/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/sparse/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/sparse/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,52 +1,52 @@
 FCN_FILE_DIRS += \
   scripts/sparse \
-  scripts/sparse/private
+  %reldir%/private
 
-scripts_sparse_PRIVATE_FCN_FILES = \
-  scripts/sparse/private/__sprand__.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/__sprand__.m
 
-scripts_sparse_FCN_FILES = \
-  scripts/sparse/bicg.m \
-  scripts/sparse/bicgstab.m \
-  scripts/sparse/cgs.m \
-  scripts/sparse/colperm.m \
-  scripts/sparse/eigs.m \
-  scripts/sparse/etreeplot.m \
-  scripts/sparse/gmres.m \
-  scripts/sparse/gplot.m \
-  scripts/sparse/ichol.m \
-  scripts/sparse/ilu.m \
-  scripts/sparse/nonzeros.m \
-  scripts/sparse/pcg.m \
-  scripts/sparse/pcr.m \
-  scripts/sparse/qmr.m \
-  scripts/sparse/spaugment.m \
-  scripts/sparse/spconvert.m \
-  scripts/sparse/spdiags.m \
-  scripts/sparse/speye.m \
-  scripts/sparse/spfun.m \
-  scripts/sparse/spones.m \
-  scripts/sparse/sprand.m \
-  scripts/sparse/sprandn.m \
-  scripts/sparse/sprandsym.m \
-  scripts/sparse/spstats.m \
-  scripts/sparse/spy.m \
-  scripts/sparse/svds.m \
-  scripts/sparse/treelayout.m \
-  scripts/sparse/treeplot.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/bicg.m \
+  %reldir%/bicgstab.m \
+  %reldir%/cgs.m \
+  %reldir%/colperm.m \
+  %reldir%/eigs.m \
+  %reldir%/etreeplot.m \
+  %reldir%/gmres.m \
+  %reldir%/gplot.m \
+  %reldir%/ichol.m \
+  %reldir%/ilu.m \
+  %reldir%/nonzeros.m \
+  %reldir%/pcg.m \
+  %reldir%/pcr.m \
+  %reldir%/qmr.m \
+  %reldir%/spaugment.m \
+  %reldir%/spconvert.m \
+  %reldir%/spdiags.m \
+  %reldir%/speye.m \
+  %reldir%/spfun.m \
+  %reldir%/spones.m \
+  %reldir%/sprand.m \
+  %reldir%/sprandn.m \
+  %reldir%/sprandsym.m \
+  %reldir%/spstats.m \
+  %reldir%/spy.m \
+  %reldir%/svds.m \
+  %reldir%/treelayout.m \
+  %reldir%/treeplot.m
 
-scripts_sparsedir = $(fcnfiledir)/sparse
+%canon_reldir%dir = $(fcnfiledir)/sparse
 
-scripts_sparse_DATA = $(scripts_sparse_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_sparse_privatedir = $(fcnfiledir)/sparse/private
+%canon_reldir%_privatedir = $(fcnfiledir)/sparse/private
 
-scripts_sparse_private_DATA = $(scripts_sparse_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_sparse_FCN_FILES) \
-  $(scripts_sparse_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/sparse/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/sparse/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/specfun/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/specfun/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,31 +1,31 @@
 FCN_FILE_DIRS += scripts/specfun
 
-scripts_specfun_FCN_FILES = \
-  scripts/specfun/bessel.m \
-  scripts/specfun/beta.m \
-  scripts/specfun/betaln.m \
-  scripts/specfun/ellipke.m \
-  scripts/specfun/expint.m \
-  scripts/specfun/factor.m \
-  scripts/specfun/factorial.m \
-  scripts/specfun/isprime.m \
-  scripts/specfun/lcm.m \
-  scripts/specfun/legendre.m \
-  scripts/specfun/nchoosek.m \
-  scripts/specfun/nthroot.m \
-  scripts/specfun/perms.m \
-  scripts/specfun/pow2.m \
-  scripts/specfun/primes.m \
-  scripts/specfun/reallog.m \
-  scripts/specfun/realpow.m \
-  scripts/specfun/realsqrt.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/bessel.m \
+  %reldir%/beta.m \
+  %reldir%/betaln.m \
+  %reldir%/ellipke.m \
+  %reldir%/expint.m \
+  %reldir%/factor.m \
+  %reldir%/factorial.m \
+  %reldir%/isprime.m \
+  %reldir%/lcm.m \
+  %reldir%/legendre.m \
+  %reldir%/nchoosek.m \
+  %reldir%/nthroot.m \
+  %reldir%/perms.m \
+  %reldir%/pow2.m \
+  %reldir%/primes.m \
+  %reldir%/reallog.m \
+  %reldir%/realpow.m \
+  %reldir%/realsqrt.m
 
-scripts_specfundir = $(fcnfiledir)/specfun
+%canon_reldir%dir = $(fcnfiledir)/specfun
 
-scripts_specfun_DATA = $(scripts_specfun_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_specfun_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/specfun/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/specfun/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/special-matrix/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/special-matrix/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,24 +1,24 @@
 FCN_FILE_DIRS += scripts/special-matrix
 
 scripts_special_matrix_FCN_FILES = \
-  scripts/special-matrix/gallery.m \
-  scripts/special-matrix/hadamard.m \
-  scripts/special-matrix/hankel.m \
-  scripts/special-matrix/hilb.m \
-  scripts/special-matrix/invhilb.m \
-  scripts/special-matrix/magic.m \
-  scripts/special-matrix/pascal.m \
-  scripts/special-matrix/rosser.m \
-  scripts/special-matrix/toeplitz.m \
-  scripts/special-matrix/vander.m \
-  scripts/special-matrix/wilkinson.m
+  %reldir%/gallery.m \
+  %reldir%/hadamard.m \
+  %reldir%/hankel.m \
+  %reldir%/hilb.m \
+  %reldir%/invhilb.m \
+  %reldir%/magic.m \
+  %reldir%/pascal.m \
+  %reldir%/rosser.m \
+  %reldir%/toeplitz.m \
+  %reldir%/vander.m \
+  %reldir%/wilkinson.m
 
-scripts_special_matrixdir = $(fcnfiledir)/special-matrix
+%canon_reldir%dir = $(fcnfiledir)/special-matrix
 
 scripts_special_matrix_DATA = $(scripts_special_matrix_FCN_FILES)
 
 FCN_FILES += $(scripts_special_matrix_FCN_FILES)
 
-PKG_ADD_FILES += scripts/special-matrix/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/special-matrix/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/startup/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/startup/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,28 +1,28 @@
 FCN_FILE_DIRS += scripts/startup
 
-scripts_startup_FCN_FILES = \
-  scripts/startup/__finish__.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__finish__.m
 
-SITE_STARTUP_FILE_SRC  = scripts/startup/site-rcfile
+SITE_STARTUP_FILE_SRC  = %reldir%/site-rcfile
 
-VERSION_STARTUP_FILE_SRC = scripts/startup/version-rcfile
+VERSION_STARTUP_FILE_SRC = %reldir%/version-rcfile
 
-SYSTEM_INPUTRC_FILE_SRC = scripts/startup/inputrc
+SYSTEM_INPUTRC_FILE_SRC = %reldir%/inputrc
 
 STARTUP_FILE_SRC = \
   $(SITE_STARTUP_FILE_SRC) \
   $(VERSION_STARTUP_FILE_SRC) \
   $(SYSTEM_INPUTRC_FILE_SRC)
 
-scripts_startupdir = $(fcnfiledir)/startup
+%canon_reldir%dir = $(fcnfiledir)/startup
 
-scripts_startup_DATA = $(scripts_startup_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_startup_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/startup/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/startup/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 scripts_EXTRA_DIST += $(STARTUP_FILE_SRC)
 
--- a/scripts/statistics/base/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/statistics/base/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,47 +1,47 @@
 FCN_FILE_DIRS += scripts/statistics/base
 
-scripts_statistics_base_FCN_FILES = \
-  scripts/statistics/base/center.m \
-  scripts/statistics/base/cloglog.m \
-  scripts/statistics/base/corr.m \
-  scripts/statistics/base/corrcoef.m \
-  scripts/statistics/base/cov.m \
-  scripts/statistics/base/gls.m \
-  scripts/statistics/base/histc.m \
-  scripts/statistics/base/iqr.m \
-  scripts/statistics/base/kendall.m \
-  scripts/statistics/base/kurtosis.m \
-  scripts/statistics/base/logit.m \
-  scripts/statistics/base/lscov.m \
-  scripts/statistics/base/mean.m \
-  scripts/statistics/base/meansq.m \
-  scripts/statistics/base/median.m \
-  scripts/statistics/base/mode.m \
-  scripts/statistics/base/moment.m \
-  scripts/statistics/base/ols.m \
-  scripts/statistics/base/ppplot.m \
-  scripts/statistics/base/prctile.m \
-  scripts/statistics/base/probit.m \
-  scripts/statistics/base/qqplot.m \
-  scripts/statistics/base/quantile.m \
-  scripts/statistics/base/range.m \
-  scripts/statistics/base/ranks.m \
-  scripts/statistics/base/run_count.m \
-  scripts/statistics/base/runlength.m \
-  scripts/statistics/base/skewness.m \
-  scripts/statistics/base/spearman.m \
-  scripts/statistics/base/statistics.m \
-  scripts/statistics/base/std.m \
-  scripts/statistics/base/table.m \
-  scripts/statistics/base/var.m \
-  scripts/statistics/base/zscore.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/center.m \
+  %reldir%/cloglog.m \
+  %reldir%/corr.m \
+  %reldir%/corrcoef.m \
+  %reldir%/cov.m \
+  %reldir%/gls.m \
+  %reldir%/histc.m \
+  %reldir%/iqr.m \
+  %reldir%/kendall.m \
+  %reldir%/kurtosis.m \
+  %reldir%/logit.m \
+  %reldir%/lscov.m \
+  %reldir%/mean.m \
+  %reldir%/meansq.m \
+  %reldir%/median.m \
+  %reldir%/mode.m \
+  %reldir%/moment.m \
+  %reldir%/ols.m \
+  %reldir%/ppplot.m \
+  %reldir%/prctile.m \
+  %reldir%/probit.m \
+  %reldir%/qqplot.m \
+  %reldir%/quantile.m \
+  %reldir%/range.m \
+  %reldir%/ranks.m \
+  %reldir%/run_count.m \
+  %reldir%/runlength.m \
+  %reldir%/skewness.m \
+  %reldir%/spearman.m \
+  %reldir%/statistics.m \
+  %reldir%/std.m \
+  %reldir%/table.m \
+  %reldir%/var.m \
+  %reldir%/zscore.m
 
-scripts_statistics_basedir = $(fcnfiledir)/statistics/base
+%canon_reldir%dir = $(fcnfiledir)/statistics/base
 
-scripts_statistics_base_DATA = $(scripts_statistics_base_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_statistics_base_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/statistics/base/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/statistics/base/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/statistics/distributions/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/statistics/distributions/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,103 +1,103 @@
 FCN_FILE_DIRS += scripts/statistics/distributions
 
-scripts_statistics_distributions_FCN_FILES = \
-  scripts/statistics/distributions/betacdf.m \
-  scripts/statistics/distributions/betainv.m \
-  scripts/statistics/distributions/betapdf.m \
-  scripts/statistics/distributions/betarnd.m \
-  scripts/statistics/distributions/binocdf.m \
-  scripts/statistics/distributions/binoinv.m \
-  scripts/statistics/distributions/binopdf.m \
-  scripts/statistics/distributions/binornd.m \
-  scripts/statistics/distributions/cauchy_cdf.m \
-  scripts/statistics/distributions/cauchy_inv.m \
-  scripts/statistics/distributions/cauchy_pdf.m \
-  scripts/statistics/distributions/cauchy_rnd.m \
-  scripts/statistics/distributions/chi2cdf.m \
-  scripts/statistics/distributions/chi2inv.m \
-  scripts/statistics/distributions/chi2pdf.m \
-  scripts/statistics/distributions/chi2rnd.m \
-  scripts/statistics/distributions/discrete_cdf.m \
-  scripts/statistics/distributions/discrete_inv.m \
-  scripts/statistics/distributions/discrete_pdf.m \
-  scripts/statistics/distributions/discrete_rnd.m \
-  scripts/statistics/distributions/empirical_cdf.m \
-  scripts/statistics/distributions/empirical_inv.m \
-  scripts/statistics/distributions/empirical_pdf.m \
-  scripts/statistics/distributions/empirical_rnd.m \
-  scripts/statistics/distributions/expcdf.m \
-  scripts/statistics/distributions/expinv.m \
-  scripts/statistics/distributions/exppdf.m \
-  scripts/statistics/distributions/exprnd.m \
-  scripts/statistics/distributions/fcdf.m \
-  scripts/statistics/distributions/finv.m \
-  scripts/statistics/distributions/fpdf.m \
-  scripts/statistics/distributions/frnd.m \
-  scripts/statistics/distributions/gamcdf.m \
-  scripts/statistics/distributions/gaminv.m \
-  scripts/statistics/distributions/gampdf.m \
-  scripts/statistics/distributions/gamrnd.m \
-  scripts/statistics/distributions/geocdf.m \
-  scripts/statistics/distributions/geoinv.m \
-  scripts/statistics/distributions/geopdf.m \
-  scripts/statistics/distributions/geornd.m \
-  scripts/statistics/distributions/hygecdf.m \
-  scripts/statistics/distributions/hygeinv.m \
-  scripts/statistics/distributions/hygepdf.m \
-  scripts/statistics/distributions/hygernd.m \
-  scripts/statistics/distributions/kolmogorov_smirnov_cdf.m \
-  scripts/statistics/distributions/laplace_cdf.m \
-  scripts/statistics/distributions/laplace_inv.m \
-  scripts/statistics/distributions/laplace_pdf.m \
-  scripts/statistics/distributions/laplace_rnd.m \
-  scripts/statistics/distributions/logistic_cdf.m \
-  scripts/statistics/distributions/logistic_inv.m \
-  scripts/statistics/distributions/logistic_pdf.m \
-  scripts/statistics/distributions/logistic_rnd.m \
-  scripts/statistics/distributions/logncdf.m \
-  scripts/statistics/distributions/logninv.m \
-  scripts/statistics/distributions/lognpdf.m \
-  scripts/statistics/distributions/lognrnd.m \
-  scripts/statistics/distributions/nbincdf.m \
-  scripts/statistics/distributions/nbininv.m \
-  scripts/statistics/distributions/nbinpdf.m \
-  scripts/statistics/distributions/nbinrnd.m \
-  scripts/statistics/distributions/normcdf.m \
-  scripts/statistics/distributions/norminv.m \
-  scripts/statistics/distributions/normpdf.m \
-  scripts/statistics/distributions/normrnd.m \
-  scripts/statistics/distributions/poisscdf.m \
-  scripts/statistics/distributions/poissinv.m \
-  scripts/statistics/distributions/poisspdf.m \
-  scripts/statistics/distributions/poissrnd.m \
-  scripts/statistics/distributions/stdnormal_cdf.m \
-  scripts/statistics/distributions/stdnormal_inv.m \
-  scripts/statistics/distributions/stdnormal_pdf.m \
-  scripts/statistics/distributions/stdnormal_rnd.m \
-  scripts/statistics/distributions/tcdf.m \
-  scripts/statistics/distributions/tinv.m \
-  scripts/statistics/distributions/tpdf.m \
-  scripts/statistics/distributions/trnd.m \
-  scripts/statistics/distributions/unidrnd.m \
-  scripts/statistics/distributions/unidcdf.m \
-  scripts/statistics/distributions/unidinv.m \
-  scripts/statistics/distributions/unidpdf.m \
-  scripts/statistics/distributions/unifrnd.m \
-  scripts/statistics/distributions/unifcdf.m \
-  scripts/statistics/distributions/unifinv.m \
-  scripts/statistics/distributions/unifpdf.m \
-  scripts/statistics/distributions/wblcdf.m \
-  scripts/statistics/distributions/wblinv.m \
-  scripts/statistics/distributions/wblpdf.m \
-  scripts/statistics/distributions/wblrnd.m \
-  scripts/statistics/distributions/wienrnd.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/betacdf.m \
+  %reldir%/betainv.m \
+  %reldir%/betapdf.m \
+  %reldir%/betarnd.m \
+  %reldir%/binocdf.m \
+  %reldir%/binoinv.m \
+  %reldir%/binopdf.m \
+  %reldir%/binornd.m \
+  %reldir%/cauchy_cdf.m \
+  %reldir%/cauchy_inv.m \
+  %reldir%/cauchy_pdf.m \
+  %reldir%/cauchy_rnd.m \
+  %reldir%/chi2cdf.m \
+  %reldir%/chi2inv.m \
+  %reldir%/chi2pdf.m \
+  %reldir%/chi2rnd.m \
+  %reldir%/discrete_cdf.m \
+  %reldir%/discrete_inv.m \
+  %reldir%/discrete_pdf.m \
+  %reldir%/discrete_rnd.m \
+  %reldir%/empirical_cdf.m \
+  %reldir%/empirical_inv.m \
+  %reldir%/empirical_pdf.m \
+  %reldir%/empirical_rnd.m \
+  %reldir%/expcdf.m \
+  %reldir%/expinv.m \
+  %reldir%/exppdf.m \
+  %reldir%/exprnd.m \
+  %reldir%/fcdf.m \
+  %reldir%/finv.m \
+  %reldir%/fpdf.m \
+  %reldir%/frnd.m \
+  %reldir%/gamcdf.m \
+  %reldir%/gaminv.m \
+  %reldir%/gampdf.m \
+  %reldir%/gamrnd.m \
+  %reldir%/geocdf.m \
+  %reldir%/geoinv.m \
+  %reldir%/geopdf.m \
+  %reldir%/geornd.m \
+  %reldir%/hygecdf.m \
+  %reldir%/hygeinv.m \
+  %reldir%/hygepdf.m \
+  %reldir%/hygernd.m \
+  %reldir%/kolmogorov_smirnov_cdf.m \
+  %reldir%/laplace_cdf.m \
+  %reldir%/laplace_inv.m \
+  %reldir%/laplace_pdf.m \
+  %reldir%/laplace_rnd.m \
+  %reldir%/logistic_cdf.m \
+  %reldir%/logistic_inv.m \
+  %reldir%/logistic_pdf.m \
+  %reldir%/logistic_rnd.m \
+  %reldir%/logncdf.m \
+  %reldir%/logninv.m \
+  %reldir%/lognpdf.m \
+  %reldir%/lognrnd.m \
+  %reldir%/nbincdf.m \
+  %reldir%/nbininv.m \
+  %reldir%/nbinpdf.m \
+  %reldir%/nbinrnd.m \
+  %reldir%/normcdf.m \
+  %reldir%/norminv.m \
+  %reldir%/normpdf.m \
+  %reldir%/normrnd.m \
+  %reldir%/poisscdf.m \
+  %reldir%/poissinv.m \
+  %reldir%/poisspdf.m \
+  %reldir%/poissrnd.m \
+  %reldir%/stdnormal_cdf.m \
+  %reldir%/stdnormal_inv.m \
+  %reldir%/stdnormal_pdf.m \
+  %reldir%/stdnormal_rnd.m \
+  %reldir%/tcdf.m \
+  %reldir%/tinv.m \
+  %reldir%/tpdf.m \
+  %reldir%/trnd.m \
+  %reldir%/unidrnd.m \
+  %reldir%/unidcdf.m \
+  %reldir%/unidinv.m \
+  %reldir%/unidpdf.m \
+  %reldir%/unifrnd.m \
+  %reldir%/unifcdf.m \
+  %reldir%/unifinv.m \
+  %reldir%/unifpdf.m \
+  %reldir%/wblcdf.m \
+  %reldir%/wblinv.m \
+  %reldir%/wblpdf.m \
+  %reldir%/wblrnd.m \
+  %reldir%/wienrnd.m
 
-scripts_statistics_distributionsdir = $(fcnfiledir)/statistics/distributions
+%canon_reldir%dir = $(fcnfiledir)/statistics/distributions
 
-scripts_statistics_distributions_DATA = $(scripts_statistics_distributions_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_statistics_distributions_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/statistics/distributions/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/statistics/distributions/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/statistics/models/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/statistics/models/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,26 +1,26 @@
 FCN_FILE_DIRS += \
   scripts/statistics/models \
-  scripts/statistics/models/private
+  %reldir%/private
 
-scripts_statistics_models_PRIVATE_FCN_FILES = \
-  scripts/statistics/models/private/logistic_regression_derivatives.m \
-  scripts/statistics/models/private/logistic_regression_likelihood.m
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/logistic_regression_derivatives.m \
+  %reldir%/private/logistic_regression_likelihood.m
 
-scripts_statistics_models_FCN_FILES = \
-  scripts/statistics/models/logistic_regression.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/logistic_regression.m
 
-scripts_statistics_modelsdir = $(fcnfiledir)/statistics/models
+%canon_reldir%dir = $(fcnfiledir)/statistics/models
 
-scripts_statistics_models_DATA = $(scripts_statistics_models_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_statistics_models_privatedir = $(fcnfiledir)/statistics/models/private
+%canon_reldir%_privatedir = $(fcnfiledir)/statistics/models/private
 
-scripts_statistics_models_private_DATA = $(scripts_statistics_models_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_statistics_models_FCN_FILES) \
-  $(scripts_statistics_models_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/statistics/models/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/statistics/models/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/statistics/tests/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/statistics/tests/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,38 +1,38 @@
 FCN_FILE_DIRS += scripts/statistics/tests
 
-scripts_statistics_tests_FCN_FILES = \
-  scripts/statistics/tests/anova.m \
-  scripts/statistics/tests/bartlett_test.m \
-  scripts/statistics/tests/chisquare_test_homogeneity.m \
-  scripts/statistics/tests/chisquare_test_independence.m \
-  scripts/statistics/tests/cor_test.m \
-  scripts/statistics/tests/f_test_regression.m \
-  scripts/statistics/tests/hotelling_test.m \
-  scripts/statistics/tests/hotelling_test_2.m \
-  scripts/statistics/tests/kolmogorov_smirnov_test.m \
-  scripts/statistics/tests/kolmogorov_smirnov_test_2.m \
-  scripts/statistics/tests/kruskal_wallis_test.m \
-  scripts/statistics/tests/manova.m \
-  scripts/statistics/tests/mcnemar_test.m \
-  scripts/statistics/tests/prop_test_2.m \
-  scripts/statistics/tests/run_test.m \
-  scripts/statistics/tests/sign_test.m \
-  scripts/statistics/tests/t_test.m \
-  scripts/statistics/tests/t_test_2.m \
-  scripts/statistics/tests/t_test_regression.m \
-  scripts/statistics/tests/u_test.m \
-  scripts/statistics/tests/var_test.m \
-  scripts/statistics/tests/welch_test.m \
-  scripts/statistics/tests/wilcoxon_test.m \
-  scripts/statistics/tests/z_test.m \
-  scripts/statistics/tests/z_test_2.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/anova.m \
+  %reldir%/bartlett_test.m \
+  %reldir%/chisquare_test_homogeneity.m \
+  %reldir%/chisquare_test_independence.m \
+  %reldir%/cor_test.m \
+  %reldir%/f_test_regression.m \
+  %reldir%/hotelling_test.m \
+  %reldir%/hotelling_test_2.m \
+  %reldir%/kolmogorov_smirnov_test.m \
+  %reldir%/kolmogorov_smirnov_test_2.m \
+  %reldir%/kruskal_wallis_test.m \
+  %reldir%/manova.m \
+  %reldir%/mcnemar_test.m \
+  %reldir%/prop_test_2.m \
+  %reldir%/run_test.m \
+  %reldir%/sign_test.m \
+  %reldir%/t_test.m \
+  %reldir%/t_test_2.m \
+  %reldir%/t_test_regression.m \
+  %reldir%/u_test.m \
+  %reldir%/var_test.m \
+  %reldir%/welch_test.m \
+  %reldir%/wilcoxon_test.m \
+  %reldir%/z_test.m \
+  %reldir%/z_test_2.m
 
-scripts_statistics_testsdir = $(fcnfiledir)/statistics/tests
+%canon_reldir%dir = $(fcnfiledir)/statistics/tests
 
-scripts_statistics_tests_DATA = $(scripts_statistics_tests_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_statistics_tests_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/statistics/tests/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/statistics/tests/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/strings/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/strings/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,45 +1,45 @@
 FCN_FILE_DIRS += scripts/strings
 
-scripts_strings_FCN_FILES = \
-  scripts/strings/base2dec.m \
-  scripts/strings/bin2dec.m \
-  scripts/strings/blanks.m \
-  scripts/strings/cstrcat.m \
-  scripts/strings/deblank.m \
-  scripts/strings/dec2base.m \
-  scripts/strings/dec2bin.m \
-  scripts/strings/dec2hex.m \
-  scripts/strings/findstr.m \
-  scripts/strings/hex2dec.m \
-  scripts/strings/index.m \
-  scripts/strings/isletter.m \
-  scripts/strings/isstrprop.m \
-  scripts/strings/mat2str.m \
-  scripts/strings/native2unicode.m \
-  scripts/strings/ostrsplit.m \
-  scripts/strings/regexptranslate.m \
-  scripts/strings/rindex.m \
-  scripts/strings/str2num.m \
-  scripts/strings/strcat.m \
-  scripts/strings/strchr.m \
-  scripts/strings/strjoin.m \
-  scripts/strings/strjust.m \
-  scripts/strings/strmatch.m \
-  scripts/strings/strsplit.m \
-  scripts/strings/strtok.m \
-  scripts/strings/strtrim.m \
-  scripts/strings/strtrunc.m \
-  scripts/strings/substr.m \
-  scripts/strings/unicode2native.m \
-  scripts/strings/untabify.m \
-  scripts/strings/validatestring.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/base2dec.m \
+  %reldir%/bin2dec.m \
+  %reldir%/blanks.m \
+  %reldir%/cstrcat.m \
+  %reldir%/deblank.m \
+  %reldir%/dec2base.m \
+  %reldir%/dec2bin.m \
+  %reldir%/dec2hex.m \
+  %reldir%/findstr.m \
+  %reldir%/hex2dec.m \
+  %reldir%/index.m \
+  %reldir%/isletter.m \
+  %reldir%/isstrprop.m \
+  %reldir%/mat2str.m \
+  %reldir%/native2unicode.m \
+  %reldir%/ostrsplit.m \
+  %reldir%/regexptranslate.m \
+  %reldir%/rindex.m \
+  %reldir%/str2num.m \
+  %reldir%/strcat.m \
+  %reldir%/strchr.m \
+  %reldir%/strjoin.m \
+  %reldir%/strjust.m \
+  %reldir%/strmatch.m \
+  %reldir%/strsplit.m \
+  %reldir%/strtok.m \
+  %reldir%/strtrim.m \
+  %reldir%/strtrunc.m \
+  %reldir%/substr.m \
+  %reldir%/unicode2native.m \
+  %reldir%/untabify.m \
+  %reldir%/validatestring.m
 
-scripts_stringsdir = $(fcnfiledir)/strings
+%canon_reldir%dir = $(fcnfiledir)/strings
 
-scripts_strings_DATA = $(scripts_strings_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_strings_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/strings/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/strings/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/testfun/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/testfun/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,37 +1,37 @@
 FCN_FILE_DIRS += scripts/testfun
 
-scripts_testfun_PRIVATE_FCN_FILES = \
-  scripts/testfun/private/compare_plot_demos.m \
-  scripts/testfun/private/dump_demos.m \
-  scripts/testfun/private/html_compare_plot_demos.m \
-  scripts/testfun/private/html_plot_demos_template.html
+%canon_reldir%_PRIVATE_FCN_FILES = \
+  %reldir%/private/compare_plot_demos.m \
+  %reldir%/private/dump_demos.m \
+  %reldir%/private/html_compare_plot_demos.m \
+  %reldir%/private/html_plot_demos_template.html
 
-scripts_testfun_FCN_FILES = \
-  scripts/testfun/__have_feature__.m \
-  scripts/testfun/__printf_assert__.m \
-  scripts/testfun/__prog_output_assert__.m \
-  scripts/testfun/__run_test_suite__.m \
-  scripts/testfun/assert.m \
-  scripts/testfun/demo.m \
-  scripts/testfun/example.m \
-  scripts/testfun/fail.m \
-  scripts/testfun/rundemos.m \
-  scripts/testfun/runtests.m \
-  scripts/testfun/speed.m \
-  scripts/testfun/test.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/__have_feature__.m \
+  %reldir%/__printf_assert__.m \
+  %reldir%/__prog_output_assert__.m \
+  %reldir%/__run_test_suite__.m \
+  %reldir%/assert.m \
+  %reldir%/demo.m \
+  %reldir%/example.m \
+  %reldir%/fail.m \
+  %reldir%/rundemos.m \
+  %reldir%/runtests.m \
+  %reldir%/speed.m \
+  %reldir%/test.m
 
-scripts_testfundir = $(fcnfiledir)/testfun
+%canon_reldir%dir = $(fcnfiledir)/testfun
 
-scripts_testfun_DATA = $(scripts_testfun_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-scripts_testfun_privatedir = $(fcnfiledir)/testfun/private
+%canon_reldir%_privatedir = $(fcnfiledir)/testfun/private
 
-scripts_testfun_private_DATA = $(scripts_testfun_PRIVATE_FCN_FILES)
+%canon_reldir%_private_DATA = $(%canon_reldir%_PRIVATE_FCN_FILES)
 
 FCN_FILES += \
-  $(scripts_testfun_FCN_FILES) \
-  $(scripts_testfun_PRIVATE_FCN_FILES)
+  $(%canon_reldir%_FCN_FILES) \
+  $(%canon_reldir%_PRIVATE_FCN_FILES)
 
-PKG_ADD_FILES += scripts/testfun/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/testfun/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/scripts/time/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/scripts/time/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,27 +1,27 @@
 FCN_FILE_DIRS += scripts/time
 
-scripts_time_FCN_FILES = \
-  scripts/time/addtodate.m \
-  scripts/time/asctime.m \
-  scripts/time/calendar.m \
-  scripts/time/clock.m \
-  scripts/time/ctime.m \
-  scripts/time/date.m \
-  scripts/time/datenum.m \
-  scripts/time/datestr.m \
-  scripts/time/datevec.m \
-  scripts/time/eomday.m \
-  scripts/time/etime.m \
-  scripts/time/is_leap_year.m \
-  scripts/time/now.m \
-  scripts/time/weekday.m
+%canon_reldir%_FCN_FILES = \
+  %reldir%/addtodate.m \
+  %reldir%/asctime.m \
+  %reldir%/calendar.m \
+  %reldir%/clock.m \
+  %reldir%/ctime.m \
+  %reldir%/date.m \
+  %reldir%/datenum.m \
+  %reldir%/datestr.m \
+  %reldir%/datevec.m \
+  %reldir%/eomday.m \
+  %reldir%/etime.m \
+  %reldir%/is_leap_year.m \
+  %reldir%/now.m \
+  %reldir%/weekday.m
 
-scripts_timedir = $(fcnfiledir)/time
+%canon_reldir%dir = $(fcnfiledir)/time
 
-scripts_time_DATA = $(scripts_time_FCN_FILES)
+%canon_reldir%_DATA = $(%canon_reldir%_FCN_FILES)
 
-FCN_FILES += $(scripts_time_FCN_FILES)
+FCN_FILES += $(%canon_reldir%_FCN_FILES)
 
-PKG_ADD_FILES += scripts/time/PKG_ADD
+PKG_ADD_FILES += %reldir%/PKG_ADD
 
-DIRSTAMP_FILES += scripts/time/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
--- a/src/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/src/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,8 +1,8 @@
-src_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-src_CLEANFILES =
-src_DISTCLEANFILES =
-src_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
 ## Search local directories before those specified by the user.
 
@@ -18,35 +18,35 @@
   -I$(srcdir)/src
 
 EXTRA_DIST += \
-  src/main.in.cc \
-  src/mkoctfile.in.cc \
-  src/octave-build-info.in.cc \
-  src/octave-config.in.cc
+  %reldir%/main.in.cc \
+  %reldir%/mkoctfile.in.cc \
+  %reldir%/octave-build-info.in.cc \
+  %reldir%/octave-config.in.cc
 
 bin_PROGRAMS += \
-  src/mkoctfile \
-  src/octave \
-  src/octave-cli \
-  src/octave-config
+  %reldir%/mkoctfile \
+  %reldir%/octave \
+  %reldir%/octave-cli \
+  %reldir%/octave-config
 
 OCTAVE_INTERPRETER_TARGETS += \
   $(bin_PROGRAMS) \
   $(OCTAVE_VERSION_LINKS)
 
 octinclude_HEADERS += \
-  src/octave-build-info.h
+  %reldir%/octave-build-info.h
 
 noinst_HEADERS += \
-  src/display-available.h \
-  src/shared-fcns.h
+  %reldir%/display-available.h \
+  %reldir%/shared-fcns.h
 
-OCTAVE_VERSION_LINKS += src/octave-cli-$(version)$(EXEEXT)
+OCTAVE_VERSION_LINKS += %reldir%/octave-cli-$(version)$(EXEEXT)
 
 if AMCOND_BUILD_QT_GUI
-  archlib_PROGRAMS += src/octave-gui
-  OCTAVE_VERSION_LINKS += src/octave-gui-$(version)$(EXEEXT)
+  archlib_PROGRAMS += %reldir%/octave-gui
+  OCTAVE_VERSION_LINKS += %reldir%/octave-gui-$(version)$(EXEEXT)
 
-  OCTAVE_INTERPRETER_TARGETS += src/octave-gui$(EXEEXT)
+  OCTAVE_INTERPRETER_TARGETS += %reldir%/octave-gui$(EXEEXT)
 endif
 
 OCTAVE_CORE_LIBS = \
@@ -54,18 +54,18 @@
   liboctave/liboctave.la \
   libgnu/libgnu.la
 
-nodist_src_octave_SOURCES = src/main.cc
+nodist_%canon_reldir%_octave_SOURCES = %reldir%/main.cc
 
-src_octave_SOURCES = src/display-available.c
+%canon_reldir%_octave_SOURCES = %reldir%/display-available.c
 
-src_octave_LDADD = \
+%canon_reldir%_octave_LDADD = \
   liboctave/wrappers/libwrappers.la \
   libgnu/libgnu.la \
   $(X11_LIBS) \
   $(CARBON_LIBS) \
   $(GNULIB_LINK_DEPS)
 
-src_octave_LDFLAGS = \
+%canon_reldir%_octave_LDFLAGS = \
   $(NO_UNDEFINED_LDFLAG) \
   $(OCTAVE_LINK_OPTS) \
   $(WARN_LDFLAGS)
@@ -74,93 +74,93 @@
   OCTAVE_CPPFLAGS = -DHAVE_OCTAVE_QT_GUI
 endif
 
-src_octave_CPPFLAGS = \
+%canon_reldir%_octave_CPPFLAGS = \
   $(SRC_DIR_CPPFLAGS) \
   $(OCTAVE_CPPFLAGS)
 
-src_octave_CXXFLAGS = \
+%canon_reldir%_octave_CXXFLAGS = \
   $(AM_CXXFLAGS) \
   $(WARN_CXXFLAGS)
 
-src_octave_cli_SOURCES = src/main-cli.cc
-nodist_src_octave_cli_SOURCES = src/octave-build-info.cc
+%canon_reldir%_octave_cli_SOURCES = %reldir%/main-cli.cc
+nodist_%canon_reldir%_octave_cli_SOURCES = %reldir%/octave-build-info.cc
 
-src_octave_cli_LDADD = \
+%canon_reldir%_octave_cli_LDADD = \
   $(OCTAVE_CORE_LIBS) \
   $(OCTAVE_LINK_DEPS)
 
-src_octave_cli_LDFLAGS = \
+%canon_reldir%_octave_cli_LDFLAGS = \
   $(NO_UNDEFINED_LDFLAG) \
   $(OCTAVE_LINK_OPTS) \
   $(WARN_LDFLAGS)
 
-src_octave_cli_CPPFLAGS = \
+%canon_reldir%_octave_cli_CPPFLAGS = \
   $(SRC_DIR_CPPFLAGS) \
   $(OCTAVE_CPPFLAGS)
 
-src_octave_cli_CXXFLAGS = \
+%canon_reldir%_octave_cli_CXXFLAGS = \
   $(AM_CXXFLAGS) \
   $(WARN_CXXFLAGS)
 
 if AMCOND_BUILD_QT_GUI
-  src_octave_gui_SOURCES = src/main-gui.cc
-  nodist_src_octave_gui_SOURCES = src/octave-build-info.cc
+  %canon_reldir%_octave_gui_SOURCES = %reldir%/main-gui.cc
+  nodist_%canon_reldir%_octave_gui_SOURCES = %reldir%/octave-build-info.cc
   OCTAVE_GUI_LIBS = libgui/liboctgui.la
   OCTAVE_GUI_CPPFLAGS = -I$(srcdir)/libgui -Ilibgui/src -I$(srcdir)/libgui/src
 endif
 
-src_octave_gui_CPPFLAGS = \
+%canon_reldir%_octave_gui_CPPFLAGS = \
   $(SRC_DIR_CPPFLAGS) \
   $(OCTAVE_GUI_CPPFLAGS)
 
-src_octave_gui_LDADD = \
+%canon_reldir%_octave_gui_LDADD = \
   $(OCTAVE_GUI_LIBS) \
   $(OCTAVE_CORE_LIBS) \
   $(OCTAVE_GUI_LINK_DEPS)
 
-src_octave_gui_LDFLAGS = \
+%canon_reldir%_octave_gui_LDFLAGS = \
   $(NO_UNDEFINED_LDFLAG) \
   $(OCTAVE_GUI_LINK_OPTS) \
   $(WARN_LDFLAGS)
 
-src_octave_gui_CXXFLAGS = \
+%canon_reldir%_octave_gui_CXXFLAGS = \
   $(AM_CXXFLAGS) \
   $(WARN_CXXFLAGS)
 
-src_mkoctfile_SOURCES =
+%canon_reldir%_mkoctfile_SOURCES =
 
-nodist_src_mkoctfile_SOURCES = src/mkoctfile.cc
+nodist_%canon_reldir%_mkoctfile_SOURCES = %reldir%/mkoctfile.cc
 
-src_mkoctfile_LDADD = \
+%canon_reldir%_mkoctfile_LDADD = \
   liboctave/wrappers/libwrappers.la \
   libgnu/libgnu.la $(LIBS)
 
-src_mkoctfile_CPPFLAGS = \
+%canon_reldir%_mkoctfile_CPPFLAGS = \
   $(SRC_DIR_CPPFLAGS) \
   $(OCTAVE_CPPFLAGS)
 
-src_mkoctfile_CXXFLAGS = \
+%canon_reldir%_mkoctfile_CXXFLAGS = \
   $(AM_CXXFLAGS) \
   $(WARN_CXXFLAGS)
 
-src_octave_config_SOURCES =
+%canon_reldir%_octave_config_SOURCES =
 
-nodist_src_octave_config_SOURCES = src/octave-config.cc
+nodist_%canon_reldir%_octave_config_SOURCES = %reldir%/octave-config.cc
 
-src_octave_config_LDADD = \
+%canon_reldir%_octave_config_LDADD = \
   libinterp/corefcn/libcorefcn.la \
   libgnu/libgnu.la \
   $(LIBS)
 
-src_octave_config_CPPFLAGS = \
+%canon_reldir%_octave_config_CPPFLAGS = \
   $(SRC_DIR_CPPFLAGS) \
   $(OCTAVE_CPPFLAGS)
 
-src_octave_config_CXXFLAGS = \
+%canon_reldir%_octave_config_CXXFLAGS = \
   $(AM_CXXFLAGS) \
   $(WARN_CXXFLAGS)
 
-DIRSTAMP_FILES += src/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
 mostlyclean-local: src-mostlyclean-local
 .PHONY: src-mostlyclean-local
@@ -169,22 +169,22 @@
 
 ## Building cross mkoctfile.
 
-OCTAVE_CROSS_TOOLS += src/$(host_triplet)-mkoctfile$(BUILD_EXEEXT)
+OCTAVE_CROSS_TOOLS += %reldir%/$(host_triplet)-mkoctfile$(BUILD_EXEEXT)
 
-src/$(host_triplet)-mkoctfile$(BUILD_EXEEXT): src/$(host_triplet)-mkoctfile.cc
-	$(BUILD_CXX) -o src/$(host_triplet)-mkoctfile$(BUILD_EXEEXT) -DCROSS=1 $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) -I$(srcdir)/src src/$(host_triplet)-mkoctfile.cc
+%reldir%/$(host_triplet)-mkoctfile$(BUILD_EXEEXT): %reldir%/$(host_triplet)-mkoctfile.cc
+	$(BUILD_CXX) -o %reldir%/$(host_triplet)-mkoctfile$(BUILD_EXEEXT) -DCROSS=1 $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) -I$(srcdir)/src %reldir%/$(host_triplet)-mkoctfile.cc
 
-src/$(host_triplet)-mkoctfile.cc: src/mkoctfile.in.cc build-aux/subst-cross-config-vals.sh | src/$(octave_dirstamp)
+%reldir%/$(host_triplet)-mkoctfile.cc: %reldir%/mkoctfile.in.cc build-aux/subst-cross-config-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-cross-config-vals.sh)
 
 ## Building cross octave-config.
 
-OCTAVE_CROSS_TOOLS += src/$(host_triplet)-octave-config$(BUILD_EXEEXT)
+OCTAVE_CROSS_TOOLS += %reldir%/$(host_triplet)-octave-config$(BUILD_EXEEXT)
 
-src/$(host_triplet)-octave-config$(BUILD_EXEEXT): src/$(host_triplet)-octave-config.cc
-	$(BUILD_CXX) -o src/$(host_triplet)-octave-config$(BUILD_EXEEXT) -DCROSS=1 $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) -I$(srcdir)/src src/$(host_triplet)-octave-config.cc
+%reldir%/$(host_triplet)-octave-config$(BUILD_EXEEXT): %reldir%/$(host_triplet)-octave-config.cc
+	$(BUILD_CXX) -o %reldir%/$(host_triplet)-octave-config$(BUILD_EXEEXT) -DCROSS=1 $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) -I$(srcdir)/src %reldir%/$(host_triplet)-octave-config.cc
 
-src/$(host_triplet)-octave-config.cc: src/octave-config.in.cc build-aux/subst-default-vals.sh | src/$(octave_dirstamp)
+%reldir%/$(host_triplet)-octave-config.cc: %reldir%/octave-config.in.cc build-aux/subst-default-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-default-vals.sh)
 
 src-mostlyclean-local:
@@ -196,16 +196,16 @@
 
 endif
 
-src/octave-config.cc: src/octave-config.in.cc build-aux/subst-default-vals.sh | src/$(octave_dirstamp)
+%reldir%/octave-config.cc: %reldir%/octave-config.in.cc build-aux/subst-default-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-default-vals.sh)
 
-src/mkoctfile.cc: src/mkoctfile.in.cc build-aux/subst-config-vals.sh | src/$(octave_dirstamp)
+%reldir%/mkoctfile.cc: %reldir%/mkoctfile.in.cc build-aux/subst-config-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-config-vals.sh)
 
-src/main.cc: src/main.in.cc build-aux/subst-default-vals.sh | src/$(octave_dirstamp)
+%reldir%/main.cc: %reldir%/main.in.cc build-aux/subst-default-vals.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(call simple-filter-rule,build-aux/subst-default-vals.sh)
 
-src/octave-build-info.cc: src/octave-build-info.in.cc HG-ID | src/$(octave_dirstamp)
+%reldir%/octave-build-info.cc: %reldir%/octave-build-info.in.cc HG-ID | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)$(build-info-commands)
 
 ALL_LOCAL_TARGETS += $(OCTAVE_CROSS_TOOLS)
@@ -231,30 +231,30 @@
 ## We need these filenames in the build tree because the wrapper
 ## program (main.cc) will try to invoke the versioned binaries.
 
-src/octave-cli-$(version)$(EXEEXT): src/octave-cli$(EXEEXT)
+%reldir%/octave-cli-$(version)$(EXEEXT): %reldir%/octave-cli$(EXEEXT)
 	$(AM_V_GEN)rm -f $@ && \
 	cd $(@D) && $(LN_S) $(<F) $(@F)
 
-src/octave-gui-$(version)$(EXEEXT): src/octave-gui$(EXEEXT)
+%reldir%/octave-gui-$(version)$(EXEEXT): %reldir%/octave-gui$(EXEEXT)
 	$(AM_V_GEN)rm -f $@ && \
 	cd $(@D) && $(LN_S) $(<F) $(@F)
 
-src_CLEANFILES += \
+%canon_reldir%_CLEANFILES += \
   $(OCTAVE_VERSION_LINKS) \
-  src/main.cc \
-  src/mkoctfile.cc \
-  src/octave-build-info.cc \
-  src/octave-config.cc
+  %reldir%/main.cc \
+  %reldir%/mkoctfile.cc \
+  %reldir%/octave-build-info.cc \
+  %reldir%/octave-config.cc
 
-CLEANFILES += $(src_CLEANFILES)
-DISTCLEANFILES += $(src_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(src_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 src-clean:
-	rm -f $(src_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 
 src-distclean: src-clean
-	rm -f $(src_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 src-maintainer-clean: src-distclean
-	rm -f $(src_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/test/bug-35448/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-35448/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,7 +1,7 @@
 bug_35448_TEST_FILES = \
-  test/bug-35448/fA.m \
-  test/bug-35448/fB.m \
-  test/bug-35448/fC.m \
-  test/bug-35448/bug-35448.tst
+  %reldir%/fA.m \
+  %reldir%/fB.m \
+  %reldir%/fC.m \
+  %reldir%/bug-35448.tst
 
 TEST_FILES += $(bug_35448_TEST_FILES)
--- a/test/bug-36025/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-36025/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,8 +1,8 @@
 
 bug_36025_TEST_FILES = \
-  test/bug-36025/@testclass/one.m \
-  test/bug-36025/@testclass/testclass.m \
-  test/bug-36025/@testclass/two.m \
-  test/bug-36025/bug-36025.tst
+  %reldir%/@testclass/one.m \
+  %reldir%/@testclass/testclass.m \
+  %reldir%/@testclass/two.m \
+  %reldir%/bug-36025.tst
 
 TEST_FILES += $(bug_36025_TEST_FILES)
--- a/test/bug-38236/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-38236/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,6 +1,6 @@
 bug_38236_TEST_FILES = \
-  test/bug-38236/df_vr.m \
-  test/bug-38236/u_vr.m \
-  test/bug-38236/bug-38236.tst
+  %reldir%/df_vr.m \
+  %reldir%/u_vr.m \
+  %reldir%/bug-38236.tst
 
 TEST_FILES += $(bug_38236_TEST_FILES)
--- a/test/bug-38691/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-38691/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,8 +1,8 @@
 bug_38691_TEST_FILES = \
-  test/bug-38691/dir1/func1.m \
-  test/bug-38691/dir2/func1.m \
-  test/bug-38691/dir2/func2.m \
-  test/bug-38691/dir2/func3.m \
-  test/bug-38691/bug-38691.tst
+  %reldir%/dir1/func1.m \
+  %reldir%/dir2/func1.m \
+  %reldir%/dir2/func2.m \
+  %reldir%/dir2/func3.m \
+  %reldir%/bug-38691.tst
 
 TEST_FILES += $(bug_38691_TEST_FILES)
--- a/test/bug-41723/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-41723/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,5 +1,5 @@
 bug_41723_TEST_FILES = \
-  test/bug-41723/bug-41723.tst \
-  test/bug-41723/class_bug41723.m
+  %reldir%/bug-41723.tst \
+  %reldir%/class_bug41723.m
 
 TEST_FILES += $(bug_41723_TEST_FILES)
--- a/test/bug-44940/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-44940/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,5 +1,5 @@
 bug_44940_TEST_FILES = \
-  test/bug-44940/bug-44940.tst \
-  test/bug-44940/class_bug44940.m
+  %reldir%/bug-44940.tst \
+  %reldir%/class_bug44940.m
 
 TEST_FILES += $(bug_44940_TEST_FILES)
--- a/test/bug-46660/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-46660/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,6 +1,6 @@
 
 bug_46660_TEST_FILES = \
-  test/bug-46660/class_bug46660.m \
-  test/bug-46660/bug-46660.tst
+  %reldir%/class_bug46660.m \
+  %reldir%/bug-46660.tst
 
 TEST_FILES += $(bug_46660_TEST_FILES)
--- a/test/bug-50014/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-50014/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,16 +1,16 @@
 
 bug_50014_TEST_FILES = \
-  test/bug-50014/bug-50014.tst \
-  test/bug-50014/duplicate_nested_function.m \
-  test/bug-50014/duplicate_nested_in_subfunction_ok.m \
-  test/bug-50014/duplicate_nested_parent_function.m \
-  test/bug-50014/duplicate_parent_nested2.m \
-  test/bug-50014/duplicate_parent_nested_function.m \
-  test/bug-50014/duplicate_primary_nested_function.m \
-  test/bug-50014/duplicate_primary_subfunction.m \
-  test/bug-50014/duplicate_primary_subfunction_old_syntax.m \
-  test/bug-50014/duplicate_subfunction.m \
-  test/bug-50014/duplicate_subfunction_old_syntax.m \
-  test/bug-50014/duplicate_subfunction_separate_scope_ok.m
+  %reldir%/bug-50014.tst \
+  %reldir%/duplicate_nested_function.m \
+  %reldir%/duplicate_nested_in_subfunction_ok.m \
+  %reldir%/duplicate_nested_parent_function.m \
+  %reldir%/duplicate_parent_nested2.m \
+  %reldir%/duplicate_parent_nested_function.m \
+  %reldir%/duplicate_primary_nested_function.m \
+  %reldir%/duplicate_primary_subfunction.m \
+  %reldir%/duplicate_primary_subfunction_old_syntax.m \
+  %reldir%/duplicate_subfunction.m \
+  %reldir%/duplicate_subfunction_old_syntax.m \
+  %reldir%/duplicate_subfunction_separate_scope_ok.m
 
 TEST_FILES += $(bug_50014_TEST_FILES)
--- a/test/bug-50035/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-50035/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,7 +1,7 @@
 
 bug_50035_TEST_FILES = \
-  test/bug-50035/@bug50035/display.m \
-  test/bug-50035/@bug50035/bug50035.m \
-  test/bug-50035/bug-50035.tst
+  %reldir%/@bug50035/display.m \
+  %reldir%/@bug50035/bug50035.m \
+  %reldir%/bug-50035.tst
 
 TEST_FILES += $(bug_50035_TEST_FILES)
--- a/test/bug-50716/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/bug-50716/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,6 +1,6 @@
 
 bug_50716_TEST_FILES = \
-  test/bug-50716/myclass.m \
-  test/bug-50716/bug-50716.tst
+  %reldir%/myclass.m \
+  %reldir%/bug-50716.tst
 
 TEST_FILES += $(bug_50716_TEST_FILES)
--- a/test/class-concat/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/class-concat/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,5 +1,5 @@
 class_concat_TEST_FILES = \
-  test/class-concat/@foo/foo.m \
-  test/class-concat/class-concat.tst
+  %reldir%/@foo/foo.m \
+  %reldir%/class-concat.tst
 
 TEST_FILES += $(class_concat_TEST_FILES)
--- a/test/classdef-multiple-inheritance/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/classdef-multiple-inheritance/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,8 +1,8 @@
 classdef_multiple_inheritance_TEST_FILES = \
-  test/classdef-multiple-inheritance/base_1.m \
-  test/classdef-multiple-inheritance/base_2.m \
-  test/classdef-multiple-inheritance/child_from_base_1.m \
-  test/classdef-multiple-inheritance/child_from_base_1_and_2.m \
-  test/classdef-multiple-inheritance/classdef-multiple-inheritance.tst
+  %reldir%/base_1.m \
+  %reldir%/base_2.m \
+  %reldir%/child_from_base_1.m \
+  %reldir%/child_from_base_1_and_2.m \
+  %reldir%/classdef-multiple-inheritance.tst
 
 TEST_FILES += $(classdef_multiple_inheritance_TEST_FILES)
--- a/test/classdef/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/classdef/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,10 +1,10 @@
 classdef_TEST_FILES = \
-  test/classdef/foo_method_changes_property_size.m \
-  test/classdef/foo_static_method_constant_property.m \
-  test/classdef/foo_value_class.m \
-  test/classdef/classdef.tst \
-  test/classdef/plist_t1.m \
-  test/classdef/plist_t2.m \
-  test/classdef/plist_t3.m
+  %reldir%/foo_method_changes_property_size.m \
+  %reldir%/foo_static_method_constant_property.m \
+  %reldir%/foo_value_class.m \
+  %reldir%/classdef.tst \
+  %reldir%/plist_t1.m \
+  %reldir%/plist_t2.m \
+  %reldir%/plist_t3.m
 
 TEST_FILES += $(classdef_TEST_FILES)
--- a/test/classes/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/classes/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,116 +1,116 @@
 class_Blork_TEST_FILES = \
-  test/classes/@Blork/Blork.m \
-  test/classes/@Blork/bleek.m \
-  test/classes/@Blork/display.m \
-  test/classes/@Blork/get.m \
-  test/classes/@Blork/set.m
+  %reldir%/@Blork/Blork.m \
+  %reldir%/@Blork/bleek.m \
+  %reldir%/@Blork/display.m \
+  %reldir%/@Blork/get.m \
+  %reldir%/@Blork/set.m
 
 class_Cork_TEST_FILES = \
-  test/classes/@Cork/Cork.m \
-  test/classes/@Cork/click.m \
-  test/classes/@Cork/display.m \
-  test/classes/@Cork/get.m \
-  test/classes/@Cork/set.m
+  %reldir%/@Cork/Cork.m \
+  %reldir%/@Cork/click.m \
+  %reldir%/@Cork/display.m \
+  %reldir%/@Cork/get.m \
+  %reldir%/@Cork/set.m
 
 class_Dork_TEST_FILES = \
-  test/classes/@Dork/Dork.m \
-  test/classes/@Dork/bling.m \
-  test/classes/@Dork/display.m \
-  test/classes/@Dork/gack.m \
-  test/classes/@Dork/get.m \
-  test/classes/@Dork/getStash.m \
-  test/classes/@Dork/private/myStash.m \
-  test/classes/@Dork/set.m
+  %reldir%/@Dork/Dork.m \
+  %reldir%/@Dork/bling.m \
+  %reldir%/@Dork/display.m \
+  %reldir%/@Dork/gack.m \
+  %reldir%/@Dork/get.m \
+  %reldir%/@Dork/getStash.m \
+  %reldir%/@Dork/private/myStash.m \
+  %reldir%/@Dork/set.m
 
 class_Gork_TEST_FILES = \
-  test/classes/@Gork/Gork.m \
-  test/classes/@Gork/cork.m \
-  test/classes/@Gork/display.m \
-  test/classes/@Gork/gark.m \
-  test/classes/@Gork/get.m \
-  test/classes/@Gork/set.m \
-  test/classes/@Gork/subsasgn.m \
-  test/classes/@Gork/subsref.m
+  %reldir%/@Gork/Gork.m \
+  %reldir%/@Gork/cork.m \
+  %reldir%/@Gork/display.m \
+  %reldir%/@Gork/gark.m \
+  %reldir%/@Gork/get.m \
+  %reldir%/@Gork/set.m \
+  %reldir%/@Gork/subsasgn.m \
+  %reldir%/@Gork/subsref.m
 
 class_Pork_TEST_FILES = \
-  test/classes/@Pork/Pork.m \
-  test/classes/@Pork/bling.m \
-  test/classes/@Pork/display.m \
-  test/classes/@Pork/get.m \
-  test/classes/@Pork/gurk.m \
-  test/classes/@Pork/private/myStash.m \
-  test/classes/@Pork/set.m
+  %reldir%/@Pork/Pork.m \
+  %reldir%/@Pork/bling.m \
+  %reldir%/@Pork/display.m \
+  %reldir%/@Pork/get.m \
+  %reldir%/@Pork/gurk.m \
+  %reldir%/@Pork/private/myStash.m \
+  %reldir%/@Pork/set.m
 
 class_Sneetch_TEST_FILES = \
-  test/classes/@Sneetch/Sneetch.m \
-  test/classes/@Sneetch/display.m
+  %reldir%/@Sneetch/Sneetch.m \
+  %reldir%/@Sneetch/display.m
 
 class_Snork_TEST_FILES = \
-  test/classes/@Snork/Snork.m \
-  test/classes/@Snork/cack.m \
-  test/classes/@Snork/display.m \
-  test/classes/@Snork/double.m \
-  test/classes/@Snork/end.m \
-  test/classes/@Snork/eq.m \
-  test/classes/@Snork/ge.m \
-  test/classes/@Snork/get.m \
-  test/classes/@Snork/getStash.m \
-  test/classes/@Snork/gick.m \
-  test/classes/@Snork/gt.m \
-  test/classes/@Snork/horzcat.m \
-  test/classes/@Snork/ldivide.m \
-  test/classes/@Snork/le.m \
-  test/classes/@Snork/loadobj.m \
-  test/classes/@Snork/lt.m \
-  test/classes/@Snork/minus.m \
-  test/classes/@Snork/mldivide.m \
-  test/classes/@Snork/mpower.m \
-  test/classes/@Snork/mrdivide.m \
-  test/classes/@Snork/mtimes.m \
-  test/classes/@Snork/ne.m \
-  test/classes/@Snork/plus.m \
-  test/classes/@Snork/power.m \
-  test/classes/@Snork/private/myStash.m \
-  test/classes/@Snork/rdivide.m \
-  test/classes/@Snork/saveobj.m \
-  test/classes/@Snork/set.m \
-  test/classes/@Snork/subsasgn.m \
-  test/classes/@Snork/subsindex.m \
-  test/classes/@Snork/subsref.m \
-  test/classes/@Snork/tattack.m \
-  test/classes/@Snork/times.m \
-  test/classes/@Snork/uminus.m \
-  test/classes/@Snork/uplus.m \
-  test/classes/@Snork/vertcat.m
+  %reldir%/@Snork/Snork.m \
+  %reldir%/@Snork/cack.m \
+  %reldir%/@Snork/display.m \
+  %reldir%/@Snork/double.m \
+  %reldir%/@Snork/end.m \
+  %reldir%/@Snork/eq.m \
+  %reldir%/@Snork/ge.m \
+  %reldir%/@Snork/get.m \
+  %reldir%/@Snork/getStash.m \
+  %reldir%/@Snork/gick.m \
+  %reldir%/@Snork/gt.m \
+  %reldir%/@Snork/horzcat.m \
+  %reldir%/@Snork/ldivide.m \
+  %reldir%/@Snork/le.m \
+  %reldir%/@Snork/loadobj.m \
+  %reldir%/@Snork/lt.m \
+  %reldir%/@Snork/minus.m \
+  %reldir%/@Snork/mldivide.m \
+  %reldir%/@Snork/mpower.m \
+  %reldir%/@Snork/mrdivide.m \
+  %reldir%/@Snork/mtimes.m \
+  %reldir%/@Snork/ne.m \
+  %reldir%/@Snork/plus.m \
+  %reldir%/@Snork/power.m \
+  %reldir%/@Snork/private/myStash.m \
+  %reldir%/@Snork/rdivide.m \
+  %reldir%/@Snork/saveobj.m \
+  %reldir%/@Snork/set.m \
+  %reldir%/@Snork/subsasgn.m \
+  %reldir%/@Snork/subsindex.m \
+  %reldir%/@Snork/subsref.m \
+  %reldir%/@Snork/tattack.m \
+  %reldir%/@Snork/times.m \
+  %reldir%/@Snork/uminus.m \
+  %reldir%/@Snork/uplus.m \
+  %reldir%/@Snork/vertcat.m
 
 class_Spork_TEST_FILES = \
-  test/classes/@Spork/Spork.m \
-  test/classes/@Spork/cack.m \
-  test/classes/@Spork/display.m \
-  test/classes/@Spork/geek.m \
-  test/classes/@Spork/get.m \
-  test/classes/@Spork/getStash.m \
-  test/classes/@Spork/loadobj.m \
-  test/classes/@Spork/private/myStash.m \
-  test/classes/@Spork/saveobj.m \
-  test/classes/@Spork/set.m
+  %reldir%/@Spork/Spork.m \
+  %reldir%/@Spork/cack.m \
+  %reldir%/@Spork/display.m \
+  %reldir%/@Spork/geek.m \
+  %reldir%/@Spork/get.m \
+  %reldir%/@Spork/getStash.m \
+  %reldir%/@Spork/loadobj.m \
+  %reldir%/@Spork/private/myStash.m \
+  %reldir%/@Spork/saveobj.m \
+  %reldir%/@Spork/set.m
 
 class_CPrecedenceTester1_TEST_FILES = \
-  test/classes/@CPrecedenceTester1/CPrecedenceTester1.m \
-  test/classes/@CPrecedenceTester1/tattack.m
+  %reldir%/@CPrecedenceTester1/CPrecedenceTester1.m \
+  %reldir%/@CPrecedenceTester1/tattack.m
 
 class_CPrecedenceTester2_TEST_FILES = \
-  test/classes/@CPrecedenceTester2/CPrecedenceTester2.m \
-  test/classes/@CPrecedenceTester2/tattack.m
+  %reldir%/@CPrecedenceTester2/CPrecedenceTester2.m \
+  %reldir%/@CPrecedenceTester2/tattack.m
 
 class_CPrecedenceTester3_TEST_FILES = \
-  test/classes/@CPrecedenceTester3/CPrecedenceTester3.m \
-  test/classes/@CPrecedenceTester3/tattack.m
+  %reldir%/@CPrecedenceTester3/CPrecedenceTester3.m \
+  %reldir%/@CPrecedenceTester3/tattack.m
 
 class_SizeTester_TEST_FILES = \
-  test/classes/@SizeTester/SizeTester.m \
-  test/classes/@SizeTester/numel.m \
-  test/classes/@SizeTester/size.m
+  %reldir%/@SizeTester/SizeTester.m \
+  %reldir%/@SizeTester/numel.m \
+  %reldir%/@SizeTester/size.m
 
 classes_TEST_FILES = \
   $(class_Blork_TEST_FILES) \
@@ -125,6 +125,6 @@
   $(class_CPrecedenceTester2_TEST_FILES) \
   $(class_CPrecedenceTester3_TEST_FILES) \
   $(class_SizeTester_TEST_FILES) \
-  test/classes/classes.tst
+  %reldir%/classes.tst
 
 TEST_FILES += $(classes_TEST_FILES)
--- a/test/ctor-vs-method/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/ctor-vs-method/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,11 +1,11 @@
 ctor_vs_method_TEST_FILES = \
-  test/ctor-vs-method/@derived/derived.m \
-  test/ctor-vs-method/@derived/parent.m \
-  test/ctor-vs-method/@other/other.m \
-  test/ctor-vs-method/@other/parent.m \
-  test/ctor-vs-method/@parent/method.m \
-  test/ctor-vs-method/@parent/parent.m \
-  test/ctor-vs-method/__trace__.m \
-  test/ctor-vs-method/ctor-vs-method.tst
+  %reldir%/@derived/derived.m \
+  %reldir%/@derived/parent.m \
+  %reldir%/@other/other.m \
+  %reldir%/@other/parent.m \
+  %reldir%/@parent/method.m \
+  %reldir%/@parent/parent.m \
+  %reldir%/__trace__.m \
+  %reldir%/ctor-vs-method.tst
 
 TEST_FILES += $(ctor_vs_method_TEST_FILES)
--- a/test/fcn-handle-derived-resolution/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/fcn-handle-derived-resolution/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,11 +1,11 @@
 fcn_handle_derived_resolution_TEST_FILES = \
-  test/fcn-handle-derived-resolution/@fhdr_derived/fhdr_derived.m \
-  test/fcn-handle-derived-resolution/@fhdr_other/getsize_arrayfun.m \
-  test/fcn-handle-derived-resolution/@fhdr_other/getsize_cellfun.m \
-  test/fcn-handle-derived-resolution/@fhdr_other/getsize_loop.m \
-  test/fcn-handle-derived-resolution/@fhdr_other/fhdr_other.m \
-  test/fcn-handle-derived-resolution/@fhdr_parent/numel.m \
-  test/fcn-handle-derived-resolution/@fhdr_parent/fhdr_parent.m \
-  test/fcn-handle-derived-resolution/fcn-handle-derived-resolution.tst
+  %reldir%/@fhdr_derived/fhdr_derived.m \
+  %reldir%/@fhdr_other/getsize_arrayfun.m \
+  %reldir%/@fhdr_other/getsize_cellfun.m \
+  %reldir%/@fhdr_other/getsize_loop.m \
+  %reldir%/@fhdr_other/fhdr_other.m \
+  %reldir%/@fhdr_parent/numel.m \
+  %reldir%/@fhdr_parent/fhdr_parent.m \
+  %reldir%/fcn-handle-derived-resolution.tst
 
 TEST_FILES += $(fcn_handle_derived_resolution_TEST_FILES)
--- a/test/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,97 +1,97 @@
-test_EXTRA_DIST =
+%canon_reldir%_EXTRA_DIST =
 
-test_CLEANFILES =
-test_DISTCLEANFILES =
-test_MAINTAINERCLEANFILES =
+%canon_reldir%_CLEANFILES =
+%canon_reldir%_DISTCLEANFILES =
+%canon_reldir%_MAINTAINERCLEANFILES =
 
 TEST_FILES += \
-  test/fntests.m \
-  test/args.tst \
-  test/bug-31371.tst \
-  test/bug-38565.tst \
-  test/bug-38576.tst \
-  test/bug-46330.tst \
-  test/bug-49904.tst \
-  test/colormaps.tst \
-  test/command.tst \
-  test/complex.tst \
-  test/diag-perm.tst \
-  test/error.tst \
-  test/eval-catch.tst \
-  test/for.tst \
-  test/func.tst \
-  test/global.tst \
-  test/if.tst \
-  test/index.tst \
-  test/io.tst \
-  test/jit.tst \
-  test/line-continue.tst \
-  test/logical-index.tst \
-  test/null-assign.tst \
-  test/parser.tst \
-  test/prefer.tst \
-  test/range.tst \
-  test/recursion.tst \
-  test/return.tst \
-  test/single-index.tst \
-  test/slice.tst \
-  test/struct.tst \
-  test/switch.tst \
-  test/system.tst \
-  test/transpose.tst \
-  test/try.tst \
-  test/unwind.tst \
-  test/while.tst
+  %reldir%/fntests.m \
+  %reldir%/args.tst \
+  %reldir%/bug-31371.tst \
+  %reldir%/bug-38565.tst \
+  %reldir%/bug-38576.tst \
+  %reldir%/bug-46330.tst \
+  %reldir%/bug-49904.tst \
+  %reldir%/colormaps.tst \
+  %reldir%/command.tst \
+  %reldir%/complex.tst \
+  %reldir%/diag-perm.tst \
+  %reldir%/error.tst \
+  %reldir%/eval-catch.tst \
+  %reldir%/for.tst \
+  %reldir%/func.tst \
+  %reldir%/global.tst \
+  %reldir%/if.tst \
+  %reldir%/index.tst \
+  %reldir%/io.tst \
+  %reldir%/jit.tst \
+  %reldir%/line-continue.tst \
+  %reldir%/logical-index.tst \
+  %reldir%/null-assign.tst \
+  %reldir%/parser.tst \
+  %reldir%/prefer.tst \
+  %reldir%/range.tst \
+  %reldir%/recursion.tst \
+  %reldir%/return.tst \
+  %reldir%/single-index.tst \
+  %reldir%/slice.tst \
+  %reldir%/struct.tst \
+  %reldir%/switch.tst \
+  %reldir%/system.tst \
+  %reldir%/transpose.tst \
+  %reldir%/try.tst \
+  %reldir%/unwind.tst \
+  %reldir%/while.tst
 
-DIRSTAMP_FILES += test/$(octave_dirstamp)
+DIRSTAMP_FILES += %reldir%/$(octave_dirstamp)
 
-include test/bug-35448/module.mk
-include test/bug-36025/module.mk
-include test/bug-38236/module.mk
-include test/bug-38691/module.mk
-include test/bug-41723/module.mk
-include test/bug-44940/module.mk
-include test/bug-46660/module.mk
-include test/bug-50014/module.mk
-include test/bug-50035/module.mk
-include test/bug-50716/module.mk
-include test/class-concat/module.mk
-include test/classdef/module.mk
-include test/classdef-multiple-inheritance/module.mk
-include test/classes/module.mk
-include test/ctor-vs-method/module.mk
-include test/fcn-handle-derived-resolution/module.mk
-include test/nest/module.mk
-include test/publish/module.mk
+include %reldir%/bug-35448/module.mk
+include %reldir%/bug-36025/module.mk
+include %reldir%/bug-38236/module.mk
+include %reldir%/bug-38691/module.mk
+include %reldir%/bug-41723/module.mk
+include %reldir%/bug-44940/module.mk
+include %reldir%/bug-46660/module.mk
+include %reldir%/bug-50014/module.mk
+include %reldir%/bug-50035/module.mk
+include %reldir%/bug-50716/module.mk
+include %reldir%/class-concat/module.mk
+include %reldir%/classdef/module.mk
+include %reldir%/classdef-multiple-inheritance/module.mk
+include %reldir%/classes/module.mk
+include %reldir%/ctor-vs-method/module.mk
+include %reldir%/fcn-handle-derived-resolution/module.mk
+include %reldir%/nest/module.mk
+include %reldir%/publish/module.mk
 
-ALL_LOCAL_TARGETS += test/.gdbinit
+ALL_LOCAL_TARGETS += %reldir%/.gdbinit
 
-test/.gdbinit: etc/gdbinit
+%reldir%/.gdbinit: etc/gdbinit
 	@$(gdbinit_install_rule)
 
 define run-octave-tests
-  cd test && $(SHELL) ../run-octave $(RUN_OCTAVE_OPTIONS) $(1) --norc --silent --no-history $(abs_top_srcdir)/test/fntests.m $(abs_top_srcdir)/test
+  cd test && $(SHELL) ../run-octave $(RUN_OCTAVE_OPTIONS) $(1) --norc --silent --no-history $(abs_top_srcdir)/%reldir%/fntests.m $(abs_top_srcdir)/test
   if $(AM_V_P); then \
     echo ""; \
-    if [ -f test/fntests.log ]; then \
-      echo "Contents of test/fntests.log:"; \
+    if [ -f %reldir%/fntests.log ]; then \
+      echo "Contents of %reldir%/fntests.log:"; \
       echo ""; \
-      $(AWK) -f $(srcdir)/test/show-failures.awk test/fntests.log; \
+      $(AWK) -f $(srcdir)/%reldir%/show-failures.awk %reldir%/fntests.log; \
     else \
-      echo "test/fntests.log is missing!"; \
+      echo "%reldir%/fntests.log is missing!"; \
     fi; \
   fi
 endef
 
-check-local: $(GENERATED_TEST_FILES) | $(OCTAVE_INTERPRETER_TARGETS) test/$(octave_dirstamp)
+check-local: $(GENERATED_TEST_FILES) | $(OCTAVE_INTERPRETER_TARGETS) %reldir%/$(octave_dirstamp)
 	$(call run-octave-tests)
 
 if AMCOND_HAVE_LLVM
-check-jit: $(GENERATED_TEST_FILES) | $(OCTAVE_INTERPRETER_TARGETS) test/$(octave_dirstamp)
+check-jit: $(GENERATED_TEST_FILES) | $(OCTAVE_INTERPRETER_TARGETS) %reldir%/$(octave_dirstamp)
 	$(call run-octave-tests,--jit-compiler)
 endif
 
-COVERAGE_DIR = test/coverage
+COVERAGE_DIR = %reldir%/coverage
 COVERAGE_INFO = $(COVERAGE_DIR)/$(PACKAGE).info
 
 ## FIXME: To get something useful out of 'make coverage', you should use gcc
@@ -115,41 +115,41 @@
 	@echo ""
 .PHONY: coverage
 
-test/sparse.tst: test/build-sparse-tests.sh | test/$(octave_dirstamp)
+%reldir%/sparse.tst: %reldir%/build-sparse-tests.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(SHELL) $(srcdir)/test/build-sparse-tests.sh > $@-t && \
+	$(SHELL) $(srcdir)/%reldir%/build-sparse-tests.sh > $@-t && \
 	mv $@-t $@
 
-test/conv.tst: test/build-conv-tests.sh | test/$(octave_dirstamp)
+%reldir%/conv.tst: %reldir%/build-conv-tests.sh | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
-	$(SHELL) $(srcdir)/test/build-conv-tests.sh > $@-t && \
+	$(SHELL) $(srcdir)/%reldir%/build-conv-tests.sh > $@-t && \
 	mv $@-t $@
 
 GENERATED_BC_OVERLOADS_DIRS := \
-  $(shell $(SHELL) $(srcdir)/test/build-bc-overload-tests.sh test --list-dirs)
+  $(shell $(SHELL) $(srcdir)/%reldir%/build-bc-overload-tests.sh test --list-dirs)
 
 GENERATED_BC_OVERLOADS_FILES := \
-  $(shell $(SHELL) $(srcdir)/test/build-bc-overload-tests.sh test --list-files)
+  $(shell $(SHELL) $(srcdir)/%reldir%/build-bc-overload-tests.sh test --list-files)
 
-$(GENERATED_BC_OVERLOADS_FILES): test/.bc-overload-tests-stamp
+$(GENERATED_BC_OVERLOADS_FILES): %reldir%/.bc-overload-tests-stamp
 
-test/.bc-overload-tests-stamp: test/build-bc-overload-tests.sh test/bc-overloads-expected | test/$(octave_dirstamp)
+%reldir%/.bc-overload-tests-stamp: %reldir%/build-bc-overload-tests.sh %reldir%/bc-overloads-expected | %reldir%/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@ && \
-	$(SHELL) $(srcdir)/test/build-bc-overload-tests.sh test $(srcdir)/test/bc-overloads-expected && \
+	$(SHELL) $(srcdir)/%reldir%/build-bc-overload-tests.sh test $(srcdir)/%reldir%/bc-overloads-expected && \
 	touch $@
 
 GENERATED_TEST_FILES = \
-  test/conv.tst \
-  test/sparse.tst \
-  test/.bc-overload-tests-stamp
+  %reldir%/conv.tst \
+  %reldir%/sparse.tst \
+  %reldir%/.bc-overload-tests-stamp
 
 fixedtestsdir := $(octtestsdir)/fixed
 
 TEST_INST_FILES = \
-  test/conv.tst \
-  test/sparse.tst \
+  %reldir%/conv.tst \
+  %reldir%/sparse.tst \
   $(GENERATED_BC_OVERLOADS_FILES) \
-  $(filter-out test/fntests.m, $(TEST_FILES))
+  $(filter-out %reldir%/fntests.m, $(TEST_FILES))
 
 install-data-local: install-test-files
 
@@ -158,7 +158,7 @@
 install-test-files:
 	for f in $(TEST_INST_FILES); do \
 	  if test -f "$$f"; then d=; else d="$(srcdir)/"; fi; \
-	  base=`echo $$f | $(SED) 's,^test/,,'`; \
+	  base=`echo $$f | $(SED) 's,^%reldir%/,,'`; \
 	  $(MKDIR_P) $(DESTDIR)$(fixedtestsdir)/`echo $$base | $(SED) 's,/*[^/]*$$,,'`; \
 	  $(INSTALL_DATA) $$d$$f $(DESTDIR)$(fixedtestsdir)/$$base; \
 	done
@@ -166,45 +166,45 @@
 
 uninstall-test-files:
 	for f in $(TEST_INST_FILES); do \
-	  base=`echo $$f | $(SED) 's,^test/,,'`; \
+	  base=`echo $$f | $(SED) 's,^%reldir%/,,'`; \
 	  rm -f $(DESTDIR)$(fixedtestsdir)/$$base; \
 	done
 .PHONY: uninstall-test-files
 
 BUILT_SOURCES += $(GENERATED_TEST_FILES)
 
-test_EXTRA_DIST += \
-  test/build-conv-tests.sh \
-  test/build-sparse-tests.sh \
-  test/build-bc-overload-tests.sh \
-  test/bc-overloads-expected \
-  test/build_bc_overloads_expected.m \
-  test/show-failures.awk \
+%canon_reldir%_EXTRA_DIST += \
+  %reldir%/build-conv-tests.sh \
+  %reldir%/build-sparse-tests.sh \
+  %reldir%/build-bc-overload-tests.sh \
+  %reldir%/bc-overloads-expected \
+  %reldir%/build_bc_overloads_expected.m \
+  %reldir%/show-failures.awk \
   $(TEST_FILES)
 
-EXTRA_DIST += $(test_EXTRA_DIST)
+EXTRA_DIST += $(%canon_reldir%_EXTRA_DIST)
 
-test_CLEANFILES += \
+%canon_reldir%_CLEANFILES += \
   $(GENERATED_BC_OVERLOADS_FILES) \
   $(GENERATED_TEST_FILES)
 
-test_DISTCLEANFILES += \
-  test/.gdbinit \
-  test/fntests.log
+%canon_reldir%_DISTCLEANFILES += \
+  %reldir%/.gdbinit \
+  %reldir%/fntests.log
 
-CLEANFILES += $(test_CLEANFILES)
-DISTCLEANFILES += $(test_DISTCLEANFILES)
-MAINTAINERCLEANFILES += $(test_MAINTAINERCLEANFILES)
+CLEANFILES += $(%canon_reldir%_CLEANFILES)
+DISTCLEANFILES += $(%canon_reldir%_DISTCLEANFILES)
+MAINTAINERCLEANFILES += $(%canon_reldir%_MAINTAINERCLEANFILES)
 
 clean-local: test-clean
 
 test-clean:
-	rm -f $(test_CLEANFILES)
+	rm -f $(%canon_reldir%_CLEANFILES)
 	rm -rf $(GENERATED_BC_OVERLOADS_DIRS)
 	rm -rf $(COVERAGE_DIR)
 
 test-distclean: test-clean
-	rm -f $(test_DISTCLEANFILES)
+	rm -f $(%canon_reldir%_DISTCLEANFILES)
 
 test-maintainer-clean: test-distclean
-	rm -f $(test_MAINTAINERCLEANFILES)
+	rm -f $(%canon_reldir%_MAINTAINERCLEANFILES)
--- a/test/nest/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/nest/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,20 +1,20 @@
 nest_TEST_FILES = \
-  test/nest/arg_nest.m \
-  test/nest/arg_ret.m \
-  test/nest/nest_eval.m \
-  test/nest/no_closure.m \
-  test/nest/persistent_nest.m \
-  test/nest/recursive_nest.m \
-  test/nest/recursive_nest2.m \
-  test/nest/recursive_nest3.m \
-  test/nest/scope0.m \
-  test/nest/scope1.m \
-  test/nest/scope2.m \
-  test/nest/scope3.m \
-  test/nest/script_nest.m \
-  test/nest/script_nest_script.m \
-  test/nest/nest.tst \
-  test/nest/varg_nest.m \
-  test/nest/varg_nest2.m
+  %reldir%/arg_nest.m \
+  %reldir%/arg_ret.m \
+  %reldir%/nest_eval.m \
+  %reldir%/no_closure.m \
+  %reldir%/persistent_nest.m \
+  %reldir%/recursive_nest.m \
+  %reldir%/recursive_nest2.m \
+  %reldir%/recursive_nest3.m \
+  %reldir%/scope0.m \
+  %reldir%/scope1.m \
+  %reldir%/scope2.m \
+  %reldir%/scope3.m \
+  %reldir%/script_nest.m \
+  %reldir%/script_nest_script.m \
+  %reldir%/nest.tst \
+  %reldir%/varg_nest.m \
+  %reldir%/varg_nest2.m
 
 TEST_FILES += $(nest_TEST_FILES)
--- a/test/publish/module.mk	Mon May 15 16:09:35 2017 +0100
+++ b/test/publish/module.mk	Mon May 15 16:17:58 2017 -0400
@@ -1,9 +1,9 @@
 publish_TEST_FILES = \
-  test/publish/publish.tst \
-  test/publish/test_script.m \
-  test/publish/test_script_code_only.m \
-  test/publish/test_script_empty.m \
-  test/publish/test_script_example.m \
-  test/publish/test_script_head_only.m
+  %reldir%/publish.tst \
+  %reldir%/test_script.m \
+  %reldir%/test_script_code_only.m \
+  %reldir%/test_script_empty.m \
+  %reldir%/test_script_example.m \
+  %reldir%/test_script_head_only.m
 
 TEST_FILES += $(publish_TEST_FILES)