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