changeset 15118:3735a0e783cb gui

more tweaks for the gui build * configure.ac (HAVE_QT, GUIDIR): New variables. Don't run qmake unless it is found. Don't check for moc, uic, or rcc unless qmake is available. List Qt headers and libraries in summary message. * Makefile.am (SUBDIRS): Add @GUIDIR@ to the list. * common.mk (do_subst_config_vals): Substitute OCTAVE_CONF_QT_INCDIR and OCTAVE_CONF_QT_LIBDIR. * gui/src/Makefile.am: Simplify pattern rule for moc files. (octave_gui_CPPFLAGS): = Include -I@QT_INCDIR@ in the list. (octave_gui_LDADD): Include ../../liboctave/liboctave.la and ../../libcruft/libcruft.la in the list. (libqterminal_la_CPPFLAGS): Include -I@QT_INCDIR@ in the list. * toplev.cc (octave_config_info): New struct fields, QT_INCDIR and QT_LIBDIR. * oct-conf.in.h (OCTAVE_CONF_QT_INCDIR, OCTAVE_CONF_QT_LIBDIR): New macros.
author John W. Eaton <jwe@octave.org>
date Sun, 05 Aug 2012 16:43:55 -0400
parents 3d7a7ae53bbf
children 16a6b0a6855d
files Makefile.am build-aux/common.mk configure.ac gui/src/Makefile.am src/interpfcn/toplev.cc src/oct-conf.in.h
diffstat 6 files changed, 43 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/Makefile.am
+++ b/Makefile.am
@@ -68,7 +68,7 @@
 include m4/module.mk
 
 # Subdirectories in which to run `make all'.
-SUBDIRS = libgnu libcruft liboctave src scripts @DOCDIR@ examples test
+SUBDIRS = libgnu libcruft liboctave src @GUIDIR@ scripts @DOCDIR@ examples test
 
 if OCTAVE_GUI
 SUBDIRS += gui
--- a/build-aux/common.mk
+++ b/build-aux/common.mk
@@ -569,6 +569,8 @@
   -e "s|%OCTAVE_CONF_QRUPDATE_CPPFLAGS%|\"${QRUPDATE_CPPFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_QRUPDATE_LDFLAGS%|\"${QRUPDATE_LDFLAGS}\"|" \
   -e "s|%OCTAVE_CONF_QRUPDATE_LIBS%|\"${QRUPDATE_LIBS}\"|" \
+  -e "s|%OCTAVE_CONF_QT_INCDIR%|\"${QT_INCDIR}\"|" \
+  -e "s|%OCTAVE_CONF_QT_LIBDIR%|\"${QT_LIBDIR}\"|" \
   -e "s|%OCTAVE_CONF_RANLIB%|\"${RANLIB}\"|" \
   -e "s|%OCTAVE_CONF_RDYNAMIC_FLAG%|\"${RDYNAMIC_FLAG}\"|" \
   -e "s|%OCTAVE_CONF_READLINE_LIBS%|\"${READLINE_LIBS}\"|" \
--- a/configure.ac
+++ b/configure.ac
@@ -2132,19 +2132,26 @@
 
 ### GUI/Qt related tests.
 
-AC_CHECK_PROGS(MOC, [moc moc-qt4 moc-qt5])
-AC_CHECK_PROGS(UIC, [uic uic-qt4 uic-qt5])
-AC_CHECK_PROGS(RCC, [rcc])
+HAVE_QT=false
+GUIDIR=
+QT_INCDIR=
+QT_LIBDIR=
 AC_CHECK_PROGS(QMAKE, [qmake qmake-qt4 qmake-qt5])
-
-AC_SUBST(MOC)
-AC_SUBST(UIC)
-
-QT_INCDIR=`$QMAKE -query | sed -n -e 's/^QT_INSTALL_HEADERS://p'`
-QT_LIBDIR=`$QMAKE -query | sed -n -e 's/^QT_INSTALL_LIBS://p'`
-
+if test -n "$QMAKE"; then
+  QT_INCDIR=`$QMAKE -query | sed -n -e 's/^QT_INSTALL_HEADERS://p'`
+  QT_LIBDIR=`$QMAKE -query | sed -n -e 's/^QT_INSTALL_LIBS://p'`
+  AC_CHECK_PROGS(MOC, [moc moc-qt4 moc-qt5])
+  AC_CHECK_PROGS(UIC, [uic uic-qt4 uic-qt5])
+  AC_CHECK_PROGS(RCC, [rcc])
+  if test -n "$MOC" && test -n "$UIC" && test -n "$RCC"; then
+    HAVE_QT=true
+    AC_DEFINE([HAVE_QT], 1, [Define to 1 if Qt is available (must have moc, uic, and rcc programs and developer header files and libraries installed)])
+    GUIDIR=gui
+  fi
+fi
 AC_SUBST(QT_INCDIR)
 AC_SUBST(QT_LIBDIR)
