-dnl $Id: aclocal.m4,v 1.115 2003/03/26 12:33:11 simonmar Exp $
+dnl $Id: aclocal.m4,v 1.124 2003/08/14 15:43:22 simonmar Exp $
dnl
dnl Extra autoconf macros for the Glasgow fptools
dnl
dnl
+dnl Check for Greencard and version.
+dnl
+AC_DEFUN(FPTOOLS_GREENCARD,
+[
+AC_PATH_PROG(GreencardCmd,greencard)
+AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
+changequote(, )dnl
+[if test x"$GreencardCmd" != x; then
+ fptools_cv_greencard_version="`$GreencardCmd --version |
+ grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
+else
+ fptools_cv_greencard_version=""
+fi
+changequote([, ])dnl
+])
+FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_greencard_version],-lt,$1,
+ [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])dnl
+GreencardVersion=$fptools_cv_greencard_version
+AC_SUBST(GreencardVersion)
+])
+
+dnl
dnl Check for Happy and version. If we're building GHC, then we need
dnl at least Happy version 1.13. If there's no installed Happy, we look
dnl for a happy source tree and point the build system at that instead.
])
dnl
+dnl Check for Alex and version. If we're building GHC, then we need
+dnl at least Alex version 2.0. If there's no installed Alex, we look
+dnl for a alex source tree and point the build system at that instead.
+dnl
+AC_DEFUN(FPTOOLS_ALEX,
+[
+if test -d $srcdir/alex; then
+ SrcTreeAlexCmd=$hardtop/alex/src/alex-inplace
+fi
+if test x"$UseSrcTreeAlex" = xYES; then
+ AlexCmd=$SrcTreeAlexCmd
+else
+ AC_PATH_PROG(AlexCmd,alex,$SrcTreeAlexCmd)
+fi
+AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version,
+changequote(, )dnl
+[if test x"$AlexCmd" = x"$SrcTreeAlexCmd"; then
+ fptools_cv_alex_version=`grep '^ProjectVersion[ ]*=' $srcdir/alex/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
+elif test x"$AlexCmd" != x; then
+ fptools_cv_alex_version="`$AlexCmd -v |
+ grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ;
+else
+ fptools_cv_alex_version="";
+fi;
+changequote([, ])dnl
+])
+dnl if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
+dnl FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_alex_version],-lt,[2.0],
+dnl [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])dnl
+dnl fi
+AlexVersion=$fptools_cv_alex_version;
+AC_SUBST(AlexVersion)
+])
+
+dnl
dnl What's the best way of doing context diffs?
dnl
dnl (NB: NeXTStep thinks diff'ing a file against itself is "trouble")
# include <GL/gl.h>
#endif
+#ifdef HAVE_OPENGL_GL_H
+# include <OpenGL/gl.h>
+#endif
+
#ifdef HAVE_SYS_RESOURCE_H
# include <sys/resource.h>
#endif
[
AC_LANG_SAVE
AC_LANG_C
-AC_TRY_COMPILE(,
+AC_TRY_COMPILE(
[#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif
-int x = O_BINARY;],
+#endif],
+[int x = O_BINARY;],
fptools_cv_have_o_binary=yes,
fptools_cv_have_o_binary=no)
AC_LANG_RESTORE
])
dnl ######################################################################
-dnl Some notes about the heavily changed OpenGL test below:
-dnl * Caching has been completely rewritten, but is still no perfect yet.
-dnl * Version detection for GL and GLU has been added.
+dnl Note: Caching has been completely rewritten, but is still no perfect yet.
dnl ######################################################################
dnl ########################### -*- Mode: M4 -*- #######################
dnl If we are running under X11 then add in the appropriate libraries.
if test x"$no_x" != xyes; then
dnl Add everything we need to compile and link X programs to GL_CFLAGS
-dnl and GL_X_LIBS.
+dnl and GL_X_LIBS/GLUT_X_LIBS.
GL_CFLAGS="$CPPFLAGS $X_CFLAGS"
- GL_X_LIBS="$X_PRE_LIBS $X_LIBS -lX11 -lXext -lXmu -lXt -lXi $X_EXTRA_LIBS $LIBM"
+ GL_X_LIBS="$X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBM"
+ GLUT_X_LIBS="$X_LIBS $X_PRE_LIBS -lXmu -lXt -lXi -lXext -lX11 $X_EXTRA_LIBS $LIBM"
fi
GL_save_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$GL_CFLAGS"
GL_save_LIBS="$LIBS"
LIBS="$GL_X_LIBS"
- dnl Including <GL/glut.h> instead of plain <GL/gl.h> avoids problems on
- dnl platforms like WinDoze where special headers like <windows.h> or
- dnl some macro trickery would be needed
- FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
-
- dnl TODO: The tests for GL features should better be cascaded and the
- dnl results should be cached. A new macro would be helpful here.
-
- AC_MSG_CHECKING(glTexSubImage1D)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glTexSubImage1D(GL_TEXTURE_1D,0,0,2,GL_INTENSITY,GL_BYTE,(void*)0)],
- fptools_gl_texsubimage1d=yes,
- fptools_gl_texsubimage1d=no);
- AC_MSG_RESULT($fptools_gl_texsubimage1d)
-
- AC_MSG_CHECKING(glDrawRangeElements)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glDrawRangeElements(GL_QUADS,0,0,0,GL_UNSIGNED_BYTE,(void*)0)],
- fptools_gl_drawrangeelements=yes,
- fptools_gl_drawrangeelements=no);
- AC_MSG_RESULT($fptools_gl_drawrangeelements)
-
- AC_MSG_CHECKING(glActiveTexture)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glActiveTexture(GL_TEXTURE1)],
- fptools_gl_activetexture=yes,
- fptools_gl_activetexture=no);
- AC_MSG_RESULT($fptools_gl_activetexture)
-
- AC_MSG_CHECKING(glMultiDrawArrays)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glMultiDrawArrays(GL_TRIANGLES, (GLint*)0, (GLsizei*)0, 0)],
- fptools_gl_multidrawarrays=yes,
- fptools_gl_multidrawarrays=no);
- AC_MSG_RESULT($fptools_gl_multidrawarrays)
-
- if test x"$fptools_gl_texsubimage1d" != xyes; then
- fptools_gl_version=1.0
- else
- if test x"$fptools_gl_drawrangeelements" != xyes; then
- fptools_gl_version=1.1
- else
- if test x"$fptools_gl_activetexture" != xyes; then
- fptools_gl_version=1.2
- else
- if test x"$fptools_gl_multidrawarrays" != xyes; then
- fptools_gl_version=1.3
- else
- fptools_gl_version=1.4
- fi
- fi
- fi
- fi
- echo "It looks like GL version ${fptools_gl_version}"
-
- dnl TODO: Cache the results of the tests for the imaging subset.
-
- AC_MSG_CHECKING(EXT_blend_color)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glBlendColorEXT((GLclampf)0.0,(GLclampf)0.0,(GLclampf)0.0,(GLclampf)0.0)],
- hopengl_EXT_blend_color=yes,
- hopengl_EXT_blend_color=no);
- AC_MSG_RESULT($hopengl_EXT_blend_color)
-
- AC_MSG_CHECKING(EXT_blend_minmax)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glBlendEquationEXT(GL_FUNC_ADD_EXT)],
- hopengl_EXT_blend_minmax=yes,
- hopengl_EXT_blend_minmax=no);
- AC_MSG_RESULT($hopengl_EXT_blend_minmax)
-
- AC_MSG_CHECKING(EXT_blend_subtract)
- AC_TRY_LINK([#include <GL/glut.h>],
- [glBlendEquationEXT(GL_FUNC_SUBTRACT_EXT)],
- hopengl_EXT_blend_subtract=yes,
- hopengl_EXT_blend_subtract=no);
- AC_MSG_RESULT($hopengl_EXT_blend_subtract)
-
- FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
-
- dnl TODO: Cascade and cache...
-
- AC_MSG_CHECKING(gluGetString)
- AC_TRY_LINK([#include <GL/glut.h>],
- [gluGetString(GLU_EXTENSIONS)],
- fptools_glu_getstring=yes,
- fptools_glu_getstring=no);
- AC_MSG_RESULT($fptools_glu_getstring)
-
- AC_MSG_CHECKING(gluTessEndPolygon)
- AC_TRY_LINK([#include <GL/glut.h>],
- [gluTessEndPolygon((GLUtesselator*)0)],
- fptools_glu_tessendpolygon=yes,
- fptools_glu_tessendpolygon=no);
- AC_MSG_RESULT($fptools_glu_tessendpolygon)
-
- AC_MSG_CHECKING(gluUnProject4)
- AC_TRY_LINK([#include <GL/glut.h>],
- [gluUnProject4(0.0,0.0,0.0,0.0,(GLdouble*)0,(GLdouble*)0,(GLint*)0,0.0,0.0,(GLdouble*)0,(GLdouble*)0,(GLdouble*)0,(GLdouble*)0)],
- fptools_glu_unproject4=yes,
- fptools_glu_unproject4=no);
- AC_MSG_RESULT($fptools_glu_unproject4)
-
- if test x"$fptools_glu_getstring" != xyes; then
- fptools_glu_version=1.0
- else
- if test x"$fptools_glu_tessendpolygon" != xyes; then
- fptools_glu_version=1.1
- else
- if test x"$fptools_glu_unproject4" != xyes; then
- fptools_glu_version=1.2
- else
- fptools_glu_version=1.3
- fi
- fi
- fi
- echo "It looks like GLU version ${fptools_glu_version}"
-
+ FPTOOLS_SEARCH_LIBS([#include <GL/gl.h>], glEnd, $GL_search_list, have_GL=yes, have_GL=no)
+ FPTOOLS_SEARCH_LIBS([#include <GL/glu.h>], gluNewQuadric, $GLU_search_list, have_GLU=yes, have_GLU=no)
FPTOOLS_SEARCH_LIBS([#include <GL/glx.h>], glXWaitX, $GLX_search_list, have_GLX=yes, have_GLX=no)
- FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut32 glut, have_glut=yes, have_glut=no)
if test -n "$LIBS"; then
GL_LIBS="$LDFLAGS $LIBS"
GL_CFLAGS=
fi
+ LIBS="$GLUT_X_LIBS"
+
+ FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut32 glut, have_glut=yes, have_glut=no)
+
+ if test -n "$LIBS"; then
+ GLUT_LIBS="$LDFLAGS $LIBS"
+ fi
+
AC_CACHE_CHECK([OpenGL flags], mdl_cv_gl_cflags, [mdl_cv_gl_cflags="$GL_CFLAGS"])
GL_CFLAGS="$mdl_cv_gl_cflags"
AC_SUBST(GL_CFLAGS)
AC_CACHE_CHECK([OpenGL libs], mdl_cv_gl_libs, [mdl_cv_gl_libs="$GL_LIBS"])
GL_LIBS="$mdl_cv_gl_libs"
AC_SUBST(GL_LIBS)
+ AC_CACHE_CHECK([GLUT libs], mdl_cv_glut_libs, [mdl_cv_glut_libs="$GLUT_LIBS"])
+ GLUT_LIBS="$mdl_cv_glut_libs"
+ AC_SUBST(GLUT_LIBS)
-dnl Reset GL_X_LIBS regardless, since it was just a temporary variable
+dnl Reset GL_X_LIBS/GLUT_X_LIBS regardless, since they were just temporary variables
dnl and we don't want to be global namespace polluters.
GL_X_LIBS=
+ GLUT_X_LIBS=
LIBS="$GL_save_LIBS"
CPPFLAGS="$GL_save_CPPFLAGS"