AC_DEFUN([FP_CHECK_ALIGNMENT],
[AS_LITERAL_IF([$1], [],
[AC_FATAL([$0: requires literal arguments])])[]dnl
-AC_CHECK_TYPE([$1], [], [], [$3])
-AC_CACHE_CHECK([alignment of $1], AS_TR_SH([fp_cv_alignment_$1]),
+AC_CHECK_TYPE([$1], [], [], [$3])[]dnl
+m4_pushdef([fp_Cache], [AS_TR_SH([fp_cv_alignment_$1])])[]dnl
+AC_CACHE_CHECK([alignment of $1], [fp_Cache],
[if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)],
- [AS_TR_SH([fp_cv_alignment_$1])],
+ [fp_Cache],
[AC_INCLUDES_DEFAULT([$3])],
[AC_MSG_ERROR([cannot compute alignment ($1)
See `config.log' for more details.], [77])])
else
- AS_TR_SH([fp_cv_alignment_$1])=0
-fi])dnl
-AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $AS_TR_SH([fp_cv_alignment_$1]),
- [The alignment of a `$1'.])
+ fp_Cache=0
+fi])[]dnl
+AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $fp_Cache, [The alignment of a `$1'.])[]dnl
+m4_popdef([fp_Cache])[]dnl
])# FP_CHECK_ALIGNMENT
+# 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.
+AC_DEFUN([FP_CHECK_CONST],
+[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'])])
+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_CONST
+
+
+# FP_CHECK_CONSTS_TEMPLATE(EXPRESSION...)
+# ----------------------------------
+# autoheader helper for FP_CHECK_CONSTS
+m4_define([FP_CHECK_CONSTS_TEMPLATE],
+[AC_FOREACH([fp_Const], [$1],
+ [AH_TEMPLATE(AS_TR_CPP(CONST_[]fp_Const),
+ [The value of ]fp_Const[.])])[]dnl
+])# FP_CHECK_CONSTS_TEMPLATE
+
+
+# FP_CHECK_CONSTS(EXPRESSION..., [INCLUDES = DEFAULT-INCLUDES], [VALUE-IF-FAIL = -1])
+# -------------------------------------------------------------------------------------
+# List version of FP_CHECK_CONST
+AC_DEFUN(FP_CHECK_CONSTS,
+[FP_CHECK_CONSTS_TEMPLATE([$1])dnl
+for fp_const_name in $1
+do
+FP_CHECK_CONST([$fp_const_name], [$2], [$3])
+done
+])# FP_CHECK_CONSTS
+
+
dnl ** check for leading underscores in symbol names
dnl
dnl Test for determining whether symbol names have a leading
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 ** Obtain the value of a C constant.
-dnl The value will be `(-1)' if the constant is undefined.
-dnl
-dnl This is set up so that the argument can be a shell variable.
-dnl
-AC_DEFUN(FPTOOLS_CHECK_CCONST,
-[
-eval "cv_name=ac_cv_cconst_$1"
-AC_MSG_CHECKING(value of $1)
-AC_CACHE_VAL($cv_name,
-[AC_TRY_RUN([#include <stdio.h>
-#include <errno.h>
-main()
-{
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- fprintf(f, "%d\n", $1);
- exit(0);
-}],
-eval "$cv_name=`cat conftestval`",
-eval "$cv_name=-1",
-eval "$cv_name=-1")])dnl
-eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
-AC_MSG_RESULT($fptools_check_cconst_result)
-AC_DEFINE_UNQUOTED(CCONST_$1, $fptools_check_cconst_result, [The value of $1.])
-unset fptools_check_cconst_result
-])
-
-
-# FP_CHECK_CCONSTS_TEMPLATE(CONST...)
-# -----------------------------------
-m4_define([FP_CHECK_CCONSTS_TEMPLATE],
-[AC_FOREACH([FP_Const], [$1],
- [AH_TEMPLATE(AS_TR_CPP(CCONST_[]FP_Const),
- [The value of ]FP_Const[.])])[]dnl
-])# FP_CHECK_CCONSTS_TEMPLATE
-
-
-dnl ** Invoke AC_CHECK_CCONST on each argument (which have to separate with
-dnl spaces)
-dnl
-AC_DEFUN(FPTOOLS_CHECK_CCONSTS,
-[FP_CHECK_CCONSTS_TEMPLATE([$1])dnl
-for ac_const_name in $1
-do
-FPTOOLS_CHECK_CCONST($ac_const_name)dnl
-done
-])
-
-
-dnl *** Can we open files in binary mode? ***
-dnl
-AC_DEFUN(FPTOOLS_O_BINARY,
-[
-AC_REQUIRE([AC_PROG_CC])
-AC_MSG_CHECKING(whether we can open files in binary mode)
-AC_CACHE_VAL(fptools_cv_have_o_binary,
-[
-AC_LANG_SAVE
-AC_LANG_C
-AC_TRY_COMPILE(
-[#ifdef HAVE_FCNTL_H
-#include <fcntl.h>
-#endif],
-[int x = O_BINARY;],
-fptools_cv_have_o_binary=yes,
-fptools_cv_have_o_binary=no)
-AC_LANG_RESTORE
-])
-AC_MSG_RESULT($fptools_cv_have_o_binary)
-if test "$fptools_cv_have_o_binary" = yes; then
- AC_DEFINE([HAVE_O_BINARY], [1], [Define to 1 if fcntl.h defines O_BINARY.])
-fi
-])
-
-
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)