Blame m4/acinclude.m4

Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Message output
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
AC_DEFUN([LOC_MSG],[echo "$1"])
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://www.gnu.org/software/ac-archive/vl_prog_cc_warnings.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis VL_PROG_CC_WARNINGS([ANSI])
Packit 994f1a
dnl
Packit 994f1a
dnl Enables a reasonable set of warnings for the C compiler.
Packit 994f1a
dnl Optionally, if the first argument is nonempty, turns on flags which
Packit 994f1a
dnl enforce and/or enable proper ANSI C if such are known with the
Packit 994f1a
dnl compiler used.
Packit 994f1a
dnl
Packit 994f1a
dnl Currently this macro knows about GCC, Solaris C compiler, Digital
Packit 994f1a
dnl Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C
Packit 994f1a
dnl compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos
Packit 994f1a
dnl 10.0.0.8) C compiler.
Packit 994f1a
dnl
Packit 994f1a
dnl @category C
Packit 994f1a
dnl @author Ville Laurikari <vl@iki.fi>
Packit 994f1a
dnl @version 2002-04-04
Packit 994f1a
dnl @license AllPermissive
Packit 994f1a
Packit 994f1a
AC_DEFUN([VL_PROG_CC_WARNINGS], [
Packit 994f1a
  ansi=$1
Packit 994f1a
  if test -z "$ansi"; then
Packit 994f1a
    msg="for C compiler warning flags"
Packit 994f1a
  else
Packit 994f1a
    msg="for C compiler warning and ANSI conformance flags"
Packit 994f1a
  fi
Packit 994f1a
  AC_CACHE_CHECK($msg, vl_cv_prog_cc_warnings, [
Packit 994f1a
    if test -n "$CC"; then
Packit 994f1a
      cat > conftest.c <
Packit 994f1a
int main(int argc, char **argv) { return 0; }
Packit 994f1a
EOF
Packit 994f1a
Packit 994f1a
      dnl GCC. -W option has been renamed in -wextra in latest gcc versions.
Packit 994f1a
      if test "$GCC" = "yes"; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-Wall -W"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-Wall -W -ansi -pedantic"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl Most compilers print some kind of a version string with some command
Packit 994f1a
      dnl line options (often "-V").  The version string should be checked
Packit 994f1a
      dnl before doing a test compilation run with compiler-specific flags.
Packit 994f1a
      dnl This is because some compilers (like the Cray compiler) only
Packit 994f1a
      dnl produce a warning message for unknown flags instead of returning
Packit 994f1a
      dnl an error, resulting in a false positive.  Also, compilers may do
Packit 994f1a
      dnl erratic things when invoked with flags meant for a different
Packit 994f1a
      dnl compiler.
Packit 994f1a
Packit 994f1a
      dnl Solaris C compiler
Packit 994f1a
      elif $CC -V 2>&1 | grep -i "WorkShop" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -v -Xc conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-v"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-v -Xc"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl Digital Unix C compiler
Packit 994f1a
      elif $CC -V 2>&1 | grep -i "Digital UNIX Compiler" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -verbose -w0 -warnprotos -std1 conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-verbose -w0 -warnprotos -std1"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl C for AIX Compiler
Packit 994f1a
      elif $CC 2>&1 | grep -i "C for AIX Compiler" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -qlanglvl=ansi -qinfo=all conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd -qlanglvl=ansi"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl IRIX C compiler
Packit 994f1a
      elif $CC -version 2>&1 | grep -i "MIPSpro Compilers" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -fullwarn -ansi -ansiE conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-fullwarn"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-fullwarn -ansi -ansiE"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl HP-UX C compiler
Packit 994f1a
      elif what $CC 2>&1 | grep -i "HP C Compiler" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -Aa +w1 conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="+w1"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="+w1 -Aa"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl The NEC SX-5 (Super-UX 10) C compiler
Packit 994f1a
      elif $CC -V 2>&1 | grep "/SX" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -pvctl[,]fullmsg -Xc conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-pvctl[,]fullmsg"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-pvctl[,]fullmsg -Xc"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      dnl The Cray C compiler (Unicos)
Packit 994f1a
      elif $CC -V 2>&1 | grep -i "Cray" > /dev/null 2>&1 &&
Packit 994f1a
           $CC -c -h msglevel 2 conftest.c > /dev/null 2>&1 &&
Packit 994f1a
           test -f conftest.o; then
Packit 994f1a
        if test -z "$ansi"; then
Packit 994f1a
          vl_cv_prog_cc_warnings="-h msglevel 2"
Packit 994f1a
        else
Packit 994f1a
          vl_cv_prog_cc_warnings="-h msglevel 2 -h conform"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
      fi
Packit 994f1a
      rm -f conftest.*
Packit 994f1a
    fi
Packit 994f1a
    if test -n "$vl_cv_prog_cc_warnings"; then
Packit 994f1a
      CFLAGS="$CFLAGS $vl_cv_prog_cc_warnings"
Packit 994f1a
    else
Packit 994f1a
      vl_cv_prog_cc_warnings="unknown"
Packit 994f1a
    fi
Packit 994f1a
  ])
Packit 994f1a
])dnl
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://autoconf-archive.cryp.to/ax_lang_compiler_ms.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis AX_LANG_COMPILER_MS
Packit 994f1a
dnl
Packit 994f1a
dnl Check whether the compiler for the current language is Microsoft.
Packit 994f1a
dnl
Packit 994f1a
dnl This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU
Packit 994f1a
dnl Autoconf implementation.
Packit 994f1a
dnl
Packit 994f1a
dnl @category InstalledPackages
Packit 994f1a
dnl @author Braden McDaniel <braden@endoframe.com>
Packit 994f1a
dnl @version 2004-11-15
Packit 994f1a
dnl @license AllPermissive
Packit 994f1a
Packit 994f1a
AC_DEFUN([AX_LANG_COMPILER_MS],
Packit 994f1a
[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler],
Packit 994f1a
                [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms],
Packit 994f1a
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER
Packit 994f1a
       choke me
Packit 994f1a
#endif
Packit 994f1a
]])],
Packit 994f1a
                   [ax_compiler_ms=yes],
