3 ev.sigev_notify = SIGEV_SIGNAL;
4 ev.sigev_signo = SIGVTALRM;
5 if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) {
13 # Extra autoconf macros for the Glasgow fptools
15 # To be a good autoconf citizen, names of local macros have prefixed with FP_ to
16 # ensure we don't clash with any pre-supplied autoconf ones.
19 # FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
20 # ----------------------------------
21 # Little endian Arm on Linux with some ABIs has big endian word order
22 # in doubles. Define FLOAT_WORDS_BIGENDIAN if this is the case.
23 AC_DEFUN([FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN],
24 [AC_CACHE_CHECK([whether float word order is big endian], [fptools_cv_float_word_order_bigendian],
27 [#include <endian.h>],
28 [#if defined(__FLOAT_WORD_ORDER) && __FLOAT_WORD_ORDER == BIG_ENDIAN
31 not float word order big endian
34 [fptools_cv_float_word_order_bigendian=yes],
35 [fptools_cv_float_word_order_bigendian=no])
37 case $fptools_cv_float_word_order_bigendian in
39 AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
40 [Define to 1 if your processor stores words of floats with
41 the most significant byte first]) ;;
46 # FP_EVAL_STDERR(COMMAND)
47 # -----------------------
48 # Eval COMMAND, save its stderr (without lines resulting from shell tracing)
49 # into the file conftest.err and the exit status in the variable fp_status.
50 AC_DEFUN([FP_EVAL_STDERR],
51 [{ (eval $1) 2>conftest.er1
53 grep -v '^ *+' conftest.er1 >conftest.err
55 (exit $fp_status); }[]dnl
59 # FP_CHECK_FLAG(FLAG, [ACTION-IF-SUPPORTED], [ACTION-IF-NOT-SUPPORTED])
60 # ---------------------------------------------------------------------
61 # Check to see whether the compiler for the current language supports a
64 # Implementation note: When given an unkown option, GCC issues an warning on
65 # stderr only, but returns an exit value of 0 nevertheless. Consequently we have
66 # to check stderr *and* the exit value.
69 AC_DEFUN([FP_CHECK_FLAG],
70 [AC_LANG_COMPILER_REQUIRE()dnl
71 AC_LANG_CASE([C], [fp_compiler="$CC" m4_pushdef([fp_Flags], [CFLAGS])],
72 [C++], [fp_compiler="$CXX" m4_pushdef([fp_Flags], [CXXFLAGS])],
73 [Fortran 77], [fp_compiler="$F77" m4_pushdef([fp_Flags], [FFLAGS])])
74 m4_pushdef([fp_Cache], [fp_cv_[]fp_Flags[]AS_TR_SH([$1])])[]dnl
75 AC_CACHE_CHECK([whether $fp_compiler accepts $1], [fp_Cache],
76 [AC_LANG_CONFTEST([AC_LANG_PROGRAM()])
77 fp_save_flags="$fp_Flags"
78 fp_Flags="$fp_Flags $1"
80 if FP_EVAL_STDERR([$ac_compile conftest.$ac_ext]) >/dev/null; then
81 test -s conftest.err || fp_Cache=yes
83 fp_Flags="$fp_save_flags"
84 rm -f conftest.err conftest.$ac_ext])
85 AS_IF([test $fp_Cache = yes], [$2], [$3])[]dnl
86 m4_popdef([fp_Cache])[]dnl
87 m4_popdef([fp_Flags])[]dnl
91 # FP_PROG_CONTEXT_DIFF
92 # --------------------
93 # Figure out how to do context diffs. Sets the output variable ContextDiffCmd.
95 # Note: NeXTStep thinks diff'ing a file against itself is "trouble".
97 # Used by ghc, glafp-utils/ltx, and glafp-utils/runstdtest.
98 AC_DEFUN([FP_PROG_CONTEXT_DIFF],
99 [AC_CACHE_CHECK([for a working context diff], [fp_cv_context_diff],
100 [echo foo > conftest1
102 fp_cv_context_diff=no
103 for fp_var in '-U 1' '-u1' '-C 1' '-c1'
105 if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then
106 fp_cv_context_diff="diff $fp_var"
110 if test x"$fp_cv_context_diff" = xno; then
111 AC_MSG_ERROR([cannot figure out how to do context diffs])
113 AC_SUBST(ContextDiffCmd, [$fp_cv_context_diff])
114 ])# FP_PROG_CONTEXT_DIFF
117 # FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
118 # --------------------------------------------------------
119 # Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for
120 # compilation. Execute IF-FAILS when unable to determine the value. Works for
121 # cross-compilation, too.
123 # Implementation note: We are lazy and use an internal autoconf macro, but it
124 # is supported in autoconf versions 2.50 up to the actual 2.57, so there is
126 AC_DEFUN([FP_COMPUTE_INT],
127 [_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl
131 # FP_CHECK_ALIGNMENT(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
132 # ------------------------------------------------------------------
133 # A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a
134 # given type. Defines ALIGNMENT_TYPE.
135 AC_DEFUN([FP_CHECK_ALIGNMENT],
136 [AS_LITERAL_IF([$1], [],
137 [AC_FATAL([$0: requires literal arguments])])[]dnl
138 AC_CHECK_TYPE([$1], [], [], [$3])[]dnl
139 m4_pushdef([fp_Cache], [AS_TR_SH([fp_cv_alignment_$1])])[]dnl
140 AC_CACHE_CHECK([alignment of $1], [fp_Cache],
141 [if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
142 FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)],
144 [AC_INCLUDES_DEFAULT([$3])],
145 [AC_MSG_ERROR([cannot compute alignment ($1)
146 See `config.log' for more details.], [77])])
150 AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $fp_Cache, [The alignment of a `$1'.])[]dnl
151 m4_popdef([fp_Cache])[]dnl
152 ])# FP_CHECK_ALIGNMENT
155 # FP_LEADING_UNDERSCORE
156 # ---------------------
157 # Test for determining whether symbol names have a leading underscore. We assume
158 # that they _haven't_ if anything goes wrong. Sets the output variable
159 # LeadingUnderscore to YES or NO and defines LEADING_UNDERSCORE correspondingly.
161 # Some nlist implementations seem to try to be compatible by ignoring a leading
162 # underscore sometimes (eg. FreeBSD). We therefore have to work around this by
163 # checking for *no* leading underscore first. Sigh. --SDM
165 # Similarly on OpenBSD, but this test doesn't help. -- dons
166 AC_DEFUN([FP_LEADING_UNDERSCORE],
167 [AC_CHECK_LIB([elf], [nlist], [LIBS="-lelf $LIBS"])
168 AC_CACHE_CHECK([leading underscore in symbol names], [fptools_cv_leading_underscore], [
169 # Hack!: nlist() under Digital UNIX insist on there being an _,
170 # but symbol table listings shows none. What is going on here?!?
172 # Another hack: cygwin doesn't come with nlist.h , so we hardwire
173 # the underscoredness of that "platform"
174 case $HostPlatform in
175 *openbsd*) # x86 openbsd is ELF from 3.4 >, meaning no leading uscore
177 i386-*2\.@<:@0-9@:>@ | i386-*3\.@<:@0-3@:>@ ) fptools_cv_leading_underscore=yes ;;
178 *) fptools_cv_leading_underscore=no ;;
180 alpha-dec-osf*) fptools_cv_leading_underscore=no;;
181 *cygwin32) fptools_cv_leading_underscore=yes;;
182 *mingw32) fptools_cv_leading_underscore=yes;;
184 # HACK: Apple doesn't seem to provide nlist in the 64-bit-libraries
185 x86_64-apple-darwin*) fptools_cv_leading_underscore=yes;;
187 *) AC_RUN_IFELSE([AC_LANG_SOURCE([[#ifdef HAVE_NLIST_H
189 struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
190 struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
198 if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
200 if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
204 }]])],[fptools_cv_leading_underscore=yes],[fptools_cv_leading_underscore=no],[fptools_cv_leading_underscore=no])
207 AC_SUBST([LeadingUnderscore], [`echo $fptools_cv_leading_underscore | sed 'y/yesno/YESNO/'`])
208 if test x"$fptools_cv_leading_underscore" = xyes; then
209 AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.])
210 fi])# FP_LEADING_UNDERSCORE
213 # FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
214 # ----------------------------------------------------------------------------------
215 # Compare dotted version numbers VERSION1 and VERSION2 lexicographically according
216 # to TEST (one of -eq, -ne, -lt, -le, -gt, or -ge).
217 AC_DEFUN([FP_COMPARE_VERSIONS],
218 [fp_version1=$1; fp_version2=$3
219 fp_save_IFS=$IFS; IFS='.'
220 while test x"$fp_version1" != x || test x"$fp_version2" != x
223 set dummy $fp_version1; shift
225 test $[@%:@] = 0 || { fp_num1="[$]1"; shift; }
226 test x"$fp_num1" = x && fp_num1="0"
229 set dummy $fp_version2; shift
231 test $[@%:@] = 0 || { fp_num2="[$]1"; shift; }
232 test x"$fp_num2" = x && fp_num2="0"
235 test "$fp_num1" = "$fp_num2" || break;
238 AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl
239 ])# FP_COMPARE_VERSIONS
243 dnl Check for GreenCard and version.
245 AC_DEFUN([FPTOOLS_GREENCARD],
247 AC_PATH_PROG(GreenCardCmd,greencard)
248 AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
250 [if test x"$GreenCardCmd" != x; then
251 fptools_cv_greencard_version="`$GreenCardCmd --version |
252 grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
254 fptools_cv_greencard_version=""
258 FP_COMPARE_VERSIONS([$fptools_cv_greencard_version],[-lt],[$1],
259 [AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])[]dnl
260 GreenCardVersion=$fptools_cv_greencard_version
261 AC_SUBST(GreenCardVersion)
265 dnl Check for Happy and version. If we're building GHC, then we need
266 dnl at least Happy version 1.14. If there's no installed Happy, we look
267 dnl for a happy source tree and point the build system at that instead.
269 AC_DEFUN([FPTOOLS_HAPPY],
270 [AC_PATH_PROG(HappyCmd,happy,)
271 # Happy is passed to Cabal, so we need a native path
272 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
273 test "${OSTYPE}" != "msys" && \
274 test "${HappyCmd}" != ""
276 # Canonicalise to <drive>:/path/to/gcc
277 HappyCmd=`cygpath -m ${HappyCmd}`
278 AC_MSG_NOTICE([normalized happy command to $HappyCmd])
281 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
283 [if test x"$HappyCmd" != x; then
284 fptools_cv_happy_version="`$HappyCmd -v |
285 grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
287 fptools_cv_happy_version="";
291 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
293 FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.15],
294 [AC_MSG_ERROR([Happy version 1.15 or later is required to compile GHC.])])[]dnl
296 HappyVersion=$fptools_cv_happy_version;
297 AC_SUBST(HappyVersion)
301 dnl Check for Haddock and version. If there's no installed Haddock, we look
302 dnl for a haddock source tree and point the build system at that instead.
304 AC_DEFUN([FPTOOLS_HADDOCK],
305 [AC_PATH_PROG(HaddockCmd,haddock,)
306 dnl Darn, I forgot to make Haddock print out its version number when
307 dnl invoked with -v. We could try generating some HTML and grepping
308 dnl through that to find the version number, but I think we'll make
309 dnl do without it for now.
310 # Haddock is passed to Cabal, so we need a native path
311 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
312 test "${OSTYPE}" != "msys" && \
313 test "${HaddockCmd}" != ""
315 # Canonicalise to <drive>:/path/to/gcc
316 HaddockCmd=`cygpath -m ${HaddockCmd}`
317 AC_MSG_NOTICE([normalized haddock command to $HaddockCmd])
322 dnl Check for Alex and version. If we're building GHC, then we need
323 dnl at least Alex version 2.0.1.
325 AC_DEFUN([FPTOOLS_ALEX],
327 AC_PATH_PROG(AlexCmd,alex,)
328 # Alex is passed to Cabal, so we need a native path
329 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
330 test "${OSTYPE}" != "msys" && \
331 test "${AlexCmd}" != ""
333 # Canonicalise to <drive>:/path/to/gcc
334 AlexCmd=`cygpath -m ${AlexCmd}`
337 AC_CACHE_CHECK([for version of alex], fptools_cv_alex_version,
339 [if test x"$AlexCmd" != x; then
340 fptools_cv_alex_version="`$AlexCmd -v |
341 grep 'Alex [Vv]ersion' | sed -e 's/Alex [Vv]ersion \([0-9\.]*\).*/\1/g'`" ;
343 fptools_cv_alex_version="";
347 if test ! -f compiler/cmm/CmmLex.hs || test ! -f compiler/parser/Lexer.hs
349 FP_COMPARE_VERSIONS([$fptools_cv_alex_version],[-lt],[2.0.1],
350 [AC_MSG_ERROR([Alex version 2.0.1 or later is required to compile GHC.])])[]dnl
352 AlexVersion=$fptools_cv_alex_version;
353 AC_SUBST(AlexVersion)
359 # Sets the output variable LdCmd to the (non-Cygwin version of the) full path
360 # of ld. Exits if no ld can be found
361 AC_DEFUN([FP_PROG_LD],
365 AC_PATH_PROG([fp_prog_ld_raw], [ld])
366 if test -z "$fp_prog_ld_raw"; then
367 AC_MSG_ERROR([cannot find ld in your PATH, no idea how to link])
369 LdCmd=$fp_prog_ld_raw
370 case $HostPlatform in
371 *mingw32) if test x${OSTYPE} != xmsys; then
372 LdCmd="`cygpath -w ${fp_prog_ld_raw} | sed -e 's@\\\\@/@g'`"
373 AC_MSG_NOTICE([normalized ld command to $LdCmd])
375 # Insist on >= ld-2.15.x, since earlier versions doesn't handle
376 # the generation of relocatable object files with large amounts
377 # of relocations correctly. (cf. HSbase.o splittage-hack)
378 fp_prog_ld_version=`${LdCmd} --version | sed -n '/GNU ld/p' | tr -cd 0-9 | cut -b1-3`
379 FP_COMPARE_VERSIONS([$fp_prog_ld_version],[-lt],[214],
380 [AC_MSG_ERROR([GNU ld version later than 2.14 required to compile GHC on Windows.])])[]dnl
392 # Sets the output variable LdXFlag to -x if ld supports this flag, otherwise the
393 # variable's value is empty.
394 AC_DEFUN([FP_PROG_LD_X],
395 [AC_REQUIRE([FP_PROG_LD])
396 AC_CACHE_CHECK([whether ld understands -x], [fp_cv_ld_x],
397 [echo 'foo() {}' > conftest.c
398 ${CC-cc} -c conftest.c
399 if ${LdCmd} -r -x -o conftest2.o conftest.o > /dev/null 2>&1; then
405 if test "$fp_cv_ld_x" = yes; then
416 # Sets the output variable LdIsGNULd to YES or NO, depending on whether it is
418 AC_DEFUN([FP_PROG_LD_IS_GNU],
419 [AC_REQUIRE([FP_PROG_LD])
420 AC_CACHE_CHECK([whether ld is GNU ld], [fp_cv_gnu_ld],
421 [if ${LdCmd} --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then
426 AC_SUBST([LdIsGNULd], [`echo $fp_cv_gnu_ld | sed 'y/yesno/YESNO/'`])
427 ])# FP_PROG_LD_IS_GNU
432 # Sets fp_prog_ar_raw to the full path of ar and fp_prog_ar to a non-Cygwin
433 # version of it. Exits if no ar can be found
434 AC_DEFUN([FP_PROG_AR],
435 [AC_PATH_PROG([fp_prog_ar_raw], [ar])
436 if test -z "$fp_prog_ar_raw"; then
437 AC_MSG_ERROR([cannot find ar in your PATH, no idea how to make a library])
439 fp_prog_ar=$fp_prog_ar_raw
440 case $HostPlatform in
441 *mingw32) if test x${OSTYPE} != xmsys; then
442 fp_prog_ar="`cygpath -w ${fp_prog_ar_raw} | sed -e 's@\\\\@/@g'`"
443 AC_MSG_NOTICE([normalized ar command to $fp_prog_ar])
452 # Sets fp_prog_ar_is_gnu to yes or no, depending on whether it is GNU ar or not.
453 AC_DEFUN([FP_PROG_AR_IS_GNU],
454 [AC_REQUIRE([FP_PROG_AR])
455 AC_CACHE_CHECK([whether $fp_prog_ar_raw is GNU ar], [fp_cv_prog_ar_is_gnu],
456 [if $fp_prog_ar_raw --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then
457 fp_cv_prog_ar_is_gnu=yes
459 fp_cv_prog_ar_is_gnu=no
461 fp_prog_ar_is_gnu=$fp_cv_prog_ar_is_gnu
462 ])# FP_PROG_AR_IS_GNU
467 # Sets fp_prog_ar_args to the arguments for ar and the output variable ArCmd
468 # to a non-Cygwin invocation of ar including these arguments.
469 AC_DEFUN([FP_PROG_AR_ARGS],
470 [AC_REQUIRE([FP_PROG_AR_IS_GNU])
471 AC_CACHE_CHECK([for ar arguments], [fp_cv_prog_ar_args],
473 # GNU ar needs special treatment: it appears to have problems with
474 # object files with the same name if you use the 's' modifier, but
475 # simple 'ar q' works fine, and doesn't need a separate ranlib.
476 if test $fp_prog_ar_is_gnu = yes; then
477 fp_cv_prog_ar_args="q"
480 for fp_var in clqsZ clqs cqs clq cq ; do
482 if $fp_prog_ar_raw $fp_var conftest.a conftest.dummy > /dev/null 2> /dev/null; then
483 fp_cv_prog_ar_args=$fp_var
488 if test -z "$fp_cv_prog_ar_args"; then
489 AC_MSG_ERROR([cannot figure out how to use your $fp_prog_ar_raw])
492 fp_prog_ar_args=$fp_cv_prog_ar_args
493 AC_SUBST([ArCmd], ["$fp_prog_ar $fp_prog_ar_args"])
498 # FP_PROG_AR_NEEDS_RANLIB
499 # -----------------------
500 # Sets the output variable RANLIB to "ranlib" if it is needed and found,
502 AC_DEFUN([FP_PROG_AR_NEEDS_RANLIB],
503 [AC_REQUIRE([FP_PROG_AR_IS_GNU])
504 AC_REQUIRE([FP_PROG_AR_ARGS])
505 AC_REQUIRE([AC_PROG_CC])
506 AC_CACHE_CHECK([whether ranlib is needed], [fp_cv_prog_ar_needs_ranlib],
507 [if test $fp_prog_ar_is_gnu = yes; then
508 fp_cv_prog_ar_needs_ranlib=no
509 elif echo $TargetPlatform | grep "^.*-apple-darwin$" > /dev/null 2> /dev/null; then
510 # It's quite tedious to check for Apple's crazy timestamps in .a files,
512 fp_cv_prog_ar_needs_ranlib=yes
513 elif echo $fp_prog_ar_args | grep "s" > /dev/null 2> /dev/null; then
514 fp_cv_prog_ar_needs_ranlib=no
516 fp_cv_prog_ar_needs_ranlib=yes
518 if test $fp_cv_prog_ar_needs_ranlib = yes; then
524 ])# FP_PROG_AR_NEEDS_RANLIB
527 # FP_PROG_AR_SUPPORTS_INPUT
528 # -------------------------
529 # Sets the output variable ArSupportsInput to "-input" or "", depending on
530 # whether ar supports -input flag is supported or not.
531 AC_DEFUN([FP_PROG_AR_SUPPORTS_INPUT],
532 [AC_REQUIRE([FP_PROG_AR_IS_GNU])
533 AC_REQUIRE([FP_PROG_AR_ARGS])
534 AC_CACHE_CHECK([whether $fp_prog_ar_raw supports -input], [fp_cv_prog_ar_supports_input],
535 [fp_cv_prog_ar_supports_input=no
536 if test $fp_prog_ar_is_gnu = no; then
539 if FP_EVAL_STDERR([$fp_prog_ar_raw $fp_prog_ar_args conftest.a -input conftest.lst]) >/dev/null; then
540 test -s conftest.err || fp_cv_prog_ar_supports_input=yes
544 if test $fp_cv_prog_ar_supports_input = yes; then
545 ArSupportsInput="-input"
549 AC_SUBST([ArSupportsInput])
550 ])# FP_PROG_AR_SUPPORTS_INPUT
554 dnl AC_SHEBANG_PERL - can we she-bang perl?
556 AC_DEFUN([FPTOOLS_SHEBANG_PERL],
557 [AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
562 (SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
563 if test $? -ne 69; then
564 fptools_cv_shebang_perl=yes
566 fptools_cv_shebang_perl=no
574 # Extra testing of the result AC_PROG_CC, testing the gcc version no. Sets the
575 # output variables HaveGcc and GccVersion.
576 AC_DEFUN([FP_HAVE_GCC],
577 [AC_REQUIRE([AC_PROG_CC])
578 if test -z "$GCC"; then
583 if test "$fp_have_gcc" = "NO" -a -d $srcdir/ghc; then
584 AC_MSG_ERROR([gcc is required])
586 AC_CACHE_CHECK([version of gcc], [fp_gcc_version],
587 [if test "$fp_have_gcc" = "YES"; then
588 fp_gcc_version="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [[^0-9]]*\([[0-9.]]*\).*/\1/g'`"
589 FP_COMPARE_VERSIONS([$fp_gcc_version], [-lt], [2.0],
590 [AC_MSG_ERROR([Need at least gcc version 2.0 (3.4+ recommended)])])
592 fp_gcc_version="not-installed"
595 AC_SUBST([HaveGcc], [$fp_have_gcc])
596 AC_SUBST([GccVersion], [$fp_gcc_version])
599 AC_DEFUN([FP_MINGW_GCC],
602 mingw*) AC_MSG_CHECKING([whether $CC is a mingw gcc])
603 if $CC -v 2>&1 | grep mingw >/dev/null; then
607 AC_MSG_ERROR([Please use --with-gcc to specify a mingw gcc])
613 dnl Small feature test for perl version. Assumes PerlCmd
614 dnl contains path to perl binary.
616 dnl (Perl versions prior to v5.6 does not contain the string "v5";
617 dnl instead they display version strings such as "version 5.005".)
619 AC_DEFUN([FPTOOLS_CHECK_PERL_VERSION],
620 [$PerlCmd -v >conftest.out 2>&1
621 if grep "v5" conftest.out >/dev/null 2>&1; then
624 AC_MSG_ERROR([your version of perl probably won't work, try upgrading it.])
630 # FP_CHECK_PROG(VARIABLE, PROG-TO-CHECK-FOR,
631 # [VALUE-IF-NOT-FOUND], [PATH], [REJECT])
632 # -----------------------------------------------------
633 # HACK: A small wrapper around AC_CHECK_PROG, setting VARIABLE to the full path
634 # of PROG-TO-CHECK-FOR when found.
635 AC_DEFUN([FP_CHECK_PROG],
636 [AC_CHECK_PROG([$1], [$2], [$as_dir/$ac_word$ac_exec_ext], [$3], [$4], [$5])][]dnl
642 # Find a non-WinDoze version of the "find" utility.
643 AC_DEFUN([FP_PROG_FIND],
644 [AC_PATH_PROG([fp_prog_find], [find])
645 echo foo > conftest.txt
646 $fp_prog_find conftest.txt -print > conftest.out 2>&1
647 if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then
648 # OK, looks like a real "find".
649 case $HostPlatform in
651 if test x${OSTYPE} != xmsys
653 fp_prog_find="`cygpath --mixed ${fp_prog_find}`"
654 AC_MSG_NOTICE([normalized find command to $fp_prog_find])
658 FindCmd="$fp_prog_find"
660 # Found a poor WinDoze version of "find", ignore it.
661 AC_MSG_WARN([$fp_prog_find looks like a non-*nix find, ignoring it])
662 FP_CHECK_PROG([FindCmd], [find], [], [], [$fp_prog_find])
664 rm -f conftest.txt conftest.out
665 AC_SUBST([FindCmd])[]dnl
671 # Find a Unix-like sort
672 AC_DEFUN([FP_PROG_SORT],
673 [AC_PATH_PROG([fp_prog_sort], [sort])
674 echo conwip > conftest.txt
675 $fp_prog_sort -f conftest.txt > conftest.out 2>&1
676 if grep 'conwip' conftest.out > /dev/null 2>&1 ; then
678 SortCmd="$fp_prog_sort"
680 # Summink else..pick next one.
681 AC_MSG_WARN([$fp_prog_sort looks like a non-*nix sort, ignoring it])
682 FP_CHECK_PROG([SortCmd], [sort], [], [], [$fp_prog_sort])
684 rm -f conftest.txt conftest.out
685 AC_SUBST([SortCmd])[]dnl
689 dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
690 dnl values of the second argument to the result of running
691 dnl the commands given by the third. It does not cache its
692 dnl result, so it is suitable for checks which should be
695 AC_DEFUN([FPTOOLS_NOCACHE_CHECK],
696 [AC_MSG_CHECKING([$1])
698 AC_MSG_RESULT([$][$2])
702 dnl FPTOOLS_GHC_VERSION(version)
703 dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
704 dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
706 dnl Test for version of installed ghc. Uses $GHC.
707 dnl [original version pinched from c2hs]
709 AC_DEFUN([FPTOOLS_GHC_VERSION],
710 [FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc],
711 ["${WithGhc-ghc}" --version > conftestghc 2>&1
712 cat conftestghc >&AS_MESSAGE_LOG_FD
713 #Useless Use Of cat award...
714 fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'`
716 if test "[$]fptools_version_of_ghc" = ""
718 fptools_version_of_ghc='unknown'
720 fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'`
721 fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'`
722 fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'`
724 if test "[$]fptools_version_of_ghc[_pl]" = ""
726 fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]"
727 fptools_version_of_ghc[_pl]="0"
729 fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]"
733 [$1]="[$]fptools_version_of_ghc[_all]"
735 [$1]="[$]fptools_version_of_ghc[_major]"
736 [$2]="[$]fptools_version_of_ghc[_minor]"
738 [$1]="[$]fptools_version_of_ghc[_major]"
739 [$2]="[$]fptools_version_of_ghc[_minor]"
740 [$3]="[$]fptools_version_of_ghc[_pl]"
742 [$1]="[$]fptools_version_of_ghc[_all]"
743 [$2]="[$]fptools_version_of_ghc[_major]"
744 [$3]="[$]fptools_version_of_ghc[_minor]"
745 [$4]="[$]fptools_version_of_ghc[_pl]"
751 # FP_CHECK_FUNC(FUNCTION, PROLOGUE, BODY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
752 # ---------------------------------------------------------------------------------
753 # A variant of AC_CHECK_FUNCS, limited to a single FUNCTION, but with the
754 # additional flexibility of specifying the PROLOGUE and BODY.
755 AC_DEFUN([FP_CHECK_FUNC],
756 [AS_VAR_PUSHDEF([fp_func], [fp_cv_func_$1])dnl
757 AC_CACHE_CHECK([for $1], fp_func,
758 [AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],
759 [AS_VAR_SET(fp_func, yes)],
760 [AS_VAR_SET(fp_func, no)])])
761 AS_IF([test AS_VAR_GET(fp_func) = yes],
762 [AC_DEFINE(AS_TR_CPP(HAVE_$1), [1],
763 [Define to 1 if you have the `]$1[' function.]) $4],
765 AS_VAR_POPDEF([fp_func])dnl
771 # Generates a DocBook XML V4.2 document in conftest.xml.
772 AC_DEFUN([FP_GEN_DOCBOOK_XML],
774 cat > conftest.xml << EOF
775 <?xml version="1.0" encoding="iso-8859-1"?>
776 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
777 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
779 <title>A DocBook Test Document</title>
780 <chapter id="id-one">
781 <title>A Chapter Title</title>
782 <para>This is a paragraph, referencing <xref linkend="id-two"/>.</para>
784 <chapter id="id-two">
785 <title>Another Chapter Title</title>
786 <para>This is another paragraph, referencing <xref linkend="id-one"/>.</para>
790 ]) # FP_GEN_DOCBOOK_XML
795 # Sets the output variable XsltprocCmd to the full path of the XSLT processor
796 # xsltproc. XsltprocCmd is empty if xsltproc could not be found.
797 AC_DEFUN([FP_PROG_XSLTPROC],
798 [AC_PATH_PROG([XsltprocCmd], [xsltproc])
799 if test -z "$XsltprocCmd"; then
800 AC_MSG_WARN([cannot find xsltproc in your PATH, you will not be able to build the documentation])
805 # FP_DIR_DOCBOOK_XSL(XSL-DIRS)
806 # ----------------------------
807 # Check which of the directories XSL-DIRS contains DocBook XSL stylesheets. The
808 # output variable DIR_DOCBOOK_XSL will contain the first usable directory or
809 # will be empty if none could be found.
810 AC_DEFUN([FP_DIR_DOCBOOK_XSL],
811 [AC_REQUIRE([FP_PROG_XSLTPROC])dnl
812 if test -n "$XsltprocCmd"; then
813 AC_CACHE_CHECK([for DocBook XSL stylesheet directory], fp_cv_dir_docbook_xsl,
815 fp_cv_dir_docbook_xsl=no
817 if $XsltprocCmd ${fp_var}/html/docbook.xsl conftest.xml > /dev/null 2>&1; then
818 fp_cv_dir_docbook_xsl=$fp_var
824 if test x"$fp_cv_dir_docbook_xsl" = xno; then
825 AC_MSG_WARN([cannot find DocBook XSL stylesheets, you will not be able to build the documentation])
828 DIR_DOCBOOK_XSL=$fp_cv_dir_docbook_xsl
830 AC_SUBST([DIR_DOCBOOK_XSL])
831 ])# FP_DIR_DOCBOOK_XSL
836 # Sets the output variable XmllintCmd to the full path of the XSLT processor
837 # xmllint. XmllintCmd is empty if xmllint could not be found.
838 AC_DEFUN([FP_PROG_XMLLINT],
839 [AC_PATH_PROG([XmllintCmd], [xmllint])
840 if test -z "$XmllintCmd"; then
841 AC_MSG_WARN([cannot find xmllint in your PATH, you will not be able to validate your documentation])
846 # FP_CHECK_DOCBOOK_DTD
847 # --------------------
848 AC_DEFUN([FP_CHECK_DOCBOOK_DTD],
849 [AC_REQUIRE([FP_PROG_XMLLINT])dnl
850 if test -n "$XmllintCmd"; then
851 AC_MSG_CHECKING([for DocBook DTD])
853 if $XmllintCmd --valid --noout conftest.xml > /dev/null 2>&1; then
856 AC_MSG_RESULT([failed])
857 AC_MSG_WARN([cannot find a DTD for DocBook XML V4.2, you will not be able to validate your documentation])
858 AC_MSG_WARN([check your XML_CATALOG_FILES environment variable and/or /etc/xml/catalog])
862 ])# FP_CHECK_DOCBOOK_DTD
867 # Generates a formatting objects document in conftest.fo.
868 AC_DEFUN([FP_GEN_FO],
870 cat > conftest.fo << EOF
871 <?xml version="1.0"?>
872 <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
873 <fo:layout-master-set>
874 <fo:simple-page-master master-name="blank">
876 </fo:simple-page-master>
877 </fo:layout-master-set>
878 <fo:page-sequence master-reference="blank">
879 <fo:flow flow-name="xsl-region-body">
892 # Set the output variable 'FopCmd' to the first working 'fop' in the current
893 # 'PATH'. Note that /usr/bin/fop is broken in SuSE 9.1 (unpatched), so try
894 # /usr/share/fop/fop.sh in that case (or no 'fop'), too.
895 AC_DEFUN([FP_PROG_FOP],
896 [AC_PATH_PROGS([FopCmd1], [fop fop.sh])
897 if test -n "$FopCmd1"; then
898 AC_CACHE_CHECK([for $FopCmd1 usability], [fp_cv_fop_usability],
900 if "$FopCmd1" -fo conftest.fo -ps conftest.ps > /dev/null 2>&1; then
901 fp_cv_fop_usability=yes
903 fp_cv_fop_usability=no
906 if test x"$fp_cv_fop_usability" = xyes; then
910 if test -z "$FopCmd"; then
911 AC_PATH_PROGS([FopCmd2], [fop.sh], , [/usr/share/fop])
918 # FP_PROG_FO_PROCESSOR
919 # --------------------
920 # Try to find an FO processor. PassiveTeX output is sometimes a bit strange, so
921 # try FOP first. Sets the output variables FopCmd, XmltexCmd, DvipsCmd, and
923 AC_DEFUN([FP_PROG_FO_PROCESSOR],
924 [AC_REQUIRE([FP_PROG_FOP])
925 AC_PATH_PROG([XmltexCmd], [xmltex])
926 AC_PATH_PROG([DvipsCmd], [dvips])
927 if test -z "$FopCmd"; then
928 if test -z "$XmltexCmd"; then
929 AC_MSG_WARN([cannot find an FO => DVI converter, you will not be able to build DVI or PostScript documentation])
931 if test -z "$DvipsCmd"; then
932 AC_MSG_WARN([cannot find a DVI => PS converter, you will not be able to build PostScript documentation])
935 AC_PATH_PROG([PdfxmltexCmd], [pdfxmltex])
936 if test -z "$PdfxmltexCmd"; then
937 AC_MSG_WARN([cannot find an FO => PDF converter, you will not be able to build PDF documentation])
939 elif test -z "$XmltexCmd"; then
940 AC_MSG_WARN([cannot find an FO => DVI converter, you will not be able to build DVI documentation])
942 ])# FP_PROG_FO_PROCESSOR
947 # Try to find a ghc-pkg matching the ghc mentioned in the environment variable
948 # WithGhc. If the latter is unset or no matching ghc-pkg can be found, try to
949 # find a plain ghc-pkg. Sets the output variable GhcPkgCmd.
950 AC_DEFUN([FP_PROG_GHC_PKG],
951 [AC_CACHE_CHECK([for ghc-pkg matching $WithGhc], fp_cv_matching_ghc_pkg,
952 [fp_ghc_pkg_guess=`echo $WithGhc | sed 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
953 if "$fp_ghc_pkg_guess" -l > /dev/null 2>&1; then
954 fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
956 fp_cv_matching_ghc_pkg=no
958 if test x"$fp_cv_matching_ghc_pkg" = xno; then
959 AC_PATH_PROG([GhcPkgCmd], [ghc-pkg])
961 GhcPkgCmd=$fp_cv_matching_ghc_pkg
962 fi])# FP_PROG_GHC_PKG
965 # FP_GHC_HAS_EDITLINE
966 # -------------------
967 AC_DEFUN([FP_GHC_HAS_EDITLINE],
968 [AC_REQUIRE([FP_PROG_GHC_PKG])
969 AC_CACHE_CHECK([whether ghc has editline package], [fp_cv_ghc_has_editline],
970 [if "${GhcPkgCmd-ghc-pkg}" --show-package editline >/dev/null 2>&1; then
971 fp_cv_ghc_has_editline=yes
973 fp_cv_ghc_has_editline=no
975 AC_SUBST([GhcHasEditline], [`echo $fp_cv_ghc_has_editline | sed 'y/yesno/YESNO/'`])
976 ])# FP_GHC_HAS_EDITLINE
981 # Determine which extra flags we need to pass gcc when we invoke it
982 # to compile .hc code.
984 # Some OSs (Mandrake Linux, in particular) configure GCC with
985 # -momit-leaf-frame-pointer on by default. If this is the case, we
986 # need to turn it off for mangling to work. The test is currently a
987 # bit crude, using only the version number of gcc.
989 # -fwrapv is needed for gcc to emit well-behaved code in the presence of
990 # integer wrap around. (Trac #952)
992 # -fno-unit-at-a-time or -fno-toplevel-reoder is necessary to avoid gcc
993 # reordering things in the module and confusing the manger and/or splitter.
996 AC_DEFUN([FP_GCC_EXTRA_FLAGS],
997 [AC_REQUIRE([FP_HAVE_GCC])
998 AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_extra_opts],
999 [fp_cv_gcc_extra_opts=
1000 FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4],
1001 [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fwrapv"],
1003 case $TargetPlatform in
1005 FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.2],
1006 [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -mno-omit-leaf-frame-pointer"],
1008 FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [3.4],
1009 [FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [4.2],
1010 [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
1011 [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-unit-at-a-time"]
1016 FP_COMPARE_VERSIONS([$fp_gcc_version], [-ge], [4.2],
1017 [fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
1022 AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts)
1026 # FP_SETUP_PROJECT_VERSION
1027 # ---------------------
1028 AC_DEFUN([FP_SETUP_PROJECT_VERSION],
1030 if test "$RELEASE" = "NO"; then
1031 AC_MSG_CHECKING([for GHC version date])
1032 if test -f VERSION_DATE; then
1033 PACKAGE_VERSION=${PACKAGE_VERSION}.`cat VERSION_DATE`
1034 AC_MSG_RESULT(given $PACKAGE_VERSION)
1035 elif test -d _darcs; then
1037 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`
1038 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
1039 changequote([, ])dnl
1040 AC_MSG_ERROR([failed to detect version date: check that darcs is in your path])
1042 PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
1043 AC_MSG_RESULT(inferred $PACKAGE_VERSION)
1044 elif test -f VERSION; then
1045 PACKAGE_VERSION=`cat VERSION`
1046 AC_MSG_RESULT(given $PACKAGE_VERSION)
1048 AC_MSG_WARN([cannot determine snapshot version: no _darcs directory and no VERSION file])
1053 AC_SUBST([ProjectName], [$PACKAGE_NAME])
1054 AC_SUBST([ProjectVersion], [$PACKAGE_VERSION])
1056 # Split PACKAGE_VERSION into (possibly empty) parts
1057 VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
1058 VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
1059 VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
1060 ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
1062 # Calculate project version as an integer, using 2 digits for minor version
1063 case $VERSION_MINOR in
1064 ?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;;
1065 ??) ProjectVersionInt=${VERSION_MAJOR}${VERSION_MINOR} ;;
1066 *) AC_MSG_ERROR([bad minor version in $PACKAGE_VERSION]) ;;
1068 AC_SUBST([ProjectVersionInt])
1070 # The project patchlevel is zero unless stated otherwise
1071 test -z "$ProjectPatchLevel" && ProjectPatchLevel=0
1073 # Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508
1074 ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'`
1076 AC_SUBST([ProjectPatchLevel])
1077 ])# FP_SETUP_PROJECT_VERSION
1080 # Check for a working timer_create(). We need a pretty detailed check
1081 # here, because there exist partially-working implementations of
1082 # timer_create() in certain versions of Linux (see bug #1933).
1084 AC_DEFUN([FP_CHECK_TIMER_CREATE],
1085 [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)],
1086 [fptools_cv_timer_create_works],
1089 #ifdef HAVE_STDLIB_H
1095 #ifdef HAVE_SIGNAL_H
1098 #ifdef HAVE_UNISTD_H
1102 static volatile int tock = 0;
1103 static void handler(int i)
1108 static void timeout(int i)
1110 // timer_settime() has been known to hang, so just in case
1111 // we install a 1-second timeout (see #2257)
1115 int main(int argc, char *argv[])
1120 struct itimerspec it;
1121 struct sigaction action;
1124 ev.sigev_notify = SIGEV_SIGNAL;
1125 ev.sigev_signo = SIGVTALRM;
1127 action.sa_handler = handler;
1128 action.sa_flags = 0;
1129 sigemptyset(&action.sa_mask);
1130 if (sigaction(SIGVTALRM, &action, NULL) == -1) {
1131 fprintf(stderr,"SIGVTALRM problem\n");
1135 action.sa_handler = timeout;
1136 action.sa_flags = 0;
1137 sigemptyset(&action.sa_mask);
1138 if (sigaction(SIGALRM, &action, NULL) == -1) {
1139 fprintf(stderr,"SIGALRM problem\n");
1144 if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) {
1145 fprintf(stderr,"No CLOCK_PROCESS_CPUTIME_ID timer\n");
1149 it.it_value.tv_sec = 0;
1150 it.it_value.tv_nsec = 1;
1151 it.it_interval = it.it_value;
1152 if (timer_settime(timer, 0, &it, NULL) != 0) {
1153 fprintf(stderr,"settime problem\n");
1159 for(n = 3; n < 20000; n++){
1160 for(m = 2; m <= n/2; m++){
1161 if (!(n%m)) count++;
1168 fprintf(stderr,"no CLOCK_PROCESS_CPUTIME_ID signal\n");
1172 timer_delete(timer);
1174 if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) {
1175 fprintf(stderr,"No CLOCK_REALTIME timer\n");
1179 it.it_value.tv_sec = 0;
1180 it.it_value.tv_nsec = 1000000;
1181 it.it_interval = it.it_value;
1182 if (timer_settime(timer, 0, &it, NULL) != 0) {
1183 fprintf(stderr,"settime problem\n");
1192 fprintf(stderr,"no CLOCK_REALTIME signal\n");
1196 timer_delete(timer);
1201 [fptools_cv_timer_create_works=yes],
1202 [fptools_cv_timer_create_works=no])
1204 case $fptools_cv_timer_create_works in
1205 yes) AC_DEFINE([USE_TIMER_CREATE], 1,
1206 [Define to 1 if we can use timer_create(CLOCK_PROCESS_CPUTIME_ID,...)]);;
1212 AC_DEFUN([FP_ARG_GMP],
1214 AC_ARG_WITH([gmp-includes],
1215 [AC_HELP_STRING([--with-gmp-includes],
1216 [directory containing gmp.h])],
1217 [gmp_includes=$withval],
1218 [gmp_includes=NONE])
1220 AC_ARG_WITH([gmp-libraries],
1221 [AC_HELP_STRING([--with-gmp-libraries],
1222 [directory containing gmp library])],
1223 [gmp_libraries=$withval],
1224 [gmp_libraries=NONE])
1227 AC_DEFUN([CHECK_GMP],
1228 [AC_REQUIRE([AC_PROG_CPP])
1229 AC_REQUIRE([AC_PROG_CC])
1232 # FP_CHECK_MACOSX_DEPLOYMENT_TARGET
1233 # ---------------------------------
1234 AC_DEFUN([FP_CHECK_MACOSX_DEPLOYMENT_TARGET],
1236 if test "x$TargetOS_CPP-$TargetVendor_CPP" = "xdarwin-apple"; then
1237 AC_MSG_CHECKING([Mac OS X deployment target])
1238 case $FP_MACOSX_DEPLOYMENT_TARGET in
1240 10.4) MACOSX_DEPLOYMENT_VERSION=10.4
1241 MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
1243 10.4u) MACOSX_DEPLOYMENT_VERSION=10.4
1244 MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
1246 *) MACOSX_DEPLOYMENT_VERSION=$FP_MACOSX_DEPLOYMENT_TARGET
1247 MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX${FP_MACOSX_DEPLOYMENT_TARGET}.sdk
1250 if test "x$FP_MACOSX_DEPLOYMENT_TARGET" = "xnone"; then
1253 if test ! -d $MACOSX_DEPLOYMENT_SDK; then
1254 AC_MSG_ERROR([Unknown deployment target $FP_MACOSX_DEPLOYMENT_TARGET])
1256 AC_MSG_RESULT([${MACOSX_DEPLOYMENT_VERSION} (${MACOSX_DEPLOYMENT_SDK})])
1261 # --------------------------------------------------------------
1262 # Calculate absolute path to build tree
1263 # --------------------------------------------------------------
1265 AC_DEFUN([FP_FIND_ROOT],[
1266 AC_MSG_CHECKING(for path to top of build tree)
1269 dnl make -C utils/pwd clean && make -C utils/pwd
1270 dnl except we don't want to have to know what make is called. Sigh.
1271 if test ! -f utils/pwd/pwd && test ! -f utils/pwd/pwd.exe; then
1277 $WithGhc -v0 --make pwd -o pwd
1281 hardtop=`utils/pwd/pwd forwardslash`
1283 if ! test -d "$hardtop"; then
1284 AC_MSG_ERROR([cannot determine current directory])
1287 dnl Remove common automounter nonsense
1289 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'`
1293 AC_MSG_RESULT(${hardtop})
1295 # We don't support building in directories with spaces.
1297 *' '*) AC_MSG_ERROR([
1298 The build system does not support building in a directory containing
1299 space characters. Suggestion: move the build tree somewhere else.])