])# 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
-
-
# FP_LEADING_UNDERSCORE
# ---------------------
# Test for determining whether symbol names have a leading underscore. We assume
AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
changequote(, )dnl
[if test x"$HappyCmd" = x"$SrcTreeHappyCmd" -a -e $srcdir/happy/mk/version.mk; then
- fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
+ fptools_cv_happy_version=`grep '^ProjectVersion[ ]*=' $srcdir/happy/mk/version.mk | sed 's/[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
elif test x"$HappyCmd" != x; then
fptools_cv_happy_version="`$HappyCmd -v |
grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
changequote([, ])dnl
])
if test -d $srcdir/ghc -a ! -f $srcdir/ghc/compiler/parser/Parser.hs; then
- FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.14],
- [AC_MSG_ERROR([Happy version 1.14 or later is required to compile GHC.])])[]dnl
+ FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.15],
+ [AC_MSG_ERROR([Happy version 1.15 or later is required to compile GHC.])])[]dnl
fi
HappyVersion=$fptools_cv_happy_version;
AC_SUBST(HappyVersion)
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'`;
+ fptools_cv_alex_version=`grep '^ProjectVersion[ ]*=' $srcdir/alex/mk/version.mk | sed 's/[^0-9]*\([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'`" ;
])
-dnl
-dnl Check whether ld supports -x
-dnl
-AC_DEFUN(FPTOOLS_LD_X,
-[AC_CACHE_CHECK([whether ld understands -x], fptools_cv_ld_x,
-[
-echo 'foo() {}' > conftest.c
+# FP_PROG_LD
+# ----------
+# Sets the output variable LdCmd to the (non-Cygwin version of the) full path
+# of ld. Exits if no ld can be found
+AC_DEFUN([FP_PROG_LD],
+[AC_PATH_PROG([fp_prog_ld_raw], [ld])
+if test -z "$fp_prog_ld_raw"; then
+ AC_MSG_ERROR([cannot find ld in your PATH, no idea how to link])
+fi
+LdCmd=$fp_prog_ld_raw
+case $HostPlatform in
+ *mingw32) if test x${OSTYPE} != xmsys; then
+ LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`"
+ AC_MSG_NOTICE([normalized ld command to $LdCmd])
+ fi
+ ;;
+esac
+AC_SUBST([LdCmd])
+])# FP_PROG_LD
+
+
+# FP_PROG_LD_X
+# ------------
+# Sets the output variable LdXFlag to -x if ld supports this flag, otherwise the
+# variable's value is empty.
+AC_DEFUN([FP_PROG_LD_X],
+[AC_REQUIRE([FP_PROG_LD])
+AC_CACHE_CHECK([whether ld understands -x], [fp_cv_ld_x],
+[echo 'foo() {}' > conftest.c
${CC-cc} -c conftest.c
-if ${LdCmd} -r -x -o foo.o conftest.o; then
- fptools_cv_ld_x=yes
+if ${LdCmd} -r -x -o conftest2.o conftest.o > /dev/null 2>&1; then
+ fp_cv_ld_x=yes
else
- fptools_cv_ld_x=no
+ fp_cv_ld_x=no
fi
-rm -rf conftest.c conftest.o foo.o
-])
-if test "$fptools_cv_ld_x" = yes; then
- LdXFlag=-x
+rm -rf conftest*])
+if test "$fp_cv_ld_x" = yes; then
+ LdXFlag=-x
else
- LdXFlag=
+ LdXFlag=
fi
-AC_SUBST(LdXFlag)
-])
+AC_SUBST([LdXFlag])
+])# FP_PROG_LD_X
+
+
+# FP_PROG_LD_IS_GNU
+# -----------------
+# Sets the output variable LdIsGNULd to YES or NO, depending on whether it is
+# GNU ld or not.
+AC_DEFUN([FP_PROG_LD_IS_GNU],
+[AC_REQUIRE([FP_PROG_LD])
+AC_CACHE_CHECK([whether ld is GNU ld], [fp_cv_gnu_ld],
+[if ${LdCmd} --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then
+ fp_cv_gnu_ld=yes
+else
+ fp_cv_gnu_ld=no
+fi])
+AC_SUBST([LdIsGNULd], [`echo $fp_cv_gnu_ld | sed 'y/yesno/YESNO/'`])
+])# FP_PROG_LD_IS_GNU
# FP_PROG_AR
AC_DEFUN([FP_PROG_AR_NEEDS_RANLIB],
[AC_REQUIRE([FP_PROG_AR_IS_GNU])
AC_REQUIRE([FP_PROG_AR_ARGS])
+AC_REQUIRE([AC_PROG_CC])
AC_CACHE_CHECK([whether ranlib is needed], [fp_cv_prog_ar_needs_ranlib],
[if test $fp_prog_ar_is_gnu = yes; then
fp_cv_prog_ar_needs_ranlib=no
+elif test $TargetPlatform = powerpc-apple-darwin; then
+ # It's quite tedious to check for Apple's crazy timestamps in .a files,
+ # so we hardcode it.
+ fp_cv_prog_ar_needs_ranlib=yes
elif echo $fp_prog_ar_args | grep "s" > /dev/null 2> /dev/null; then
fp_cv_prog_ar_needs_ranlib=no
else
rm -f conftest
])])
-dnl
-dnl Extra testing of the result AC_PROG_CC, testing the gcc version no.
-dnl *Must* be called after AC_PROG_CC
-dnl
-AC_DEFUN(FPTOOLS_HAVE_GCC,
-[AC_CACHE_CHECK([whether you have an ok gcc], fptools_cv_have_gcc,
-[if test -z "$GCC"; then
- echo ''
- echo "You would be better off with gcc"
- echo "Perhaps it is already installed, but not in your PATH?"
- fptools_cv_have_gcc='no'
+
+# FP_HAVE_GCC
+# -----------
+# Extra testing of the result AC_PROG_CC, testing the gcc version no. Sets the
+# output variables HaveGcc and GccVersion.
+AC_DEFUN([FP_HAVE_GCC],
+[AC_REQUIRE([AC_PROG_CC])
+if test -z "$GCC"; then
+ fp_have_gcc=NO
else
-changequote(, )dnl
- 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'
- 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])])
+ fp_have_gcc=YES
fi
+if test "$fp_have_gcc" = "NO" -a -d $srcdir/ghc; then
+ AC_MSG_ERROR([gcc is required])
+fi
+AC_CACHE_CHECK([version of gcc], [fp_gcc_version],
+[if test "$fp_have_gcc" = "YES"; then
+ fp_gcc_version="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [[^0-9]]*\([[0-9.]]*\).*/\1/g'`"
+ FP_COMPARE_VERSIONS([$fp_gcc_version], [-lt], [2.0],
+ [AC_MSG_ERROR([Need at least gcc version 2.0 (3.4+ recommended)])])
+ else
+ fp_gcc_version="not-installed"
+ fi
])
-HaveGcc=`echo $fptools_cv_have_gcc | sed 'y/yesno/YESNO/'`
-AC_SUBST(HaveGcc)
-GccVersion=`gcc --version | grep mingw | cut -f 3 -d ' '`
-AC_SUBST(GccVersion)
-])
-
-dnl
-dnl Some OSs (Mandrake Linux, in particular) configure GCC with
-dnl -momit-leaf-frame-pointer on by default. If this is the case, we
-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],
-[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])# FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR
+AC_SUBST([HaveGcc], [$fp_have_gcc])
+AC_SUBST([GccVersion], [$fp_gcc_version])
+])# FP_HAVE_GCC
+AC_DEFUN([FP_MINGW_GCC],
+[
+ case $HostOS_CPP in
+ mingw*) AC_MSG_CHECKING([whether $CC is a mingw gcc])
+ if $CC -v 2>&1 | grep mingw >/dev/null; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([Please use --with-gcc to specify a mingw gcc])
+ fi;;
+ *) ;;
+ esac
+])
dnl Small feature test for perl version. Assumes PerlCmd
dnl contains path to perl binary
dnl
AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
[$PerlCmd -v >conftest.out 2>&1
-if grep "version 5" conftest.out >/dev/null 2>&1; then
- :
-else
if grep "v5.6" conftest.out >/dev/null 2>&1; then
:
else
if grep "version 6" conftest.out >/dev/null 2>&1; then
:
else
- echo "Your version of perl probably won't work."
- fi
+ AC_MSG_ERROR([your version of perl probably won't work, try upgrading it.])
+ fi
fi
fi
-fi
rm -fr conftest*
])
])# FP_PROG_FIND
+# FP_PROG_SORT
+# ------------
+# Find a Unix-like sort
+AC_DEFUN([FP_PROG_SORT],
+[AC_PATH_PROG([fp_prog_sort], [sort])
+echo conwip > conftest.txt
+$fp_prog_sort -f conftest.txt > conftest.out 2>&1
+if grep 'conwip' conftest.out > /dev/null 2>&1 ; then
+ # The goods
+ SortCmd="$fp_prog_sort"
+else
+ # Summink else..pick next one.
+ AC_MSG_WARN([$fp_prog_sort looks like a non-*nix sort, ignoring it])
+ FP_CHECK_PROG([SortCmd], [sort], [], [], [$fp_prog_sort])
+fi
+rm -f conftest.txt conftest.out
+AC_SUBST([SortCmd])[]dnl
+])# FP_PROG_SORT
+
dnl
dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
dnl values of the second argument to the result of running
GhcPkgCmd=$fp_cv_matching_ghc_pkg
fi])# FP_PROG_GHC_PKG
-
-# FP_CHECK_WIN32
-# --------------
-# If Windows is the target platform (e.g. MinGW/MSYS or Cygwin with
-# -mno-cygwin), the variable "is_win32" is set to "yes", otherwise (e.g. *nix
-# systems or plain Cygwin) it is set to "no".
-AC_DEFUN([FP_CHECK_WIN32],
-[AC_CACHE_CHECK([for Windows environment], [fp_cv_is_win32],
- [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
-#if !_WIN32
- syntax error;
-#endif
-])], [fp_cv_is_win32=yes], [fp_cv_is_win32=no])])
-is_win32="$fp_cv_is_win32"[]dnl
-])# FP_CHECK_WIN32
-
-
-# FP_PATH_X
-# ---------
-# Same as AC_PATH_X, but works even for broken Cygwins which try to include the
-# non-existant <gl/mesa_wgl.h> header when -mno-cygwin is used.
-AC_DEFUN([FP_PATH_X],
-[AC_REQUIRE([FP_CHECK_WIN32])
-if test x"$is_win32" = xyes; then
- no_x=yes
-else
- AC_PATH_X
-fi
-])# FP_PATH_X
-
-
-# FP_PATH_XTRA
-# ------------
-# Same as AC_PATH_XTRA, but works even for broken Cygwins which try to include
-# the non-existant <gl/mesa_wgl.h> header when -mno-cygwin is used.
-AC_DEFUN([FP_PATH_XTRA],
-[AC_REQUIRE([FP_CHECK_WIN32])
-if test x"$is_win32" = xyes; then
- no_x=yes
-else
- AC_PATH_XTRA
-fi
-])# FP_PATH_XTRA
-
-
-# FP_CHECK_GL_HELPER(LIBNAME, LIBS, INCLUDES, FUNCTION-BODY)
-# ----------------------------------------------------------
-# Try each library in LIBS to successfully link INCLUDES plus FUNCTION-BODY,
-# setting LIBNAME_CFLAGS and LIBNAME_LIBS to the corresponding values. Sets
-# no_LIBNAME to "yes" if no suitable library was found. (LIBNAME_CFLAGS0
-# contains the value of LIBNAME_CFLAGS without CPPFLAGS, and LIBNAME_LIBS0
-# contains the value of LIBNAME_LIBS without LDFLAGS, but these are only
-# used internally.)
-AC_DEFUN([FP_CHECK_GL_HELPER],
-[AC_CACHE_CHECK([for $1 library], [fp_cv_check_$1_lib],
- [fp_cv_check_$1_lib="no"
- fp_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS ${$1_CFLAGS}"
- fp_save_LIBS="$LIBS"
- for fp_try_lib in $2; do
- # transform "-lfoo" to "foo.lib" when using cl
- if test x"$CC" = xcl; then
- fp_try_lib=`echo $fp_try_lib | sed -e 's/^-l//' -e 's/$/.lib/'`
- fi
- LIBS="$fp_try_lib ${$1_LIBS} $fp_save_LIBS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [fp_cv_check_$1_lib="$fp_try_lib ${$1_LIBS}"; break])
- done
- LIBS="$fp_save_LIBS"
- CPPFLAGS="$fp_save_CPPFLAGS"])
-
- if test x"$fp_cv_check_$1_lib" = xno; then
- no_$1=yes
- $1_CFLAGS=
- $1_LIBS=
- else
- $1_CFLAGS0="${$1_CFLAGS}"
- $1_CFLAGS="$CPPFLAGS ${$1_CFLAGS0}"
- $1_LIBS0="$fp_cv_check_$1_lib"
- $1_LIBS="$LDFLAGS ${$1_LIBS0}"
- fi
-])# FP_CHECK_GL_HELPER
-
-
-# FP_CHECK_GL
-# -----------
-AC_DEFUN([FP_CHECK_GL],
-[AC_REQUIRE([FP_PATH_X])
-AC_REQUIRE([AC_CANONICAL_TARGET])
-
-AC_ARG_ENABLE([hopengl],
- [AC_HELP_STRING([--enable-hopengl],
- [build a Haskell binding for OpenGL (GL/GLU). On Mac OS X, use
- --enable-hopengl=x11 to use X11 instead of the "native" libraries.
- (default=no)])],
- [enable_opengl=$enableval], [enable_opengl=no])
-
-if test x"$enable_opengl" = xno; then
- no_GL=yes
-else
- use_quartz_opengl=no
- case $target_os in
- darwin*)
- if test x"$enable_opengl" != xx11; then
- AC_DEFINE([USE_QUARTZ_OPENGL], [1],
- [Define to 1 if native OpenGL should be used on Mac OS X])
- use_quartz_opengl=yes
- fi
- ;;
- esac
-
- if test x"$use_quartz_opengl" != xyes; then
- AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"])
-
- if test x"$no_x" != xyes; then
- test -n "$x_includes" && GL_CFLAGS="-I$x_includes $GL_CFLAGS"
- test -n "$x_libraries" && GL_LIBS="-L$x_libraries -lX11 $GL_LIBS"
- fi
-
- FP_CHECK_GL_HELPER([GL], [-lGL -lopengl32], [@%:@include <GL/gl.h>], [glEnd()])
-
- if test x"$no_GL" != xyes; then
- # Ugly: To get wglGetProcAddress on Windows, we have to link with
- # opengl32.dll, too, even when we are using Cygwin with X11.
- case "$GL_LIBS" in
- *-lopengl32*|*opengl32.lib*) ;;
- *) fp_save_LIBS="$LIBS"
- LIBS="$LIBS -lopengl32"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include <GL/gl.h>]], [[glEnd()]])],
- [GL_LIBS="$GL_LIBS -lopengl32"; GL_LIBS0="$GL_LIBS0 -lopengl32"])
- LIBS="$fp_save_LIBS"
- ;;
- esac
- fi
- fi
-fi
-
-AC_SUBST([GL_CFLAGS])
-AC_SUBST([GL_LIBS])
-])# FP_CHECK_GL
-
-
-# FP_CHECK_GLU
-# ------------
-AC_DEFUN([FP_CHECK_GLU],
-[AC_REQUIRE([FP_CHECK_GL])dnl
-GLU_CFLAGS="$GL_CFLAGS0"
-GLU_LIBS="$GL_LIBS0"
-
-if test x"$enable_opengl" = xno; then
- no_GLU=yes
-elif test x"$use_quartz_opengl" != xyes; then
- FP_CHECK_GL_HELPER([GLU], [-lglu32 -lGLU], [@%:@include <GL/glu.h>], [gluNewQuadric()])
-fi
-
-AC_SUBST([GLU_CFLAGS])
-AC_SUBST([GLU_LIBS])
-])# FP_CHECK_GLU
-
-
-# FP_CHECK_GLUT
-# -------------
-AC_DEFUN([FP_CHECK_GLUT],
-[AC_REQUIRE([FP_CHECK_GLU])
-FP_PATH_XTRA
-
-if test x"$enable_opengl" = xno; then
- no_GLUT=yes
-elif test x"$use_quartz_opengl" != xyes; then
- GLUT_CFLAGS="$GLU_CFLAGS0"
- GLUT_LIBS="$GLU_LIBS0"
-
- if test x"$no_x" != xyes; then
- GLUT_LIBS="$X_PRE_LIBS -lXmu -lXi $X_EXTRA_LIBS $GLUT_LIBS"
- fi
-
- AC_CHECK_HEADERS([windows.h GL/glut.h])
- # Note 1: On Cygwin with X11, GL/GLU functions use the "normal" calling
- # convention, but GLUT functions use stdcall. To get this right, it is
- # necessary to include <windows.h> first.
- # Note 2: MinGW/MSYS comes without a GLUT header, so we use Cygwin's one in
- # that case.
- FP_CHECK_GL_HELPER([GLUT], [-lglut32 -lglut], [
-#if HAVE_WINDOWS_H
-#include <windows.h>
-#endif
-#if HAVE_GL_GLUT_H
-#include <GL/glut.h>
-#else
-#include "glut_local.h"
-#endif
- ], [glutMainLoop()])
-fi
-
-AC_SUBST([GLUT_CFLAGS])
-AC_SUBST([GLUT_LIBS])
-])# FP_CHECK_GLUT
-
-
-# FP_EMPTY_STRUCTS
-# ----------------
-# Define output variable SUPPORTS_EMPTY_STRUCTS if empty structs are accepted by
-# CC.
-dnl
-AC_DEFUN(FP_EMPTY_STRUCTS,
-[AC_CACHE_CHECK(empty struct support, fp_cv_empty_structs,
-[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[typedef struct { /* empty */ } StgFoo;]],
-[[int i;]])],
-[fp_cv_empty_structs=yes],
-[fp_cv_empty_structs=no])])
-if test x"$fp_cv_empty_structs" = xyes; then
- AC_DEFINE([SUPPORTS_EMPTY_STRUCTS], [1], [Define to 1 if C compiler supports declaration of empty structure types.])
-fi
-])
-
-
# LocalWords: fi