Add configure switches for Xaw vs GTK.
authorH.G. Muller <h.g.muller@hccnet.nl>
Fri, 26 Oct 2012 08:28:59 +0000 (10:28 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Tue, 6 Nov 2012 11:45:07 +0000 (12:45 +0100)
This patch is an adapted version of the one Arun made at the end of the
gtk2 branch. It uses the exact same version of his configure.ac, but the
Makefile.am is adapted to the situation in master at the beginning of it,
after duplication of the X11 front-end files in the xaw directory for
preserving them, while the versions that will be modified to GTK front-end
are still in the xboard directory.

Makefile.am
configure.ac

index e3af927..d86aba3 100644 (file)
@@ -1,3 +1,5 @@
+bin_PROGRAMS = xboard
+
 ### if we are compiling with ZIPPY we need some extra source files
 
 if ZIPPY
@@ -6,8 +8,23 @@ else
   ZPY =
 endif
 
-bin_PROGRAMS = xboard
-xboard_SOURCES = backend.c backend.h backendz.h \
+### define sources for the front-end and backend
+
+GTKsources = xboard.c  xevalgraph.c  xgamelist.c \
+             xhistory.c  xoptions.c  xboard.h  \
+             xengineoutput.c  xevalgraph.h  xgamelist.h \
+             xhistory.h
+
+Xsources   = xaw/xboard.c xaw/xboard.h \
+             xaw/xedittags.c xaw/xedittags.h \
+             xaw/xengineoutput.c \
+             xaw/xevalgraph.c xaw/xevalgraph.h \
+             xaw/xgamelist.c xaw/xgamelist.h \
+             xaw/xhistory.c xaw/xhistory.h \
+             xaw/xoptions.c
+             
+
+backendsources = backend.c backend.h backendz.h \
                 book.c \
                 childio.c childio.h \
                 common.h \
@@ -19,21 +36,33 @@ xboard_SOURCES = backend.c backend.h backendz.h \
                 parser.c parser.h \
                 pgntags.c \
                 uci.c \
-                xaw/xboard.c xaw/xboard.h args.h menus.c menus.h \
+                args.h \
+                board.c board.h \
                 draw.c draw.h \
+                dialogs.c dialogs.h \
+                engineoutput.c nengineoutput.c engineoutput.h \
+                evalgraph.c evalgraph.h \
+                history.c \
+                menus.c menus.h \
                 usounds.c usystem.c usystem.h \
-                board.c board.h \
-                xaw/xedittags.c xaw/xedittags.h \
-                engineoutput.c engineoutput.h \
-                nengineoutput.c xaw/xengineoutput.c \
-                evalgraph.c evalgraph.h xaw/xevalgraph.c xaw/xevalgraph.h\
-                xaw/xgamelist.c xaw/xgamelist.h\
-                history.c xaw/xhistory.c xaw/xhistory.h \
-                xaw/xoptions.c dialogs.c dialogs.h \
                 $(ZPY)
+
+### combine sources depending on front-end
+
+if withGTK
+  xboard_SOURCES = $(backendsources) $(GTKsources)
+endif
+if withXaw
+  xboard_SOURCES = $(backendsources) $(Xsources)
+  headers = -I xaw
+endif
+
+###
+
 SUBDIRS = po
-xboard_LDADD = -lm @XAW_LIBS@ @X_LIBS@ @LIBINTL@ @CAIRO_LIBS@
-EXTRA_DIST = pixmaps shogi sounds winboard bitmaps\
+xboard_LDADD = -lm @X_LIBS@ @LIBINTL@ @FRONTEND_LIBS@ @CAIRO_LIBS@
+
+EXTRA_DIST = pixmaps shogi png sounds winboard \
        xboard.texi gpl.texinfo texi2man texinfo.tex xboard.man xboard.desktop \
        xboard-fen-viewer.desktop  xboard-pgn-viewer.desktop  xboard-tourney.desktop xboard.xml \
        COPYRIGHT FAQ.html engine-intf.html ics-parsing.txt readme.htm zippy.README \
@@ -41,8 +70,8 @@ EXTRA_DIST = pixmaps shogi sounds winboard bitmaps\
 
 DISTCLEANFILES = stamp-h
 
-AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @CAIRO_CFLAGS@ @X_CFLAGS@  -DSYSCONFDIR='"$(sysconfdir)"' \
-           -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' -I xaw
+AM_CPPFLAGS=-DINFODIR='"$(infodir)"' @CAIRO_CFLAGS@ @FRONTEND_CFLAGS@  -DSYSCONFDIR='"$(sysconfdir)"' \
+           -DLOCALEDIR='"$(localedir)"' -DSVGDIR='"$(svgdir)"' $(headers)
 
 ACLOCAL_AMFLAGS = -I m4
 
@@ -55,7 +84,6 @@ man6_MANS = xboard.man
 
 sysconf_DATA = xboard.conf
 
-
 ### icon files
 
 icondir = $(datadir)/icons/hicolor/48x48/apps
@@ -126,7 +154,7 @@ dist_pixmaps_DATA = pixmaps/cross32.xpm pixmaps/cross48.xpm pixmaps/board32.xpm
 ### directory and files for pngs
 
 pngdir = $(datadir)/games/xboard/themes/textures
-dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png
+dist_png_DATA = png/hatch.png png/wood_d.png png/wood_l.png png/xqboard.png
 
 ### directory and files for sound files
 
index c9ef734..12a210c 100644 (file)
@@ -28,7 +28,7 @@ dnl| to regenerate configure.  Then submit your changes to be folded into
 dnl| the standard version of xboard.
 
 dnl| define second argument as VERSION.PATCHLEVEL. e.g. 4.4.0j
-AC_INIT([xboard],[master-20121021],[bug-xboard@gnu.org])
+AC_INIT([xboard],[master-20120930],[bug-xboard@gnu.org])
 
 dnl| need this to be able to compile some files in a subdir (filebrowser)
 AM_INIT_AUTOMAKE([subdir-objects])
@@ -119,73 +119,101 @@ AC_TRY_COMPILE([],[],
   AC_MSG_RESULT(no)
   CFLAGS="$SAVE_CFLAGS")
 
+dnl | check for cairo and librsvg
 
-dnl | check for X-libraries
-AC_PATH_XTRA
-if test -n "$no_x" ; then
-  echo $PACKAGE requires the X Window System header files and libraries!
-  echo They were not found on your system.  See FAQ topic C.2.
-  echo configure failed
-  exit 1
-fi
-
-save_cflags="$CFLAGS"
-save_cppflags="$CPPFLAGS"
-CFLAGS="$CFLAGS $X_CFLAGS"
-CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-AC_CHECK_HEADER(X11/Intrinsic.h,xt="yes",xt="no")
-CFLAGS="$save_cflags"
-CPPFLAGS="$save_cppflags"
+PKG_CHECK_MODULES([CAIRO], [ cairo >= 1.2.0 librsvg-2.0 >= 2.14.0 ])
+AC_SUBST(CAIRO_CFLAGS)
+AC_SUBST(CAIRO_LIBS)
 
-if test "$xt" = "no" ; then
-   echo Xt headers not found
-   exit 1
-fi
+dnl | check which front end to use
+dnl | first check for gtk
+dnl | then for Xaw3d
+dnl | and then for Xaw
+FRONTEND_CFLAGS=""
+FRONTEND_LIBS=""
 
-dnl | test if user wants ot use Xaw3d or Xaw
+AC_ARG_WITH([gtk],
+            [AS_HELP_STRING([--with-gtk],[use GTK front-end (experimental)])],
+            [with_GTK=yes],
+            [with_GTK=no])
 
-dnl | add configure option for Xaw3d
 AC_ARG_WITH([Xaw3d],
-            [AS_HELP_STRING([--with-Xaw3d],[use Xaw3d instead of Xaw])],
-            [],
+            [AS_HELP_STRING([--with-Xaw3d],[use Xaw3d front-end (not fully supported anymore)])],
+            [with_Xaw3d=yes],
             [with_Xaw3d=no])
 
+AC_ARG_WITH([Xaw],
+            [AS_HELP_STRING([--with-Xaw],[use Xaw front-end (default)])],
+            [with_Xaw=yes],
+            [with_Xaw=no])
+
+dnl | make results available in Makefile.am
+AM_CONDITIONAL([withGTK],   [test x"$with_GTK" = x"yes"])
+AM_CONDITIONAL([withXaw],   [test x"$with_Xaw3d" = x"yes"])
+AM_CONDITIONAL([withXaw],   [test x"$with_Xaw" = x"yes"])
+
+dnl | check for libraries
+if test x"$with_GTK" = x"yes" ; then
+  PKG_CHECK_MODULES([GTK], [ gtk+-2.0 >= 2.16.0 gmodule-2.0 ])
+  FRONTEND_CFLAGS=$GTK_CFLAGS
+  FRONTEND_LIBS=$GTK_LIBS
+fi
+
+if test x"$with_GTK" = x"no" ; then
+
+dnl | general check for Xaw and Xaw3d
+  AC_PATH_XTRA
+  if test -n "$no_x" ; then
+    AC_MSG_ERROR([ "    $PACKAGE requires the X Window System header files and libraries!
+    They were not found on your system.  See FAQ topic C.2.
+    configure failed"])
+  fi
+
+  save_cflags="$CFLAGS"
+  save_cppflags="$CPPFLAGS"
+  CFLAGS="$CFLAGS $X_CFLAGS"
+  CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+  AC_CHECK_HEADER([X11/Intrinsic.h],[xt="yes"],[xt="no"])
+  CFLAGS="$save_cflags"
+  CPPFLAGS="$save_cppflags"
+
+  if test "$xt" = "no" ; then
+     AC_MSG_ERROR([Xt headers not found. Please install the X11 packages.])
+  fi
+
 dnl | check availability of Xaw3d
-XAW_LIBS=
-AS_IF([test x"$with_Xaw3d" != x"no"],
-      [AC_CHECK_LIB([Xaw3d],
+  FRONTEND_LIBS=
+  AS_IF([test x"$with_Xaw3d" != x"no"],
+           [AC_CHECK_LIB([Xaw3d],
                     [XawTextReplace],
-                    [AC_SUBST([XAW_LIBS],["-lXaw3d"])
-                     AC_DEFINE([USE_XAW3D], [1],
-                               [Define if you want to use Xaw3d])],
+                    [ FRONTEND_LIBS="-lXaw3d"
+                      AC_DEFINE([USE_XAW3D], [1], [Define if you want to use Xaw3d])],
                     [AC_MSG_ERROR([--with-Xaw3d was given, but test for Xaw3d failed. Make sure that you have Xaw3d installed, else you might want to try the configure option --without-Xaw3d])],
                               [-lXaw])])
-dnl | no Xaw3d, check for Xaw
-if test x"$with_Xaw3d" = x"no" ; then
-   save_cflags="$CFLAGS"
-   save_cppflags="$CPPFLAGS"
-   CFLAGS="$CFLAGS $X_CFLAGS"
-   CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-   AC_CHECK_HEADER(X11/Xaw/Dialog.h,xaw_headers="yes", xaw_headers="no")
-   CFLAGS="$save_cflags"
-   CPPFLAGS="$save_cppflags"
-   if test x"$xaw_headers" = x"no" ; then
-      AC_MSG_ERROR([Xaw headers not found. Please install the Xaw package and headers.])
-   fi
-   XAW_LIBS="-lXaw"
-fi
-AC_SUBST(XAW_LIBS)
 
-dnl | end Xaw/Xaw3d test
+dnl | no Xaw3d, check for Xaw
+  if test x"$with_Xaw3d" = x"no" ; then
+     save_cflags="$CFLAGS"
+     save_cppflags="$CPPFLAGS"
+     CFLAGS="$CFLAGS $X_CFLAGS"
+     CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+     AC_CHECK_HEADER([X11/Xaw/Dialog.h],[xaw_headers="yes"], [xaw_headers="no"])
+     CFLAGS="$save_cflags"
+     CPPFLAGS="$save_cppflags"
+
+     if test x"$xaw_headers" = x"no" ; then
+        AC_MSG_ERROR([Xaw headers not found. Please install the Xaw package and headers.])
+     fi
+
+     FRONTEND_LIBS="-lXaw"
+  fi
 
-dnl | check for cairo and librsvg
-CAIRO_REQUIRED=1.2.0
-LIBRSVG_REQUIRED=2.14.0
+fi
 
+AC_SUBST(FRONTEND_CFLAGS)
+AC_SUBST(FRONTEND_LIBS)
 
-PKG_CHECK_MODULES(CAIRO, cairo >= $CAIRO_REQUIRED librsvg-2.0 >= $LIBRSVG_REQUIRED)
-AC_SUBST(CAIRO_CFLAGS)
-AC_SUBST(CAIRO_LIBS)
+dnl | end Front-end check
 
 AC_CANONICAL_HOST
 
@@ -487,7 +515,9 @@ echo "        update mimedb:   $enable_mimedb"
 echo ""
 echo "        NLS support:     $USE_NLS"
 echo ""
+echo "        GTK:             $with_GTK"
 echo "        Xaw3d:           $with_Xaw3d"
+echo "        Xaw:             $with_Xaw"
 echo ""
 echo "        xpm:             $enable_xpm"
 echo "        ptys:            $enable_ptys"