changeset 20360:2d84d27dc9f0

eliminate recursive make invocation in src directory * src/module.mk: New file, created from src/Makefile.am. * src/Makefile.am: Delete. * configure.ac (AC_OUTPUT): Don't generate src/Makefile. * Makefile.am (SUBDIRS): Remove src. (ALL_LOCAL_TARGETS, bin_PROGRAMS, noinst_HEADERS, OCTAVE_VERSION_LINKS, OCTAVE_CROSS_TOOLS, archlib_PROGRAMS, OCTAVE_INTERPRETER_TARGETS): Initialize new variables. * doc/module.mk ($(GRAPH_PROP_TEXI_SRC), $(BUILT_IMAGES), doc/interpreter/doc-cache): Depend on $(OCTAVE_INTERPRETER_TARGETS). Fix dependencies for octave.html. Use $(abs_top_srcdir) instead of $(srcdir) in rules that use cd. * test/module.mk (GENERATED_TEST_FILES): New macro. (check-local, check-jit): Depend on $(OCTAVE_INTERPRETER_TARGETS) and $(GENERATED_TEST_FILES).
author John W. Eaton <jwe@octave.org>
date Thu, 09 Jul 2015 10:11:41 -0400
parents 79d64c58daea
children 8ef616eec739
files Makefile.am configure.ac doc/module.mk src/Makefile.am src/module.mk test/module.mk
diffstat 6 files changed, 258 insertions(+), 218 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.am	Wed Jul 08 12:55:10 2015 -0400
+++ b/Makefile.am	Thu Jul 09 10:11:41 2015 -0400
@@ -66,6 +66,16 @@
 IMAGES_PNG =
 IMAGES_TXT =
 
+bin_PROGRAMS =
+archlib_PROGRAMS =
+noinst_HEADERS =
+OCTAVE_VERSION_LINKS =
+OCTAVE_CROSS_TOOLS =
+OCTAVE_INTERPRETER_TARGETS =
+
+ALL_LOCAL_TARGETS =
+
+include src/module.mk
 include doc/module.mk
 include doc/interpreter/images.mk
 include etc/module.mk
@@ -81,7 +91,7 @@
 if AMCOND_BUILD_GUI
 SUBDIRS += libgui
 endif
-SUBDIRS += src scripts
+SUBDIRS += scripts
 
 dist-hook: doc-interpreter-dist-hook docs-dist-hook icons-dist-hook
 
@@ -111,6 +121,8 @@
 
 noinst_SCRIPTS = run-octave
 
+OCTAVE_INTERPRETER_TARGETS += run-octave
+
 CLEANFILES += \
   $(BUILT_SOURCES)
 
@@ -127,7 +139,7 @@
 nodist_octinclude_HEADERS = config.h
 octinclude_HEADERS = oct-conf-post.h
 
-all-local: $(noinst_SCRIPTS) $(DIST_INFO_FILES) .gdbinit $(DOC_TARGETS)
+all-local: $(ALL_LOCAL_TARGETS) $(noinst_SCRIPTS) $(DIST_INFO_FILES) .gdbinit $(DOC_TARGETS)
 	@echo ""
 	@echo "Octave successfully built.  Now choose from the following:"
 	@echo ""
--- a/configure.ac	Wed Jul 08 12:55:10 2015 -0400
+++ b/configure.ac	Thu Jul 09 10:11:41 2015 -0400
@@ -3002,8 +3002,7 @@
   libinterp/Makefile
   liboctave/Makefile
   liboctave/cruft/mkf77def
-  scripts/Makefile
-  src/Makefile])
+  scripts/Makefile])
 
 AC_OUTPUT
 
--- a/doc/module.mk	Wed Jul 08 12:55:10 2015 -0400
+++ b/doc/module.mk	Thu Jul 09 10:11:41 2015 -0400
@@ -56,6 +56,8 @@
   doc/interpreter/plot-surfaceproperties.texi \
   doc/interpreter/plot-textproperties.texi
 
