diff --git a/src/Makefile.am b/src/Makefile.am
index f362ca794692dfd7d9c8297719bc72235036a862..6bbd9c62c127ca194512ae06bb906cfbc5bede64 100755
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -17,7 +17,7 @@ include $(srcdir)/am_doxygen.am
 
 # ZMAP_SRC_DIRS See configure.ac
 
-SUBDIRS = $(ZMAP_SRC_DIRS) include lib
+SUBDIRS = $(ZMAP_SRC_DIRS) include lib $(CANVAS_TESTING)
 
 CLEANFILES = $(pkgconfig_DATA)
 
diff --git a/src/configure.ac b/src/configure.ac
index 4adf5147d51d98a1df07534ad7ca71b5935255a4..d921be16f1bc3a1d66410c42c17ad7a794961fa1 100755
--- a/src/configure.ac
+++ b/src/configure.ac
@@ -141,6 +141,29 @@ AC_PROG_LN_S
 GTK2_MODULES="pango >= 0.1 gtk+-2.0 >= 2.4.0 glib-2.0 gthread-2.0"
 PKG_CHECK_MODULES([GTK], [${GTK2_MODULES}])
 
+CANVAS_TESTING=""
+GTK2_MODULES="gtk+-2.0 >= 2.10.0"
+PKG_CHECK_MODULES([LATESTGTK], [${GTK2_MODULES}], [
+  CANVAS_TESTING="canvas_choice"
+  AC_MSG_RESULT([Found GTK 2.10])
+], [
+  CANVAS_TESTING=""
+  AC_MSG_RESULT([GTK 2.10 not found.])
+])
+
+AC_SUBST([CANVAS_TESTING])
+
+DEMO_CANVAS_MODULES="crcanvas >= 0.12 goocanvas >= 0.7 geocanvas >= 1.0.7"
+PKG_CHECK_MODULES([DEMO_CANVAS], [${DEMO_CANVAS_MODULES}], [
+  AC_MSG_RESULT([Found Canvases])
+], [
+  if test "x$CANVAS_TESTING" != "x"; then
+    AC_MSG_ERROR([Are you sure?])
+  else
+    AC_MSG_RESULT([Canvases not found, but neither was GTK 2.10])
+  fi                               
+])
+
 dnl This has to go here for our nfs mounted mac....    
 if test "$zmap_os_type" = "darwin" && -d /Users/zmap/nfs_mount; then
   PKG_CONFIG="$PKG_CONFIG --define-variable=MOUNT_POINT=/Users/zmap/nfs_mount"
@@ -185,6 +208,9 @@ AC_SUBST(ACECONN_CFLAGS)
 AC_SUBST(ACECONN_LIBS)
 AC_SUBST(GTK_CFLAGS)
 AC_SUBST(GTK_LIBS)
+AC_SUBST(DEMO_CANVAS_CFLAGS)
+AC_SUBST(DEMO_CANVAS_LIBS)
+
 # keep track for rpath
 #RPATH=""
 #full_paths="${FOOCANVAS_LIBS} ${ACECONN_LIBS} ${GTK_LIBS}"
@@ -276,6 +302,7 @@ done
 AC_SUBST(ZMAP_SRC_DIRS_DOXYGEN)
 
 AC_CONFIG_FILES([Makefile
+canvas_choice/Makefile
 zmapApp/Makefile
 zmapConfig/Makefile
 zmapControl/Makefile