# ensure we don't clash with any pre-supplied autoconf ones.
+# FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
+# ----------------------------------
+# Little endian Arm on Linux with some ABIs has big endian word order
+# in doubles. Define FLOAT_WORDS_BIGENDIAN if this is the case.
+AC_DEFUN([FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN],
+ [AC_CACHE_CHECK([whether float word order is big endian], [fptools_cv_float_word_order_bigendian],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [#include <endian.h>],
+ [#if defined(__FLOAT_WORD_ORDER) && __FLOAT_WORD_ORDER == BIG_ENDIAN
+ return 0;
+ #else
+ not float word order big endian
+ #endif]
+ )],
+ [fptools_cv_float_word_order_bigendian=yes],
+ [fptools_cv_float_word_order_bigendian=no])
+ ])
+ case $fptools_cv_float_word_order_bigendian in
+ yes)
+ AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
+ [Define to 1 if your processor stores words of floats with
+ the most significant byte first]) ;;
+ esac
+])
+
+
# FP_EVAL_STDERR(COMMAND)
# -----------------------
# Eval COMMAND, save its stderr (without lines resulting from shell tracing)
])# FP_EVAL_STDERR
-# FP_CHECK_FLAG(FLAG, [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED])
-# ---------------------------------------------------------------------
-# Check to see whether the compiler for the current language supports a
-# particular option.
-#
-# Implementation note: When given an unkown option, GCC issues an warning on
-# stderr only, but returns an exit value of 0 nevertheless. Consequently we have
-# to check stderr *and* the exit value.
-#
-# Used by ghc.
-AC_DEFUN(FP_CHECK_FLAG,
-[AC_LANG_COMPILER_REQUIRE()dnl
-AC_LANG_CASE([C], [fp_compiler="$CC" m4_pushdef([fp_Flags], [CFLAGS])],
- [C++], [fp_compiler="$CXX" m4_pushdef([fp_Flags], [CXXFLAGS])],
- [Fortran 77], [fp_compiler="$F77" m4_pushdef([fp_Flags], [FFLAGS])])
-m4_pushdef([fp_Cache], [fp_cv_[]fp_Flags[]AS_TR_SH([$1])])[]dnl
-AC_CACHE_CHECK([whether $fp_compiler accepts $1], [fp_Cache],
-[AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
-fp_save_flags="$fp_Flags"
-fp_Flags="$fp_Flags $1"
-fp_Cache=no
-if FP_EVAL_STDERR([$ac_compile conftest.$ac_ext]) >/dev/null; then
- test -s conftest.err || fp_Cache=yes
-fi
-fp_Flags="$fp_save_flags"
-rm -f conftest.err conftest.$ac_ext])
-AS_IF([test $fp_Cache = yes], [$2], [$3])[]dnl
-m4_popdef([fp_Cache])[]dnl
-m4_popdef([fp_Flags])[]dnl
-])# FP_CHECK_FLAG
-
-
# FP_PROG_CONTEXT_DIFF
# --------------------
# Figure out how to do context diffs. Sets the output variable ContextDiffCmd.
[echo foo > conftest1
echo foo > conftest2
fp_cv_context_diff=no
-for fp_var in '-C 1' '-c1'
+for fp_var in '-U 1' '-u1' '-C 1' '-c1'
do
if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then
fp_cv_context_diff="diff $fp_var"
])# FP_PROG_CONTEXT_DIFF
-# FP_DECL_ALTZONE
-# ---------------
-# Defines HAVE_DECL_ALTZONE to 1 if declared, 0 otherwise.
-#
-# Used by base package.
-AC_DEFUN([FP_DECL_ALTZONE],
-[AC_REQUIRE([AC_HEADER_TIME])dnl
-AC_CHECK_HEADERS([sys/time.h])
-AC_CHECK_DECLS([altzone], [], [],[#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif])
-])# FP_DECL_ALTZONE
-
-
# FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
# --------------------------------------------------------
# Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for
alpha-dec-osf*) fptools_cv_leading_underscore=no;;
*cygwin32) fptools_cv_leading_underscore=yes;;
*mingw32) fptools_cv_leading_underscore=yes;;
+
+ # HACK: Apple doesn't seem to provide nlist in the 64-bit-libraries
+x86_64-apple-darwin*) fptools_cv_leading_underscore=yes;;
+
*) AC_RUN_IFELSE([AC_LANG_SOURCE([[#ifdef HAVE_NLIST_H
#include <nlist.h>
struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
dnl
dnl Check for GreenCard and version.
dnl
-AC_DEFUN(FPTOOLS_GREENCARD,
+AC_DEFUN([FPTOOLS_GREENCARD],
[
AC_PATH_PROG(GreenCardCmd,greencard)
AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
dnl at least Happy version 1.14. If there's no installed Happy, we look
dnl for a happy source tree and point the build system at that instead.
dnl
-AC_DEFUN(FPTOOLS_HAPPY,
-[
-if test -d $srcdir/happy; then
- SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
-fi
-if test x"$UseSrcTreeHappy" = xYES; then
- HappyCmd=$SrcTreeHappyCmd
-else
- AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
+AC_DEFUN([FPTOOLS_HAPPY],
+[AC_PATH_PROG(HappyCmd,happy,)
+# Happy is passed to Cabal, so we need a native path
+if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
+ test "${OSTYPE}" != "msys" && \
+ test "${HappyCmd}" != ""
+then
+ # Canonicalise to <drive>:/path/to/gcc
+ HappyCmd=`cygpath -m ${HappyCmd}`
+ AC_MSG_NOTICE([normalized happy command to $HappyCmd])
fi
+
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'`;
-elif test x"$HappyCmd" != x; then
+[if test x"$HappyCmd" != x; then
fptools_cv_happy_version="`$HappyCmd -v |
grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
else
fi;
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
+if test ! -f compiler/parser/Parser.hs || test ! -f compiler/main/ParsePkgConf.hs || test ! -f compiler/cmm/CmmParse.hs || test ! -f compiler/parser/ParserCore.hs
+then
+ 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)
])
dnl
-dnl Check for Haddock and version. If there's no installed Haddock, we look
-dnl for a haddock source tree and point the build system at that instead.
-dnl
-AC_DEFUN(FPTOOLS_HADDOCK,
-[
-if test -d $srcdir/haddock; then
- SrcTreeHaddockCmd=$hardtop/haddock/src/haddock-inplace
-fi
-if test x"$UseSrcTreeHaddock" = xYES; then
- HaddockCmd=$SrcTreeHaddockCmd
-else
- AC_PATH_PROG(HaddockCmd,haddock,$SrcTreeHaddockCmd)
-fi
-dnl Darn, I forgot to make Haddock print out its version number when
-dnl invoked with -v. We could try generating some HTML and grepping
-dnl through that to find the version number, but I think we'll make
-dnl do without it for now.
-])
-
-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 at least Alex version 2.0.1.
dnl
-AC_DEFUN(FPTOOLS_ALEX,
+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)
+AC_PATH_PROG(AlexCmd,alex,)
+# Alex is passed to Cabal, so we need a native path
+if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
+ test "${OSTYPE}" != "msys" && \
+ test "${AlexCmd}" != ""
+then
+ # Canonicalise to <drive>:/path/to/gcc
+ AlexCmd=`cygpath -m ${AlexCmd}`
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
+[if 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
fi;
changequote([, ])dnl
])
-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
+if test ! -f compiler/cmm/CmmLex.hs || test ! -f compiler/parser/Lexer.hs
+then
+ FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.1.0],
+ [AC_MSG_ERROR([Alex version 2.1.0 or later is required to compile GHC.])])[]dnl
fi
AlexVersion=$fptools_cv_alex_version;
AC_SUBST(AlexVersion)
dnl
-dnl Check whether ld supports -x
+dnl Check for windres and version.
+dnl 2.15.91 works
+dnl 2.17.50 doesn't work
+dnl 2.18.50 works
dnl
-AC_DEFUN(FPTOOLS_LD_X,
-[AC_CACHE_CHECK([whether ld understands -x], fptools_cv_ld_x,
+AC_DEFUN([FPTOOLS_WINDRES],
+[
+if test "x$HostPlatform" = "xi386-unknown-mingw32"
+then
+ AC_PATH_PROG(WindResCmd,windres,)
+ # Alex is passed to Cabal, so we need a native path
+ if test "${OSTYPE}" != "msys" && \
+ test "${WindResCmd}" != ""
+ then
+ # Canonicalise to <drive>:/path/to/gcc
+ WindResCmd=`cygpath -m ${WindResCmd}`
+ fi
+
+ AC_CACHE_CHECK([for version of windres], fptools_cv_windres_version,
+ changequote(, )dnl
+ [
+ if test x"$WindResCmd" != x
+ then
+ fptools_cv_windres_version="`$WindResCmd --version |
+ grep 'GNU windres' |
+ sed -e 's/GNU windres[^0-9]* \([0-9\.]*\).*/\1/g'`" ;
+ else
+ fptools_cv_windres_version="";
+ fi
+ changequote([, ])dnl
+ ])
+ FP_COMPARE_VERSIONS([$fptools_cv_windres_version],[-eq],[2.17.50],
+ [AC_MSG_ERROR([Your windres version isn't compatible with GHC. 2.15.91 and 2.18.50 are known to work.])])[]dnl
+ indResVersion=$fptools_cv_windres_version;
+ AC_SUBST(WindResVersion)
+fi
+])
+
+
+# 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],
[
-echo 'foo() {}' > conftest.c
+if test -z "$1"
+then
+ 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
+ # Insist on >= ld-2.15.x, since earlier versions doesn't handle
+ # the generation of relocatable object files with large amounts
+ # of relocations correctly. (cf. HSbase.o splittage-hack)
+ fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3`
+ FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214],
+ [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl
+ ;;
+ esac
+else
+ LdCmd="$1"
+fi
+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 echo $TargetPlatform | grep "^.*-apple-darwin$" > /dev/null 2> /dev/null; 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
dnl
dnl AC_SHEBANG_PERL - can we she-bang perl?
dnl
-AC_DEFUN(FPTOOLS_SHEBANG_PERL,
+AC_DEFUN([FPTOOLS_SHEBANG_PERL],
[AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
[echo "#!$PerlCmd"'
exit $1;
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], [3.0],
+ [AC_MSG_ERROR([Need at least gcc version 3.0 (3.4+ recommended)])])
+ # See #2770: gcc 2.95 doesn't work any more, apparently. There probably
+ # isn't a very good reason for that, but for now just make configure
+ # fail.
+ 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 contains path to perl binary.
+dnl
+dnl (Perl versions prior to v5.6 does not contain the string "v5";
+dnl instead they display version strings such as "version 5.005".)
dnl
-AC_DEFUN(FPTOOLS_CHECK_PERL_VERSION,
+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
+ if grep "v5" conftest.out >/dev/null 2>&1; then
:
else
- if grep "v5.8" 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
- fi
+ AC_MSG_ERROR([your version of perl probably won't work, try upgrading it.])
fi
-fi
rm -fr conftest*
])
# ------------
# Find a non-WinDoze version of the "find" utility.
AC_DEFUN([FP_PROG_FIND],
-[AC_PATH_PROG([fp_prog_find], [find])
+[AC_PATH_PROGS([fp_prog_find], [gfind 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".
+ case $HostPlatform in
+ *mingw32)
+ if test x${OSTYPE} != xmsys
+ then
+ fp_prog_find="`cygpath --mixed ${fp_prog_find}`"
+ AC_MSG_NOTICE([normalized find command to $fp_prog_find])
+ fi ;;
+ *) ;;
+ esac
FindCmd="$fp_prog_find"
else
# Found a poor WinDoze version of "find", ignore it.
])# 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
dnl result, so it is suitable for checks which should be
dnl run every time.
dnl
-AC_DEFUN(FPTOOLS_NOCACHE_CHECK,
+AC_DEFUN([FPTOOLS_NOCACHE_CHECK],
[AC_MSG_CHECKING([$1])
$3
AC_MSG_RESULT([$][$2])
dnl Test for version of installed ghc. Uses $GHC.
dnl [original version pinched from c2hs]
dnl
-AC_DEFUN(FPTOOLS_GHC_VERSION,
+AC_DEFUN([FPTOOLS_GHC_VERSION],
[FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc],
["${WithGhc-ghc}" --version > conftestghc 2>&1
cat conftestghc >&AS_MESSAGE_LOG_FD
])dnl
-dnl ** Map an arithmetic C type to a Haskell type.
-dnl Based on autconf's AC_CHECK_SIZEOF.
-
-dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION])
-AC_DEFUN(FPTOOLS_CHECK_HTYPE,
-[changequote(<<, >>)dnl
-dnl The name to #define.
-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_CV_NAME_supported=yes
-fp_check_htype_save_cppflags="$CPPFLAGS"
-CPPFLAGS="$CPPFLAGS $X_CFLAGS"
-AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdio.h>
-#include <stddef.h>
-
-#if HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#if HAVE_SYS_STAT_H
-# include <sys/stat.h>
-#endif
-
-#if HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#if HAVE_SIGNAL_H
-# include <signal.h>
-#endif
-
-#if HAVE_TIME_H
-# include <time.h>
-#endif
-
-#if HAVE_TERMIOS_H
-# include <termios.h>
-#endif
-
-#if HAVE_STRING_H
-# include <string.h>
-#endif
-
-#if HAVE_CTYPE_H
-# include <ctype.h>
-#endif
-
-#if defined(HAVE_GL_GL_H)
-# include <GL/gl.h>
-#elif defined(HAVE_OPENGL_GL_H)
-# include <OpenGL/gl.h>
-#endif
-
-#if defined(HAVE_AL_ALC_H)
-# include <AL/alc.h>
-#elif defined(HAVE_OPENAL_ALC_H)
-# include <OpenAL/alc.h>
-#endif
-
-#if HAVE_SYS_RESOURCE_H
-# include <sys/resource.h>
-#endif
-
-typedef $1 testing;
-
-main() {
- FILE *f=fopen("conftestval", "w");
- if (!f) exit(1);
- if (((testing)((int)((testing)1.4))) == ((testing)1.4)) {
- fprintf(f, "%s%d\n",
- ((testing)(-1) < (testing)0) ? "Int" : "Word",
- sizeof(testing)*8);
- } else {
- fprintf(f,"%s\n",
- (sizeof(testing) > sizeof(double)) ? "LDouble" :
- (sizeof(testing) == sizeof(double)) ? "Double" : "Float");
- }
- fclose(f);
- exit(0);
-}]])],[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
-])
-
-
# FP_CHECK_FUNC(FUNCTION, PROLOGUE, BODY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
# ---------------------------------------------------------------------------------
# A variant of AC_CHECK_FUNCS, limited to a single FUNCTION, but with the
# 'PATH'. Note that /usr/bin/fop is broken in SuSE 9.1 (unpatched), so try
# /usr/share/fop/fop.sh in that case (or no 'fop'), too.
AC_DEFUN([FP_PROG_FOP],
-[AC_PATH_PROGS([FopCmd1], [fop])
+[AC_PATH_PROGS([FopCmd1], [fop fop.sh])
if test -n "$FopCmd1"; then
AC_CACHE_CHECK([for $FopCmd1 usability], [fp_cv_fop_usability],
[FP_GEN_FO
[fp_ghc_pkg_guess=`echo $WithGhc | sed 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
if "$fp_ghc_pkg_guess" -l > /dev/null 2>&1; then
fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
+elif "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then
+ # from 6.10, ghc-pkg doesn't support the old -l syntax any more
+ fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
else
fp_cv_matching_ghc_pkg=no
fi])
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_GCC_EXTRA_FLAGS
+# ------------------
+# Determine which extra flags we need to pass gcc when we invoke it
+# to compile .hc code.
+#
+# Some OSs (Mandrake Linux, in particular) configure GCC with
+# -momit-leaf-frame-pointer on by default. If this is the case, we
+# need to turn it off for mangling to work. The test is currently a
+# bit crude, using only the version number of gcc.
+#
+# -fwrapv is needed for gcc to emit well-behaved code in the presence of
+# integer wrap around. (Trac #952)
+#
+# -fno-unit-at-a-time or -fno-toplevel-reoder is necessary to avoid gcc
+# reordering things in the module and confusing the manger and/or splitter.
+# (eg. Trac #1427)
+#
+AC_DEFUN([FP_GCC_EXTRA_FLAGS],
+[AC_REQUIRE([FP_HAVE_GCC])
+AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_extra_opts],
+[fp_cv_gcc_extra_opts=
+ FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4],
+ [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fwrapv"],
+ [])
+ case $TargetPlatform in
+ i386-*|x86_64-*)
+ FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.2],
+ [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -mno-omit-leaf-frame-pointer"],
+ [])
+ FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4],
+ [FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [4.2],
+ [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
+ [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-unit-at-a-time"]
+ )],
+ [])
+ ;;
+ sparc-*-solaris2)
+ FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [4.2],
+ [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
+ [])
+ ;;
+ esac
+])
+AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts)
+])
-# 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/'`
+# FP_SETUP_PROJECT_VERSION
+# ---------------------
+AC_DEFUN([FP_SETUP_PROJECT_VERSION],
+[
+if test "$RELEASE" = "NO"; then
+ AC_MSG_CHECKING([for GHC version date])
+ if test -f VERSION_DATE; then
+ PACKAGE_VERSION=${PACKAGE_VERSION}.`cat VERSION_DATE`
+ AC_MSG_RESULT(given $PACKAGE_VERSION)
+ elif test -d .git; then
+ changequote(, )dnl
+ ver_date=`git log -n 1 --date=short --pretty=format:%ci | sed "s/^.*\([0-9][0-9][0-9][0-9]\)-\([0-9][0-9]\)-\([0-9][0-9]\).*$/\1\2\3/"`
+ if echo $ver_date | grep '^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$' 2>&1 >/dev/null; then true; else
+ changequote([, ])dnl
+ AC_MSG_ERROR([failed to detect version date: check that git is in your path])
+ fi
+ PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
+ AC_MSG_RESULT(inferred $PACKAGE_VERSION)
+ elif test -d _darcs; then
+ # TODO: Remove this branch after conversion to Git
+ changequote(, )dnl
+ ver_date=`darcs changes --quiet --no-summary --xml | head -500 | grep 'date=' | sed "s/^.*date='\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*$/\1/g" | sort -n | tail -1`
+ if echo $ver_date | grep '^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$' 2>&1 >/dev/null; then true; else
+ changequote([, ])dnl
+ AC_MSG_ERROR([failed to detect version date: check that darcs is in your path])
+ fi
+ PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
+ AC_MSG_RESULT(inferred $PACKAGE_VERSION)
+ elif test -f VERSION; then
+ PACKAGE_VERSION=`cat VERSION`
+ AC_MSG_RESULT(given $PACKAGE_VERSION)
+ else
+ AC_MSG_WARN([cannot determine snapshot version: no .git or _darcs directory and no VERSION file])
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
+fi
+# Some renamings
+AC_SUBST([ProjectName], [$PACKAGE_NAME])
+AC_SUBST([ProjectVersion], [$PACKAGE_VERSION])
+
+# Split PACKAGE_VERSION into (possibly empty) parts
+VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
+VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
+VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
+ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
+
+# Calculate project version as an integer, using 2 digits for minor version
+case $VERSION_MINOR in
+ ?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;;
+ ??) ProjectVersionInt=${VERSION_MAJOR}${VERSION_MINOR} ;;
+ *) AC_MSG_ERROR([bad minor version in $PACKAGE_VERSION]) ;;
+esac
+AC_SUBST([ProjectVersionInt])
-# 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
+# The project patchlevel is zero unless stated otherwise
+test -z "$ProjectPatchLevel" && ProjectPatchLevel=0
- if test x"$use_quartz_opengl" != xyes; then
- AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"])
+# Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508
+ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'`
- 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
+AC_SUBST([ProjectPatchLevel])
+])# FP_SETUP_PROJECT_VERSION
- 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
+# Check for a working timer_create(). We need a pretty detailed check
+# here, because there exist partially-working implementations of
+# timer_create() in certain versions of Linux (see bug #1933).
+#
+AC_DEFUN([FP_CHECK_TIMER_CREATE],
+ [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)],
+ [fptools_cv_timer_create_works],
+ [AC_TRY_RUN([
+#include <stdio.h>
+#ifdef HAVE_STDLIB_H
+#include <stdlib.h>
+#endif
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+static volatile int tock = 0;
+static void handler(int i)
+{
+ tock = 1;
+}
-# 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
+static void timeout(int i)
+{
+ // timer_settime() has been known to hang, so just in case
+ // we install a 1-second timeout (see #2257)
+ exit(99);
+}
-AC_SUBST([GLU_CFLAGS])
-AC_SUBST([GLU_LIBS])
-])# FP_CHECK_GLU
+int main(int argc, char *argv[])
+{
+ struct sigevent ev;
+ timer_t timer;
+ struct itimerspec it;
+ struct sigaction action;
+ int m,n,count = 0;
+
+ ev.sigev_notify = SIGEV_SIGNAL;
+ ev.sigev_signo = SIGVTALRM;
+
+ action.sa_handler = handler;
+ action.sa_flags = 0;
+ sigemptyset(&action.sa_mask);
+ if (sigaction(SIGVTALRM, &action, NULL) == -1) {
+ fprintf(stderr,"SIGVTALRM problem\n");
+ exit(3);
+ }
+
+ action.sa_handler = timeout;
+ action.sa_flags = 0;
+ sigemptyset(&action.sa_mask);
+ if (sigaction(SIGALRM, &action, NULL) == -1) {
+ fprintf(stderr,"SIGALRM problem\n");
+ exit(3);
+ }
+ alarm(1);
+
+ if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) {
+ fprintf(stderr,"No CLOCK_PROCESS_CPUTIME_ID timer\n");
+ exit(1);
+ }
+
+ it.it_value.tv_sec = 0;
+ it.it_value.tv_nsec = 1;
+ it.it_interval = it.it_value;
+ if (timer_settime(timer, 0, &it, NULL) != 0) {
+ fprintf(stderr,"settime problem\n");
+ exit(4);
+ }
+
+ tock = 0;
+
+ for(n = 3; n < 20000; n++){
+ for(m = 2; m <= n/2; m++){
+ if (!(n%m)) count++;
+ if (tock) goto out;
+ }
+ }
+out:
+
+ if (!tock) {
+ fprintf(stderr,"no CLOCK_PROCESS_CPUTIME_ID signal\n");
+ exit(5);
+ }
+
+ timer_delete(timer);
+
+ if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) {
+ fprintf(stderr,"No CLOCK_REALTIME timer\n");
+ exit(2);
+ }
+
+ it.it_value.tv_sec = 0;
+ it.it_value.tv_nsec = 1000000;
+ it.it_interval = it.it_value;
+ if (timer_settime(timer, 0, &it, NULL) != 0) {
+ fprintf(stderr,"settime problem\n");
+ exit(4);
+ }
+
+ tock = 0;
+
+ usleep(3000);
+
+ if (!tock) {
+ fprintf(stderr,"no CLOCK_REALTIME signal\n");
+ exit(5);
+ }
+
+ timer_delete(timer);
+
+ exit(0);
+}
+ ],
+ [fptools_cv_timer_create_works=yes],
+ [fptools_cv_timer_create_works=no])
+ ])
+case $fptools_cv_timer_create_works in
+ yes) AC_DEFINE([USE_TIMER_CREATE], 1,
+ [Define to 1 if we can use timer_create(CLOCK_PROCESS_CPUTIME_ID,...)]);;
+esac
+])
-# FP_CHECK_GLUT
+# FP_ARG_GMP
# -------------
-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"
+AC_DEFUN([FP_ARG_GMP],
+[
+AC_ARG_WITH([gmp-includes],
+ [AC_HELP_STRING([--with-gmp-includes],
+ [directory containing gmp.h])],
+ [gmp_includes=$withval],
+ [gmp_includes=NONE])
+
+AC_ARG_WITH([gmp-libraries],
+ [AC_HELP_STRING([--with-gmp-libraries],
+ [directory containing gmp library])],
+ [gmp_libraries=$withval],
+ [gmp_libraries=NONE])
+])# FP_ARG_GMP
+
+AC_DEFUN([CHECK_GMP],
+[AC_REQUIRE([AC_PROG_CPP])
+AC_REQUIRE([AC_PROG_CC])
+])
+
+# FP_CHECK_MACOSX_DEPLOYMENT_TARGET
+# ---------------------------------
+AC_DEFUN([FP_CHECK_MACOSX_DEPLOYMENT_TARGET],
+[
+if test "x$TargetOS_CPP-$TargetVendor_CPP" = "xdarwin-apple"; then
+ AC_MSG_CHECKING([Mac OS X deployment target])
+ case $FP_MACOSX_DEPLOYMENT_TARGET in
+ none) ;;
+ 10.4) MACOSX_DEPLOYMENT_VERSION=10.4
+ MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
+ ;;
+ 10.4u) MACOSX_DEPLOYMENT_VERSION=10.4
+ MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
+ ;;
+ *) MACOSX_DEPLOYMENT_VERSION=$FP_MACOSX_DEPLOYMENT_TARGET
+ MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX${FP_MACOSX_DEPLOYMENT_TARGET}.sdk
+ ;;
+ esac
+ if test "x$FP_MACOSX_DEPLOYMENT_TARGET" = "xnone"; then
+ AC_MSG_RESULT(none)
+ else
+ if test ! -d $MACOSX_DEPLOYMENT_SDK; then
+ AC_MSG_ERROR([Unknown deployment target $FP_MACOSX_DEPLOYMENT_TARGET])
+ fi
+ AC_MSG_RESULT([${MACOSX_DEPLOYMENT_VERSION} (${MACOSX_DEPLOYMENT_SDK})])
fi
+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()])
+# --------------------------------------------------------------
+# Calculate absolute path to build tree
+# --------------------------------------------------------------
+
+AC_DEFUN([FP_FIND_ROOT],[
+AC_MSG_CHECKING(for path to top of build tree)
+
+dnl This would be
+dnl make -C utils/pwd clean && make -C utils/pwd
+dnl except we don't want to have to know what make is called. Sigh.
+if test ! -f utils/pwd/pwd && test ! -f utils/pwd/pwd.exe; then
+ cd utils/pwd
+ rm -f *.o
+ rm -f *.hi
+ rm -f pwd
+ rm -f pwd.exe
+ $WithGhc -v0 --make pwd -o pwd
+ cd ../..
fi
-AC_SUBST([GLUT_CFLAGS])
-AC_SUBST([GLUT_LIBS])
-])# FP_CHECK_GLUT
+hardtop=`utils/pwd/pwd forwardslash`
+
+if ! test -d "$hardtop"; then
+ AC_MSG_ERROR([cannot determine current directory])
+fi
+
+dnl Remove common automounter nonsense
+dnl
+hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'`
+
+AC_SUBST(hardtop)
+
+AC_MSG_RESULT(${hardtop})
+
+# We don't support building in directories with spaces.
+case "$hardtop" in
+ *' '*) AC_MSG_ERROR([
+ The build system does not support building in a directory containing
+ space characters. Suggestion: move the build tree somewhere else.])
+ ;;
+esac
+])
# LocalWords: fi