+$(GRAPH_PROP_TEXI_SRC): $(OCTAVE_INTERPRETER_TARGETS)
+
 define gen-propdoc-texi
   rm -f $@-t $@ && \
   $(top_builddir)/run-octave -f -q -H -p $(srcdir)/doc/interpreter --eval "genpropdoc ('$(1)');" > $@-t && \
@@ -113,6 +115,8 @@
   $(BUILT_IMAGES) \
   $(JAVA_IMAGES)
 
+$(BUILT_IMAGES): $(OCTAVE_INTERPRETER_TARGETS)
+
 ## FIXME: JAVA_IMAGES will eventually need to be added to the HTML build.
 ##        It will require a different Makefile rule later because
 ##        JAVA_IMAGES live in a subdir rather than in the current directory.
@@ -203,10 +207,14 @@
 ## there are additional dependencies, so we include our own
 ## versions of the rules here.
 
+OCTAVE_HTML_DIR = doc/interpreter/octave.html
+OCTAVE_HTML_TMP_DIR = $(OCTAVE_HTML_DIR:.html=.htp)
+OCTAVE_HTML_STAMP = $(OCTAVE_HTML_DIR)/.html-stamp
+
 $(srcdir)/doc/interpreter/octave.info: $(IMAGES_TXT) $(octave_TEXINFOS)
 doc/interpreter/octave.dvi: $(IMAGES_EPS) $(octave_TEXINFOS)
 doc/interpreter/octave.pdf: $(IMAGES_PDF) $(octave_TEXINFOS)
-doc/interpreter/octave.html: $(IMAGES_PNG) $(octave_TEXINFOS)
+$(OCTAVE_HTML_STAMP): $(IMAGES_PNG) $(octave_TEXINFOS)
 
 $(srcdir)/doc/interpreter/octave.info: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi
 	$(AM_V_MAKEINFO)restore=: && backupdir="$(am__leading_dot)am$$$$" && \
@@ -218,7 +226,7 @@
 	  done; \
 	else :; fi && \
 	cd "$$am__cwd"; \
-	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(srcdir)/doc/interpreter \
+	if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter \
 	 -o $@ $(srcdir)/doc/interpreter/octave.texi; \
 	then \
 	  rc=0; \
