summaryrefslogtreecommitdiff
path: root/m4/ax_check_glu.m4
diff options
context:
space:
mode:
authorPeter Simons <simons@cryp.to>2008-10-08 00:32:23 +0200
committerPeter Simons <simons@cryp.to>2008-10-08 00:32:23 +0200
commitd3e9b1463db867d2c396e0349fd62169c17f9954 (patch)
treeea16c1813e55132d98ac9c7e1558d33b127ec797 /m4/ax_check_glu.m4
parent207c725f5c1814dcfca4b30e7ba4f16a573031f2 (diff)
downloadautoconf-archive-d3e9b1463db867d2c396e0349fd62169c17f9954.tar.gz
AX_CHECK_GL: updated to latest versions from Braden McDaniel
Diffstat (limited to 'm4/ax_check_glu.m4')
-rw-r--r--m4/ax_check_glu.m4179
1 files changed, 124 insertions, 55 deletions
diff --git a/m4/ax_check_glu.m4 b/m4/ax_check_glu.m4
index c5405b7..5a31d45 100644
--- a/m4/ax_check_glu.m4
+++ b/m4/ax_check_glu.m4
@@ -10,76 +10,145 @@
#
# 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. This macro adds the configure option
-# "--with-apple-opengl-framework", which users can use to indicate that
-# Apple's OpenGL framework should be used on Mac OS X. If Apple's OpenGL
-# framework is used, the symbol "HAVE_APPLE_OPENGL_FRAMEWORK" is defined.
-# If no GLU implementation is found, "no_glu" is set to "yes".
+# 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".
#
# LAST MODIFICATION
#
-# 2008-04-12
+# 2008-10-07
#
# COPYLEFT
#
# Copyright (c) 2008 Braden McDaniel <braden@endoframe.com>
#
-# Copying and distribution of this file, with or without modification, are
-# permitted in any medium without royalty provided the copyright notice
-# and this notice are preserved.
+# 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 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([AX_CHECK_GLU],
[AC_REQUIRE([AX_CHECK_GL])dnl
AC_REQUIRE([AC_PROG_CXX])dnl
GLU_CFLAGS="${GL_CFLAGS}"
-if test "X${with_apple_opengl_framework}" != "Xyes"; then
- 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}"
- LIBS=""
- ax_check_libs="-lglu32 -lGLU"
- for ax_lib in ${ax_check_libs}; do
- if test X$ax_compiler_ms = Xyes; then
- ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
- else
- ax_try_lib="${ax_lib}"
- fi
- LIBS="${ax_try_lib} ${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++])
- if test X$ax_compiler_ms = Xyes; then
- AC_LANG_PUSH([C])
- fi
- AC_LINK_IFELSE(
- [AC_LANG_PROGRAM([[
-# if HAVE_WINDOWS_H && defined(_WIN32)
+
+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
-# include <GL/glu.h>]],
- [[gluBeginCurve(0)]])],
- [ax_cv_check_glu_libglu="${ax_try_lib}"; break])
- if test X$ax_compiler_ms = Xyes; then
- AC_LANG_POP([C])
- fi
- AC_LANG_POP([C++])
- done
- LIBS=${ax_save_LIBS}
- CPPFLAGS=${ax_save_CPPFLAGS}])
- if test "X${ax_cv_check_glu_libglu}" = "Xno"; then
- no_glu="yes"
- GLU_CFLAGS=""
- GLU_LIBS=""
- else
- GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"
- fi
-fi
+# 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.
+#
+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],
+[ax_cv_varargs_glu_tesscb=no
+ax_save_CFLAGS="$CFLAGS"
+CFLAGS="$GL_CFLAGS $CFLAGS"
+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])
+CFLAGS="$ax_save_CFLAGS"])
+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])])])
])