Packit 994f1a
                   [ax_compiler_ms=no])
Packit 994f1a
ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms
Packit 994f1a
])])
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://www.gnu.org/software/ac-archive/ax_check_gl.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis AX_CHECK_GL
Packit 994f1a
dnl
Packit 994f1a
dnl Check for an OpenGL implementation. If GL is found, the required
Packit 994f1a
dnl compiler and linker flags are included in the output variables
Packit 994f1a
dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the
Packit 994f1a
dnl configure option "--with-apple-opengl-framework", which users can
Packit 994f1a
dnl use to indicate that Apple's OpenGL framework should be used on Mac
Packit 994f1a
dnl OS X. If Apple's OpenGL framework is used, the symbol
Packit 994f1a
dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation
Packit 994f1a
dnl is found, "no_gl" is set to "yes".
Packit 994f1a
dnl
Packit 994f1a
dnl @category InstalledPackages
Packit 994f1a
dnl @author Braden McDaniel <braden@endoframe.com>
Packit 994f1a
dnl @version 2004-11-15
Packit 994f1a
dnl @license AllPermissive
Packit 994f1a
Packit 994f1a
AC_DEFUN([AX_CHECK_GL],
Packit 994f1a
[AC_REQUIRE([AC_PATH_X])dnl
Packit 994f1a
AC_REQUIRE([ACX_PTHREAD])dnl
Packit 994f1a
Packit 994f1a
#
Packit 994f1a
# There isn't a reliable way to know we should use the Apple OpenGL framework
Packit 994f1a
# without a configure option.  A Mac OS X user may have installed an
Packit 994f1a
# alternative GL implementation (e.g., Mesa), which may or may not depend on X.
Packit 994f1a
#
Packit 994f1a
AC_ARG_WITH([apple-opengl-framework],
Packit 994f1a
            [AC_HELP_STRING([--with-apple-opengl-framework],
Packit 994f1a
                            [use Apple OpenGL framework (Mac OS X only)])])
Packit 994f1a
if test "X$with_apple_opengl_framework" = "Xyes"; then
Packit 994f1a
  AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1],
Packit 994f1a
            [Use the Apple OpenGL framework.])
Packit 994f1a
  GL_LIBS="-framework OpenGL"
