[project @ 2005-03-03 21:03:06 by wolfgang]
[ghc.git] / configure.ac
1 dnl == autoconf source for the Glasgow FP tools ==
2 dnl (run "grep '^dnl \*' configure.ac | sed -e 's/dnl / /g; s/\*\*/   +/g;'"
3 dnl  (or some such) to see the outline of this file)
4 dnl
5 #
6 # (c) The AQUA Project, Glasgow University, 1994-2004
7 #
8 # Configure script template for the Glasgow functional programming tools
9 #
10 # Process with 'autoreconf' to get a working configure script.
11 #
12 # For the generated configure script, do "./configure --help" to
13 # see what flags are available. (Better yet, read the documentation!)
14 #
15
16 AC_INIT([fptools build system], [1.0], [cvs-fptools@haskell.org], [fptools])
17
18 # First off, a distrib sanity check..
19 AC_CONFIG_SRCDIR([mk/config.mk.in])
20
21 dnl * We require autoconf version 2.52
22 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
23 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
24 AC_PREREQ([2.52])
25
26 dnl * Declare subdirectories that have a private configure script
27 dnl
28 dnl After the toplevel configuration is complete, the script will recurse into
29 dnl these subdirectories if they exist. The use of a cache file makes repeated
30 dnl checks cheap.
31 AC_CONFIG_SUBDIRS([ghc libraries])
32
33 # -------------------------------------------------------------------------
34 # Prepare to generate the following header files
35 #
36 #
37 AC_CONFIG_HEADER(mk/config.h)
38
39 # No, semi-sadly, we don't do `--srcdir'...
40 if test x"$srcdir" != 'x.' ; then
41     echo "This configuration does not support the \`--srcdir' option.."
42     exit 1
43 fi
44
45 dnl--------------------------------------------------------------------
46 dnl * Choose host(/target/build) platform
47 dnl--------------------------------------------------------------------
48
49 dnl Guess host/target/build platform(s) if necessary.
50 AC_CANONICAL_TARGET
51
52 # "$host" defaults to "$target"
53 if test "x$host" = xNONE ; then
54     host=$target
55 fi
56
57 dnl ** canonicalize platform names
58 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
59 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
60 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
61
62 if test x"$TargetPlatform" != x"$HostPlatform" ; then
63     echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
64     exit 1
65 fi
66
67 exeext=''
68 #
69 # The following will be more difficult when we *are* cross-compiling.
70 # Suitable names to slam in *_CPP are in platform.h.in.
71 # We also record the architecture, vendor, and operating system (OS)
72 # separately.
73 case $HostPlatform in
74 alpha*-dec-osf[[12]]*)
75         HostPlatform=alpha-dec-osf1   # canonicalise for our purposes
76         TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
77         BuildPlatform=alpha-dec-osf1  # hack
78         HostPlatform_CPP='alpha_dec_osf1'
79         HostArch_CPP='alpha'
80         HostVendor_CPP='dec'
81         HostOS_CPP='osf1'
82         ;;
83 alpha*-dec-osf[[345]]*)
84         HostPlatform=alpha-dec-osf3   # canonicalise for our purposes
85         TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
86         BuildPlatform=alpha-dec-osf3  # hack
87         HostPlatform_CPP='alpha_dec_osf3'
88         HostArch_CPP='alpha'
89         HostVendor_CPP='dec'
90         HostOS_CPP='osf3'
91         ;;
92 alpha*-unknown-linux*)
93         HostPlatform=alpha-unknown-linux
94         TargetPlatform=alpha-unknown-linux
95         BuildPlatform=alpha-unknown-linux
96         HostPlatform_CPP='alpha_unknown_linux'
97         HostArch_CPP='alpha'
98         HostVendor_CPP='unknown'
99         HostOS_CPP='linux'
100         ;;
101 alpha*-unknown-freebsd*)
102         HostPlatform=alpha-unknown-freebsd
103         TargetPlatform=alpha-unknown-freebsd
104         BuildPlatform=alpha-unknown-freebsd
105         HostPlatform_CPP='alpha_unknown_freebsd'
106         HostArch_CPP='alpha'
107         HostVendor_CPP='unknown'
108         HostOS_CPP='freebsd'
109         ;;
110 alpha*-unknown-openbsd*)
111         HostPlatform=alpha-unknown-openbsd
112         TargetPlatform=alpha-unknown-openbsd
113         BuildPlatform=alpha-unknown-openbsd
114         HostPlatform_CPP='alpha_unknown_openbsd'
115         HostArch_CPP='alpha'
116         HostVendor_CPP='unknown'
117         HostOS_CPP='openbsd'
118         ;;
119 amd64-*-openbsd*|x86_64-*-openbsd*)
120         HostPlatform=x86_64-unknown-openbsd
121         TargetPlatform=x86_64-unknown-openbsd
122         BuildPlatform=x86_64-unknown-openbsd
123         HostPlatform_CPP='x86_64_unknown_openbsd'
124         HostArch_CPP='x86_64'
125         HostVendor_CPP='unknown'
126         HostOS_CPP='openbsd'
127         ;;
128 arm*-linux*)
129         HostPlatform=arm-unknown-linux # hack again
130         TargetPlatform=arm-unknown-linux
131         BuildPlatform=arm-unknown-linux
132         HostPlatform_CPP='arm_unknown_linux'                 
133         HostArch_CPP='arm'
134         HostVendor_CPP='unknown'
135         HostOS_CPP='linux'
136         ;;
137 arm*-openbsd*)
138         HostPlatform=arm-unknown-openbsd
139         TargetPlatform=arm-unknown-openbsd
140         BuildPlatform=arm-unknown-openbsd
141         HostPlatform_CPP='arm_unknown_openbsd'                 
142         HostArch_CPP='arm'
143         HostVendor_CPP='unknown'
144         HostOS_CPP='openbsd'
145         ;;
146 hppa*-*-linux*)
147         HostPlatform=hppa-unknown-linux # hack again
148         TargetPlatform=hppa-unknown-linux
149         BuildPlatform=hppa-unknown-linux
150         HostPlatform_CPP='hppa_unknown_linux'                
151         HostArch_CPP='hppa'
152         HostVendor_CPP='unknown'                             
153         HostOS_CPP='linux'
154         ;;
155 hppa*-*-openbsd*)
156         HostPlatform=hppa-unknown-openbsd # hack again
157         TargetPlatform=hppa-unknown-openbsd
158         BuildPlatform=hppa-unknown-openbsd
159         HostPlatform_CPP='hppa_unknown_openbsd'                
160         HostArch_CPP='hppa'
161         HostVendor_CPP='unknown'                             
162         HostOS_CPP='openbsd'
163         ;;
164 hppa1.1-hp-hpux*)
165         HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
166         TargetPlatform=hppa1.1-hp-hpux
167         BuildPlatform=hppa1.1-hp-hpux
168         HostPlatform_CPP='hppa1_1_hp_hpux'
169         HostArch_CPP='hppa1_1'
170         HostVendor_CPP='hp'
171         HostOS_CPP='hpux'
172         ;;
173 i[[3456]]86-*-linuxaout*)
174         HostPlatform=i386-unknown-linuxaout   # hack again
175         TargetPlatform=i386-unknown-linuxaout
176         BuildPlatform=i386-unknown-linuxaout
177         HostPlatform_CPP='i386_unknown_linuxaout'
178         HostArch_CPP='i386'
179         HostVendor_CPP='unknown'
180         HostOS_CPP='linuxaout'
181         ;;
182 i[[3456]]86-*-linux*)
183         HostPlatform=i386-unknown-linux # hack again
184         TargetPlatform=i386-unknown-linux
185         BuildPlatform=i386-unknown-linux
186         HostPlatform_CPP='i386_unknown_linux'
187         HostArch_CPP='i386'
188         HostVendor_CPP='unknown'
189         HostOS_CPP='linux'
190         ;;
191 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
192         HostPlatform=i386-unknown-freebsd # hack again
193         TargetPlatform=i386-unknown-freebsd
194         BuildPlatform=i386-unknown-freebsd
195         HostPlatform_CPP='i386_unknown_freebsd'
196         HostArch_CPP='i386'
197         HostVendor_CPP='unknown'
198         HostOS_CPP='freebsd'
199         ;;
200 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
201         HostPlatform=i386-unknown-freebsd2 # hack again
202         TargetPlatform=i386-unknown-freebsd2
203         BuildPlatform=i386-unknown-freebsd2
204         HostPlatform_CPP='i386_unknown_freebsd2'
205         HostArch_CPP='i386'
206         HostVendor_CPP='unknown'
207         HostOS_CPP='freebsd2'
208         ;;
209 i[[3456]]86-*-netbsd*)
210         HostPlatform=i386-unknown-netbsd # hack again
211         TargetPlatform=i386-unknown-netbsd
212         BuildPlatform=i386-unknown-netbsd
213         HostPlatform_CPP='i386_unknown_netbsd'
214         HostArch_CPP='i386'
215         HostVendor_CPP='unknown'
216         HostOS_CPP='netbsd'
217         ;;
218 i[[3456]]86-*-openbsd*)
219         HostPlatform=i386-unknown-openbsd # hack again
220         TargetPlatform=i386-unknown-openbsd
221         BuildPlatform=i386-unknown-openbsd
222         HostPlatform_CPP='i386_unknown_openbsd'
223         HostArch_CPP='i386'
224         HostVendor_CPP='unknown'
225         HostOS_CPP='openbsd'
226         ;;
227 i[[3456]]86-*-solaris2*)
228         HostPlatform=i386-unknown-solaris2 # hack again
229         TargetPlatform=i386-unknown-solaris2
230         BuildPlatform=i386-unknown-solaris2
231         HostPlatform_CPP='i386_unknown_solaris2'
232         HostArch_CPP='i386'
233         HostVendor_CPP='unknown'
234         HostOS_CPP='solaris2'
235         ;;
236 i[[3456]]86-*-cygwin*)
237         HostPlatform=i386-unknown-cygwin32 # hack again
238         TargetPlatform=i386-unknown-cygwin32
239         BuildPlatform=i386-unknown-cygwin32
240         HostPlatform_CPP='i386_unknown_cygwin32'
241         HostArch_CPP='i386'
242         HostVendor_CPP='unknown'
243         HostOS_CPP='cygwin32'
244         exeext='.exe'
245         ;;
246 i[[3456]]86-*-mingw32*)
247         HostPlatform=i386-unknown-mingw32 # hack again
248         TargetPlatform=i386-unknown-mingw32
249         BuildPlatform=i386-unknown-mingw32
250         HostPlatform_CPP='i386_unknown_mingw32'
251         HostArch_CPP='i386'
252         HostVendor_CPP='unknown'
253         HostOS_CPP='mingw32'
254         exeext='.exe'
255         ;;
256 ia64-*-linux*)
257         HostPlatform=ia64-unknown-linux # hack again
258         TargetPlatform=ia64-unknown-linux
259         BuildPlatform=ia64-unknown-linux
260         HostPlatform_CPP='ia64_unknown_linux'
261         HostArch_CPP='ia64'
262         HostVendor_CPP='unknown'
263         HostOS_CPP='linux'
264         ;;
265 x86_64-*-linux*)
266         HostPlatform=x86_64-unknown-linux
267         TargetPlatform=x86_64-unknown-linux
268         BuildPlatform=x86_64-unknown-linux
269         HostPlatform_CPP='x86_64_unknown_linux'
270         HostArch_CPP='x86_64'
271         HostVendor_CPP='unknown'
272         HostOS_CPP='linux'
273         ;;
274 m68k-*-linux*)
275         HostPlatform=m68k-unknown-linux # hack again
276         TargetPlatform=m68k-unknown-linux                    
277         BuildPlatform=m68k-unknown-linux
278         HostPlatform_CPP='m68k_unknown_linux'
279         HostArch_CPP='m68k'
280         HostVendor_CPP='unknown'
281         HostOS_CPP='linux'
282         ;;
283 m68k-next-nextstep2)
284         HostPlatform_CPP='m68k_next_nextstep2'
285         HostArch_CPP='m68k'
286         HostVendor_CPP='next'
287         HostOS_CPP='nextstep2'
288         ;;
289 m68k-next-nextstep3)
290         HostPlatform_CPP='m68k_next_nextstep3'
291         HostArch_CPP='m68k'
292         HostVendor_CPP='next'
293         HostOS_CPP='nextstep3'
294         ;;
295 i[[3456]]86-next-nextstep3)
296         HostPlatform=i386-next-nextstep3 # hack again
297         TargetPlatform=i386-next-nextstep3
298         BuildPlatform=i386-next-nextstep3
299         HostPlatform_CPP='i386_next_nextstep3'
300         HostArch_CPP='i386'
301         HostVendor_CPP='next'
302         HostOS_CPP='nextstep3'
303         ;;
304 m68k-*-openbsd*)
305         HostPlatform=m68k-unknown-openbsd
306         TargetPlatform=m68k-unknown-openbsd
307         BuildPlatform=m68k-unknown-openbsd
308         HostPlatform_CPP='m68k_unknown_openbsd'
309         HostArch_CPP='m68k'
310         HostVendor_CPP='unknown'
311         HostOS_CPP='openbsd'
312         ;;
313 m68k-*-netbsd*)
314         HostPlatform=m68k-unknown-netbsd
315         TargetPlatform=m68k-unknown-netbsd
316         BuildPlatform=m68k-unknown-netbsd
317         HostPlatform_CPP='m68k_unknown_netbsd'
318         HostArch_CPP='m68k'
319         HostVendor_CPP='unknown'
320         HostOS_CPP='netbsd'
321         ;;
322 m68k-sun-sunos4*)
323         HostPlatform=m68k-sun-sunos4
324         TargetPlatform=m68k-sun-sunos4 #hack
325         BuildPlatform=m68k-sun-sunos4 #hack
326         HostPlatform_CPP='m68k_sun_sunos4'
327         HostArch_CPP='m68k'
328         HostVendor_CPP='sun'
329         HostOS_CPP='sunos4'
330         ;;
331 m88k-*-openbsd*)
332         HostPlatform=m88k-unknown-openbsd
333         TargetPlatform=m88k-unknown-openbsd
334         BuildPlatform=m88k-unknown-openbsd
335         HostPlatform_CPP='m88k_unknown_openbsd'
336         HostArch_CPP='m88k'
337         HostVendor_CPP='unknown'
338         HostOS_CPP='openbsd'
339         ;;
340 mips-*-linux*)
341         HostPlatform=mips-unknown-linux # hack again
342         TargetPlatform=mips-unknown-linux
343         BuildPlatform=mips-unknown-linux
344         HostPlatform_CPP='mips_unknown_linux'
345         HostArch_CPP='mips'
346         HostVendor_CPP='unknown'
347         HostOS_CPP='linux'
348         ;;
349 mips-dec-ultrix*)
350         HostPlatform_CPP='mips_dec_ultrix'
351         HostArch_CPP='mipsel'   # NB a little different
352         HostVendor_CPP='dec'
353         HostOS_CPP='ultrix'
354         ;;
355 mips-sgi-irix*)
356         HostPlatform=mips-sgi-irix
357         TargetPlatform=mips-sgi-irix #hack
358         BuildPlatform=mips-sgi-irix #hack
359         HostPlatform_CPP='mips_sgi_irix'
360         HostArch_CPP='mipseb'   # NB a little different
361         HostVendor_CPP='sgi'
362         HostOS_CPP='irix'
363         ;;
364 rs6000-ibm-aix*)
365         HostPlatform=rs6000-ibm-aix
366         TargetPlatform=rs6000-ibm-aix #hack
367         BuildPlatform=rs6000-ibm-aix #hack
368         HostPlatform_CPP='rs6000_ibm_aix'
369         HostArch_CPP='rs6000'
370         HostVendor_CPP='ibm'
371         HostOS_CPP='aix'
372         ;;
373 powerpc-ibm-aix*)
374         HostPlatform=powerpc-ibm-aix
375         TargetPlatform=powerpc-ibm-aix #hack
376         BuildPlatform=powerpc-ibm-aix #hack
377         HostPlatform_CPP='powerpc_ibm_aix'
378         HostArch_CPP='powerpc'
379         HostVendor_CPP='ibm'
380         HostOS_CPP='aix'
381         ;;
382 powerpc-apple-darwin*)
383         HostPlatform=powerpc-apple-darwin
384         TargetPlatform=powerpc-apple-darwin #hack
385         BuildPlatform=powerpc-apple-darwin #hack
386         HostPlatform_CPP='powerpc_apple_darwin'
387         HostArch_CPP='powerpc'
388         HostVendor_CPP='apple'
389         HostOS_CPP='darwin'
390         ;;
391 powerpc-unknown-linux*)
392         HostPlatform=powerpc-unknown-linux
393         TargetPlatform=powerpc-unknown-linux
394         BuildPlatform=powerpc-unknown-linux
395         HostPlatform_CPP='powerpc_unknown_linux'
396         HostArch_CPP='powerpc'
397         HostVendor_CPP='unknown'
398         HostOS_CPP='linux'
399         ;;
400 powerpc-unknown-openbsd*)
401         HostPlatform=powerpc-unknown-openbsd
402         TargetPlatform=powerpc-unknown-openbsd
403         BuildPlatform=powerpc-unknown-openbsd
404         HostPlatform_CPP='powerpc_unknown_openbsd'
405         HostArch_CPP='powerpc'
406         HostVendor_CPP='unknown'
407         HostOS_CPP='openbsd'
408         ;;
409 powerpc64-unknown-linux*)
410         HostPlatform=powerpc64-unknown-linux
411         TargetPlatform=powerpc64-unknown-linux
412         BuildPlatform=powerpc64-unknown-linux
413         HostPlatform_CPP='powerpc64_unknown_linux'
414         HostArch_CPP='powerpc64'
415         HostVendor_CPP='unknown'
416         HostOS_CPP='linux'
417         ;;
418                                                                 
419 s390-ibm-linux*)
420        HostPlatform=s390-ibm-linux
421        TargetPlatform=s390-ibm-linux #hack
422        BuildPlatform=s390-ibm-linux #hack
423         HostPlatform_CPP='s390_ibm_linux'
424         HostArch_CPP='s390'
425         HostVendor_CPP='ibm'
426         HostOS_CPP='linux'
427         ;;
428 sparc-sun-sunos4*)
429         HostPlatform=sparc-sun-sunos4
430         TargetPlatform=sparc-sun-sunos4 #hack
431         BuildPlatform=sparc-sun-sunos4 #hack
432         HostPlatform_CPP='sparc_sun_sunos4'
433         HostArch_CPP='sparc'
434         HostVendor_CPP='sun'
435         HostOS_CPP='sunos4'
436         ;;
437 sparc-sun-solaris2*)
438         HostPlatform=sparc-sun-solaris2
439         TargetPlatform=sparc-sun-solaris2 #hack
440         BuildPlatform=sparc-sun-solaris2 #hack
441         HostPlatform_CPP='sparc_sun_solaris2'
442         HostArch_CPP='sparc'
443         HostVendor_CPP='sun'
444         HostOS_CPP='solaris2'
445         ;;
446 sparc*-linux*)
447         HostPlatform=sparc-unknown-linux
448         TargetPlatform=sparc-unknown-linux
449         BuildPlatform=sparc-unknown-linux
450         HostPlatform_CPP='sparc_unknown_linux'
451         HostArch_CPP='sparc'
452         HostVendor_CPP='unknown'
453         HostOS_CPP='linux'
454         ;;
455 sparc-*-openbsd*)
456         HostPlatform=sparc-unknown-openbsd
457         TargetPlatform=sparc-unknown-openbsd
458         BuildPlatform=sparc-unknown-openbsd
459         HostPlatform_CPP='sparc_unknown_openbsd'
460         HostArch_CPP='sparc'
461         HostVendor_CPP='unknown'
462         HostOS_CPP='openbsd'
463         ;;
464 sparc64-*-openbsd*)
465         HostPlatform=sparc64-unknown-openbsd
466         TargetPlatform=sparc64-unknown-openbsd
467         BuildPlatform=sparc64-unknown-openbsd
468         HostPlatform_CPP='sparc64_unknown_openbsd'
469         HostArch_CPP='sparc64'
470         HostVendor_CPP='unknown'
471         HostOS_CPP='openbsd'
472         ;;
473 vax-*-openbsd*)
474         HostPlatform=vax-unknown-openbsd
475         TargetPlatform=vax-unknown-openbsd
476         BuildPlatform=vax-unknown-openbsd
477         HostPlatform_CPP='vax_unknown_openbsd'
478         HostArch_CPP='vax'
479         HostVendor_CPP='unknown'
480         HostOS_CPP='openbsd'
481         ;;
482 *)
483         echo "Unrecognised platform: $HostPlatform"
484         exit 1
485         ;;
486 esac
487 echo "Canonicalised to: $HostPlatform"
488 test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
489 test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
490
491 BuildPlatform_CPP=$HostPlatform_CPP
492 TargetPlatform_CPP=$HostPlatform_CPP
493 BuildArch_CPP=$HostArch_CPP
494 TargetArch_CPP=$HostArch_CPP
495 BuildOS_CPP=$HostOS_CPP
496 HostOS_Full=$host_os
497 TargetOS_CPP=$HostOS_CPP
498 BuildVendor_CPP=$HostVendor_CPP
499 TargetVendor_CPP=$HostVendor_CPP
500
501 AC_SUBST(BuildPlatform)
502 AC_SUBST(HostPlatform)
503 AC_SUBST(TargetPlatform)
504 AC_SUBST(HostPlatform_CPP)
505 AC_SUBST(BuildPlatform_CPP)
506 AC_SUBST(TargetPlatform_CPP)
507
508 AC_SUBST(HostArch_CPP)
509 AC_SUBST(BuildArch_CPP)
510 AC_SUBST(TargetArch_CPP)
511
512 AC_SUBST(HostOS_CPP)
513 AC_SUBST(HostOS_Full)
514 AC_SUBST(BuildOS_CPP)
515 AC_SUBST(TargetOS_CPP)
516
517 AC_SUBST(HostVendor_CPP)
518 AC_SUBST(BuildVendor_CPP)
519 AC_SUBST(TargetVendor_CPP)
520
521 AC_SUBST(exeext)
522
523 dnl --------------------------------------------------------------
524 dnl * Calculate absolute path to build tree
525 dnl --------------------------------------------------------------
526
527 AC_MSG_CHECKING(for path to top of build tree)
528
529 hardtop=`pwd`
530
531 dnl Remove common automounter nonsense
532 dnl
533 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
534
535 dnl Find 'hardtop_plat', the native format for 'hardtop' 
536 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
537 dnl
538 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
539 dnl              but we must not do that if we aren't building using Cygwin (notably msys), 
540 dnl              because cygpath doesn't exist.  It seems that 'bash' sets OSTYPE to 'cygwin' 
541 dnl              or 'msys' respectively, but cygwin's 'sh' does not.  So we hackily assume
542 dnl              that if the shell hasn't set it to 'msys' then we must be in Cygwin.  Sigh.
543 dnl
544 dnl              The Right Thing is probably to test $BuildPlatform instead, but we are sloppy 
545 dnl              about setting that correctly at the moment, so we just work around for now.
546 dnl
547 dnl              The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
548 dnl              is not set.
549 case $HostPlatform in
550   i386-unknown-mingw32 | i386-unknown-cygwin32)
551         if test "${OSTYPE}" != "msys" 
552           then
553             # convert $hardtop to a path that mingw will understand too
554             cyghardtop=${hardtop}
555             hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
556             hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
557           else
558             hardtop_plat=${hardtop}
559         fi
560         ;;
561   *)
562         hardtop_plat=${hardtop}
563         ;;
564 esac
565 AC_SUBST(hardtop)
566 AC_SUBST(hardtop_plat)
567
568 AC_MSG_RESULT(${hardtop})
569
570 # We don't support building in directories with spaces.
571 case "$hardtop" in
572   *' '*) AC_MSG_ERROR([
573    The build system does not support building in a directory containing
574    space characters.  Suggestion: move the build tree somewhere else.])
575  ;;
576 esac
577
578 dnl --------------------------------------------------------------
579 dnl * Project specific configuration options
580 dnl --------------------------------------------------------------
581 dnl What follows is a bunch of options that can either be configured
582 dnl through command line options to the configure script or by
583 dnl supplying defns in the build tree's mk/build.mk. Having the option to
584 dnl use either is considered a Feature.
585
586 dnl ** What command to use to compile compiler sources ?
587 dnl --------------------------------------------------------------
588
589 AC_ARG_WITH([ghc],
590 [AC_HELP_STRING([--with-ghc=ARG],
591   [Use ARG as the path to GHC  [default=autodetect]])],
592   [WithGhc="$withval"],
593   [if test "$GHC" = ""; then
594     AC_PATH_PROG([GHC], [ghc])
595   fi
596   WithGhc="$GHC"])
597 AC_SUBST([WithGhc])
598
599 AC_ARG_WITH(hc,
600 [AC_HELP_STRING([--with-hc=ARG],
601         [Use ARG as the path to the compiler for compiling ordinary
602          Haskell code  (default= value of --with-ghc)])],
603 [WithHc="$withval"],
604 [WithHc=$WithGhc]
605 )
606 AC_SUBST(WithHc)
607
608 if test "$WithGhc" != ""; then
609   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
610   AC_SUBST(GhcVersion)dnl
611   AC_SUBST(GhcMajVersion)dnl
612   AC_SUBST(GhcMinVersion)dnl
613   AC_SUBST(GhcPatchLevel)dnl
614 fi
615
616 AC_PATH_PROGS(NHC,nhc nhc98)
617 AC_PATH_PROG(HBC,hbc)
618
619 dnl ** Which gcc to use?
620 dnl --------------------------------------------------------------
621 AC_ARG_WITH(gcc,
622 [AC_HELP_STRING([--with-gcc=ARG],
623         [Use ARG as the path to GCC  [default=autodetect]])],
624 [WhatGccIsCalled="$withval"
625  if test "x$HostPlatform" = "xi386-unknown-mingw32"
626     then
627        if test "${OSTYPE}" != "msys"
628          then
629          # Canonicalise to <drive>:/path/to/gcc
630          withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
631        fi
632  fi;
633  CC="$withval"
634  export CC
635  ],
636 [WhatGccIsCalled="gcc"]
637 )
638 AC_SUBST(WhatGccIsCalled)
639
640 dnl ** Booting from .hc files?
641 dnl --------------------------------------------------------------
642 AC_ARG_ENABLE(hc-boot,
643 [AC_HELP_STRING([--enable-hc-boot],
644 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
645  (This option is mostly of interest to porters.) [default=no]])],
646 [ if test x"$enableval" = x"yes"; then
647         BootingFromHc=YES
648   else
649         BootingFromHc=NO
650   fi
651 ],
652 [BootingFromHc=NO]
653 )
654 AC_SUBST(BootingFromHc)
655
656 dnl ** Booting from unregisterised .hc files?
657 dnl --------------------------------------------------------------
658 AC_ARG_ENABLE(hc-boot-unregisterised,
659 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
660 [ With --enable-hc-boot, treat the intermediate .hc files as
661  unregisterised rather than registerised code.
662  (This option is mostly of interest to porters.) [default=no]])],
663 [ if test x"$enableval" = x"yes"; then
664         BootingFromUnregisterisedHc=YES
665   else
666         BootingFromUnregisterisedHc=NO
667   fi
668 ],
669 [BootingFromUnregisterisedHc=NO]
670 )
671 AC_SUBST(BootingFromUnregisterisedHc)
672
673 if test "$BootingFromHc" = "NO"; then
674 if test "$BootingFromUnregisterisedHc" = "YES"; then
675 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
676 fi;
677 fi;
678
679 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
680 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/ghc"; then
681 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
682 fi;
683
684 dnl ** --enable-threaded-rts (not used any more)
685 dnl --------------------------------------------------------------
686 AC_ARG_ENABLE(threaded-rts,
687 [AC_HELP_STRING([--enable-threaded-rts],
688 [DEPRECATED (backwards compatibility only). [default=no]])],
689 [ if test x"$enableval" = x"yes"; then
690         ThreadedRts=YES
691   else
692         ThreadedRts=NO
693   fi
694 ],
695 [ThreadedRts=NO]
696 )
697 AC_SUBST(ThreadedRts)
698
699 dnl ** Enable the construction of Win32 DLLs?
700 dnl --------------------------------------------------------------
701 dnl
702 dnl [ The ability to build the RTS and libraries as separate DLLs used
703 dnl   to be supported, but isn't currently (updates to the RTS, compiler 
704 dnl   and build system would be required to bring it back again.)
705 dnl   Hence, exposing it as an option is false advertisement, so better
706 dnl   disable it to avoid confusion (but leave it commented-out rather
707 dnl   than removed in order to remind ourselves to bring back the 
708 dnl   feature at some stage.) ]
709 dnl
710 dnl AC_ARG_ENABLE(win32-dlls,
711 dnl [  --enable-win32-dlls
712 dnl         If on a Win32 platform running mingw32/cygwin, enable the
713 dnl     construction of DLLs containing ghc-compiled code.
714 dnl ],
715 dnl [
716 dnl case $HostOS_CPP in
717 dnl cygwin32) ;;
718 dnl mingw32)  ;;
719 dnl *)    echo "Unrecognised win32 platform: $HostPlatform"
720 dnl       exit 1
721 dnl       ;;
722 dnl esac
723 dnl EnableWin32DLLs=YES
724 dnl ],
725 dnl [EnableWin32DLLs=NO]
726 dnl )
727 dnl AC_SUBST(EnableWin32DLLs)
728 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
729 dnl  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
730 dnl fi
731
732 dnl ** Enable the building of the ObjectIO?
733 dnl --------------------------------------------------------------
734 AC_ARG_ENABLE(objectio,
735 [AC_HELP_STRING([--enable-objectio],
736 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
737 [ if test x"$enableval" = x"yes"; then
738         GhcLibsWithObjectIO=YES
739   else
740         GhcLibsWithObjectIO=NO
741   fi
742 ],
743 [GhcLibsWithObjectIO=NO]
744 )
745 AC_SUBST(GhcLibsWithObjectIO)
746
747 dnl ** .NET interop support?
748 dnl --------------------------------------------------------------
749 AC_ARG_ENABLE(dotnet,
750 [AC_HELP_STRING([--enable-dotnet],
751 [Build .NET interop layer. [default=no]])],
752 [ if test x"$enableval" = x"yes"; then
753         DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
754   else 
755         DotnetSupport=NO
756   fi],
757 [DotnetSupport=NO]
758 )
759 AC_SUBST(DotnetSupport)
760
761 dnl --------------------------------------------------------------
762 dnl End of configure script option section
763 dnl --------------------------------------------------------------
764
765
766 dnl --------------------------------------------------------------
767 dnl * General configuration checks
768 dnl --------------------------------------------------------------
769
770 dnl ** Can the unix package be built?
771 dnl --------------------------------------------------------------
772
773 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
774    GhcLibsWithUnix=NO
775 else
776    GhcLibsWithUnix=YES
777 fi
778 AC_SUBST([GhcLibsWithUnix])
779
780 dnl ** does #! work?
781 AC_SYS_INTERPRETER()
782
783 dnl ** look for `perl', but only in /bin on Windows
784 case $HostOS_CPP in
785 cygwin32|mingw32)
786       AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
787       if test -z "$PerlCmd"; then
788          echo "You must install the version of Perl shipped with GHC"
789          echo "(or a compatible one) in /bin."
790          exit 1
791       fi
792    ;;
793 *)
794    AC_PATH_PROG(PerlCmd,perl)
795    if test -z "$PerlCmd"; then
796       echo "You must install perl before you can continue"
797       echo "Perhaps it is already installed, but not in your PATH?"
798       exit 1
799    else
800    FPTOOLS_CHECK_PERL_VERSION
801    fi
802    ;;
803 esac
804
805 dnl ** does #! path/to/perl work? (sometimes it's too long...)
806 FPTOOLS_SHEBANG_PERL
807
808 dnl ** check for Python
809 AC_PATH_PROG(PythonCmd,python)
810
811 dnl ** look for GCC and find out which version
812 dnl     Figure out which C compiler to use.  Gcc is preferred.
813 dnl     If gcc, make sure it's at least 2.1
814 dnl
815 FP_HAVE_GCC
816 FP_MINGW_GCC
817
818 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
819 AC_PROG_CPP
820
821 dnl ** Without optimization some INLINE trickery fails for GHCi
822 SRC_CC_OPTS="-O"
823
824 dnl ** Try to add -mno-cygwin to the C compiler options
825 FP_CHECK_FLAG([-mno-cygwin], [
826 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
827 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
828 AC_SUBST(SRC_CC_OPTS)
829
830 dnl ** figure out how to do context diffs
831 FP_PROG_CONTEXT_DIFF
832
833 dnl ** Find find command (for Win32's benefit)
834 FP_PROG_FIND
835
836 dnl ** Find sort command (for the benefit of Win32 environs)
837 FP_PROG_SORT
838
839 dnl ** figure out how to do a BSD-ish install
840 AC_PROG_INSTALL
841
842 dnl If you can run configure, you certainly have /bin/sh
843 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
844
845 dnl ** how to invoke `ar' and `ranlib'
846 FP_PROG_AR_NEEDS_RANLIB
847 FP_PROG_AR_SUPPORTS_INPUT
848
849 dnl ** Check to see whether ln -s works
850 AC_PROG_LN_S
851
852
853 dnl ** Find the path to sed
854 AC_PATH_PROG(SedCmd,sed)
855
856
857 dnl ** check for time command
858 AC_PATH_PROG(TimeCmd,time)
859
860 dnl ** check for tar
861 dnl   if GNU tar is named gtar, look for it first.
862 AC_PATH_PROGS(TarCmd,gtar tar,tar)
863
864 dnl ** check for DocBook toolchain
865 FP_CHECK_DOCBOOK_DTD
866 FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl])
867 FP_PROG_FO_PROCESSOR
868
869 dnl ** check for ghc-pkg command
870 FP_PROG_GHC_PKG
871
872 AC_ARG_WITH(greencard,
873 [AC_HELP_STRING([--with-greencard=ARG],
874         [Use ARG as the path to greencard  [default=autodetct]])],
875 [
876 GreenCardCmd=$withval;
877 FPTOOLS_GREENCARD(3.00)
878 ]
879 )
880
881 AC_ARG_ENABLE(src-tree-happy,
882 [AC_HELP_STRING([--enable-src-tree-happy],
883         [Build and use source tree (fptools/happy) version of Happy. 
884          [default=autodetect]])],
885 [ if test x"$enableval" = x"yes"; then
886         UseSrcTreeHappy=YES
887   else
888         UseSrcTreeHappy=NO
889   fi
890 ],
891 [UseSrcTreeHappy=NO]
892 )
893 dnl ** check for installed happy binary + version
894 dnl    (don't do it if we're booting from .hc files though.)
895 if test "$BootingFromHc" = "NO"; then
896 FPTOOLS_HAPPY
897 fi;
898
899 AC_ARG_ENABLE(src-tree-haddock,
900 [AC_HELP_STRING([--enable-src-tree-haddock],
901         [Build and use source tree (fptools/haddock) version of Haddock.
902          [default=autodetect]])],
903 [ if test x"$enableval" = x"yes"; then
904         UseSrcTreeHaddock=YES
905   else
906         UseSrcTreeHaddock=NO
907   fi
908 ],
909 [UseSrcTreeHaddock=NO]
910 )
911 dnl ** check for installed haddock
912 FPTOOLS_HADDOCK
913
914 AC_ARG_ENABLE(src-tree-alex,
915 [AC_HELP_STRING([--enable-src-tree-alex],
916         [Build and use source tree (fptools/alex) version of Alex.
917          [default=autodetect]])],
918 [ if test x"$enableval" = x"yes"; then
919         UseSrcTreeAlex=YES
920   else
921         UseSrcTreeAlex=NO
922   fi
923 ],
924 [UseSrcTreeAlex=NO]
925 )
926 dnl ** check for installed alex binary + version
927 dnl    (don't do it if we're booting from .hc files though.)
928 if test "$BootingFromHc" = "NO"; then
929 FPTOOLS_ALEX
930 fi;
931
932 dnl --------------------------------------------------
933 dnl ### program checking section ends here ###
934 dnl --------------------------------------------------
935
936 dnl --------------------------------------------------
937 dnl * Platform header file and syscall feature tests
938 dnl ### checking the state of the local header files and syscalls ###
939
940 dnl ** check for full ANSI header (.h) files
941 AC_HEADER_STDC
942
943 dnl ** Enable large file support.  NB. do this before testing the type of
944 dnl    off_t, because it will affect the result of that test.
945 AC_SYS_LARGEFILE
946
947 dnl ** check for specific header (.h) files that we are interested in
948 AC_CHECK_HEADERS([bfd.h ctype.h dirent.h dlfcn.h errno.h fcntl.h grp.h limits.h locale.h nlist.h pthread.h pwd.h signal.h sys/mman.h sys/resource.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/utsname.h sys/wait.h termios.h time.h utime.h windows.h winsock.h])
949
950 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
951 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
952
953 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
954   GhcLibsWithReadline=YES
955   AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
956 else
957   GhcLibsWithReadline=NO
958   AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
959 fi
960 AC_SUBST(GhcLibsWithReadline)
961
962 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
963 AC_HEADER_TIME
964
965 dnl ** how do we get a timezone name, and UTC offset ?
966 AC_STRUCT_TIMEZONE
967
968 dnl ** do we have altzone?
969 FP_DECL_ALTZONE
970
971 dnl ** do we have long longs?
972 AC_CHECK_TYPES([long long])
973
974 dnl ** what are the sizes of various types
975 AC_CHECK_SIZEOF(char,               1)
976 AC_CHECK_SIZEOF(double,             8)
977 AC_CHECK_SIZEOF(float,              4)
978 AC_CHECK_SIZEOF(int,                4)
979 AC_CHECK_SIZEOF(long,               4)
980 if test "$ac_cv_type_long_long" = yes; then
981 AC_CHECK_SIZEOF(long long,          8)
982 fi
983 AC_CHECK_SIZEOF(short,              2)
984 AC_CHECK_SIZEOF(unsigned char,      1)
985 AC_CHECK_SIZEOF(unsigned int,       4)
986 AC_CHECK_SIZEOF(unsigned long,      4)
987 if test "$ac_cv_type_long_long" = yes; then
988 AC_CHECK_SIZEOF(unsigned long long, 8)
989 fi
990 AC_CHECK_SIZEOF(unsigned short,     2)
991 AC_CHECK_SIZEOF(void *,             4)
992
993 dnl ** what are alignment constraints on various types
994 FP_CHECK_ALIGNMENT(char)
995 FP_CHECK_ALIGNMENT(double)
996 FP_CHECK_ALIGNMENT(float)
997 FP_CHECK_ALIGNMENT(int)
998 FP_CHECK_ALIGNMENT(long)
999 if test "$ac_cv_type_long_long" = yes; then
1000 FP_CHECK_ALIGNMENT(long long)
1001 fi
1002 FP_CHECK_ALIGNMENT(short)
1003 FP_CHECK_ALIGNMENT(unsigned char)
1004 FP_CHECK_ALIGNMENT(unsigned int)
1005 FP_CHECK_ALIGNMENT(unsigned long)
1006 if test "$ac_cv_type_long_long" = yes; then
1007 FP_CHECK_ALIGNMENT(unsigned long long)
1008 fi
1009 FP_CHECK_ALIGNMENT(unsigned short)
1010 FP_CHECK_ALIGNMENT(void *)
1011
1012 FP_CHECK_FUNC([WinExec],
1013   [@%:@include <windows.h>], [WinExec("",0)])
1014
1015 FP_CHECK_FUNC([GetModuleFileName],
1016   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1017
1018 dnl ** check return type of signal handlers
1019 dnl Foo: assumes we can use prototypes.
1020 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1021 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1022 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1023 dnl #include <signal.h>
1024 dnl #ifdef signal
1025 dnl #undef signal
1026 dnl #endif
1027 dnl void (*signal (int, void (*)(int)))(int);
1028 dnl ]],
1029 dnl [[int i;]])],
1030 dnl [ac_cv_type_signal_handler=void_int],
1031 dnl [ac_cv_type_signal_handler=int_void])])
1032 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1033 dnl AC_DEFINE(VOID_INT_SIGNALS)
1034 dnl fi
1035
1036 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1037 AC_TYPE_SIGNAL
1038 if test "$ac_cv_type_signal" = void; then
1039   AC_DEFINE([VOID_INT_SIGNALS], [1], [Define to 1 if signal handlers have type void (*)(int). Otherwise, they're assumed to have type int (*)(void).])
1040 fi
1041
1042 dnl ** check for more functions
1043 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1044 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times])
1045 dnl ** For ghc/rts/gmp:
1046 AC_CHECK_FUNCS([getpagesize])
1047
1048 dnl ** check whether this machine has gmp3 installed
1049 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1050   AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp3,
1051     HaveLibGmp=NO; LibGmp=not-installed))
1052 AC_SUBST(HaveLibGmp)
1053 AC_SUBST(LibGmp)
1054
1055 dnl ** (Mac OS X only: check for HaskellSupport.framework)
1056 HaveFrameworkHaskellSupport=NO
1057 if test $HostPlatform = "powerpc-apple-darwin"; then
1058  AC_MSG_CHECKING([for HaskellSupport.framework])
1059  save_libs="$LIBS"
1060  LIBS="-framework HaskellSupport"
1061  AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkHaskellSupport=YES,)
1062  if test $HaveFrameworkHaskellSupport = YES; then
1063   AC_DEFINE([HAVE_FRAMEWORK_HASKELLSUPPORT], [1], [Define to 1 if the HaskellSupport.framework is installed (Mac OS X only).])
1064  fi;
1065  LIBS="$save_libs"
1066  AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
1067 fi;
1068 AC_SUBST(HaveFrameworkHaskellSupport)
1069
1070 dnl ** check for mingwex library
1071 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1072 AC_SUBST(HaveLibMingwEx)
1073
1074 if test $HaveLibMingwEx = YES ; then
1075   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1076 fi
1077
1078 if test "$HaveLibGmp" = "NO"; then
1079 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1080 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1081 fi;
1082 fi;
1083
1084 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1085 dnl    the order of these tests matters: bfd needs liberty
1086 AC_CHECK_LIB(iberty, xmalloc)
1087 AC_CHECK_LIB(bfd,    bfd_init)
1088
1089 dnl ** check for readline, for Hugs and hslibs' Readline
1090 dnl ncurses supersedes termcap and curses, but for compatibility,
1091 dnl we have to check for all...
1092 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
1093   AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
1094     AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
1095       HaveLibTermcap=NO; LibTermcap=not-installed)))
1096
1097 if test $HaveLibTermcap = YES ; then
1098   LIBS="-l$LibTermcap $LIBS"
1099   AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
1100 fi
1101
1102 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
1103   AC_DEFINE([HAVE_READLINE_LIBS], [1], [Define to 1 if readline plus any additional libs needed for it exist.])
1104   LibsReadline="readline $LibTermcap"
1105 else
1106   AC_DEFINE([HAVE_READLINE_LIBS], [0], [Define to 1 if readline plus any additional libs needed for it exist.])
1107   LibsReadline=
1108 fi
1109 AC_SUBST(LibsReadline)
1110
1111 if test "$HaveLibReadline"; then
1112   AC_CHECK_LIB(readline, rl_erase_empty_line,
1113     [AC_DEFINE([HAVE_READLINE_4], [1], [Define to 1 if readline has version >= 4.0.])],
1114     [AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])])
1115   AC_CHECK_LIB(readline, rl_free_undo_list,
1116     [AC_DEFINE([HAVE_READLINE_4_2], [1], [Define to 1 if readline has version >= 4.2.])],
1117     [AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])])
1118 else
1119   AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])
1120   AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])
1121 fi
1122
1123 dnl ** check for math library
1124 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
1125 AC_SUBST([LIBM])
1126
1127 dnl ################################################################
1128 dnl Check for libraries
1129 dnl ################################################################
1130
1131 dnl ** check for libdl & RTLD_NEXT
1132
1133 dnl (Mac OS X only) ... but don't check if we already have the
1134 dnl HaskellSupport.framework
1135
1136 if test $HaveFrameworkHaskellSupport = YES; then
1137     HaveLibDL=NO
1138     HaveRtldNext=NO
1139     HaveRtldLocal=YES
1140     AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
1141     HaveRtldGlobal=YES
1142     AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
1143     HaveRtldNow=YES
1144     AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h.])
1145     AC_SUBST(HaveLibDL)
1146     AC_SUBST(HaveRtldNext)
1147     AC_SUBST(HaveRtldLocal)
1148     AC_SUBST(HaveRtldGlobal)
1149     AC_SUBST(HaveRtldNow)
1150 else
1151     AC_CHECK_LIB(dl, dlopen, 
1152         [HaveLibDL=YES
1153          AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1154          LIBS="$LIBS -ldl"], 
1155         [HaveLibDL=NO])
1156     AC_SUBST(HaveLibDL)
1157
1158     dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
1159     AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
1160     AC_EGREP_CPP(yes,
1161     [
1162      #include <dlfcn.h>
1163      #ifdef RTLD_NEXT
1164             yes
1165      #endif
1166     ], [
1167       AC_MSG_RESULT(yes)
1168       AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
1169       HaveRtldNext=YES
1170     ], [
1171       AC_MSG_RESULT(no)
1172       HaveRtldNext=NO
1173       ])    
1174     AC_SUBST(HaveRtldNext)
1175
1176     dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
1177     AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
1178     AC_EGREP_CPP(yes,
1179     [
1180      #include <dlfcn.h>
1181      #ifdef RTLD_LOCAL
1182             yes
1183      #endif
1184     ], [
1185       AC_MSG_RESULT(yes)
1186       AC_DEFINE(HAVE_RTLDLOCAL)
1187       HaveRtldLocal=YES
1188     ], [
1189       AC_MSG_RESULT(no)
1190       HaveRtldLocal=NO
1191       ])    
1192     AC_SUBST(HaveRtldLocal)
1193
1194     dnl ** RTLD_GLOBAL isn't available on openbsd
1195     AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
1196     AC_EGREP_CPP(yes,
1197     [
1198      #include <dlfcn.h>
1199      #ifdef RTLD_GLOBAL
1200             yes
1201      #endif
1202     ], [
1203       AC_MSG_RESULT(yes)
1204       AC_DEFINE(HAVE_RTLDGLOBAL)
1205       HaveRtldGlobal=YES
1206     ], [
1207       AC_MSG_RESULT(no)
1208       HaveRtldGlobal=NO
1209       ])    
1210     AC_SUBST(HaveRtldGlobal)
1211
1212     dnl ** RTLD_NOW isn't available on openbsd
1213     AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
1214     AC_EGREP_CPP(yes,
1215     [
1216      #include <dlfcn.h>
1217      #ifdef RTLD_NOW
1218             yes
1219      #endif
1220     ], [
1221       AC_MSG_RESULT(yes)
1222       AC_DEFINE(HAVE_RTLDNOW)
1223       HaveRtldNow=YES
1224     ], [
1225       AC_MSG_RESULT(no)
1226       HaveRtldNow=NO
1227       ])    
1228     AC_SUBST(HaveRtldNow)
1229 fi
1230
1231 dnl --------------------------------------------------
1232 dnl * Miscellaneous feature tests
1233 dnl --------------------------------------------------
1234
1235 dnl ** can we get alloca?
1236 AC_FUNC_ALLOCA
1237
1238 dnl ** Working vfork?
1239 AC_FUNC_FORK
1240
1241 dnl ** determine whether or not const works
1242 AC_C_CONST
1243
1244 dnl ** are we big endian?
1245 AC_C_BIGENDIAN
1246
1247 dnl ** check for leading underscores in symbol names
1248 FP_LEADING_UNDERSCORE
1249
1250 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1251 FP_PROG_LD_X
1252 FP_PROG_LD_IS_GNU
1253
1254 dnl ** check for Apple-style dead-stripping support
1255 dnl    (.subsections-via-symbols assembler directive)
1256
1257
1258 AC_MSG_CHECKING(for .subsections_via_symbols)
1259 AC_TRY_COMPILE(,[__asm__ (".subsections_via_symbols");],
1260     [
1261         AC_MSG_RESULT(yes)
1262         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1263             [Define to 1 if Apple-style dead-stripping is supported.])
1264     ],
1265     [
1266         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
1267             [Define to 1 if Apple-style dead-stripping is supported.])
1268     ])
1269
1270 AC_CONFIG_FILES([mk/config.mk])
1271 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
1272 AC_OUTPUT