[gtkglext] Use AX_CHECK_GLU to check for OpenGL.



commit 1bda390aa27ea860d09d48e5c0fbd5ea1b36054a
Author: Braden McDaniel <bmcdaniel turketron local>
Date:   Thu Dec 17 21:04:27 2009 -0500

    Use AX_CHECK_GLU to check for OpenGL.

 configure.ac                    |  321 +++++++--------------------------------
 m4macros/acx_pthread.m4         |  275 +++++++++++++++++++++++++++++++++
 m4macros/ax_check_gl.m4         |  120 +++++++++++++++
 m4macros/ax_check_glu.m4        |  135 ++++++++++++++++
 m4macros/ax_lang_compiler_ms.m4 |   41 +++++
 5 files changed, 624 insertions(+), 268 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index fcb45cd..b4dc8ae 100644
--- a/configure.ac
+++ b/configure.ac
@@ -100,6 +100,7 @@ AC_SUBST([LT_CURRENT_MINUS_AGE])
 
 dnl Initialize libtool
 AM_PROG_CC_C_O
+AC_PROG_CXX
 AC_PROG_CPP
 #AM_DISABLE_STATIC
 AC_LIBTOOL_WIN32_DLL
@@ -208,20 +209,58 @@ AC_SUBST([LIBTOOL_EXPORT_OPTIONS])
 
 AC_CHECK_HEADERS([inttypes.h stdlib.h string.h])
 