Packit 994f1a
else
Packit 994f1a
  AC_LANG_PUSH(C)
Packit 994f1a
Packit 994f1a
  AX_LANG_COMPILER_MS
Packit 994f1a
  if test X$ax_compiler_ms = Xno; then
Packit 994f1a
    GL_CFLAGS="${PTHREAD_CFLAGS}"
Packit 994f1a
    GL_LIBS="${PTHREAD_LIBS} -lm"
Packit 994f1a
  fi
Packit 994f1a
Packit 994f1a
  #
Packit 994f1a
  # Use x_includes and x_libraries if they have been set (presumably by
Packit 994f1a
  # AC_PATH_X).
Packit 994f1a
  #
Packit 994f1a
  if test "X$no_x" != "Xyes"; then
Packit 994f1a
    if test -n "$x_includes"; then
Packit 994f1a
      GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}"
Packit 994f1a
    fi
Packit 994f1a
    if test -n "$x_libraries"; then
Packit 994f1a
      GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}"
Packit 994f1a
    fi
Packit 994f1a
  fi
Packit 994f1a
Packit 994f1a
  AC_CHECK_HEADERS([windows.h])
Packit 994f1a
Packit 994f1a
  AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl],
Packit 994f1a
  [ax_cv_check_gl_libgl="no"
Packit 994f1a
  ax_save_CPPFLAGS="${CPPFLAGS}"
Packit 994f1a
  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
Packit 994f1a
  ax_save_LIBS="${LIBS}"
Packit 994f1a
  LIBS=""
Packit 994f1a
  ax_check_libs="-lopengl32 -lGL"
Packit 994f1a
  for ax_lib in ${ax_check_libs}; do
Packit 994f1a
    if test X$ax_compiler_ms = Xyes; then
Packit 994f1a
      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
Packit 994f1a
    else
Packit 994f1a
      ax_try_lib="${ax_lib}"
Packit 994f1a
    fi
Packit 994f1a
    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
Packit 994f1a
    AC_LINK_IFELSE(
Packit 994f1a
    [AC_LANG_PROGRAM([[
Packit 994f1a
# if HAVE_WINDOWS_H && defined(_WIN32)
Packit 994f1a
#   include <windows.h>
Packit 994f1a
# endif
Packit 994f1a
# include <GL/gl.h>]],
Packit 994f1a
                     [[glBegin(0)]])],
Packit 994f1a
    [ax_cv_check_gl_libgl="${ax_try_lib}"; break])
Packit 994f1a
  done
Packit 994f1a
  LIBS=${ax_save_LIBS}
Packit 994f1a
  CPPFLAGS=${ax_save_CPPFLAGS}])
Packit 994f1a
Packit 994f1a
  if test "X${ax_cv_check_gl_libgl}" = "Xno"; then
Packit 994f1a
    no_gl="yes"
Packit 994f1a
    GL_CFLAGS=""
Packit 994f1a
    GL_LIBS=""
Packit 994f1a
  else
Packit 994f1a
    GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}"
Packit 994f1a
  fi
Packit 994f1a
  AC_LANG_POP(C)