+AC_SUBST(GUIDIR)
   
 case "$canonical_host_type" in
   *-*-mingw* | *-*-msdosmsvc*) win32_terminal=yes ;;
@@ -2420,6 +2427,8 @@
   QHULL LDFLAGS:               $QHULL_LDFLAGS
   QHULL libraries:             $QHULL_LIBS
   QRUPDATE libraries:          $QRUPDATE_LIBS
+  Qt headers:                  $QT_INCDIR
+  Qt libraries:                $QT_LIBDIR
   READLINE libraries:          $READLINE_LIBS
   REGEX libraries:             $REGEX_LIBS
   TERM libraries:              $TERM_LIBS
--- a/gui/src/Makefile.am
+++ b/gui/src/Makefile.am
@@ -1,12 +1,9 @@
-define MOC_template =
-$(1)/moc_%.cpp: $(1)/%.h
-	test -d $(1) || mkdir -p $(1)
-	@MOC@ -o$$@ $$(DEFS) $$(DEFAULT_INCLUDES) $$(INCLUDES) $$(AM_CPPFLAGS) $$(CPPFLAGS) $$(octave_gui_CPPFLAGS) $$<
-endef
-
 SRCDIRS = m-editor qtinfo octave-adapter \
 	  ../qterminal/libqterminal/unix ../qterminal/libqterminal/win32 ../qterminal/libqterminal ../qterminal
-$(foreach dir,. $(SRCDIRS),$(eval $(call MOC_template,$(dir))))
+
+moc_%.cpp: %.h
+	test -d $(@D) || mkdir -p $(@D)
+	@MOC@ -o$@ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(octave_gui_CPPFLAGS) $<
 
 ui_%.h: %.ui
 	@UIC@ -o $@ $<
@@ -65,7 +62,8 @@
 		     qtinfo/webinfo.cc
 nodist_octave_gui_SOURCES = $(octave_gui_MOC) $(octave_gui_RC)
 
-octave_gui_CPPFLAGS = -I@QT_INCDIR@/QtCore \
+octave_gui_CPPFLAGS = -I@QT_INCDIR@ \
+                      -I@QT_INCDIR@/QtCore \
 		      -I@QT_INCDIR@/QtGui \
 		      -I@QT_INCDIR@/QtNetwork \
 		      -I$(srcdir)/../qterminal/libqterminal \
@@ -84,7 +82,10 @@
 		      -I$(srcdir)/../../src/parse-tree
 
 octave_gui_LDADD = libqterminal.la \
-		   ../../src/liboctinterp.la
+		   ../../src/liboctinterp.la \
+                   ../../liboctave/liboctave.la \
+                   ../../libcruft/libcruft.la
+
 octave_gui_LDFLAGS = -L@QT_LIBDIR@ -lQtCore -lQtGui -lQtNetwork -lqscintilla2
 
 noinst_HEADERS = \
@@ -152,6 +153,7 @@
 		  ../qterminal/libqterminal/unix/TerminalView.h
 
 libqterminal_la_CPPFLAGS = $(DEFS)  \
+			   -I@QT_INCDIR@ \
 			   -I@QT_INCDIR@/QtCore \
 			   -I@QT_INCDIR@/QtGui \
 			   -I$(srcdir)/../qterminal/libqterminal
--- a/src/interpfcn/toplev.cc
+++ b/src/interpfcn/toplev.cc
@@ -1342,6 +1342,8 @@
       { false, "QRUPDATE_CPPFLAGS", OCTAVE_CONF_QRUPDATE_CPPFLAGS },
       { false, "QRUPDATE_LDFLAGS", OCTAVE_CONF_QRUPDATE_LDFLAGS },
       { false, "QRUPDATE_LIBS", OCTAVE_CONF_QRUPDATE_LIBS },
+      { false, "QT_INCDIR", OCTAVE_CONF_QT_INCDIR },
+      { false, "QT_LIBDIR", OCTAVE_CONF_QT_LIBDIR },
       { false, "RANLIB", OCTAVE_CONF_RANLIB },
       { false, "RDYNAMIC_FLAG", OCTAVE_CONF_RDYNAMIC_FLAG },
       { false, "READLINE_LIBS", OCTAVE_CONF_READLINE_LIBS },
--- a/src/oct-conf.in.h
+++ b/src/oct-conf.in.h
@@ -464,6 +464,14 @@
 #define OCTAVE_CONF_QRUPDATE_LIBS %OCTAVE_CONF_QRUPDATE_LIBS%
 #endif
 
+#ifndef OCTAVE_CONF_QT_INCDIR
+#define OCTAVE_CONF_QT_INCDIR %OCTAVE_CONF_QT_INCDIR%
+#endif
+
+#ifndef OCTAVE_CONF_QT_LIBDIR
+#define OCTAVE_CONF_QT_LIBDIR %OCTAVE_CONF_QT_LIBDIR%
+#endif
+
 #ifndef OCTAVE_CONF_RANLIB
 #define OCTAVE_CONF_RANLIB %OCTAVE_CONF_RANLIB%
 #endif