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