1
# Extra autoconf macros for the Glasgow fptools
3
# To be a good autoconf citizen, names of local macros have prefixed with FP_ to
4
# ensure we don't clash with any pre-supplied autoconf ones.
7
# FPTOOLS_SET_C_LD_FLAGS
8
# ----------------------------------
9
# Set the C and LD flags for a given platform
10
AC_DEFUN([FPTOOLS_SET_C_LD_FLAGS],
14
# By default, gcc on OS X will generate SSE
15
# instructions, which need things 16-byte aligned,
16
# but we don't 16-byte align things. Thus drop
17
# back to generic i686 compatibility. Trac #2983.
18
$2="$$2 -march=i686 -m32"
19
$3="$$3 -march=i686 -m32"
27
# If gcc knows about the stack protector, turn it off.
28
# Otherwise the stack-smash handler gets triggered.
29
echo 'int main(void) {return 0;}' > conftest.c
30
if $CC -c conftest.c -fno-stack-protector > /dev/null 2>&1
32
$2="$$2 -fno-stack-protector"
34
rm conftest.c conftest.o
38
# FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
39
# ----------------------------------
40
# Little endian Arm on Linux with some ABIs has big endian word order
41
# in doubles. Define FLOAT_WORDS_BIGENDIAN if this is the case.
42
AC_DEFUN([FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN],
43
[AC_CACHE_CHECK([whether float word order is big endian], [fptools_cv_float_word_order_bigendian],
46
[#include <endian.h>],
47
[#if defined(__FLOAT_WORD_ORDER) && __FLOAT_WORD_ORDER == BIG_ENDIAN
50
not float word order big endian
53
[fptools_cv_float_word_order_bigendian=yes],
54
[fptools_cv_float_word_order_bigendian=no])
56
case $fptools_cv_float_word_order_bigendian in
58
AC_DEFINE([FLOAT_WORDS_BIGENDIAN], 1,
59
[Define to 1 if your processor stores words of floats with
60
the most significant byte first]) ;;
65
# FP_EVAL_STDERR(COMMAND)
66
# -----------------------
67
# Eval COMMAND, save its stderr (without lines resulting from shell tracing)
68
# into the file conftest.err and the exit status in the variable fp_status.
69
AC_DEFUN([FP_EVAL_STDERR],
70
[{ (eval $1) 2>conftest.er1
72
grep -v '^ *+' conftest.er1 >conftest.err
74
(exit $fp_status); }[]dnl
78
# FP_ARG_WITH_PATH_GNU_PROG
79
# --------------------
82
# $1 = the command to look for
83
# $2 = the variable to set
85
AC_DEFUN([FP_ARG_WITH_PATH_GNU_PROG],
88
[AC_HELP_STRING([--with-$2=ARG],
89
[Use ARG as the path to $2 [default=autodetect]])],
91
if test "$HostOS" = "mingw32"
93
AC_MSG_WARN([Request to use $withval will be ignored])
99
if test "$HostOS" != "mingw32"
101
AC_PATH_PROG([$1], [$2])
104
AC_MSG_ERROR([cannot find $2 in your PATH, no idea how to link])
109
]) # FP_ARG_WITH_PATH_GNU_PROG
112
# FP_PROG_CONTEXT_DIFF
113
# --------------------
114
# Figure out how to do context diffs. Sets the output variable ContextDiffCmd.
116
# Note: NeXTStep thinks diff'ing a file against itself is "trouble".
118
# Used by ghc, glafp-utils/ltx, and glafp-utils/runstdtest.
119
AC_DEFUN([FP_PROG_CONTEXT_DIFF],
120
[AC_CACHE_CHECK([for a working context diff], [fp_cv_context_diff],
121
[echo foo > conftest1
123
fp_cv_context_diff=no
124
for fp_var in '-U 1' '-u1' '-C 1' '-c1'
126
if diff $fp_var conftest1 conftest2 > /dev/null 2>&1; then
127
fp_cv_context_diff="diff $fp_var"
131
if test x"$fp_cv_context_diff" = xno; then
132
AC_MSG_ERROR([cannot figure out how to do context diffs])
134
AC_SUBST(ContextDiffCmd, [$fp_cv_context_diff])
135
])# FP_PROG_CONTEXT_DIFF
138
# FP_COMPUTE_INT(EXPRESSION, VARIABLE, INCLUDES, IF-FAILS)
139
# --------------------------------------------------------
140
# Assign VARIABLE the value of the compile-time EXPRESSION using INCLUDES for
141
# compilation. Execute IF-FAILS when unable to determine the value. Works for
142
# cross-compilation, too.
144
# Implementation note: We are lazy and use an internal autoconf macro, but it
145
# is supported in autoconf versions 2.50 up to the actual 2.57, so there is
147
AC_DEFUN([FP_COMPUTE_INT],
148
[_AC_COMPUTE_INT([$1], [$2], [$3], [$4])[]dnl
152
# FP_CHECK_ALIGNMENT(TYPE, [IGNORED], [INCLUDES = DEFAULT-INCLUDES])
153
# ------------------------------------------------------------------
154
# A variation of AC_CHECK_SIZEOF for computing the alignment restrictions of a
155
# given type. Defines ALIGNMENT_TYPE.
156
AC_DEFUN([FP_CHECK_ALIGNMENT],
157
[AS_LITERAL_IF(m4_translit([[$1]], [*], [p]), [],
158
[AC_FATAL([$0: requires literal arguments])])[]dnl
159
AC_CHECK_TYPE([$1], [], [], [$3])[]dnl
160
m4_pushdef([fp_Cache], [AS_TR_SH([fp_cv_alignment_$1])])[]dnl
161
AC_CACHE_CHECK([alignment of $1], [fp_Cache],
162
[if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then
163
FP_COMPUTE_INT([(long) (&((struct { char c; $1 ty; } *)0)->ty)],
165
[AC_INCLUDES_DEFAULT([$3])],
166
[AC_MSG_ERROR([cannot compute alignment ($1)
167
See `config.log' for more details.], [77])])
171
AC_DEFINE_UNQUOTED(AS_TR_CPP(alignment_$1), $fp_Cache, [The alignment of a `$1'.])[]dnl
172
m4_popdef([fp_Cache])[]dnl
173
])# FP_CHECK_ALIGNMENT
176
# FP_LEADING_UNDERSCORE
177
# ---------------------
178
# Test for determining whether symbol names have a leading underscore. We assume
179
# that they _haven't_ if anything goes wrong. Sets the output variable
180
# LeadingUnderscore to YES or NO and defines LEADING_UNDERSCORE correspondingly.
182
# Some nlist implementations seem to try to be compatible by ignoring a leading
183
# underscore sometimes (eg. FreeBSD). We therefore have to work around this by
184
# checking for *no* leading underscore first. Sigh. --SDM
186
# Similarly on OpenBSD, but this test doesn't help. -- dons
187
AC_DEFUN([FP_LEADING_UNDERSCORE],
188
[AC_CHECK_LIB([elf], [nlist], [LIBS="-lelf $LIBS"])
189
AC_CACHE_CHECK([leading underscore in symbol names], [fptools_cv_leading_underscore], [
190
# Hack!: nlist() under Digital UNIX insist on there being an _,
191
# but symbol table listings shows none. What is going on here?!?
193
# Another hack: cygwin doesn't come with nlist.h , so we hardwire
194
# the underscoredness of that "platform"
195
case $HostPlatform in
196
*openbsd*) # x86 openbsd is ELF from 3.4 >, meaning no leading uscore
198
i386-*2\.@<:@0-9@:>@ | i386-*3\.@<:@0-3@:>@ ) fptools_cv_leading_underscore=yes ;;
199
*) fptools_cv_leading_underscore=no ;;
201
alpha-dec-osf*) fptools_cv_leading_underscore=no;;
202
*cygwin32) fptools_cv_leading_underscore=yes;;
203
*mingw32) fptools_cv_leading_underscore=yes;;
205
# HACK: Apple doesn't seem to provide nlist in the 64-bit-libraries
206
x86_64-apple-darwin*) fptools_cv_leading_underscore=yes;;
208
*) AC_RUN_IFELSE([AC_LANG_SOURCE([[#ifdef HAVE_NLIST_H
210
struct nlist xYzzY1[] = {{"xYzzY1", 0},{0}};
211
struct nlist xYzzY2[] = {{"_xYzzY2", 0},{0}};
219
if(nlist(argv[0], xYzzY1) == 0 && xYzzY1[0].n_value != 0)
221
if(nlist(argv[0], xYzzY2) == 0 && xYzzY2[0].n_value != 0)
225
}]])],[fptools_cv_leading_underscore=yes],[fptools_cv_leading_underscore=no],[fptools_cv_leading_underscore=no])
228
AC_SUBST([LeadingUnderscore], [`echo $fptools_cv_leading_underscore | sed 'y/yesno/YESNO/'`])
229
if test x"$fptools_cv_leading_underscore" = xyes; then
230
AC_DEFINE([LEADING_UNDERSCORE], [1], [Define to 1 if C symbols have a leading underscore added by the compiler.])
231
fi])# FP_LEADING_UNDERSCORE
234
# FP_COMPARE_VERSIONS(VERSION1, TEST, VERSION2, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
235
# ----------------------------------------------------------------------------------
236
# Compare dotted version numbers VERSION1 and VERSION2 lexicographically according
237
# to TEST (one of -eq, -ne, -lt, -le, -gt, or -ge).
238
AC_DEFUN([FP_COMPARE_VERSIONS],
239
[fp_version1=$1; fp_version2=$3
240
fp_save_IFS=$IFS; IFS='.'
241
while test x"$fp_version1" != x || test x"$fp_version2" != x
244
set dummy $fp_version1; shift
246
test $[@%:@] = 0 || { fp_num1="[$]1"; shift; }
247
test x"$fp_num1" = x && fp_num1="0"
250
set dummy $fp_version2; shift
252
test $[@%:@] = 0 || { fp_num2="[$]1"; shift; }
253
test x"$fp_num2" = x && fp_num2="0"
256
test "$fp_num1" = "$fp_num2" || break;
259
AS_IF([test "$fp_num1" $2 "$fp_num2"], [$4], [$5])[]dnl
260
])# FP_COMPARE_VERSIONS
264
dnl Check for GreenCard and version.
266
AC_DEFUN([FPTOOLS_GREENCARD],
268
AC_PATH_PROG(GreenCardCmd,greencard)
269
AC_CACHE_CHECK([for version of greencard], fptools_cv_greencard_version,
271
[if test x"$GreenCardCmd" != x; then
272
fptools_cv_greencard_version="`$GreenCardCmd --version |
273
grep 'version' | sed -e 's/greencard. version \([^ ]*\).*/\1/g'`"
275
fptools_cv_greencard_version=""
279
FP_COMPARE_VERSIONS([$fptools_cv_greencard_version],[-lt],[$1],
280
[AC_MSG_ERROR([greencard version $1 or later is required (found '$fptools_cv_greencard_version')])])[]dnl
281
GreenCardVersion=$fptools_cv_greencard_version
282
AC_SUBST(GreenCardVersion)
286
dnl Check for Happy and version. If we're building GHC, then we need
287
dnl at least Happy version 1.14. If there's no installed Happy, we look
288
dnl for a happy source tree and point the build system at that instead.
290
AC_DEFUN([FPTOOLS_HAPPY],
291
[AC_PATH_PROG(HappyCmd,happy,)
292
# Happy is passed to Cabal, so we need a native path
293
if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
294
test "${OSTYPE}" != "msys" && \
295
test "${HappyCmd}" != ""
297
# Canonicalise to <drive>:/path/to/gcc
298
HappyCmd=`cygpath -m "${HappyCmd}"`
299
AC_MSG_NOTICE([normalized happy command to $HappyCmd])
302
AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
304
[if test x"$HappyCmd" != x; then
305
fptools_cv_happy_version=`"$HappyCmd" -v |
306
grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'` ;
308
fptools_cv_happy_version="";
312
if test ! -f compiler/parser/Parser.hs || test ! -f compiler/cmm/CmmParse.hs || test ! -f compiler/parser/ParserCore.hs
314
FP_COMPARE_VERSIONS([$fptools_cv_happy_version],[-lt],[1.16],
315
[AC_MSG_ERROR([Happy version 1.16 or later is required to compile GHC.])])[]
317
HappyVersion=$fptools_cv_happy_version;
318
AC_SUBST(HappyVersion)
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.1.0],
350
[AC_MSG_ERROR([Alex version 2.1.0 or later is required to compile GHC.])])[]
352
AlexVersion=$fptools_cv_alex_version;
353
AC_SUBST(AlexVersion)
359
# Sets the output variable LdXFlag to -x if ld supports this flag, otherwise the
360
# variable's value is empty.
361
AC_DEFUN([FP_PROG_LD_X],
363
AC_CACHE_CHECK([whether ld understands -x], [fp_cv_ld_x],
364
[echo 'foo() {}' > conftest.c
365
${CC-cc} -c conftest.c
366
if ${LdCmd} -r -x -o conftest2.o conftest.o > /dev/null 2>&1; then
372
if test "$fp_cv_ld_x" = yes; then
383
# Sets the output variable LdIsGNULd to YES or NO, depending on whether it is
385
AC_DEFUN([FP_PROG_LD_IS_GNU],
387
AC_CACHE_CHECK([whether ld is GNU ld], [fp_cv_gnu_ld],
388
[if ${LdCmd} --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then
393
AC_SUBST([LdIsGNULd], [`echo $fp_cv_gnu_ld | sed 'y/yesno/YESNO/'`])
394
])# FP_PROG_LD_IS_GNU
399
# Sets fp_prog_ar_raw to the full path of ar and fp_prog_ar to a non-Cygwin
400
# version of it. Exits if no ar can be found
401
AC_DEFUN([FP_PROG_AR],
402
[AC_PATH_PROG([fp_prog_ar_raw], [ar])
403
if test -z "$fp_prog_ar_raw"; then
404
AC_MSG_ERROR([cannot find ar in your PATH, no idea how to make a library])
406
fp_prog_ar="$fp_prog_ar_raw"
407
case $HostPlatform in
408
*mingw32) if test x${OSTYPE} != xmsys; then
409
fp_prog_ar="`cygpath -w "${fp_prog_ar_raw}" | sed -e 's@\\\\@/@g'`"
410
AC_MSG_NOTICE([normalized ar command to $fp_prog_ar])
419
# Sets fp_prog_ar_is_gnu to yes or no, depending on whether it is GNU ar or not.
420
AC_DEFUN([FP_PROG_AR_IS_GNU],
421
[AC_REQUIRE([FP_PROG_AR])
422
AC_CACHE_CHECK([whether $fp_prog_ar_raw is GNU ar], [fp_cv_prog_ar_is_gnu],
423
[if "$fp_prog_ar_raw" --version 2> /dev/null | grep "GNU" > /dev/null 2>&1; then
424
fp_cv_prog_ar_is_gnu=yes
426
fp_cv_prog_ar_is_gnu=no
428
fp_prog_ar_is_gnu=$fp_cv_prog_ar_is_gnu
429
AC_SUBST([ArIsGNUAr], [`echo $fp_prog_ar_is_gnu | tr 'a-z' 'A-Z'`])
430
])# FP_PROG_AR_IS_GNU
433
# FP_PROG_AR_SUPPORTS_ATFILE
435
# Sets fp_prog_ar_supports_atfile to yes or no, depending on whether
436
# or not it supports the @file syntax
437
AC_DEFUN([FP_PROG_AR_SUPPORTS_ATFILE],
438
[AC_REQUIRE([FP_PROG_AR])
439
AC_REQUIRE([FP_PROG_AR_ARGS])
440
AC_CACHE_CHECK([whether $fp_prog_ar_raw supports @file], [fp_cv_prog_ar_supports_atfile],
444
echo conftest.file > conftest.atfile
445
echo conftest.file >> conftest.atfile
446
"$fp_prog_ar_raw" $fp_prog_ar_args conftest.a @conftest.atfile > /dev/null 2>&1
447
fp_prog_ar_supports_atfile_tmp=`"$fp_prog_ar_raw" t conftest.a 2> /dev/null | grep -c conftest.file`
449
if test "$fp_prog_ar_supports_atfile_tmp" -eq 2
451
fp_cv_prog_ar_supports_atfile=yes
453
fp_cv_prog_ar_supports_atfile=no
455
fp_prog_ar_supports_atfile=$fp_cv_prog_ar_supports_atfile
456
AC_SUBST([ArSupportsAtFile], [`echo $fp_prog_ar_supports_atfile | tr 'a-z' 'A-Z'`])
457
])# FP_PROG_AR_SUPPORTS_ATFILE
461
# Sets fp_prog_ar_args to the arguments for ar and the output variable ArCmd
462
# to a non-Cygwin invocation of ar including these arguments.
463
AC_DEFUN([FP_PROG_AR_ARGS],
464
[AC_REQUIRE([FP_PROG_AR_IS_GNU])
465
AC_CACHE_CHECK([for ar arguments], [fp_cv_prog_ar_args],
467
# GNU ar needs special treatment: it appears to have problems with
468
# object files with the same name if you use the 's' modifier, but
469
# simple 'ar q' works fine, and doesn't need a separate ranlib.
470
if test $fp_prog_ar_is_gnu = yes; then
471
fp_cv_prog_ar_args="q"
474
for fp_var in clqsZ clqs cqs clq cq ; do
476
if "$fp_prog_ar_raw" $fp_var conftest.a conftest.dummy > /dev/null 2> /dev/null; then
477
fp_cv_prog_ar_args=$fp_var
482
if test -z "$fp_cv_prog_ar_args"; then
483
AC_MSG_ERROR([cannot figure out how to use your $fp_prog_ar_raw])
486
fp_prog_ar_args=$fp_cv_prog_ar_args
487
AC_SUBST([ArCmd], ["$fp_prog_ar"])
488
AC_SUBST([ArArgs], ["$fp_prog_ar_args"])
493
# FP_PROG_AR_NEEDS_RANLIB
494
# -----------------------
495
# Sets the output variable RANLIB to "ranlib" if it is needed and found,
497
AC_DEFUN([FP_PROG_AR_NEEDS_RANLIB],
498
[AC_REQUIRE([FP_PROG_AR_IS_GNU])
499
AC_REQUIRE([FP_PROG_AR_ARGS])
500
AC_REQUIRE([AC_PROG_CC])
501
AC_CACHE_CHECK([whether ranlib is needed], [fp_cv_prog_ar_needs_ranlib],
502
[if test $fp_prog_ar_is_gnu = yes; then
503
fp_cv_prog_ar_needs_ranlib=no
504
elif echo $TargetPlatform | grep "^.*-apple-darwin$" > /dev/null 2> /dev/null; then
505
# It's quite tedious to check for Apple's crazy timestamps in .a files,
507
fp_cv_prog_ar_needs_ranlib=yes
508
elif echo $fp_prog_ar_args | grep "s" > /dev/null 2> /dev/null; then
509
fp_cv_prog_ar_needs_ranlib=no
511
fp_cv_prog_ar_needs_ranlib=yes
513
if test $fp_cv_prog_ar_needs_ranlib = yes; then
519
])# FP_PROG_AR_NEEDS_RANLIB
522
# FP_PROG_AR_SUPPORTS_INPUT
523
# -------------------------
524
# Sets the output variable ArSupportsInput to "-input" or "", depending on
525
# whether ar supports -input flag is supported or not.
526
AC_DEFUN([FP_PROG_AR_SUPPORTS_INPUT],
527
[AC_REQUIRE([FP_PROG_AR_IS_GNU])
528
AC_REQUIRE([FP_PROG_AR_ARGS])
529
AC_CACHE_CHECK([whether $fp_prog_ar_raw supports -input], [fp_cv_prog_ar_supports_input],
530
[fp_cv_prog_ar_supports_input=no
531
if test $fp_prog_ar_is_gnu = no; then
534
if FP_EVAL_STDERR(["$fp_prog_ar_raw" $fp_prog_ar_args conftest.a -input conftest.lst]) >/dev/null; then
535
test -s conftest.err || fp_cv_prog_ar_supports_input=yes
539
if test $fp_cv_prog_ar_supports_input = yes; then
540
ArSupportsInput="-input"
544
AC_SUBST([ArSupportsInput])
545
])# FP_PROG_AR_SUPPORTS_INPUT
549
dnl AC_SHEBANG_PERL - can we she-bang perl?
551
AC_DEFUN([FPTOOLS_SHEBANG_PERL],
552
[AC_CACHE_CHECK([if your perl works in shell scripts], fptools_cv_shebang_perl,
557
(SHELL=/bin/sh; export SHELL; ./conftest 69 > /dev/null)
558
if test $? -ne 69; then
559
fptools_cv_shebang_perl=yes
561
fptools_cv_shebang_perl=no
569
# Extra testing of the result AC_PROG_CC, testing the gcc version no. Sets the
570
# output variables HaveGcc and GccVersion.
571
AC_DEFUN([FP_HAVE_GCC],
572
[AC_REQUIRE([AC_PROG_CC])
573
if test -z "$GCC"; then
578
if test "$fp_have_gcc" = "NO" -a -d $srcdir/ghc; then
579
AC_MSG_ERROR([gcc is required])
582
AC_CACHE_CHECK([version of gcc], [fp_cv_gcc_version],
583
[if test "$fp_have_gcc" = "YES"; then
584
fp_cv_gcc_version="`$CC -v 2>&1 | grep 'version ' | sed -e 's/.*version [[^0-9]]*\([[0-9.]]*\).*/\1/g'`"
585
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-lt], [3.0],
586
[AC_MSG_ERROR([Need at least gcc version 3.0 (3.4+ recommended)])])
587
# See #2770: gcc 2.95 doesn't work any more, apparently. There probably
588
# isn't a very good reason for that, but for now just make configure
590
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-lt], [3.4], GccLT34=YES)
592
fp_cv_gcc_version="not-installed"
595
AC_SUBST([HaveGcc], [$fp_have_gcc])
596
AC_SUBST([GccVersion], [$fp_cv_gcc_version])
600
dnl Small feature test for perl version. Assumes PerlCmd
601
dnl contains path to perl binary.
603
dnl (Perl versions prior to v5.6 does not contain the string "v5";
604
dnl instead they display version strings such as "version 5.005".)
606
AC_DEFUN([FPTOOLS_CHECK_PERL_VERSION],
607
[$PerlCmd -v >conftest.out 2>&1
608
if grep "v5" conftest.out >/dev/null 2>&1; then
611
AC_MSG_ERROR([your version of perl probably won't work, try upgrading it.])
617
# FP_CHECK_PROG(VARIABLE, PROG-TO-CHECK-FOR,
618
# [VALUE-IF-NOT-FOUND], [PATH], [REJECT])
619
# -----------------------------------------------------
620
# HACK: A small wrapper around AC_CHECK_PROG, setting VARIABLE to the full path
621
# of PROG-TO-CHECK-FOR when found.
622
AC_DEFUN([FP_CHECK_PROG],
623
[AC_CHECK_PROG([$1], [$2], [$as_dir/$ac_word$ac_exec_ext], [$3], [$4], [$5])][]dnl
629
# Find a non-WinDoze version of the "find" utility.
630
AC_DEFUN([FP_PROG_FIND],
631
[AC_PATH_PROGS([fp_prog_find], [gfind find], find)
632
echo foo > conftest.txt
633
$fp_prog_find conftest.txt -print > conftest.out 2>&1
634
if grep '^conftest.txt$' conftest.out > /dev/null 2>&1 ; then
635
# OK, looks like a real "find".
636
case $HostPlatform in
638
if test x${OSTYPE} != xmsys
640
fp_prog_find="`cygpath --mixed ${fp_prog_find}`"
641
AC_MSG_NOTICE([normalized find command to $fp_prog_find])
645
FindCmd="$fp_prog_find"
647
# Found a poor WinDoze version of "find", ignore it.
648
AC_MSG_WARN([$fp_prog_find looks like a non-*nix find, ignoring it])
649
FP_CHECK_PROG([FindCmd], [find], [], [], [$fp_prog_find])
651
rm -f conftest.txt conftest.out
652
AC_SUBST([FindCmd])[]dnl
658
# Find a Unix-like sort
659
AC_DEFUN([FP_PROG_SORT],
660
[AC_PATH_PROG([fp_prog_sort], [sort])
661
echo conwip > conftest.txt
662
$fp_prog_sort -f conftest.txt > conftest.out 2>&1
663
if grep 'conwip' conftest.out > /dev/null 2>&1 ; then
665
SortCmd="$fp_prog_sort"
667
# Summink else..pick next one.
668
AC_MSG_WARN([$fp_prog_sort looks like a non-*nix sort, ignoring it])
669
FP_CHECK_PROG([SortCmd], [sort], [], [], [$fp_prog_sort])
671
rm -f conftest.txt conftest.out
672
AC_SUBST([SortCmd])[]dnl
676
dnl FPTOOLS_NOCACHE_CHECK prints a message, then sets the
677
dnl values of the second argument to the result of running
678
dnl the commands given by the third. It does not cache its
679
dnl result, so it is suitable for checks which should be
682
AC_DEFUN([FPTOOLS_NOCACHE_CHECK],
683
[AC_MSG_CHECKING([$1])
685
AC_MSG_RESULT([$][$2])
689
dnl FPTOOLS_GHC_VERSION(version)
690
dnl FPTOOLS_GHC_VERSION(major, minor [, patchlevel])
691
dnl FPTOOLS_GHC_VERSION(version, major, minor, patchlevel)
693
dnl Test for version of installed ghc. Uses $GHC.
694
dnl [original version pinched from c2hs]
696
AC_DEFUN([FPTOOLS_GHC_VERSION],
697
[FPTOOLS_NOCACHE_CHECK([version of ghc], [fptools_version_of_ghc],
698
["${WithGhc-ghc}" --version > conftestghc 2>&1
699
cat conftestghc >&AS_MESSAGE_LOG_FD
700
#Useless Use Of cat award...
701
fptools_version_of_ghc=`cat conftestghc | sed -n -e 's/, patchlevel *\([[0-9]]\)/.\1/;s/.* version \([[0-9]][[0-9.]]*\).*/\1/p'`
703
if test "[$]fptools_version_of_ghc" = ""
705
fptools_version_of_ghc='unknown'
707
fptools_version_of_ghc[_major]=`echo [$]fptools_version_of_ghc | sed -e 's/^\([[0-9]]\).*/\1/'`
708
fptools_version_of_ghc[_minor]=`echo [$]fptools_version_of_ghc | sed -e 's/^[[0-9]]\.\([[0-9]]*\).*/\1/'`
709
fptools_version_of_ghc[_pl]=`echo [$]fptools_version_of_ghc | sed -n -e 's/^[[0-9]]\.[[0-9]]*\.\([[0-9]]*\)/\1/p'`
711
if test "[$]fptools_version_of_ghc[_pl]" = ""
713
fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor]"
714
fptools_version_of_ghc[_pl]="0"
716
fptools_version_of_ghc[_all]="[$]fptools_version_of_ghc[_major].[$]fptools_version_of_ghc[_minor].[$]fptools_version_of_ghc[_pl]"
720
[$1]="[$]fptools_version_of_ghc[_all]"
722
[$1]="[$]fptools_version_of_ghc[_major]"
723
[$2]="[$]fptools_version_of_ghc[_minor]"
725
[$1]="[$]fptools_version_of_ghc[_major]"
726
[$2]="[$]fptools_version_of_ghc[_minor]"
727
[$3]="[$]fptools_version_of_ghc[_pl]"
729
[$1]="[$]fptools_version_of_ghc[_all]"
730
[$2]="[$]fptools_version_of_ghc[_major]"
731
[$3]="[$]fptools_version_of_ghc[_minor]"
732
[$4]="[$]fptools_version_of_ghc[_pl]"
738
# FP_CHECK_FUNC(FUNCTION, PROLOGUE, BODY, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
739
# ---------------------------------------------------------------------------------
740
# A variant of AC_CHECK_FUNCS, limited to a single FUNCTION, but with the
741
# additional flexibility of specifying the PROLOGUE and BODY.
742
AC_DEFUN([FP_CHECK_FUNC],
743
[AS_VAR_PUSHDEF([fp_func], [fp_cv_func_$1])dnl
744
AC_CACHE_CHECK([for $1], fp_func,
745
[AC_LINK_IFELSE([AC_LANG_PROGRAM([$2], [$3])],
746
[AS_VAR_SET(fp_func, yes)],
747
[AS_VAR_SET(fp_func, no)])])
748
AS_IF([test AS_VAR_GET(fp_func) = yes],
749
[AC_DEFINE(AS_TR_CPP(HAVE_$1), [1],
750
[Define to 1 if you have the `]$1[' function.]) $4],
752
AS_VAR_POPDEF([fp_func])dnl
758
# Generates a DocBook XML V4.2 document in conftest.xml.
760
# It took a lot of experimentation to find a document that will cause
761
# xsltproc to fail with an error code when the relevant
762
# stylesheets/DTDs are not found. I couldn't make xsltproc fail with
763
# a single-file document, it seems a multi-file document is needed.
766
AC_DEFUN([FP_GEN_DOCBOOK_XML],
767
[rm -f conftest.xml conftest-book.xml
768
cat > conftest.xml << EOF
769
<?xml version="1.0" encoding="iso-8859-1"?>
770
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
771
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [[
772
<!ENTITY conftest-book SYSTEM "conftest-book.xml">
778
cat >conftest-book.xml << EOF
779
<?xml version="1.0" encoding="iso-8859-1"?>
780
<title>A DocBook “Test Document”</title>
781
<chapter id="id-one">
782
<title>A Chapter Title</title>
783
<para>This is a paragraph, referencing <xref linkend="id-two"/>.</para>
785
<chapter id="id-two">
786
<title>Another Chapter Title</title>
787
<para>This is another paragraph, referencing <xref linkend="id-one"/>.</para>
790
]) # FP_GEN_DOCBOOK_XML
795
# Sets the output variable DblatexCmd to the full path of dblatex,
796
# which we use for building PDF and PS docs.
797
# DblatexCmd is empty if dblatex could not be found.
798
AC_DEFUN([FP_PROG_DBLATEX],
799
[AC_PATH_PROG([DblatexCmd], [dblatex])
800
if test -z "$DblatexCmd"; then
801
AC_MSG_WARN([cannot find dblatex in your PATH, you will not be able to build the PDF and PS documentation])
808
# Sets the output variable XsltprocCmd to the full path of the XSLT processor
809
# xsltproc. XsltprocCmd is empty if xsltproc could not be found.
810
AC_DEFUN([FP_PROG_XSLTPROC],
811
[AC_PATH_PROG([XsltprocCmd], [xsltproc])
812
if test -z "$XsltprocCmd"; then
813
AC_MSG_WARN([cannot find xsltproc in your PATH, you will not be able to build the HTML documentation])
819
# ----------------------------
820
# Check that we can process a DocBook XML document to HTML using xsltproc.
821
AC_DEFUN([FP_DOCBOOK_XSL],
822
[AC_REQUIRE([FP_PROG_XSLTPROC])dnl
823
if test -n "$XsltprocCmd"; then
824
AC_CACHE_CHECK([for DocBook XSL stylesheet], fp_cv_dir_docbook_xsl,
826
fp_cv_dir_docbook_xsl=no
827
if $XsltprocCmd --nonet http://docbook.sourceforge.net/release/xsl/current/html/chunk.xsl conftest.xml > /dev/null 2>&1; then
828
fp_cv_dir_docbook_xsl=yes
832
if test x"$fp_cv_dir_docbook_xsl" = xno; then
833
AC_MSG_WARN([cannot find DocBook XSL stylesheets, you will not be able to build the documentation])
838
AC_SUBST([HAVE_DOCBOOK_XSL])
844
# Sets the output variable XmllintCmd to the full path of the XSLT processor
845
# xmllint. XmllintCmd is empty if xmllint could not be found.
846
AC_DEFUN([FP_PROG_XMLLINT],
847
[AC_PATH_PROG([XmllintCmd], [xmllint])
848
if test -z "$XmllintCmd"; then
849
AC_MSG_WARN([cannot find xmllint in your PATH, you will not be able to validate your documentation])
854
# FP_CHECK_DOCBOOK_DTD
855
# --------------------
856
AC_DEFUN([FP_CHECK_DOCBOOK_DTD],
857
[AC_REQUIRE([FP_PROG_XMLLINT])dnl
858
if test -n "$XmllintCmd"; then
859
AC_MSG_CHECKING([for DocBook DTD])
861
if $XmllintCmd --nonet --valid --noout conftest.xml ; then
864
AC_MSG_RESULT([failed])
865
AC_MSG_WARN([cannot find a DTD for DocBook XML V4.2, you will not be able to validate your documentation])
866
AC_MSG_WARN([check your XML_CATALOG_FILES environment variable and/or /etc/xml/catalog])
870
])# FP_CHECK_DOCBOOK_DTD
875
# Generates a formatting objects document in conftest.fo.
876
AC_DEFUN([FP_GEN_FO],
878
cat > conftest.fo << EOF
879
<?xml version="1.0"?>
880
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
881
<fo:layout-master-set>
882
<fo:simple-page-master master-name="blank">
884
</fo:simple-page-master>
885
</fo:layout-master-set>
886
<fo:page-sequence master-reference="blank">
887
<fo:flow flow-name="xsl-region-body">
900
# Set the output variable 'FopCmd' to the first working 'fop' in the current
901
# 'PATH'. Note that /usr/bin/fop is broken in SuSE 9.1 (unpatched), so try
902
# /usr/share/fop/fop.sh in that case (or no 'fop'), too.
903
AC_DEFUN([FP_PROG_FOP],
904
[AC_PATH_PROGS([FopCmd1], [fop fop.sh])
905
if test -n "$FopCmd1"; then
906
AC_CACHE_CHECK([for $FopCmd1 usability], [fp_cv_fop_usability],
908
if "$FopCmd1" -fo conftest.fo -ps conftest.ps > /dev/null 2>&1; then
909
fp_cv_fop_usability=yes
911
fp_cv_fop_usability=no
914
if test x"$fp_cv_fop_usability" = xyes; then
918
if test -z "$FopCmd"; then
919
AC_PATH_PROGS([FopCmd2], [fop.sh], , [/usr/share/fop])
928
# Sets the output variable HstagsCmd to the full Haskell tags program path.
929
# HstagsCmd is empty if no such program could be found.
930
AC_DEFUN([FP_PROG_HSTAGS],
931
[AC_PATH_PROG([HstagsCmd], [hasktags])
932
if test -z "$HstagsCmd"; then
933
AC_MSG_WARN([cannot find hasktags in your PATH, you will not be able to build the tags])
940
# Try to find a ghc-pkg matching the ghc mentioned in the environment variable
941
# WithGhc. Sets the output variable GhcPkgCmd.
942
AC_DEFUN([FP_PROG_GHC_PKG],
943
[AC_CACHE_CHECK([for ghc-pkg matching $WithGhc], fp_cv_matching_ghc_pkg,
945
# If we are told to use ghc-stage2, then we're using an in-tree
946
# compiler. In this case, we just want ghc-pkg, not ghc-pkg-stage2,
947
# so we sed off -stage[0-9]$. However, if we are told to use
948
# ghc-6.12.1 then we want to use ghc-pkg-6.12.1, so we keep any
950
fp_ghc_pkg_guess=`echo $WithGhc | sed -e 's/-stage@<:@0-9@:>@$//' -e 's,ghc\(@<:@^/\\@:>@*\)$,ghc-pkg\1,'`
951
if "$fp_ghc_pkg_guess" list > /dev/null 2>&1; then
952
fp_cv_matching_ghc_pkg=$fp_ghc_pkg_guess
954
AC_MSG_ERROR([Cannot find matching ghc-pkg])
956
GhcPkgCmd=$fp_cv_matching_ghc_pkg
957
AC_SUBST([GhcPkgCmd])
963
# Determine which extra flags we need to pass gcc when we invoke it
964
# to compile .hc code.
966
# Some OSs (Mandrake Linux, in particular) configure GCC with
967
# -momit-leaf-frame-pointer on by default. If this is the case, we
968
# need to turn it off for mangling to work. The test is currently a
969
# bit crude, using only the version number of gcc.
971
# -fwrapv is needed for gcc to emit well-behaved code in the presence of
972
# integer wrap around. (Trac #952)
974
# -fno-unit-at-a-time or -fno-toplevel-reoder is necessary to avoid gcc
975
# reordering things in the module and confusing the manger and/or splitter.
978
AC_DEFUN([FP_GCC_EXTRA_FLAGS],
979
[AC_REQUIRE([FP_HAVE_GCC])
980
AC_CACHE_CHECK([for extra options to pass gcc when compiling via C], [fp_cv_gcc_extra_opts],
981
[fp_cv_gcc_extra_opts=
982
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-ge], [3.4],
983
[fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fwrapv"],
985
case $TargetPlatform in
987
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-ge], [3.2],
988
[fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -mno-omit-leaf-frame-pointer"],
990
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-ge], [3.4],
991
[FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-ge], [4.2],
992
[fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
993
[fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-unit-at-a-time"]
998
FP_COMPARE_VERSIONS([$fp_cv_gcc_version], [-ge], [4.2],
999
[fp_cv_gcc_extra_opts="$fp_cv_gcc_extra_opts -fno-toplevel-reorder"],
1004
AC_SUBST([GccExtraViaCOpts],$fp_cv_gcc_extra_opts)
1008
# FP_SETUP_PROJECT_VERSION
1009
# ---------------------
1010
AC_DEFUN([FP_SETUP_PROJECT_VERSION],
1012
if test "$RELEASE" = "NO"; then
1013
AC_MSG_CHECKING([for GHC version date])
1014
if test -f VERSION_DATE; then
1015
PACKAGE_VERSION=${PACKAGE_VERSION}.`cat VERSION_DATE`
1016
AC_MSG_RESULT(given $PACKAGE_VERSION)
1017
elif test -d .git; then
1019
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/"`
1020
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
1021
changequote([, ])dnl
1022
AC_MSG_ERROR([failed to detect version date: check that git is in your path])
1024
PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
1025
AC_MSG_RESULT(inferred $PACKAGE_VERSION)
1026
elif test -d _darcs; then
1027
# TODO: Remove this branch after conversion to Git
1029
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" | ${SortCmd} -n | tail -1`
1030
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
1031
changequote([, ])dnl
1032
AC_MSG_ERROR([failed to detect version date: check that darcs is in your path])
1034
PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
1035
AC_MSG_RESULT(inferred $PACKAGE_VERSION)
1036
elif test -f VERSION; then
1037
PACKAGE_VERSION=`cat VERSION`
1038
AC_MSG_RESULT(given $PACKAGE_VERSION)
1040
AC_MSG_WARN([cannot determine snapshot version: no .git or _darcs directory and no VERSION file])
1045
AC_SUBST([ProjectName], [$PACKAGE_NAME])
1046
AC_SUBST([ProjectVersion], [$PACKAGE_VERSION])
1048
# Split PACKAGE_VERSION into (possibly empty) parts
1049
VERSION_MAJOR=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
1050
VERSION_TMP=`echo $PACKAGE_VERSION | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
1051
VERSION_MINOR=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\1'/`
1052
ProjectPatchLevel=`echo $VERSION_TMP | sed 's/^\(@<:@^.@:>@*\)\(\.\{0,1\}\(.*\)\)$/\3'/`
1054
# Calculate project version as an integer, using 2 digits for minor version
1055
case $VERSION_MINOR in
1056
?) ProjectVersionInt=${VERSION_MAJOR}0${VERSION_MINOR} ;;
1057
??) ProjectVersionInt=${VERSION_MAJOR}${VERSION_MINOR} ;;
1058
*) AC_MSG_ERROR([bad minor version in $PACKAGE_VERSION]) ;;
1060
AC_SUBST([ProjectVersionInt])
1062
# The project patchlevel is zero unless stated otherwise
1063
test -z "$ProjectPatchLevel" && ProjectPatchLevel=0
1065
# Remove dots from the patch level; this allows us to have versions like 6.4.1.20050508
1066
ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'`
1068
AC_SUBST([ProjectPatchLevel])
1069
])# FP_SETUP_PROJECT_VERSION
1072
# Check for a working timer_create(). We need a pretty detailed check
1073
# here, because there exist partially-working implementations of
1074
# timer_create() in certain versions of Linux (see bug #1933).
1076
AC_DEFUN([FP_CHECK_TIMER_CREATE],
1077
[AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)],
1078
[fptools_cv_timer_create_works],
1081
#ifdef HAVE_STDLIB_H
1087
#ifdef HAVE_SIGNAL_H
1090
#ifdef HAVE_UNISTD_H
1094
static volatile int tock = 0;
1095
static void handler(int i)
1100
static void timeout(int i)
1102
// timer_settime() has been known to hang, so just in case
1103
// we install a 1-second timeout (see #2257)
1107
int main(int argc, char *argv[])
1112
struct itimerspec it;
1113
struct sigaction action;
1116
ev.sigev_notify = SIGEV_SIGNAL;
1117
ev.sigev_signo = SIGVTALRM;
1119
action.sa_handler = handler;
1120
action.sa_flags = 0;
1121
sigemptyset(&action.sa_mask);
1122
if (sigaction(SIGVTALRM, &action, NULL) == -1) {
1123
fprintf(stderr,"SIGVTALRM problem\n");
1127
action.sa_handler = timeout;
1128
action.sa_flags = 0;
1129
sigemptyset(&action.sa_mask);
1130
if (sigaction(SIGALRM, &action, NULL) == -1) {
1131
fprintf(stderr,"SIGALRM problem\n");
1136
if (timer_create(CLOCK_PROCESS_CPUTIME_ID, &ev, &timer) != 0) {
1137
fprintf(stderr,"No CLOCK_PROCESS_CPUTIME_ID timer\n");
1141
it.it_value.tv_sec = 0;
1142
it.it_value.tv_nsec = 1;
1143
it.it_interval = it.it_value;
1144
if (timer_settime(timer, 0, &it, NULL) != 0) {
1145
fprintf(stderr,"settime problem\n");
1151
for(n = 3; n < 20000; n++){
1152
for(m = 2; m <= n/2; m++){
1153
if (!(n%m)) count++;
1160
fprintf(stderr,"no CLOCK_PROCESS_CPUTIME_ID signal\n");
1164
timer_delete(timer);
1166
if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) {
1167
fprintf(stderr,"No CLOCK_REALTIME timer\n");
1171
it.it_value.tv_sec = 0;
1172
it.it_value.tv_nsec = 1000000;
1173
it.it_interval = it.it_value;
1174
if (timer_settime(timer, 0, &it, NULL) != 0) {
1175
fprintf(stderr,"settime problem\n");
1184
fprintf(stderr,"no CLOCK_REALTIME signal\n");
1188
timer_delete(timer);
1193
[fptools_cv_timer_create_works=yes],
1194
[fptools_cv_timer_create_works=no])
1196
case $fptools_cv_timer_create_works in
1197
yes) AC_DEFINE([USE_TIMER_CREATE], 1,
1198
[Define to 1 if we can use timer_create(CLOCK_PROCESS_CPUTIME_ID,...)]);;
1204
AC_DEFUN([FP_ARG_GMP],
1206
AC_ARG_WITH([gmp-includes],
1207
[AC_HELP_STRING([--with-gmp-includes],
1208
[directory containing gmp.h])],
1209
[gmp_includes=$withval],
1210
[gmp_includes=NONE])
1212
AC_ARG_WITH([gmp-libraries],
1213
[AC_HELP_STRING([--with-gmp-libraries],
1214
[directory containing gmp library])],
1215
[gmp_libraries=$withval],
1216
[gmp_libraries=NONE])
1219
AC_DEFUN([CHECK_GMP],
1220
[AC_REQUIRE([AC_PROG_CPP])
1221
AC_REQUIRE([AC_PROG_CC])
1224
# FP_CHECK_MACOSX_DEPLOYMENT_TARGET
1225
# ---------------------------------
1226
AC_DEFUN([FP_CHECK_MACOSX_DEPLOYMENT_TARGET],
1228
if test "x$TargetOS_CPP-$TargetVendor_CPP" = "xdarwin-apple"; then
1229
AC_MSG_CHECKING([Mac OS X deployment target])
1230
case $FP_MACOSX_DEPLOYMENT_TARGET in
1232
10.4) MACOSX_DEPLOYMENT_VERSION=10.4
1233
MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
1235
10.4u) MACOSX_DEPLOYMENT_VERSION=10.4
1236
MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX10.4u.sdk
1238
*) MACOSX_DEPLOYMENT_VERSION=$FP_MACOSX_DEPLOYMENT_TARGET
1239
MACOSX_DEPLOYMENT_SDK=/Developer/SDKs/MacOSX${FP_MACOSX_DEPLOYMENT_TARGET}.sdk
1242
if test "x$FP_MACOSX_DEPLOYMENT_TARGET" = "xnone"; then
1245
if test ! -d $MACOSX_DEPLOYMENT_SDK; then
1246
AC_MSG_ERROR([Unknown deployment target $FP_MACOSX_DEPLOYMENT_TARGET])
1248
AC_MSG_RESULT([${MACOSX_DEPLOYMENT_VERSION} (${MACOSX_DEPLOYMENT_SDK})])
1253
# --------------------------------------------------------------
1254
# Calculate absolute path to build tree
1255
# --------------------------------------------------------------
1257
AC_DEFUN([FP_FIND_ROOT],[
1258
AC_MSG_CHECKING(for path to top of build tree)
1261
dnl make -C utils/ghc-pwd clean && make -C utils/ghc-pwd
1262
dnl except we don't want to have to know what make is called. Sigh.
1263
if test ! -f utils/ghc-pwd/ghc-pwd && test ! -f utils/ghc-pwd/ghc-pwd.exe; then
1269
"$WithGhc" -v0 -no-user-package-conf --make ghc-pwd -o ghc-pwd
1273
hardtop=`utils/ghc-pwd/ghc-pwd`
1275
if ! test -d "$hardtop"; then
1276
AC_MSG_ERROR([cannot determine current directory])
1279
dnl Remove common automounter nonsense
1281
hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|'`
1285
AC_MSG_RESULT(${hardtop})
1287
# We don't support building in directories with spaces.
1289
*' '*) AC_MSG_ERROR([
1290
The build system does not support building in a directory containing
1291
space characters. Suggestion: move the build tree somewhere else.])
1296
# GHC_CONVERT_CPU(cpu, target_var)
1297
# --------------------------------
1298
# converts cpu from gnu to ghc naming, and assigns the result to $target_var
1299
AC_DEFUN([GHC_CONVERT_CPU],[
1356
echo "Unknown CPU $1"
1362
# GHC_CONVERT_VENDOR(vendor, target_var)
1363
# --------------------------------
1364
# converts vendor from gnu to ghc naming, and assigns the result to $target_var
1365
AC_DEFUN([GHC_CONVERT_VENDOR],[
1369
# GHC_CONVERT_OS(os, target_var)
1370
# --------------------------------
1371
# converts os from gnu to ghc naming, and assigns the result to $target_var
1372
AC_DEFUN([GHC_CONVERT_OS],[
1377
# As far as I'm aware, none of these have relevant variants
1378
freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix|haiku)
1382
echo "Unknown OS $1"
1388
# LIBRARY_VERSION(lib)
1389
# --------------------------------
1390
# Gets the version number of a library.
1391
# If $1 is ghc-prim, then we define LIBRARY_ghc_prim_VERSION as 1.2.3
1392
AC_DEFUN([LIBRARY_VERSION],[
1393
LIBRARY_[]translit([$1], [-], [_])[]_VERSION=`grep -i "^version:" libraries/$1/$1.cabal | sed "s/.* //"`
1394
AC_SUBST(LIBRARY_[]translit([$1], [-], [_])[]_VERSION)