@@ -232,24 +240,20 @@
 
 doc/interpreter/octave.dvi: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi doc/interpreter/$(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' \
+	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter' \
 	$(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
-	`test -f 'doc/interpreter/octave.texi' || echo '$(srcdir)/'`doc/interpreter/octave.texi
+	`test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi
 
 doc/interpreter/octave.pdf: doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi doc/interpreter/$(am__dirstamp)
 	$(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
-	MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(srcdir)/doc/interpreter' \
+	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 '$(srcdir)/'`doc/interpreter/octave.texi
-
-OCTAVE_HTML_DIR = doc/interpreter/octave.html
-OCTAVE_HTML_TMP_DIR = $(OCTAVE_HTML_DIR:.html=.htp)
-OCTAVE_HTML_STAMP = $(OCTAVE_HTML_DIR)/.html-stamp
+	`test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi
 
 $(OCTAVE_HTML_STAMP): doc/interpreter/octave.texi $(srcdir)/doc/interpreter/version-octave.texi doc/interpreter/$(am__dirstamp)
 	$(AM_V_MAKEINFO)rm -rf $(OCTAVE_HTML_DIR)
-	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(srcdir)/doc/interpreter \
-	 -o $(OCTAVE_HTML_TMP_DIR) `test -f 'doc/interpreter/octave.texi' || echo '$(srcdir)/'`doc/interpreter/octave.texi; \
+	$(AM_V_at)if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I doc/interpreter -I $(abs_top_srcdir)/doc/interpreter \
+	 -o $(OCTAVE_HTML_TMP_DIR) `test -f 'doc/interpreter/octave.texi' || echo '$(abs_top_srcdir)/'`doc/interpreter/octave.texi; \
 	then \
 	  rm -rf $(OCTAVE_HTML_DIR)@ && \
 	  mv $(OCTAVE_HTML_TMP_DIR) $(OCTAVE_HTML_DIR) && \
@@ -287,7 +291,7 @@
 
 DOCSTRING_FILES = $(shell $(srcdir)/doc/interpreter/find-docstring-files.sh "$(top_srcdir)")
 
-doc/interpreter/doc-cache: $(DOCSTRING_FILES) doc/interpreter/mk_doc_cache.m doc/interpreter/$(octave_dirstamp)
+doc/interpreter/doc-cache: $(DOCSTRING_FILES) $(OCTAVE_INTERPRETER_TARGETS) doc/interpreter/mk_doc_cache.m doc/interpreter/$(octave_dirstamp)
 	$(AM_V_GEN)rm -f $@-t $@ && \
 	$(top_builddir)/run-octave -f -q -H $(srcdir)/doc/interpreter/mk_doc_cache.m - $(srcdir)/doc/interpreter/macros.texi $(DOCSTRING_FILES) >$@-t && \
 	mv $@-t $@
--- a/src/Makefile.am	Wed Jul 08 12:55:10 2015 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-# Makefile for Octave's src directory
-#
-# Copyright (C) 1993-2015 John W. Eaton
-#
-# This file is part of Octave.
-#
-# Octave is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
-# Free Software Foundation; either version 3 of the License, or (at
-# your option) any later version.
-#
-# Octave is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Octave; see the file COPYING.  If not, see
-# <http://www.gnu.org/licenses/>.
-
-include $(top_srcdir)/build-aux/common.mk
-
-## Search local directories before those specified by the user.
-AM_CPPFLAGS = \
-  -I$(top_srcdir)/liboctave/array \
-  -I$(top_srcdir)/liboctave/cruft/misc \
-  -I$(top_srcdir)/liboctave/numeric \
-  -I$(top_srcdir)/liboctave/system \
-  -I$(top_srcdir)/liboctave/util \
-  -I$(top_srcdir)/libinterp \
-  -I$(top_builddir)/libinterp/corefcn -I$(top_srcdir)/libinterp/corefcn \
-  -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu
-
-AM_CFLAGS += $(WARN_CFLAGS)
-
-AM_CXXFLAGS += $(WARN_CXXFLAGS)
-
-EXTRA_DIST = \
-  main.in.cc \
-  mkoctfile.in.cc \
-  octave-config.in.cc
-
-DISTCLEANFILES = \
-  main.cc \
-  mkoctfile.cc \
-  octave-config.cc
-
-bin_PROGRAMS = \
-  mkoctfile \
-  octave \
-  octave-cli \
-  octave-config
-
-noinst_HEADERS = \
-  display-available.h	\
-  shared-fcns.h
-
-OCTAVE_VERSION_LINKS = octave-cli-$(version)$(EXEEXT)
-
-archlib_PROGRAMS =
-
-if AMCOND_BUILD_GUI
-  archlib_PROGRAMS += octave-gui
-  OCTAVE_VERSION_LINKS += octave-gui-$(version)$(EXEEXT)
-endif
-
-OCTAVE_CORE_LIBS = \
-  $(top_builddir)/libinterp/liboctinterp.la \
-  $(top_builddir)/liboctave/liboctave.la
-
-include ../libgui/link-deps.mk
-
-nodist_octave_SOURCES = main.cc
-octave_SOURCES = display-available.c
-
-octave_LDADD = \
-  $(top_builddir)/libgnu/libgnu.la \
-  $(X11_LIBS) \
-  $(CARBON_LIBS) \
-  $(GNULIB_LINK_DEPS)
-
-octave_LDFLAGS = \
-  $(NO_UNDEFINED_LDFLAG) \
-  $(OCTAVE_LINK_OPTS)
-
-if AMCOND_BUILD_GUI
-  OCTAVE_CPPFLAGS = -DHAVE_OCTAVE_GUI
-endif
-
-octave_CPPFLAGS = \
-  $(AM_CPPFLAGS) \
-  $(OCTAVE_CPPFLAGS)
-
-octave_cli_SOURCES = main-cli.cc
-
-octave_cli_LDADD = \
-  $(OCTAVE_CORE_LIBS) \
-  $(OCTAVE_LINK_DEPS)
-
-octave_cli_LDFLAGS = \
-  $(NO_UNDEFINED_LDFLAG) \
-  $(OCTAVE_LINK_OPTS)
-
-if AMCOND_BUILD_GUI
-  octave_gui_SOURCES = main-gui.cc
-  OCTAVE_GUI_LIBS = $(top_builddir)/libgui/liboctgui.la
-  OCTAVE_GUI_CPPFLAGS = -I$(top_srcdir)/libgui/src
-endif
-
-octave_gui_CPPFLAGS = \
-  $(AM_CPPFLAGS) \
-  $(OCTAVE_GUI_CPPFLAGS)
-
-octave_gui_LDADD = \
-  $(OCTAVE_GUI_LIBS) \
-  $(OCTAVE_CORE_LIBS) \
-  $(OCTAVE_GUI_LINK_DEPS)
-
-octave_gui_LDFLAGS = \
-  $(NO_UNDEFINED_LDFLAG) \
-  $(OCTAVE_GUI_LINK_OPTS)
-
-mkoctfile_SOURCES =
-nodist_mkoctfile_SOURCES = mkoctfile.cc
-mkoctfile_LDADD = $(top_builddir)/libgnu/libgnu.la $(LIBS)
-
-octave_config_SOURCES =
-nodist_octave_config_SOURCES = octave-config.cc
-octave_config_LDADD = \
-  $(top_builddir)/libinterp/corefcn/libcorefcn.la \
-  $(top_builddir)/libgnu/libgnu.la \
-  $(LIBS)
-
-OCTAVE_CROSS_TOOLS=
-if AMCOND_CROSS_TOOLS
-# building cross mkoctfile
-OCTAVE_CROSS_TOOLS += $(host_triplet)-mkoctfile$(BUILD_EXEEXT)
-$(host_triplet)-mkoctfile$(BUILD_EXEEXT): $(host_triplet)-mkoctfile.cc
-	$(BUILD_CXX) -o $(host_triplet)-mkoctfile$(BUILD_EXEEXT) -Dgnulib='' -Doctave_idx_type=int $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) $(host_triplet)-mkoctfile.cc
-$(host_triplet)-mkoctfile.cc: mkoctfile.in.cc Makefile
-	$(AM_V_GEN)$(do_subst_cross_config_vals)
-
-# building cross octave-config
-OCTAVE_CROSS_TOOLS += $(host_triplet)-octave-config$(BUILD_EXEEXT)
-$(host_triplet)-octave-config$(BUILD_EXEEXT): $(host_triplet)-octave-config.cc
-	$(BUILD_CXX) -o $(host_triplet)-octave-config$(BUILD_EXEEXT) -Dgnulib='' -Doctave_idx_type=int $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) $(host_triplet)-octave-config.cc
-$(host_triplet)-octave-config.cc: octave-config.in.cc Makefile
-	$(AM_V_GEN)$(do_subst_default_vals)
-
-mostlyclean-local:
-	-rm -f $(OCTAVE_CROSS_TOOLS)
-
-endif
-
-all-local: $(OCTAVE_VERSION_LINKS) $(OCTAVE_CROSS_TOOLS)
-
-octave-config.cc: octave-config.in.cc Makefile
-	$(AM_V_GEN)$(do_subst_default_vals)
-
-mkoctfile.cc: mkoctfile.in.cc Makefile
-	$(AM_V_GEN)$(do_subst_config_vals)
-
-## main.cc must depend on Makefile.  Calling configure may change
-## default/config values.  However, calling configure will also
-## regenerate the Makefiles from Makefile.am and trigger the rules below.
-main.cc: main.in.cc Makefile
-	$(AM_V_GEN)$(do_subst_default_vals)
-
-install-exec-hook: make-version-links
-
-uninstall-local: remove-version-links
-
-make-version-links:
-	cd $(DESTDIR)$(bindir) && \
-	for f in $(basename $(bin_PROGRAMS)); do \
-	  mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \
-	    $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \
-	done
-
-remove-version-links:
-	for f in $(basename $(bin_PROGRAMS)); do \
-	  rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \
-	done
-
-.PHONY: make-version-links remove-version-links
-
-## We need these file names in the build tree because the wrapper
-## program (main.cc) will try to invoke the versioned binaries.
-
-octave-cli-$(version)$(EXEEXT): octave-cli$(EXEEXT)
-	$(AM_V_GEN)rm -f $@ && \
-	$(LN_S) $< $@
-
-octave-gui-$(version)$(EXEEXT): octave-gui$(EXEEXT)
-	$(AM_V_GEN)rm -f $@ && \
-	$(LN_S) $< $@
-
-CLEANFILES = \
-  $(OCTAVE_VERSION_LINKS)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/module.mk	Thu Jul 09 10:11:41 2015 -0400
@@ -0,0 +1,222 @@
+## Search local directories before those specified by the user.
+
+SRC_DIR_CPPFLAGS = \
+  -I$(top_srcdir)/liboctave/array \
+  -I$(top_srcdir)/liboctave/cruft/misc \
+  -I$(top_srcdir)/liboctave/numeric \
+  -I$(top_srcdir)/liboctave/system \
+  -I$(top_srcdir)/liboctave/util \
+  -I$(top_srcdir)/libinterp \
+  -I$(top_builddir)/libinterp/corefcn -I$(top_srcdir)/libinterp/corefcn \
+  -I$(top_srcdir)/src \
+  -I$(top_builddir)/libgnu -I$(top_srcdir)/libgnu
+
+EXTRA_DIST += \
+  src/main.in.cc \
+  src/mkoctfile.in.cc \
+  src/octave-config.in.cc
+
+DISTCLEANFILES += \
+  src/main.cc \
+  src/mkoctfile.cc \
+  src/octave-config.cc
+
+bin_PROGRAMS += \
+  src/mkoctfile \
+  src/octave \
+  src/octave-cli \
+  src/octave-config
+
+OCTAVE_INTERPRETER_TARGETS += $(bin_programs)
+
+noinst_HEADERS += \
+  src/display-available.h	\
+  src/shared-fcns.h
+
+OCTAVE_VERSION_LINKS += src/octave-cli-$(version)$(EXEEXT)
+
+if AMCOND_BUILD_GUI
+  archlib_PROGRAMS += src/octave-gui
+  OCTAVE_VERSION_LINKS += src/octave-gui-$(version)$(EXEEXT)
+
+  OCTAVE_INTERPRETER_TARGETS += src/octave-gui
+endif
+
+OCTAVE_CORE_LIBS = \
+  $(top_builddir)/libinterp/liboctinterp.la \
+  $(top_builddir)/liboctave/liboctave.la
+
+include libgui/link-deps.mk
+
+nodist_src_octave_SOURCES = src/main.cc
+src_octave_SOURCES = src/display-available.c
+
+src_octave_LDADD = \
+  $(top_builddir)/libgnu/libgnu.la \
+  $(X11_LIBS) \
+  $(CARBON_LIBS) \
+  $(GNULIB_LINK_DEPS)
+
+src_octave_LDFLAGS = \
+  $(NO_UNDEFINED_LDFLAG) \
+  $(OCTAVE_LINK_OPTS)
+
+if AMCOND_BUILD_GUI
+  OCTAVE_CPPFLAGS = -DHAVE_OCTAVE_GUI
+endif
+
+src_octave_CPPFLAGS = \
+  $(SRC_DIR_CPPFLAGS) \
+  $(OCTAVE_CPPFLAGS)
+
+src_octave_CXXFLAGS = \
+  $(AM_CXXFLAGS) \
+  $(WARN_CXXFLAGS)
+
+src_octave_cli_SOURCES = src/main-cli.cc
+
+src_octave_cli_LDADD = \
+  $(OCTAVE_CORE_LIBS) \
+  $(OCTAVE_LINK_DEPS)
+
+src_octave_cli_LDFLAGS = \
+  $(NO_UNDEFINED_LDFLAG) \
+  $(OCTAVE_LINK_OPTS)
+
+src_octave_cli_CPPFLAGS = \
+  $(SRC_DIR_CPPFLAGS) \
+  $(OCTAVE_CPPFLAGS)
+
+src_octave_cli_CXXFLAGS = \
+  $(AM_CXXFLAGS) \
+  $(WARN_CXXFLAGS)
+
+if AMCOND_BUILD_GUI
+  src_octave_gui_SOURCES = src/main-gui.cc
+  OCTAVE_GUI_LIBS = $(top_builddir)/libgui/liboctgui.la
+  OCTAVE_GUI_CPPFLAGS = -I$(top_srcdir)/libgui/src
+endif
+
+src_octave_gui_CPPFLAGS = \
+  $(SRC_DIR_CPPFLAGS) \
+  $(OCTAVE_GUI_CPPFLAGS)
+
+src_octave_gui_LDADD = \
+  $(OCTAVE_GUI_LIBS) \
+  $(OCTAVE_CORE_LIBS) \
+  $(OCTAVE_GUI_LINK_DEPS)
+
+src_octave_gui_LDFLAGS = \
+  $(NO_UNDEFINED_LDFLAG) \
+  $(OCTAVE_GUI_LINK_OPTS)
+
+src_octave_gui_CXXFLAGS = \
+  $(AM_CXXFLAGS) \
+  $(WARN_CXXFLAGS)
+
+src_mkoctfile_SOURCES =
+
+nodist_src_mkoctfile_SOURCES = src/mkoctfile.cc
+
+src_mkoctfile_LDADD = $(top_builddir)/libgnu/libgnu.la $(LIBS)
+
+src_mkoctfile_CPPFLAGS = \
+  $(SRC_DIR_CPPFLAGS) \
+  $(OCTAVE_CPPFLAGS)
+
+src_mkoctfile_CXXFLAGS = \
+  $(AM_CXXFLAGS) \
+  $(WARN_CXXFLAGS)
+
+src_octave_config_SOURCES =
+
+nodist_src_octave_config_SOURCES = src/octave-config.cc
+
+src_octave_config_LDADD = \
+  $(top_builddir)/libinterp/corefcn/libcorefcn.la \
+  $(top_builddir)/libgnu/libgnu.la \
+  $(LIBS)
+
+src_octave_config_CPPFLAGS = \
+  $(SRC_DIR_CPPFLAGS) \
+  $(OCTAVE_CPPFLAGS)
+
+src_octave_config_CXXFLAGS = \
+  $(AM_CXXFLAGS) \
+  $(WARN_CXXFLAGS)
+
+DIRSTAMP_FILES += src/$(octave_dirstamp)
+
+if AMCOND_CROSS_TOOLS
+
+## Building cross mkoctfile.
+
+OCTAVE_CROSS_TOOLS += src/$(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) -Dgnulib='' -Doctave_idx_type=int $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) src/$(host_triplet)-mkoctfile.cc
+
+src/$(host_triplet)-mkoctfile.cc: src/mkoctfile.in.cc Makefile src/$(octave_dirstamp)
+	$(AM_V_GEN)$(do_subst_cross_config_vals)
+
+## Building cross octave-config.
+
+OCTAVE_CROSS_TOOLS += src/$(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) -Dgnulib='' -Doctave_idx_type=int $(DEFAULT_INCLUDES) $(BUILD_CXXFLAGS) $(BUILD_LDFLAGS) src/$(host_triplet)-octave-config.cc
+
+src/$(host_triplet)-octave-config.cc: src/octave-config.in.cc Makefile src/$(octave_dirstamp)
+	$(AM_V_GEN)$(do_subst_default_vals)
+
+mostlyclean-local:
+	-rm -f $(OCTAVE_CROSS_TOOLS)
+
+endif
+
+src/octave-config.cc: src/octave-config.in.cc Makefile src/$(octave_dirstamp)
+	$(AM_V_GEN)$(do_subst_default_vals)
+
+src/mkoctfile.cc: src/mkoctfile.in.cc Makefile src/$(octave_dirstamp)
+	$(AM_V_GEN)$(do_subst_config_vals)
+
+## main.cc must depend on Makefile.  Calling configure may change
+## default/config values.  However, calling configure will also
+## regenerate the Makefiles from Makefile.am and trigger the rules below.
+
+src/main.cc: src/main.in.cc Makefile src/$(octave_dirstamp)
+	$(AM_V_GEN)$(do_subst_default_vals)
+
+ALL_LOCAL_TARGETS += $(OCTAVE_VERSION_LINKS) $(OCTAVE_CROSS_TOOLS)
+
+install-exec-hook: make-version-links
+
+uninstall-local: remove-version-links
+
+make-version-links:
+	cd $(DESTDIR)$(bindir) && \
+	for f in $(basename $(bin_PROGRAMS)); do \
+	  mv $$f$(EXEEXT) $$f-$(version)$(EXEEXT) && \
+	    $(LN_S) $$f-$(version)$(EXEEXT) $$f$(EXEEXT); \
+	done
+
+remove-version-links:
+	for f in $(basename $(bin_PROGRAMS)); do \
+	  rm -f $(DESTDIR)$(bindir)/$$f-$(version)$(EXEEXT); \
+	done
+
+.PHONY: make-version-links remove-version-links
+
+## We need these file names 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)
+	$(AM_V_GEN)rm -f $@ && \
+	$(LN_S) $< $@
+
+src/octave-gui-$(version)$(EXEEXT): src/octave-gui$(EXEEXT)
+	$(AM_V_GEN)rm -f $@ && \
+	$(LN_S) $< $@
+
+CLEANFILES += \
+  $(OCTAVE_VERSION_LINKS)
--- a/test/module.mk	Wed Jul 08 12:55:10 2015 -0400
+++ b/test/module.mk	Thu Jul 09 10:11:41 2015 -0400
@@ -51,11 +51,11 @@
 test/.gdbinit: etc/gdbinit
 	@$(gdbinit_install_rule)
 
-check-local: 
+check-local: $(GENERATED_TEST_FILES) $(OCTAVE_INTERPRETER_TARGETS) test/$(octave_dirstamp)
 	cd test && ../run-octave $(RUN_OCTAVE_OPTIONS) --norc --silent --no-history $(abs_top_srcdir)/test/fntests.m $(abs_top_srcdir)/test
 
 if AMCOND_HAVE_LLVM
-check-jit: test/sparse.tst test/bc-overload-tests.stamp test/$(octave_dirstamp)
+check-jit: $(GENERATED_TEST_FILES) $(OCTAVE_INTERPRETER_TARGETS) test/$(octave_dirstamp)
 	cd test && ../run-octave $(RUN_OCTAVE_OPTIONS) --jit-compiler --norc --silent --no-history $(abs_top_srcdir)/test/fntests.m $(abs_top_srcdir)/test
 endif
 
@@ -77,6 +77,8 @@
 	$(srcdir)/test/build-bc-overload-tests.sh test $(srcdir)/test/bc-overloads-expected && \
 	touch $@
 
+GENERATED_TEST_FILES = test/sparse.tst test/bc-overload-tests.stamp
+
 BUILT_SOURCES += \
   test/sparse.tst \
   test/bc-overload-tests.stamp