diff --git a/m4/gltools.m4 b/m4/gltools.m4
new file mode 100644
index 0000000000000000000000000000000000000000..f2ad881518dc3bd65c41b0c5b2fa6b631b5dd3e3
--- /dev/null
+++ b/m4/gltools.m4
@@ -0,0 +1,29 @@
+#
+# check for gltools and stuff
+#
+
+AC_DEFUN([ALBERTA_GLTOOLS_CHECK],
+[AC_REQUIRE([ALBERTA_OPENGL_CHECK])
+ALBERTA_CHECK_PACKAGE([gltools],[gltools],[],[$OPENGL_ALL_LIB],
+                      [glwin.h],[],[],[optional enabled])
+if ! test "z${GLTOOLS_LIB}" = "z"; then
+    AC_MSG_CHECKING([for gltools version])
+    AC_LANG_PUSH([C])
+    ac_al_save_CPPFLAGS="${CPPFLAGS}"
+    CPPFLAGS="`eval eval eval echo ${GLTOOLS_ALL_INCLUDES}` ${CPPFLAGS}" 
+    AC_COMPILE_IFELSE(
+	[AC_LANG_PROGRAM([[#include <glmesh.h>
+			static glMesh m;
+			static glmLoopCallback fptr;
+			static glmSimplexCallback splxcb;]],
+		[[fptr(m, (void *)0, splxcb, (int)0)]])],
+	[AC_MSG_RESULT([using cH's special hacked gltools version])
+	    AC_DEFINE([HAVE_GLMLOOPCALLBACK_COORDS_ONLY], 1,
+		[Define if glmLoopCallback accepts an "coords_only" argument.])],
+	[AC_MSG_RESULT([using vanilla gltools version])
+	    AC_DEFINE([HAVE_GLMLOOPCALLBACK_COORDS_ONLY], 0,
+		[Define if glmLoopCallback accepts an "coords_only" argument.])])
+    CPPFLAGS="${ac_al_save_CPPFLAGS}"
+    AC_LANG_POP([C])
+fi])
+