])# FP_CHECK_ALIGNMENT
-# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = (-1)])
+# FP_CHECK_CONST(EXPRESSION, [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1])
# ---------------------------------------------------------------------------------
# Defines CONST_EXPRESSION to the value of the compile-time EXPRESSION, using
# INCLUDES. If the value cannot be determined, use VALUE-IF-FAIL.
[AS_VAR_PUSHDEF([fp_Cache], [fp_cv_const_$1])[]dnl
AC_CACHE_CHECK([value of $1], fp_Cache,
[FP_COMPUTE_INT([$1], fp_check_const_result, [AC_INCLUDES_DEFAULT([$2])],
- [fp_check_const_result=m4_default([$3], ['(-1)'])])
+ [fp_check_const_result=m4_default([$3], ['-1'])])
AS_VAR_SET(fp_Cache, [$fp_check_const_result])])[]dnl
AC_DEFINE_UNQUOTED(AS_TR_CPP([CONST_$1]), AS_VAR_GET(fp_Cache), [The value of $1.])[]dnl
AS_VAR_POPDEF([fp_Cache])[]dnl
])# FP_CHECK_CONSTS_TEMPLATE
-# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = (-1)])
+# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1])
# -------------------------------------------------------------------------------------
# List version of FP_CHECK_CONST
AC_DEFUN(FP_CHECK_CONSTS,
esac
])
-dnl
-dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
-dnl ACTION-IF-TRUE [, ACTION-IF-FALSE])
-dnl
-dnl compare versions field-wise (separator is '.')
-dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
-dnl
-dnl quite shell-independant and SUSv2 compliant code
-dnl
-dnl NOTE: the loop could be unrolled within autoconf, but the
-dnl macro code would be a) longer and b) harder to debug... ;)
-dnl
-AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
-[if ( IFS=".";
- a="[$1]"; b="[$3]";
- while test -n "$a$b"
- do
- set -- [$]a; h1="[$]1"; shift 2>/dev/null; a="[$]*"
- set -- [$]b; h2="[$]1"; shift 2>/dev/null; b="[$]*"
- test -n "[$]h1" || h1=0; test -n "[$]h2" || h2=0
- test [$]{h1} -eq [$]{h2} || break
- done
- test [$]{h1} [$2] [$]{h2}
- )
-then ifelse([$4],,[:],[
- $4])
-ifelse([$5],,,
-[else
- $5])
-fi
-])])dnl
+
+# FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+# ----------------------------------------------------------------------------------
+# Compare dotted version numbers VERSION1 and VERSION2 lexicographically according
+# to TEST (one of -eq, -ne, -lt, -le, -gt, or -ge).
+AC_DEFUN([FP_COMPARE_VERSIONS],
+[fp_version1=$1; fp_version2=$3
+fp_save_IFS=$IFS; IFS='.'
+while test x"$fp_version1" != x || test x"$fp_version2" != x
+do
+
+ set dummy $fp_version1; shift
+ fp_num1=""
+ test $[@%:@] = 0 || { fp_num1="[$]1"; shift; }
+ test x"$fp_num1" = x && fp_num1="0"
+ fp_version1="[$]*"
+
+ set dummy $fp_version2; shift
+ fp_num2=""
+ test $[@%:@] = 0 || { fp_num2="[$]1"; shift; }
+ test x"$fp_num2" = x && fp_num2="0"
+ fp_version2="[$]*"
+
+ test "$fp_num1" = "$fp_num2" || break;
+done
+IFS=$fp_save_IFS
+AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl
+])# FP_COMPARE_VERSIONS
dnl
-dnl Check for Greencard and version.
+dnl Check for GreenCard and version.
dnl
AC_DEFUN(FPTOOLS_GREENCARD,
[
-AC_PATH_PROG(GreencardCmd,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 |
+[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)
+FP_COMPARE_VERSIONS([$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
changequote([, ])dnl
])
if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then
- FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.13],
- [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])dnl
+ FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.13],
+ [AC_MSG_ERROR([Happy version 1.13 or later is required to compile GHC.])])[]dnl
fi
HappyVersion=$fptools_cv_happy_version;
AC_SUBST(HappyVersion)
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
+if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Lexer.hs; then
+ FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0],
+ [AC_MSG_ERROR([Alex version 2.0 or later is required to compile GHC.])])[]dnl
+fi
AlexVersion=$fptools_cv_alex_version;
AC_SUBST(AlexVersion)
])
gcc_version_str="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\.\2/g' `"
changequote([, ])dnl
fptools_cv_have_gcc='yes'
- FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -lt, "2.0",
- fptools_cv_have_gcc='no'
+ FP_COMPARE_VERSIONS([$gcc_version_str], [-lt], [2.0],
+ [fptools_cv_have_gcc='no'
echo ""
echo "your gcc version appears to be ..."
$CC --version
echo "gcc prior to 2.0 and have never worked with ghc."
echo "we recommend 2.95.3, although versions back to 2.7.2 should be ok."
- AC_MSG_ERROR([gcc 1.X has never been supported])
- )
+ AC_MSG_ERROR([gcc 1.X has never been supported])])
fi
])
HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
dnl need to turn it off for mangling to work. The test is currently a bit
dnl crude, using only the version number of gcc.
dnl
-AC_DEFUN(FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR,
-[AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], fptools_cv_gcc_needs_no_omit_lfptr,
-[
- fptools_cv_gcc_needs_no_omit_lfptr='no'
- FPTOOLS_PROG_CHECK_VERSION($gcc_version_str, -ge, "3.2",
- fptools_cv_gcc_needs_no_omit_lfptr='yes')
-])
+AC_DEFUN([FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR],
+[AC_CACHE_CHECK([whether gcc needs -mno-omit-leaf-frame-pointer], [fptools_cv_gcc_needs_no_omit_lfptr],
+[FP_COMPARE_VERSIONS([$gcc_version_str], [-ge], [3.2],
+ [fptools_cv_gcc_needs_no_omit_lfptr=yes],
+ [fptools_cv_gcc_needs_no_omit_lfptr=no])])
if test "$fptools_cv_gcc_needs_no_omit_lfptr" = "yes"; then
AC_DEFINE([HAVE_GCC_MNO_OMIT_LFPTR], [1], [Define to 1 if gcc supports -mno-omit-leaf-frame-pointer.])
-fi
-])
+fi])# FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR
+
dnl Small feature test for perl version. Assumes PerlCmd
dnl contains path to perl binary
rm -fr conftest*
])
-dnl
-dnl Getting at the right version of 'find'
-dnl (i.e., not the MS util on a Win32 box).
-dnl
-AC_DEFUN(FPTOOLS_FIND_FIND,
-[
-AC_PATH_PROG(Find2Cmd, find)
-$Find2Cmd --version > conftest.out 2>&1
-if grep "FIND: Parameter format" conftest.out >/dev/null 2>&1 ; then
- # Encountered MS' find utility, which is not what we're after.
- #
- # HACK - AC_CHECK_PROG is useful here in that does let you reject
- # an (absolute) entry in the path (Find2Cmd). It is not so useful
- # in that it doesn't let you (AFAIU) set VARIABLE equal to the
- # absolute path eventually found. So, hack around this by inspecting
- # what variables hold the abs. path & use them directly.
- AC_CHECK_PROG(FindCmd,find,`echo $ac_dir/$ac_word`,find,,$Find2Cmd)
+
+# FP_CHECK_PROG(VARIABLE, PROG-TO-CHECK-FOR,
+# [VALUE-IF-NOT-FOUND], [PATH], [REJECT])
+# -----------------------------------------------------
+# HACK: A small wrapper around AC_CHECK_PROG, setting VARIABLE to the full path
+# of PROG-TO-CHECK-FOR when found.
+AC_DEFUN([FP_CHECK_PROG],
+[AC_CHECK_PROG([$1], [$2], [$as_dir/$ac_word$ac_exec_ext], [$3], [$4], [$5])][]dnl
+)# FP_CHECK_PROC
+
+
+# FP_PROG_FIND
+# ------------
+# Find a non-WinDoze version of the "find" utility.
+AC_DEFUN([FP_PROG_FIND],
+[AC_PATH_PROG([fp_prog_find], [find])
+echo foo > conftest.txt
+$fp_prog_find conftest.txt -print > conftest.out 2>&1
+if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then
+ # OK, looks like a real "find".
+ FindCmd="$fp_prog_find"
else
-FindCmd=$Find2Cmd
-AC_SUBST(FindCmd)
+ # Found a poor WinDoze version of "find", ignore it.
+ AC_MSG_WARN([$fp_prog_find looks like a non-*nix find, ignoring it])
+ FP_CHECK_PROG([FindCmd], [find], [], [], [$fp_prog_find])
fi
-])
+rm -f conftest.txt conftest.out
+AC_SUBST([FindCmd])[]dnl
+])# FP_PROG_FIND
+
dnl
dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
define(<<AC_TYPE_NAME>>, translit(htype_$1, [a-z *], [A-Z_P]))dnl
dnl The cache variable name.
define(<<AC_CV_NAME>>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl
+define(<<AC_CV_NAME_supported>>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl
changequote([, ])dnl
AC_MSG_CHECKING(Haskell type for $1)
AC_CACHE_VAL(AC_CV_NAME,
-[AC_TRY_RUN([#include <stdio.h>
+[AC_CV_NAME_supported=yes
+fp_check_htype_save_cppflags="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $X_CFLAGS"
+AC_TRY_RUN([#include <stdio.h>
#include <stddef.h>
-#ifdef HAVE_SYS_TYPES_H
+#if HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
-#ifdef HAVE_UNISTD_H
+#if HAVE_UNISTD_H
# include <unistd.h>
#endif
-#ifdef HAVE_SYS_STAT_H
+#if HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
-#ifdef HAVE_FCNTL_H
+#if HAVE_FCNTL_H
# include <fcntl.h>
#endif
-#ifdef HAVE_SIGNAL_H
+#if HAVE_SIGNAL_H
# include <signal.h>
#endif
-#ifdef HAVE_TIME_H
+#if HAVE_TIME_H
# include <time.h>
#endif
-#ifdef HAVE_TERMIOS_H
+#if HAVE_TERMIOS_H
# include <termios.h>
#endif
-#ifdef HAVE_STRING_H
+#if HAVE_STRING_H
# include <string.h>
#endif
-#ifdef HAVE_CTYPE_H
+#if HAVE_CTYPE_H
# include <ctype.h>
#endif
-#ifdef HAVE_GL_GL_H
+#if defined(HAVE_GL_GL_H)
# include <GL/gl.h>
+#elif defined(HAVE_OPENGL_GL_H)
+# include <OpenGL/gl.h>
#endif
-#ifdef HAVE_OPENGL_GL_H
-# include <OpenGL/gl.h>
+#if defined(HAVE_AL_ALC_H)
+# include <AL/alc.h>
+#elif defined(HAVE_OPENAL_ALC_H)
+# include <OpenAL/alc.h>
#endif
-#ifdef HAVE_SYS_RESOURCE_H
+#if HAVE_SYS_RESOURCE_H
# include <sys/resource.h>
#endif
}
fclose(f);
exit(0);
-}], AC_CV_NAME=`cat conftestval`,
-ifelse([$2], , AC_CV_NAME=NotReallyAType, AC_CV_NAME=$2),
-ifelse([$3], , AC_CV_NAME=NotReallyATypeCross, AC_CV_NAME=$3))]) dnl
-AC_MSG_RESULT($AC_CV_NAME)
-AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])
+}],AC_CV_NAME=`cat conftestval`,
+ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], AC_CV_NAME=$2),
+ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], AC_CV_NAME=$3))]) dnl
+CPPFLAGS="$fp_check_htype_save_cppflags"
+if test "$AC_CV_NAME_supported" = yes; then
+ AC_MSG_RESULT($AC_CV_NAME)
+ AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1])
+else
+ AC_MSG_RESULT([not supported])
+fi
undefine([AC_TYPE_NAME])dnl
undefine([AC_CV_NAME])dnl
+undefine([AC_CV_NAME_supported])dnl
])
-
dnl Based on AC_TRY_LINK - run iftrue if links cleanly with no warning
dnl FPTOOLS_TRY_LINK_NOWARN(flags,main?,iftrue,iffalse)
GL_CFLAGS=
fi
- LIBS="$GLUT_X_LIBS"
+ dnl Keep the GL/GLU/GLX libs, but expand the rest to what GLUT needs.
+ dnl (Some systems, like OpenBSD, need the GL/GLU libs.)
+ LIBS=`echo "$LIBS" | sed "s@$GL_X_LIBS@$GLUT_X_LIBS@"`
FPTOOLS_SEARCH_LIBS([#include <GL/glut.h>], glutMainLoop, glut32 glut, have_glut=yes, have_glut=no)