-AC_PATH_XTRA
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-save_LIBS="$LIBS"
-LIBS="$LIBS $X_LIBS -lXext -lX11 $X_EXTRA_LIBS"
-AC_CHECK_HEADERS([X11/Xmu/StdCmap.h Xmu/StdCmap.h], , ,
-                 [#include <X11/Xlib.h>
-                  #include <X11/Xutil.h>])
-AC_CHECK_LIB([Xmu], [XmuLookupStandardColormap], , ,
-             [-lXt $X_PRE_LIBS])
-AC_CHECK_HEADERS([GL/glx.h])
-AC_CHECK_HEADERS([GL/gl.h GL/glu.h])
-CPPFLAGS="$save_CPPFLAGS"
-LIBS="$save_LIBS"
+AX_CHECK_GLU
+# Checks for some types in gdk/GL/glxext.h
+
+# GLXFBConfigSGIX
+GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=no
+AC_CHECK_TYPES([GLXFBConfigSGIX], , ,
+               [#include <GL/glx.h>])
+if test "x$ac_cv_type_GLXFBConfigSGIX" = "xno" ; then
+  GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=yes
+fi
+
+# GLXFBConfigIDSGIX
+GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=no
+AC_CHECK_TYPES([GLXFBConfigIDSGIX], , ,
+               [#include <GL/glx.h>])
+if test "x$ac_cv_type_GLXFBConfigIDSGIX" = "xno" ; then
+  GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=yes
+fi
+
+# GLXPbufferSGIX
+GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=no
+AC_CHECK_TYPES([GLXPbufferSGIX], , ,
+               [#include <GL/glx.h>])
+if test "x$ac_cv_type_GLXPbufferSGIX" = "xno" ; then
+  GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=yes
+fi
+
+# GLXVideoSourceSGIX
+GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=no
+AC_CHECK_TYPES([GLXVideoSourceSGIX], , ,
+               [#include <GL/glx.h>])
+if test "x$ac_cv_type_GLXVideoSourceSGIX" = "xno" ; then
+  GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=yes
+fi
+
+# __GLXextFuncPtr
+GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=no
+AC_CHECK_TYPES([__GLXextFuncPtr], , ,
+               [#include <GL/glx.h>])
+if test "x$ac_cv_type___GLXextFuncPtr" = "xno" ; then
+  GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=yes
+fi
+
+# Checks for typedefs in gdk/GL/glext.h
+
+# GLhalfNV
+GDKGLEXT_NEED_GLHALFNV_TYPEDEF=no
+AC_CHECK_TYPES([GLhalfNV], , ,
+               [#include <GL/gl.h>])
+if test "x$ac_cv_type_GLhalfNV" = "xno" ; then
+  GDKGLEXT_NEED_GLHALFNV_TYPEDEF=yes
+fi
 
 PKG_CHECK_MODULES([GTK], [gtk+-2.0 >= 2.4], ,
                   [AS_IF([test -z "${GTK_LIBS+x}"],
@@ -284,260 +323,6 @@ AM_CONDITIONAL([MULTIHEAD_SUPPORT],
                [test "x$GDKGLEXT_MULTIHEAD_SUPPORT" = "xyes"])
 
 
-
-##################################################
-# Checks for OpenGL
-##################################################
-
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $WINDOWING_CFLAGS"
-save_LIBS="$LIBS"
-LIBS="$LIBS $WINDOWING_LIBS $MATH_LIB"
-
-if test "x$gdktarget" = "xx11"; then
-
-  # for X11
-
-  THREAD_LIB="-lpthread"
-  STDCXX_LIB="-lstdc++"
-
-  have_GL=no
-  GL_LIB_NAME=GL
-
-  # GLcore and GL (SGI)
-  AC_CHECK_LIB([GLcore], [glVertex3d],
-               [GL_LIBS="-lGLcore"])
-  if test "x$ac_cv_lib_GLcore_glVertex3d" = "xyes" ; then
-    # if GLcore found, then also check for GL
-    AC_CHECK_LIB([GL], [glXCreateContext],
-                 [GL_LIBS="-lGL $GL_LIBS"
-                  have_GL=yes])
-  fi
-
-  # GL
-  if test "x$have_GL" = "xno" ; then
-    # if no GLcore and GL, check for GL
-    AC_CHECK_LIB([GL], [glVertex3d],
-                 [GL_LIBS="-lGL"
-                  have_GL=yes])
-    if test "x$ac_cv_lib_GL_glVertex3d" = "xno" ; then
-      # GL may need to be linked with the thread library explicitly
-      AC_CHECK_LIB([GL], [glVertex3f],
-                   [GL_LIBS="-lGL $THREAD_LIB"
-                    have_GL=yes], ,
-                   [$THREAD_LIB])
-      if test "x$ac_cv_lib_GL_glVertex3f" = "xno" ; then
-        # GL may need to be linked with std C++ library explicitly
-        AC_CHECK_LIB([GL], [glVertex3i],
-                     [GL_LIBS="-lGL $STDCXX_LIB"
-                      have_GL=yes], ,
-                     [$STDCXX_LIB])
-        if test "x$ac_cv_lib_GL_glVertex3i" = "xno" ; then
-          # GL may need to be linked with std C++ and thread libraries explicitly
-          AC_CHECK_LIB([GL], [glVertex3s],
-                       [GL_LIBS="-lGL $STDCXX_LIB $THREAD_LIB"
-                        have_GL=yes], ,
-                       [$STDCXX_LIB $THREAD_LIB])
-        fi
-      fi
-    fi
-  fi
-
-  # MesaGL
-  if test "x$have_GL" = "xno" ; then
-    # if no GL, check for MesaGL
-    AC_CHECK_LIB([MesaGL], [glVertex3d],
-                 [GL_LIBS="-lMesaGL"
-                  have_GL=yes
-                  GL_LIB_NAME=MesaGL])
-  fi
-
-  if test "x$have_GL" = "xno" ; then
-    # no GL found
-    AC_MSG_ERROR([Cannot find GL library])
-  fi
-
-  # GLU
-
-  have_GLU=no
-  have_SGI_GLU=no
-
-  AC_CHECK_LIB([GLU], [gluSphere],
-               [GL_LIBS="-lGLU $GL_LIBS"
-                have_GLU=yes], ,
-               [$GL_LIBS])
-  if test "x$ac_cv_lib_GLU_gluSphere" = "xno" ; then
-    # GLU may need to be linked with the thread library explicitly
-    AC_CHECK_LIB([GLU], [gluCylinder],
-                 [GL_LIBS="-lGLU $GL_LIBS $THREAD_LIB"
-                  have_GLU=yes], ,
-                 [$GL_LIBS $THREAD_LIB])
-    if test "x$ac_cv_lib_GLU_gluCylinder" = "xno" ; then
-      # GLU may need to be linked with std C++ library explicitly
-      AC_CHECK_LIB([GLU], [gluDisk],
-                   [GL_LIBS="-lGLU $GL_LIBS $STDCXX_LIB"
-                    have_GLU=yes
-                    have_SGI_GLU=yes], ,
-                   [$GL_LIBS $STDCXX_LIB])
-      if test "x$ac_cv_lib_GLU_gluDisk" = "xno" ; then
-        # GLU may need to be linked with std C++ and thread libraries explicitly
-        AC_CHECK_LIB([GLU], [gluPartialDisk],
-                     [GL_LIBS="-lGLU $GL_LIBS $STDCXX_LIB $THREAD_LIB"
-                      have_GLU=yes
-                      have_SGI_GLU=yes], ,
-                     [$GL_LIBS $STDCXX_LIB $THREAD_LIB])
-      fi
-    fi
-  fi
-
-  if test "x$have_GLU" = "xno" ; then
-    # if no GLU, check for MesaGLU
-    AC_CHECK_LIB([MesaGLU], [gluSphere],
-                 [GL_LIBS="-lMesaGLU $GL_LIBS"
-                  have_GLU=yes], ,
-                 [$GL_LIBS])
-  fi
-
-  if test "x$have_GLU" = "xno" ; then
-    # no GLU found
-    AC_MSG_ERROR([Cannot find GLU library])
-  fi
-
-  # Checks for SGI's GLU library
-  if test "x$have_SGI_GLU" = "xno" ; then
-    # Try static linking
-    save_LDFLAGS="$LDFLAGS"
-    LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static"
-
-    AC_CHECK_LIB([GLU], [gluBeginCurve],
-                 [have_SGI_GLU=no], ,
-                 [$GL_LIBS])
-    if test "x$ac_cv_lib_GLU_gluBeginCurve" = "xno" ; then
-      AC_CHECK_LIB([GLU], [gluBeginPolygon],
-                   [GL_LIBS="$GL_LIBS $STDCXX_LIB"
-                    have_SGI_GLU=yes], ,
-                   [$GL_LIBS $STDCXX_LIB])
-    fi
-
-    LDFLAGS="$save_LDFLAGS"
-  fi
-
-  AC_MSG_CHECKING([whether libGLU needs to be linked with the std C++ library])
-  AC_MSG_RESULT([$have_SGI_GLU])
-
-  # Checks for some types in gdk/GL/glxext.h
-
-  # GLXFBConfigSGIX
-  GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=no
-  AC_CHECK_TYPES([GLXFBConfigSGIX], , ,
-                 [#include <GL/glx.h>])
-  if test "x$ac_cv_type_GLXFBConfigSGIX" = "xno" ; then
-    GDKGLEXT_NEED_GLXFBCONFIGSGIX_TYPEDEF=yes
-  fi
-
-  # GLXFBConfigIDSGIX
-  GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=no
-  AC_CHECK_TYPES([GLXFBConfigIDSGIX], , ,
-                 [#include <GL/glx.h>])
-  if test "x$ac_cv_type_GLXFBConfigIDSGIX" = "xno" ; then
-    GDKGLEXT_NEED_GLXFBCONFIGIDSGIX_TYPEDEF=yes
-  fi
-
-  # GLXPbufferSGIX
-  GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=no
-  AC_CHECK_TYPES([GLXPbufferSGIX], , ,
-                 [#include <GL/glx.h>])
-  if test "x$ac_cv_type_GLXPbufferSGIX" = "xno" ; then
-    GDKGLEXT_NEED_GLXPBUFFERSGIX_TYPEDEF=yes
-  fi
-
-  # GLXVideoSourceSGIX
-  GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=no
-  AC_CHECK_TYPES([GLXVideoSourceSGIX], , ,
-                 [#include <GL/glx.h>])
-  if test "x$ac_cv_type_GLXVideoSourceSGIX" = "xno" ; then
-    GDKGLEXT_NEED_GLXVIDEOSOURCESGIX_TYPEDEF=yes
-  fi
-
-  # __GLXextFuncPtr
-  GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=no
-  AC_CHECK_TYPES([__GLXextFuncPtr], , ,
-                 [#include <GL/glx.h>])
-  if test "x$ac_cv_type___GLXextFuncPtr" = "xno" ; then
-    GDKGLEXT_NEED_GLXEXTFUNCPTR_TYPEDEF=yes
-  fi
-
-else
-
-  # for Win32
-
-  AC_MSG_CHECKING([for glNewList in -lopengl32])
-  have_opengl32=no
-  LIBS="-lopengl32 $LIBS"
-  AC_TRY_LINK([#include <windows.h>
-               #include <GL/gl.h>], 
-              [glVertex3d(0.0, 0.0, 0.0);], 
-              [GL_LIBS="-lopengl32"
-               have_opengl32=yes])
-  AC_MSG_RESULT([$have_opengl32])
-  if test "x$have_opengl32" = "xno" ; then
-    AC_MSG_ERROR([Cannot find GL library])
-  fi
-
-  AC_MSG_CHECKING([for gluNewQuadric in -lglu32])
-  have_glu32=no
-  LIBS="-lglu32 $LIBS"
-  AC_TRY_LINK([#include <windows.h>
-               #include <GL/gl.h>
-               #include <GL/glu.h>], 
-              [gluNewQuadric();], 
-              [GL_LIBS="-lglu32 $GL_LIBS"
-               have_glu32=yes])
-  AC_MSG_RESULT([$have_glu32])
-  if test "x$have_glu32" = "xno" ; then
-    AC_MSG_ERROR([Cannot find GLU library])
-  fi
-
-dnl   AC_CHECK_LIB(opengl32, glNewList,
-dnl                GL_LIBS="-lopengl32",
-dnl                AC_MSG_ERROR(Cannot find GL library))
-
-dnl   AC_CHECK_LIB(glu32, gluNewQuadric,
-dnl                GL_LIBS="-lglu32 $GL_LIBS",
-dnl                AC_MSG_ERROR(Cannot find GLU library),
-dnl                $GL_LIBS)
-
-fi
-
-dnl # if using mesa, check for xmesa.h
-dnl if test "x$ac_cv_lib_MesaGL_glNewList" = "xyes" ; then
-dnl   AC_CHECK_HEADERS([GL/xmesa.h])
-dnl   AM_CONDITIONAL(ENABLE_XMESA_FX, \
-dnl                  test "x$ac_cv_header_GL_xmesa_h" = "xyes")
-dnl else
-dnl   # force a failed check
-dnl   AM_CONDITIONAL(ENABLE_XMESA_FX, test "no" = "yes")
-dnl fi
-
-# Checks for typedefs in gdk/GL/glext.h
-
-# GLhalfNV
-GDKGLEXT_NEED_GLHALFNV_TYPEDEF=no
-AC_CHECK_TYPES([GLhalfNV], , ,
-               [#include <GL/gl.h>])
-if test "x$ac_cv_type_GLhalfNV" = "xno" ; then
-  GDKGLEXT_NEED_GLHALFNV_TYPEDEF=yes
-fi
-
-GL_LIBS="$GL_LDFLAGS $GL_LIBS"
-
-AC_SUBST([GL_CFLAGS])
-AC_SUBST([GL_LIBS])
-
-CPPFLAGS="$save_CPPFLAGS"
-LIBS="$save_LIBS"
-
-
 # define a MAINT-like variable REBUILD which is set if Perl
 # and awk are found, so autogenerated sources can be rebuilt
 
diff --git a/m4macros/acx_pthread.m4 b/m4macros/acx_pthread.m4
new file mode 100644
index 0000000..eb09f5a
--- /dev/null
+++ b/m4macros/acx_pthread.m4
@@ -0,0 +1,275 @@
+# ===========================================================================
+#              http://autoconf-archive.cryp.to/acx_pthread.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+#   ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
+#
+# DESCRIPTION
+#
+#   This macro figures out how to build C programs using POSIX threads. It
+#   sets the PTHREAD_LIBS output variable to the threads library and linker
+#   flags, and the PTHREAD_CFLAGS output variable to any special C compiler
+#   flags that are needed. (The user can also force certain compiler
+#   flags/libs to be tested by setting these environment variables.)
+#
+#   Also sets PTHREAD_CC to any special C compiler that is needed for
+#   multi-threaded programs (defaults to the value of CC otherwise). (This
+#   is necessary on AIX to use the special cc_r compiler alias.)
+#
+#   NOTE: You are assumed to not only compile your program with these flags,
+#   but also link it with them as well. e.g. you should link with
+#   $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
+#
+#   If you are only building threads programs, you may wish to use these
+#   variables in your default LIBS, CFLAGS, and CC:
+#
+#          LIBS="$PTHREAD_LIBS $LIBS"
+#          CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+#          CC="$PTHREAD_CC"
+#
+#   In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
+#   has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
+#   (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+#
+#   ACTION-IF-FOUND is a list of shell commands to run if a threads library
+#   is found, and ACTION-IF-NOT-FOUND is a list of commands to run it if it
+#   is not found. If ACTION-IF-FOUND is not specified, the default action
+#   will define HAVE_PTHREAD.
+#
+#   Please let the authors know if this macro fails on any platform, or if
+#   you have any other suggestions or comments. This macro was based on work
+#   by SGJ on autoconf scripts for FFTW (http://www.fftw.org/) (with help
+#   from M. Frigo), as well as ac_pthread and hb_pthread macros posted by
+#   Alejandro Forero Cuervo to the autoconf macro repository. We are also
+#   grateful for the helpful feedback of numerous users.
+#
+# LAST MODIFICATION
+#
+#   2008-04-12
+#
+# COPYLEFT
+#
+#   Copyright (c) 2008 Steven G. Johnson <stevenj alum mit edu>
+#
+#   This program 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.
+#
+#   This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#   As a special exception, the respective Autoconf Macro's copyright owner
+#   gives unlimited permission to copy, distribute and modify the configure
+#   scripts that are the output of Autoconf when processing the Macro. You
+#   need not follow the terms of the GNU General Public License when using
+#   or distributing such scripts, even though portions of the text of the
+#   Macro appear in them. The GNU General Public License (GPL) does govern
+#   all other use of the material that constitutes the Autoconf Macro.
+#
+#   This special exception to the GPL applies to versions of the Autoconf
+#   Macro released by the Autoconf Macro Archive. When you make and
+#   distribute a modified version of the Autoconf Macro, you may extend this
+#   special exception to the GPL to apply to your modified version as well.
+
+AC_DEFUN([ACX_PTHREAD], [
+AC_REQUIRE([AC_CANONICAL_HOST])
+AC_LANG_SAVE
+AC_LANG_C
+acx_pthread_ok=no
+
+# We used to check for pthread.h first, but this fails if pthread.h
+# requires special compiler flags (e.g. on True64 or Sequent).
+# It gets checked for in the link test anyway.
+
+# First of all, check if the user has set any of the PTHREAD_LIBS,
+# etcetera environment variables, and if threads linking works using
+# them:
+if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
+        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test x"$acx_pthread_ok" = xno; then
+                PTHREAD_LIBS=""
+                PTHREAD_CFLAGS=""
+        fi
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+fi
+
+# We must check for the threads library under a number of different
+# names; the ordering is very important because some systems
+# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
+# libraries is broken (non-POSIX).
+
+# Create a list of thread flags to try.  Items starting with a "-" are
+# C compiler flags, and other items are library names, except for "none"
+# which indicates that we try without any flags at all, and "pthread-config"
+# which is a program returning the flags for the Pth emulation library.
+
+acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+
+# The ordering *is* (sometimes) important.  Some notes on the
+# individual items follow:
+
+# pthreads: AIX (must check this before -lpthread)
+# none: in case threads are in libc; should be tried before -Kthread and
+#       other compiler flags to prevent continual compiler warnings
+# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
+# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
+# -pthreads: Solaris/gcc
+# -mthreads: Mingw32/gcc, Lynx/gcc
+# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
+#      doesn't hurt to check since this sometimes defines pthreads too;
+#      also defines -D_REENTRANT)
+#      ... -mt is also the pthreads flag for HP/aCC
+# pthread: Linux, etcetera
+# --thread-safe: KAI C++
+# pthread-config: use pthread-config program (for GNU Pth library)
+
+case "${host_cpu}-${host_os}" in
+        *solaris*)
+
+        # On Solaris (at least, for some versions), libc contains stubbed
+        # (non-functional) versions of the pthreads routines, so link-based
+        # tests will erroneously succeed.  (We need to link with -pthreads/-mt/
+        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
+        # a function called by this macro, so we could check for that, but
+        # who knows whether they'll stub that too in a future libc.)  So,
+        # we'll just look for -pthreads and -lpthread first:
+
+        acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags"
+        ;;
+esac
+
+if test x"$acx_pthread_ok" = xno; then
+for flag in $acx_pthread_flags; do
+
+        case $flag in
+                none)
+                AC_MSG_CHECKING([whether pthreads work without any flags])
+                ;;
+
+                -*)
+                AC_MSG_CHECKING([whether pthreads work with $flag])
+                PTHREAD_CFLAGS="$flag"
+                ;;
+
+		pthread-config)
+		AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
+		if test x"$acx_pthread_config" = xno; then continue; fi
+		PTHREAD_CFLAGS="`pthread-config --cflags`"
+		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
+		;;
+
+                *)
+                AC_MSG_CHECKING([for the pthreads library -l$flag])
+                PTHREAD_LIBS="-l$flag"
+                ;;
+        esac
+
+        save_LIBS="$LIBS"
+        save_CFLAGS="$CFLAGS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Check for various functions.  We must include pthread.h,
+        # since some functions may be macros.  (On the Sequent, we
+        # need a special flag -Kthread to make this header compile.)
+        # We check for pthread_join because it is in -lpthread on IRIX
+        # while pthread_create is in libc.  We check for pthread_attr_init
+        # due to DEC craziness with -lpthreads.  We check for
+        # pthread_cleanup_push because it is one of the few pthread
+        # functions on Solaris that doesn't have a non-functional libc stub.
+        # We try pthread_create on general principles.
+        AC_TRY_LINK([#include <pthread.h>],
+                    [pthread_t th; pthread_join(th, 0);
+                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
+                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
+                    [acx_pthread_ok=yes])
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        AC_MSG_RESULT($acx_pthread_ok)
+        if test "x$acx_pthread_ok" = xyes; then
+                break;
+        fi
+
+        PTHREAD_LIBS=""
+        PTHREAD_CFLAGS=""
+done
+fi
+
+# Various other checks:
+if test "x$acx_pthread_ok" = xyes; then
+        save_LIBS="$LIBS"
+        LIBS="$PTHREAD_LIBS $LIBS"
+        save_CFLAGS="$CFLAGS"
+        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+
+        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
+	AC_MSG_CHECKING([for joinable pthread attribute])
+	attr_name=unknown
+	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+	    AC_TRY_LINK([#include <pthread.h>], [int attr=$attr; return attr;],
+                        [attr_name=$attr; break])
+	done
+        AC_MSG_RESULT($attr_name)
+        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
+                               [Define to necessary symbol if this constant
+                                uses a non-standard name on your system.])
+        fi
+
+        AC_MSG_CHECKING([if more special flags are required for pthreads])
+        flag=no
+        case "${host_cpu}-${host_os}" in
+            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
+            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
+        esac
+        AC_MSG_RESULT(${flag})
+        if test "x$flag" != xno; then
+            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
+        fi
+
+        LIBS="$save_LIBS"
+        CFLAGS="$save_CFLAGS"
+
+        # More AIX lossage: must compile with xlc_r or cc_r
+	if test x"$GCC" != xyes; then
+          AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
+        else
+          PTHREAD_CC=$CC
+	fi
+else
+        PTHREAD_CC="$CC"
+fi
+
+AC_SUBST(PTHREAD_LIBS)
+AC_SUBST(PTHREAD_CFLAGS)
+AC_SUBST(PTHREAD_CC)
+
+# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
+if test x"$acx_pthread_ok" = xyes; then
+        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
+        :
+else
+        acx_pthread_ok=no
+        $2
+fi
+AC_LANG_RESTORE
+])dnl ACX_PTHREAD
diff --git a/m4macros/ax_check_gl.m4 b/m4macros/ax_check_gl.m4
new file mode 100644
index 0000000..89702e6
--- /dev/null
+++ b/m4macros/ax_check_gl.m4
@@ -0,0 +1,120 @@
+# -*- mode: autoconf -*-
+#
+# AX_CHECK_GL
+#
+# Check for an OpenGL implementation.  If GL is found, the required compiler
+# and linker flags are included in the output variables "GL_CFLAGS" and
+# "GL_LIBS", respectively.  If no usable GL implementation is found, "no_gl"
+# is set to "yes".
+#
+# If the header "GL/gl.h" is found, "HAVE_GL_GL_H" is defined.  If the header
+# "OpenGL/gl.h" is found, HAVE_OPENGL_GL_H is defined.  These preprocessor
+# definitions may not be mutually exclusive.
+#
+# version: 2.4
+# author: Braden McDaniel <braden endoframe com>
+#
+# This program 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 2, or (at your option)
+# any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception, the you may copy, distribute and modify the
+# configure scripts that are the output of Autoconf when processing
+# the Macro.  You need not follow the terms of the GNU General Public
+# License when using or distributing such scripts.
+#
+AC_DEFUN([AX_CHECK_GL],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_PATH_X])dnl
+AC_REQUIRE([AC_PROG_SED])dnl
+AC_REQUIRE([ACX_PTHREAD])dnl
+
+AC_LANG_PUSH([C])
+AX_LANG_COMPILER_MS
+AS_IF([test X$ax_compiler_ms = Xno],
+      [GL_CFLAGS="${PTHREAD_CFLAGS}"; GL_LIBS="${PTHREAD_LIBS} -lm"])
+
+#
+# Use x_includes and x_libraries if they have been set (presumably by
+# AC_PATH_X).
+#
+AS_IF([test X$no_x != Xyes],
+      [AS_IF([test -n "$x_includes"],
+             [GL_CFLAGS="-I$x_includes $GL_CFLAGS"])]
+       AS_IF([test -n "$x_libraries"],
+             [GL_LIBS="-L$x_libraries -lX11 $GL_LIBS"]))
+
+ax_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$GL_CFLAGS $CPPFLAGS"
+AC_CHECK_HEADERS([GL/gl.h OpenGL/gl.h])
+CPPFLAGS=$ax_save_CPPFLAGS
+
+AC_CHECK_HEADERS([windows.h])
+
+m4_define([AX_CHECK_GL_PROGRAM],
+          [AC_LANG_PROGRAM([[
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GL_H
+#   include <GL/gl.h>
+# elif defined(HAVE_OPENGL_GL_H)
+#   include <OpenGL/gl.h>
+# else
+#   error no gl.h
+# endif]],
+                           [[glBegin(0)]])])
+
+AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
+[ax_cv_check_gl_libgl=no
+case $host_cpu in
+  x86_64) ax_check_gl_libdir=lib64 ;;
+  *)      ax_check_gl_libdir=lib ;;
+esac
+ax_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$GL_CFLAGS $CPPFLAGS"
+ax_save_LIBS=$LIBS
+LIBS=""
+ax_check_libs="-lopengl32 -lGL"
+for ax_lib in $ax_check_libs; do
+  AS_IF([test X$ax_compiler_ms = Xyes],
+        [ax_try_lib=`echo $ax_lib | $SED -e 's/^-l//' -e 's/$/.lib/'`],
+        [ax_try_lib=$ax_lib])
+  LIBS="$ax_try_lib $GL_LIBS $ax_save_LIBS"
+AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+               [ax_cv_check_gl_libgl=$ax_try_lib; break],
+               [ax_check_gl_nvidia_flags="-L/usr/$ax_check_gl_libdir/nvidia" LIBS="$ax_try_lib $ax_check_gl_nvidia_flags $GL_LIBS $ax_save_LIBS"
+               AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+                              [ax_cv_check_gl_libgl="$ax_try_lib $ax_check_gl_nvidia_flags"; break],
+                              [ax_check_gl_dylib_flag='-dylib_file /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib:/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib' LIBS="$ax_try_lib $ax_check_gl_dylib_flag $GL_LIBS $ax_save_LIBS"
+                              AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+                                             [ax_cv_check_gl_libgl="$ax_try_lib $ax_check_gl_dylib_flag"; break])])])
+done
+
+AS_IF([test "X$ax_cv_check_gl_libgl" = Xno -a X$no_x = Xyes],
+      [LIBS='-framework OpenGL'
+      AC_LINK_IFELSE([AX_CHECK_GL_PROGRAM],
+                     [ax_cv_check_gl_libgl=$LIBS])])
+
+LIBS=$ax_save_LIBS
+CPPFLAGS=$ax_save_CPPFLAGS])
+
+AS_IF([test "X$ax_cv_check_gl_libgl" = Xno],
+      [no_gl=yes; GL_CFLAGS=""; GL_LIBS=""],
+      [GL_LIBS="$ax_cv_check_gl_libgl $GL_LIBS"])
+AC_LANG_POP([C])
+
+AC_SUBST([GL_CFLAGS])
+AC_SUBST([GL_LIBS])
+])dnl
diff --git a/m4macros/ax_check_glu.m4 b/m4macros/ax_check_glu.m4
new file mode 100644
index 0000000..f5201e2
--- /dev/null
+++ b/m4macros/ax_check_glu.m4
@@ -0,0 +1,135 @@
+# -*- mode: autoconf -*-
+#
+# AX_CHECK_GLU
+#
+# Check for GLU.  If GLU is found, the required preprocessor and linker flags
+# are included in the output variables "GLU_CFLAGS" and "GLU_LIBS",
+# respectively.  If no GLU implementation is found, "no_glu" is set to "yes".
+#
+# If the header "GL/glu.h" is found, "HAVE_GL_GLU_H" is defined.  If the
+# header "OpenGL/glu.h" is found, HAVE_OPENGL_GLU_H is defined.  These
+# preprocessor definitions may not be mutually exclusive.
+#
+# Some implementations (in particular, some versions of Mac OS X) are known
+# to treat the GLU tesselator callback function type as "GLvoid (*)(...)"
+# rather than the standard "GLvoid (*)()".  If the former condition is
+# detected, this macro defines "HAVE_VARARGS_GLU_TESSCB".
+#
+# version: 2.2
+# author: Braden McDaniel <braden endoframe com>
+#
+# This program 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 2, or (at your option)
+# any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception, the you may copy, distribute and modify the
+# configure scripts that are the output of Autoconf when processing
+# the Macro.  You need not follow the terms of the GNU General Public
+# License when using or distributing such scripts.
+#
+AC_DEFUN([AX_CHECK_GLU],
+[AC_REQUIRE([AX_CHECK_GL])dnl
+AC_REQUIRE([AC_PROG_CXX])dnl
+GLU_CFLAGS=$GL_CFLAGS
+
+ax_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$GL_CFLAGS $CPPFLAGS"
+AC_CHECK_HEADERS([GL/glu.h OpenGL/glu.h])
+CPPFLAGS=$ax_save_CPPFLAGS
+
+m4_define([AX_CHECK_GLU_PROGRAM],
+          [AC_LANG_PROGRAM([[
+# if defined(HAVE_WINDOWS_H) && defined(_WIN32)
+#   include <windows.h>
+# endif
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# elif defined(HAVE_OPENGL_GLU_H)
+#   include <OpenGL/glu.h>
+# else
+#   error no glu.h
+# endif]],
+                           [[gluBeginCurve(0)]])])
+
+AC_CACHE_CHECK([for OpenGL Utility library], [ax_cv_check_glu_libglu],
+[ax_cv_check_glu_libglu=no
+ax_save_CPPFLAGS=$CPPFLAGS
+CPPFLAGS="$GL_CFLAGS $CPPFLAGS"
+ax_save_LIBS=$LIBS
+
+#
+# First, check for the possibility that everything we need is already in
+# GL_LIBS.
+#
+LIBS="$GL_LIBS $ax_save_LIBS"
+#
+# libGLU typically links with libstdc++ on POSIX platforms.
+# However, setting the language to C++ means that test program
+# source is named "conftest.cc"; and Microsoft cl doesn't know what
+# to do with such a file.
+#
+AC_LANG_PUSH([C++])
+AS_IF([test X$ax_compiler_ms = Xyes],
+      [AC_LANG_PUSH([C])])
+AC_LINK_IFELSE([AX_CHECK_GLU_PROGRAM],
+               [ax_cv_check_glu_libglu=yes],
+               [LIBS=""
+               ax_check_libs="-lglu32 -lGLU"
+               for ax_lib in ${ax_check_libs}; do
+                 AS_IF([test X$ax_compiler_ms = Xyes],
+                       [ax_try_lib=`echo $ax_lib | $SED -e 's/^-l//' -e 's/$/.lib/'`],
+                       [ax_try_lib=$ax_lib])
+                 LIBS="$ax_try_lib $GL_LIBS $ax_save_LIBS"
+                 AC_LINK_IFELSE([AX_CHECK_GLU_PROGRAM],
+                                [ax_cv_check_glu_libglu=$ax_try_lib; break])
+               done])
+AS_IF([test X$ax_compiler_ms = Xyes],
+      [AC_LANG_POP([C])])
+AC_LANG_POP([C++])
+
+LIBS=$ax_save_LIBS
+CPPFLAGS=$ax_save_CPPFLAGS])
+AS_IF([test "X$ax_cv_check_glu_libglu" = Xno],
+      [no_glu=yes; GLU_CFLAGS=""; GLU_LIBS=""],
+      [AS_IF([test "X$ax_cv_check_glu_libglu" = Xyes],
+             [GLU_LIBS=$GL_LIBS],
+             [GLU_LIBS="$ax_cv_check_glu_libglu $GL_LIBS"])])
+AC_SUBST([GLU_CFLAGS])
+AC_SUBST([GLU_LIBS])
+
+#
+# Some versions of Mac OS X include a broken interpretation of the GLU
+# tesselation callback function signature when using the C++ compiler.
+#
+AS_IF([test "X$ax_cv_check_glu_libglu" != Xno],
+      [AC_CACHE_CHECK([for varargs GLU tesselator callback function type],
+                      [ax_cv_varargs_glu_tesscb],
+                      [AC_LANG_PUSH([C++])
+                      ax_cv_varargs_glu_tesscb=no
+                      ax_save_CXXFLAGS=$CXXFLAGS
+                      CXXFLAGS="$GL_CFLAGS $CXXFLAGS"
+                      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+# ifdef HAVE_GL_GLU_H
+#   include <GL/glu.h>
+# else
+#   include <OpenGL/glu.h>
+# endif]],
+                                        [[GLvoid (*func)(...); gluTessCallback(0, 0, func)]])],
+                                        [ax_cv_varargs_glu_tesscb=yes])
+                      CXXFLAGS=$ax_save_CXXFLAGS
+                      AC_LANG_POP([C++])])
+      AS_IF([test X$ax_cv_varargs_glu_tesscb = Xyes],
+            [AC_DEFINE([HAVE_VARARGS_GLU_TESSCB], [1],
+                       [Use nonstandard varargs form for the GLU tesselator callback])])])
+])
diff --git a/m4macros/ax_lang_compiler_ms.m4 b/m4macros/ax_lang_compiler_ms.m4
new file mode 100644
index 0000000..1c85d77
--- /dev/null
+++ b/m4macros/ax_lang_compiler_ms.m4
@@ -0,0 +1,41 @@
+# -*- mode: autoconf -*-
+#
+# Check whether the compiler for the current language is Microsoft.
+#
+# This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU Autoconf
+# implementation.
+#
+# version: 1.0
+# author: Braden McDaniel <braden endoframe com>
+#
+# This program 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 2, or (at your option)
+# any later version.
+#
+# This program 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 this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+#
+# As a special exception, the you may copy, distribute and modify the
+# configure scripts that are the output of Autoconf when processing
+# the Macro.  You need not follow the terms of the GNU General Public
+# License when using or distributing such scripts.
+#
+AC_DEFUN([AX_LANG_COMPILER_MS],
+[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler],
+                [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms],
+[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER
+       choke me
+#endif
+]])],
+                   [ax_compiler_ms=yes],
+                   [ax_compiler_ms=no])
+ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms
+])])



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]