Packit 994f1a
fi
Packit 994f1a
Packit 994f1a
AC_SUBST([GL_CFLAGS])
Packit 994f1a
AC_SUBST([GL_LIBS])
Packit 994f1a
])dnl
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://www.gnu.org/software/ac-archive/ax_check_glu.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis AX_CHECK_GLU
Packit 994f1a
dnl
Packit 994f1a
dnl Check for GLU. If GLU is found, the required preprocessor and
Packit 994f1a
dnl linker flags are included in the output variables "GLU_CFLAGS" and
Packit 994f1a
dnl "GLU_LIBS", respectively. This macro adds the configure option
Packit 994f1a
dnl "--with-apple-opengl-framework", which users can use to indicate
Packit 994f1a
dnl that Apple's OpenGL framework should be used on Mac OS X. If
Packit 994f1a
dnl Apple's OpenGL framework is used, the symbol
Packit 994f1a
dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GLU implementation
Packit 994f1a
dnl is found, "no_glu" is set to "yes".
Packit 994f1a
dnl
Packit 994f1a
dnl @category InstalledPackages
Packit 994f1a
dnl @author Braden McDaniel <braden@endoframe.com>
Packit 994f1a
dnl @version 2004-11-15
Packit 994f1a
dnl @license AllPermissive
Packit 994f1a
Packit 994f1a
AC_DEFUN([AX_CHECK_GLU],
Packit 994f1a
[AC_REQUIRE([AX_CHECK_GL])dnl
Packit 994f1a
AC_REQUIRE([AC_PROG_CXX])dnl
Packit 994f1a
GLU_CFLAGS="${GL_CFLAGS}"
Packit 994f1a
if test "X${with_apple_opengl_framework}" != "Xyes"; then
Packit 994f1a
  AC_CACHE_CHECK([for OpenGL Utility library], [ax_cv_check_glu_libglu],
Packit 994f1a
  [ax_cv_check_glu_libglu="no"
Packit 994f1a
  ax_save_CPPFLAGS="${CPPFLAGS}"
Packit 994f1a
  CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}"
Packit 994f1a
  ax_save_LIBS="${LIBS}"
Packit 994f1a
  LIBS=""
Packit 994f1a
  ax_check_libs="-lglu32 -lGLU"
Packit 994f1a
  for ax_lib in ${ax_check_libs}; do
Packit 994f1a
    if test X$ax_compiler_ms = Xyes; then
Packit 994f1a
      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
Packit 994f1a
    else
Packit 994f1a
      ax_try_lib="${ax_lib}"
Packit 994f1a
    fi
Packit 994f1a
    LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}"
Packit 994f1a
    #
Packit 994f1a
    # libGLU typically links with libstdc++ on POSIX platforms. However,
Packit 994f1a
    # setting the language to C++ means that test program source is named
Packit 994f1a
    # "conftest.cc"; and Microsoft cl doesn't know what to do with such a
Packit 994f1a
    # file.
Packit 994f1a
    #
Packit 994f1a
    AC_LANG_PUSH([C++])
Packit 994f1a
    if test X$ax_compiler_ms = Xyes; then
Packit 994f1a
      AC_LANG_PUSH([C])
Packit 994f1a
    fi
Packit 994f1a
    AC_LINK_IFELSE(
Packit 994f1a
    [AC_LANG_PROGRAM([[
Packit 994f1a
# if HAVE_WINDOWS_H && defined(_WIN32)
Packit 994f1a
#   include <windows.h>
Packit 994f1a
# endif
Packit 994f1a
# include <GL/glu.h>]],
Packit 994f1a
                     [[gluBeginCurve(0)]])],
Packit 994f1a
    [ax_cv_check_glu_libglu="${ax_try_lib}"; break])
Packit 994f1a
    if test X$ax_compiler_ms = Xyes; then
Packit 994f1a
      AC_LANG_POP([C])
Packit 994f1a
    fi
Packit 994f1a
    AC_LANG_POP([C++])
Packit 994f1a
  done
Packit 994f1a
  LIBS=${ax_save_LIBS}
Packit 994f1a
  CPPFLAGS=${ax_save_CPPFLAGS}])
Packit 994f1a
  if test "X${ax_cv_check_glu_libglu}" = "Xno"; then
Packit 994f1a
    no_glu="yes"
Packit 994f1a
    GLU_CFLAGS=""
Packit 994f1a
    GLU_LIBS=""
Packit 994f1a
  else
Packit 994f1a
    GLU_LIBS="${ax_cv_check_glu_libglu} ${GL_LIBS}"
Packit 994f1a
  fi
Packit 994f1a
fi
Packit 994f1a
AC_SUBST([GLU_CFLAGS])
Packit 994f1a
AC_SUBST([GLU_LIBS])
Packit 994f1a
])
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://www.gnu.org/software/ac-archive/ax_check_glut.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis AX_CHECK_GLUT
Packit 994f1a
dnl
Packit 994f1a
dnl Check for GLUT. If GLUT is found, the required compiler and linker
Packit 994f1a
dnl flags are included in the output variables "GLUT_CFLAGS" and
Packit 994f1a
dnl "GLUT_LIBS", respectively. This macro adds the configure option
Packit 994f1a
dnl "--with-apple-opengl-framework", which users can use to indicate
Packit 994f1a
dnl that Apple's OpenGL framework should be used on Mac OS X. If
Packit 994f1a
dnl Apple's OpenGL framework is used, the symbol
Packit 994f1a
dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If GLUT is not found,
Packit 994f1a
dnl "no_glut" is set to "yes".
Packit 994f1a
dnl
Packit 994f1a
dnl @category InstalledPackages
Packit 994f1a
dnl @author Braden McDaniel <braden@endoframe.com>
Packit 994f1a
dnl @version 2004-11-15
Packit 994f1a
dnl @license AllPermissive
Packit 994f1a
Packit 994f1a
AC_DEFUN([AX_CHECK_GLUT],
Packit 994f1a
[AC_REQUIRE([AX_CHECK_GLU])dnl
Packit 994f1a
AC_REQUIRE([AC_PATH_XTRA])dnl
Packit 994f1a
Packit 994f1a
if test "X$with_apple_opengl_framework" = "Xyes"; then
Packit 994f1a
  GLUT_CFLAGS="${GLU_CFLAGS}"
Packit 994f1a
  GLUT_LIBS="-framework GLUT -lobjc ${GL_LIBS}"
Packit 994f1a
else
Packit 994f1a
  GLUT_CFLAGS=${GLU_CFLAGS}
Packit 994f1a
  GLUT_LIBS=${GLU_LIBS}
Packit 994f1a
Packit 994f1a
  #
Packit 994f1a
  # If X is present, assume GLUT depends on it.
Packit 994f1a
  #
Packit 994f1a
  if test "X${no_x}" != "Xyes"; then
Packit 994f1a
    GLUT_LIBS="${X_PRE_LIBS} -lXmu -lXi ${X_EXTRA_LIBS} ${GLUT_LIBS}"
Packit 994f1a
  fi
Packit 994f1a
Packit 994f1a
  AC_LANG_PUSH(C)
Packit 994f1a
Packit 994f1a
  ax_save_CPPFLAGS="${CPPFLAGS}"
Packit 994f1a
  CPPFLAGS="${GLUT_CFLAGS} ${CPPFLAGS}"
Packit 994f1a
Packit 994f1a
  AC_CACHE_CHECK([for GLUT library], [ax_cv_check_glut_libglut],
Packit 994f1a
  [ax_cv_check_glut_libglut="no"
Packit 994f1a
  ax_save_LIBS="${LIBS}"
Packit 994f1a
  LIBS=""
Packit 994f1a
  ax_check_libs="-lglut32 -lglut"
Packit 994f1a
  for ax_lib in ${ax_check_libs}; do
Packit 994f1a
    if test X$ax_compiler_ms = Xyes; then
Packit 994f1a
      ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
Packit 994f1a
    else
Packit 994f1a
      ax_try_lib="${ax_lib}"
Packit 994f1a
    fi
Packit 994f1a
    LIBS="${ax_try_lib} ${GLUT_LIBS} ${ax_save_LIBS}"
Packit 994f1a
    AC_LINK_IFELSE(
Packit 994f1a
    [AC_LANG_PROGRAM([[
Packit 994f1a
# if HAVE_WINDOWS_H && defined(_WIN32)
Packit 994f1a
#   include <windows.h>
Packit 994f1a
# endif
Packit 994f1a
# include <GL/glut.h>]],
Packit 994f1a
                     [[glutMainLoop()]])],
Packit 994f1a
    [ax_cv_check_glut_libglut="${ax_try_lib}"; break])
Packit 994f1a
Packit 994f1a
  done
Packit 994f1a
  LIBS=${ax_save_LIBS}
Packit 994f1a
  ])
Packit 994f1a
  CPPFLAGS="${ax_save_CPPFLAGS}"
Packit 994f1a
  AC_LANG_POP(C)
Packit 994f1a
Packit 994f1a
  if test "X${ax_cv_check_glut_libglut}" = "Xno"; then
Packit 994f1a
    no_glut="yes"
Packit 994f1a
    GLUT_CFLAGS=""
Packit 994f1a
    GLUT_LIBS=""
Packit 994f1a
  else
Packit 994f1a
    GLUT_LIBS="${ax_cv_check_glut_libglut} ${GLUT_LIBS}"
Packit 994f1a
  fi
Packit 994f1a
fi
Packit 994f1a
Packit 994f1a
AC_SUBST([GLUT_CFLAGS])
Packit 994f1a
AC_SUBST([GLUT_LIBS])
Packit 994f1a
])dnl
Packit 994f1a
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
dnl Available from the GNU Autoconf Macro Archive at:
Packit 994f1a
dnl http://www.gnu.org/software/ac-archive/acx_pthread.html
Packit 994f1a
dnl ---------------------------------------------------------------------------
Packit 994f1a
Packit 994f1a
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
Packit 994f1a
dnl
Packit 994f1a
dnl This macro figures out how to build C programs using POSIX threads.
Packit 994f1a
dnl It sets the PTHREAD_LIBS output variable to the threads library and
Packit 994f1a
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
Packit 994f1a
dnl C compiler flags that are needed. (The user can also force certain
Packit 994f1a
dnl compiler flags/libs to be tested by setting these environment
Packit 994f1a
dnl variables.)
Packit 994f1a
dnl
Packit 994f1a
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
Packit 994f1a
dnl multi-threaded programs (defaults to the value of CC otherwise).
Packit 994f1a
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
Packit 994f1a
dnl
Packit 994f1a
dnl NOTE: You are assumed to not only compile your program with these
Packit 994f1a
dnl flags, but also link it with them as well. e.g. you should link
Packit 994f1a
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
Packit 994f1a
dnl $LIBS
Packit 994f1a
dnl
Packit 994f1a
dnl If you are only building threads programs, you may wish to use
Packit 994f1a
dnl these variables in your default LIBS, CFLAGS, and CC:
Packit 994f1a
dnl
Packit 994f1a
dnl        LIBS="$PTHREAD_LIBS $LIBS"
Packit 994f1a
dnl        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 994f1a
dnl        CC="$PTHREAD_CC"
Packit 994f1a
dnl
Packit 994f1a
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
Packit 994f1a
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
Packit 994f1a
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
Packit 994f1a
dnl
Packit 994f1a
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
Packit 994f1a
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
Packit 994f1a
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
Packit 994f1a
dnl default action will define HAVE_PTHREAD.
Packit 994f1a
dnl
Packit 994f1a
dnl Please let the authors know if this macro fails on any platform, or
Packit 994f1a
dnl if you have any other suggestions or comments. This macro was based
Packit 994f1a
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
Packit 994f1a
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
Packit 994f1a
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
Packit 994f1a
dnl We are also grateful for the helpful feedback of numerous users.
Packit 994f1a
dnl
Packit 994f1a
dnl @category InstalledPackages
Packit 994f1a
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
Packit 994f1a
dnl @version 2005-01-14
Packit 994f1a
dnl @license GPLWithACException
Packit 994f1a
Packit 994f1a
AC_DEFUN([ACX_PTHREAD], [
Packit 994f1a
AC_REQUIRE([AC_CANONICAL_HOST])
Packit 994f1a
AC_LANG_SAVE
Packit 994f1a
AC_LANG_C
Packit 994f1a
acx_pthread_ok=no
Packit 994f1a
Packit 994f1a
# We used to check for pthread.h first, but this fails if pthread.h
Packit 994f1a
# requires special compiler flags (e.g. on True64 or Sequent).
Packit 994f1a
# It gets checked for in the link test anyway.
Packit 994f1a
Packit 994f1a
# First of all, check if the user has set any of the PTHREAD_LIBS,
Packit 994f1a
# etcetera environment variables, and if threads linking works using
Packit 994f1a
# them:
Packit 994f1a
if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
Packit 994f1a
        save_CFLAGS="$CFLAGS"
Packit 994f1a
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 994f1a
        save_LIBS="$LIBS"
Packit 994f1a
        LIBS="$PTHREAD_LIBS $LIBS"
Packit 994f1a
        AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
Packit 994f1a
        AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes)
Packit 994f1a
        AC_MSG_RESULT($acx_pthread_ok)
Packit 994f1a
        if test x"$acx_pthread_ok" = xno; then
Packit 994f1a
                PTHREAD_LIBS=""
Packit 994f1a
                PTHREAD_CFLAGS=""
Packit 994f1a
        fi
Packit 994f1a
        LIBS="$save_LIBS"
Packit 994f1a
        CFLAGS="$save_CFLAGS"
Packit 994f1a
fi
Packit 994f1a
Packit 994f1a
# We must check for the threads library under a number of different
Packit 994f1a
# names; the ordering is very important because some systems
Packit 994f1a
# (e.g. DEC) have both -lpthread and -lpthreads, where one of the
Packit 994f1a
# libraries is broken (non-POSIX).
Packit 994f1a
Packit 994f1a
# Create a list of thread flags to try.  Items starting with a "-" are
Packit 994f1a
# C compiler flags, and other items are library names, except for "none"
Packit 994f1a
# which indicates that we try without any flags at all, and "pthread-config"
Packit 994f1a
# which is a program returning the flags for the Pth emulation library.
Packit 994f1a
Packit 994f1a
acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
Packit 994f1a
Packit 994f1a
# The ordering *is* (sometimes) important.  Some notes on the
Packit 994f1a
# individual items follow:
Packit 994f1a
Packit 994f1a
# pthreads: AIX (must check this before -lpthread)
Packit 994f1a
# none: in case threads are in libc; should be tried before -Kthread and
Packit 994f1a
#       other compiler flags to prevent continual compiler warnings
Packit 994f1a
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
Packit 994f1a
# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
Packit 994f1a
# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
Packit 994f1a
# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
Packit 994f1a
# -pthreads: Solaris/gcc
Packit 994f1a
# -mthreads: Mingw32/gcc, Lynx/gcc
Packit 994f1a
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
Packit 994f1a
#      doesn't hurt to check since this sometimes defines pthreads too;
Packit 994f1a
#      also defines -D_REENTRANT)
Packit 994f1a
# pthread: Linux, etcetera
Packit 994f1a
# --thread-safe: KAI C++
Packit 994f1a
# pthread-config: use pthread-config program (for GNU Pth library)
Packit 994f1a
Packit 994f1a
case "${host_cpu}-${host_os}" in
Packit 994f1a
        *solaris*)
Packit 994f1a
Packit 994f1a
        # On Solaris (at least, for some versions), libc contains stubbed
Packit 994f1a
        # (non-functional) versions of the pthreads routines, so link-based
Packit 994f1a
        # tests will erroneously succeed.  (We need to link with -pthread or
Packit 994f1a
        # -lpthread.)  (The stubs are missing pthread_cleanup_push, or rather
Packit 994f1a
        # a function called by this macro, so we could check for that, but
Packit 994f1a
        # who knows whether they'll stub that too in a future libc.)  So,
Packit 994f1a
        # we'll just look for -pthreads and -lpthread first:
Packit 994f1a
Packit 994f1a
        acx_pthread_flags="-pthread -pthreads pthread -mt $acx_pthread_flags"
Packit 994f1a
        ;;
Packit 994f1a
esac
Packit 994f1a
Packit 994f1a
if test x"$acx_pthread_ok" = xno; then
Packit 994f1a
for flag in $acx_pthread_flags; do
Packit 994f1a
Packit 994f1a
        case $flag in
Packit 994f1a
                none)
Packit 994f1a
                AC_MSG_CHECKING([whether pthreads work without any flags])
Packit 994f1a
                ;;
Packit 994f1a
Packit 994f1a
                -*)
Packit 994f1a
                AC_MSG_CHECKING([whether pthreads work with $flag])
Packit 994f1a
                PTHREAD_CFLAGS="$flag"
Packit 994f1a
                ;;
Packit 994f1a
Packit 994f1a
		pthread-config)
Packit 994f1a
		AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no)
Packit 994f1a
		if test x"$acx_pthread_config" = xno; then continue; fi
Packit 994f1a
		PTHREAD_CFLAGS="`pthread-config --cflags`"
Packit 994f1a
		PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
Packit 994f1a
		;;
Packit 994f1a
Packit 994f1a
                *)
Packit 994f1a
                AC_MSG_CHECKING([for the pthreads library -l$flag])
Packit 994f1a
                PTHREAD_LIBS="-l$flag"
Packit 994f1a
                ;;
Packit 994f1a
        esac
Packit 994f1a
Packit 994f1a
        save_LIBS="$LIBS"
Packit 994f1a
        save_CFLAGS="$CFLAGS"
Packit 994f1a
        LIBS="$PTHREAD_LIBS $LIBS"
Packit 994f1a
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 994f1a
Packit 994f1a
        # Check for various functions.  We must include pthread.h,
Packit 994f1a
        # since some functions may be macros.  (On the Sequent, we
Packit 994f1a
        # need a special flag -Kthread to make this header compile.)
Packit 994f1a
        # We check for pthread_join because it is in -lpthread on IRIX
Packit 994f1a
        # while pthread_create is in libc.  We check for pthread_attr_init
Packit 994f1a
        # due to DEC craziness with -lpthreads.  We check for
Packit 994f1a
        # pthread_cleanup_push because it is one of the few pthread
Packit 994f1a
        # functions on Solaris that doesn't have a non-functional libc stub.
Packit 994f1a
        # We try pthread_create on general principles.
Packit 994f1a
        AC_TRY_LINK([#include <pthread.h>],
Packit 994f1a
                    [pthread_t th; pthread_join(th, 0);
Packit 994f1a
                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
Packit 994f1a
                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
Packit 994f1a
                    [acx_pthread_ok=yes])
Packit 994f1a
Packit 994f1a
        LIBS="$save_LIBS"
Packit 994f1a
        CFLAGS="$save_CFLAGS"
Packit 994f1a
Packit 994f1a
        AC_MSG_RESULT($acx_pthread_ok)
Packit 994f1a
        if test "x$acx_pthread_ok" = xyes; then
Packit 994f1a
                break;
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
        PTHREAD_LIBS=""
Packit 994f1a
        PTHREAD_CFLAGS=""
Packit 994f1a
done
Packit 994f1a
fi
Packit 994f1a
Packit 994f1a
# Various other checks:
Packit 994f1a
if test "x$acx_pthread_ok" = xyes; then
Packit 994f1a
        save_LIBS="$LIBS"
Packit 994f1a
        LIBS="$PTHREAD_LIBS $LIBS"
Packit 994f1a
        save_CFLAGS="$CFLAGS"
Packit 994f1a
        CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit 994f1a
Packit 994f1a
        # Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
Packit 994f1a
	AC_MSG_CHECKING([for joinable pthread attribute])
Packit 994f1a
	attr_name=unknown
Packit 994f1a
	for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
Packit 994f1a
	    AC_TRY_LINK([#include <pthread.h>], [int attr=$attr;],
Packit 994f1a
                        [attr_name=$attr; break])
Packit 994f1a
	done
Packit 994f1a
        AC_MSG_RESULT($attr_name)
Packit 994f1a
        if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
Packit 994f1a
            AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
Packit 994f1a
                               [Define to necessary symbol if this constant
Packit 994f1a
                                uses a non-standard name on your system.])
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
        AC_MSG_CHECKING([if more special flags are required for pthreads])
Packit 994f1a
        flag=no
Packit 994f1a
        case "${host_cpu}-${host_os}" in
Packit 994f1a
            *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";;
Packit 994f1a
            *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";;
Packit 994f1a
        esac
Packit 994f1a
        AC_MSG_RESULT(${flag})
Packit 994f1a
        if test "x$flag" != xno; then
Packit 994f1a
            PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
Packit 994f1a
        fi
Packit 994f1a
Packit 994f1a
        LIBS="$save_LIBS"
Packit 994f1a
        CFLAGS="$save_CFLAGS"
Packit 994f1a
Packit 994f1a
        # More AIX lossage: must compile with cc_r
Packit 994f1a
        AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
Packit 994f1a
else
Packit 994f1a
        PTHREAD_CC="$CC"
Packit 994f1a
fi
Packit 994f1a
Packit 994f1a
AC_SUBST(PTHREAD_LIBS)
Packit 994f1a
AC_SUBST(PTHREAD_CFLAGS)
Packit 994f1a
AC_SUBST(PTHREAD_CC)
Packit 994f1a
Packit 994f1a
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
Packit 994f1a
if test x"$acx_pthread_ok" = xyes; then
Packit 994f1a
        ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
Packit 994f1a
        :
Packit 994f1a
else
Packit 994f1a
        acx_pthread_ok=no
Packit 994f1a
        $2
Packit 994f1a
fi
Packit 994f1a
AC_LANG_RESTORE
Packit 994f1a
])dnl ACX_PTHREAD