--enable-src-tree-haddock and friends are no longer required
[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([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 mips-dec-ultrix*)
391         HostPlatform_CPP='mips_dec_ultrix'
392         HostArch_CPP='mipsel'   # NB a little different
393         HostVendor_CPP='dec'
394         HostOS_CPP='ultrix'
395         ;;
396 mips-sgi-irix*)
397         HostPlatform=mips-sgi-irix
398         TargetPlatform=mips-sgi-irix #hack
399         BuildPlatform=mips-sgi-irix #hack
400         HostPlatform_CPP='mips_sgi_irix'
401         HostArch_CPP='mipseb'   # NB a little different
402         HostVendor_CPP='sgi'
403         HostOS_CPP='irix'
404         ;;
405 rs6000-ibm-aix*)
406         HostPlatform=rs6000-ibm-aix
407         TargetPlatform=rs6000-ibm-aix #hack
408         BuildPlatform=rs6000-ibm-aix #hack
409         HostPlatform_CPP='rs6000_ibm_aix'
410         HostArch_CPP='rs6000'
411         HostVendor_CPP='ibm'
412         HostOS_CPP='aix'
413         ;;
414 powerpc-ibm-aix*)
415         HostPlatform=powerpc-ibm-aix
416         TargetPlatform=powerpc-ibm-aix #hack
417         BuildPlatform=powerpc-ibm-aix #hack
418         HostPlatform_CPP='powerpc_ibm_aix'
419         HostArch_CPP='powerpc'
420         HostVendor_CPP='ibm'
421         HostOS_CPP='aix'
422         ;;
423 powerpc-apple-darwin*)
424         HostPlatform=powerpc-apple-darwin
425         TargetPlatform=powerpc-apple-darwin #hack
426         BuildPlatform=powerpc-apple-darwin #hack
427         HostPlatform_CPP='powerpc_apple_darwin'
428         HostArch_CPP='powerpc'
429         HostVendor_CPP='apple'
430         HostOS_CPP='darwin'
431         ;;
432 powerpc-unknown-linux*)
433         HostPlatform=powerpc-unknown-linux
434         TargetPlatform=powerpc-unknown-linux
435         BuildPlatform=powerpc-unknown-linux
436         HostPlatform_CPP='powerpc_unknown_linux'
437         HostArch_CPP='powerpc'
438         HostVendor_CPP='unknown'
439         HostOS_CPP='linux'
440         ;;
441 powerpc-unknown-openbsd*)
442         HostPlatform=powerpc-unknown-openbsd
443         TargetPlatform=powerpc-unknown-openbsd
444         BuildPlatform=powerpc-unknown-openbsd
445         HostPlatform_CPP='powerpc_unknown_openbsd'
446         HostArch_CPP='powerpc'
447         HostVendor_CPP='unknown'
448         HostOS_CPP='openbsd'
449         ;;
450 powerpc64-unknown-linux*)
451         HostPlatform=powerpc64-unknown-linux
452         TargetPlatform=powerpc64-unknown-linux
453         BuildPlatform=powerpc64-unknown-linux
454         HostPlatform_CPP='powerpc64_unknown_linux'
455         HostArch_CPP='powerpc64'
456         HostVendor_CPP='unknown'
457         HostOS_CPP='linux'
458         ;;
459                                                                 
460 s390-ibm-linux*)
461        HostPlatform=s390-ibm-linux
462        TargetPlatform=s390-ibm-linux #hack
463        BuildPlatform=s390-ibm-linux #hack
464         HostPlatform_CPP='s390_ibm_linux'
465         HostArch_CPP='s390'
466         HostVendor_CPP='ibm'
467         HostOS_CPP='linux'
468         ;;
469 sparc-sun-sunos4*)
470         HostPlatform=sparc-sun-sunos4
471         TargetPlatform=sparc-sun-sunos4 #hack
472         BuildPlatform=sparc-sun-sunos4 #hack
473         HostPlatform_CPP='sparc_sun_sunos4'
474         HostArch_CPP='sparc'
475         HostVendor_CPP='sun'
476         HostOS_CPP='sunos4'
477         ;;
478 sparc-sun-solaris2*)
479         HostPlatform=sparc-sun-solaris2
480         TargetPlatform=sparc-sun-solaris2 #hack
481         BuildPlatform=sparc-sun-solaris2 #hack
482         HostPlatform_CPP='sparc_sun_solaris2'
483         HostArch_CPP='sparc'
484         HostVendor_CPP='sun'
485         HostOS_CPP='solaris2'
486         ;;
487 sparc*-linux*)
488         HostPlatform=sparc-unknown-linux
489         TargetPlatform=sparc-unknown-linux
490         BuildPlatform=sparc-unknown-linux
491         HostPlatform_CPP='sparc_unknown_linux'
492         HostArch_CPP='sparc'
493         HostVendor_CPP='unknown'
494         HostOS_CPP='linux'
495         ;;
496 sparc-*-openbsd*)
497         HostPlatform=sparc-unknown-openbsd
498         TargetPlatform=sparc-unknown-openbsd
499         BuildPlatform=sparc-unknown-openbsd
500         HostPlatform_CPP='sparc_unknown_openbsd'
501         HostArch_CPP='sparc'
502         HostVendor_CPP='unknown'
503         HostOS_CPP='openbsd'
504         ;;
505 sparc64-*-openbsd*)
506         HostPlatform=sparc64-unknown-openbsd
507         TargetPlatform=sparc64-unknown-openbsd
508         BuildPlatform=sparc64-unknown-openbsd
509         HostPlatform_CPP='sparc64_unknown_openbsd'
510         HostArch_CPP='sparc64'
511         HostVendor_CPP='unknown'
512         HostOS_CPP='openbsd'
513         ;;
514 vax-*-openbsd*)
515         HostPlatform=vax-unknown-openbsd
516         TargetPlatform=vax-unknown-openbsd
517         BuildPlatform=vax-unknown-openbsd
518         HostPlatform_CPP='vax_unknown_openbsd'
519         HostArch_CPP='vax'
520         HostVendor_CPP='unknown'
521         HostOS_CPP='openbsd'
522         ;;
523 *)
524         echo "Unrecognised platform: $HostPlatform"
525         exit 1
526         ;;
527 esac
528 echo "Canonicalised to: $HostPlatform"
529 test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
530 test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
531
532 BuildPlatform_CPP=$HostPlatform_CPP
533 TargetPlatform_CPP=$HostPlatform_CPP
534 BuildArch_CPP=$HostArch_CPP
535 TargetArch_CPP=$HostArch_CPP
536 BuildOS_CPP=$HostOS_CPP
537 HostOS_Full=$host_os
538 TargetOS_CPP=$HostOS_CPP
539 BuildVendor_CPP=$HostVendor_CPP
540 TargetVendor_CPP=$HostVendor_CPP
541
542 AC_SUBST(BuildPlatform)
543 AC_SUBST(HostPlatform)
544 AC_SUBST(TargetPlatform)
545 AC_SUBST(HostPlatform_CPP)
546 AC_SUBST(BuildPlatform_CPP)
547 AC_SUBST(TargetPlatform_CPP)
548
549 AC_SUBST(HostArch_CPP)
550 AC_SUBST(BuildArch_CPP)
551 AC_SUBST(TargetArch_CPP)
552
553 AC_SUBST(HostOS_CPP)
554 AC_SUBST(HostOS_Full)
555 AC_SUBST(BuildOS_CPP)
556 AC_SUBST(TargetOS_CPP)
557
558 AC_SUBST(HostVendor_CPP)
559 AC_SUBST(BuildVendor_CPP)
560 AC_SUBST(TargetVendor_CPP)
561
562 AC_SUBST(exeext)
563
564 dnl --------------------------------------------------------------
565 dnl * Calculate absolute path to build tree
566 dnl --------------------------------------------------------------
567
568 AC_MSG_CHECKING(for path to top of build tree)
569
570 hardtop=`pwd`
571
572 dnl Remove common automounter nonsense
573 dnl
574 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
575
576 dnl Find 'hardtop_plat', the native format for 'hardtop' 
577 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
578 dnl
579 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
580 dnl              but we must not do that if we aren't building using Cygwin (notably msys), 
581 dnl              because cygpath doesn't exist.  It seems that 'bash' sets OSTYPE to 'cygwin' 
582 dnl              or 'msys' respectively, but cygwin's 'sh' does not.  So we hackily assume
583 dnl              that if the shell hasn't set it to 'msys' then we must be in Cygwin.  Sigh.
584 dnl
585 dnl              The Right Thing is probably to test $BuildPlatform instead, but we are sloppy 
586 dnl              about setting that correctly at the moment, so we just work around for now.
587 dnl
588 dnl              The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
589 dnl              is not set.
590 case $HostPlatform in
591   i386-unknown-mingw32 | i386-unknown-cygwin32)
592         if test "${OSTYPE}" != "msys" 
593           then
594             # convert $hardtop to a path that mingw will understand too
595             cyghardtop=${hardtop}
596             hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
597             hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
598           else
599             hardtop_plat=${hardtop}
600         fi
601         ;;
602   *)
603         hardtop_plat=${hardtop}
604         ;;
605 esac
606 AC_SUBST(hardtop)
607 AC_SUBST(hardtop_plat)
608
609 AC_MSG_RESULT(${hardtop})
610
611 # We don't support building in directories with spaces.
612 case "$hardtop" in
613   *' '*) AC_MSG_ERROR([
614    The build system does not support building in a directory containing
615    space characters.  Suggestion: move the build tree somewhere else.])
616  ;;
617 esac
618
619 dnl --------------------------------------------------------------
620 dnl * Project specific configuration options
621 dnl --------------------------------------------------------------
622 dnl What follows is a bunch of options that can either be configured
623 dnl through command line options to the configure script or by
624 dnl supplying defns in the build tree's mk/build.mk. Having the option to
625 dnl use either is considered a Feature.
626
627 dnl ** What command to use to compile compiler sources ?
628 dnl --------------------------------------------------------------
629
630 AC_ARG_WITH([ghc],
631 [AC_HELP_STRING([--with-ghc=ARG],
632   [Use ARG as the path to GHC  [default=autodetect]])],
633   [WithGhc="$withval"],
634   [if test "$GHC" = ""; then
635     AC_PATH_PROG([GHC], [ghc])
636   fi
637   WithGhc="$GHC"])
638 AC_SUBST([WithGhc])
639
640 AC_ARG_WITH(hc,
641 [AC_HELP_STRING([--with-hc=ARG],
642         [Use ARG as the path to the compiler for compiling ordinary
643          Haskell code  (default= value of --with-ghc)])],
644 [WithHc="$withval"],
645 [WithHc=$WithGhc]
646 )
647 AC_SUBST(WithHc)
648
649 if test "$WithGhc" != ""; then
650   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
651   AC_SUBST(GhcVersion)dnl
652   AC_SUBST(GhcMajVersion)dnl
653   AC_SUBST(GhcMinVersion)dnl
654   AC_SUBST(GhcPatchLevel)dnl
655 fi
656
657 # Check whether this GHC has readline installed
658 FP_GHC_HAS_READLINE
659
660 AC_PATH_PROGS(NHC,nhc nhc98)
661 AC_PATH_PROG(HBC,hbc)
662
663 dnl ** Which gcc to use?
664 dnl --------------------------------------------------------------
665 AC_ARG_WITH(gcc,
666 [AC_HELP_STRING([--with-gcc=ARG],
667         [Use ARG as the path to GCC  [default=autodetect]])],
668 [WhatGccIsCalled="$withval"
669  if test "x$HostPlatform" = "xi386-unknown-mingw32"
670     then
671        if test "${OSTYPE}" != "msys"
672          then
673          # Canonicalise to <drive>:/path/to/gcc
674          withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
675        fi
676  fi;
677  CC="$withval"
678  export CC
679  ],
680 [WhatGccIsCalled="gcc"]
681 )
682 AC_SUBST(WhatGccIsCalled)
683
684 dnl ** Booting from .hc files?
685 dnl --------------------------------------------------------------
686 AC_ARG_ENABLE(hc-boot,
687 [AC_HELP_STRING([--enable-hc-boot],
688 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
689  (This option is mostly of interest to porters.) [default=no]])],
690 [ if test x"$enableval" = x"yes"; then
691         BootingFromHc=YES
692   else
693         BootingFromHc=NO
694   fi
695 ],
696 [BootingFromHc=NO]
697 )
698 AC_SUBST(BootingFromHc)
699
700 dnl ** Booting from unregisterised .hc files?
701 dnl --------------------------------------------------------------
702 AC_ARG_ENABLE(hc-boot-unregisterised,
703 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
704 [ With --enable-hc-boot, treat the intermediate .hc files as
705  unregisterised rather than registerised code.
706  (This option is mostly of interest to porters.) [default=no]])],
707 [ if test x"$enableval" = x"yes"; then
708         BootingFromUnregisterisedHc=YES
709   else
710         BootingFromUnregisterisedHc=NO
711   fi
712 ],
713 [BootingFromUnregisterisedHc=NO]
714 )
715 AC_SUBST(BootingFromUnregisterisedHc)
716
717 if test "$BootingFromHc" = "NO"; then
718 if test "$BootingFromUnregisterisedHc" = "YES"; then
719 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
720 fi;
721 fi;
722
723 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
724 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/compiler"; then
725 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
726 fi;
727
728 dnl ** Enable the construction of Win32 DLLs?
729 dnl --------------------------------------------------------------
730 dnl
731 dnl [ The ability to build the RTS and libraries as separate DLLs used
732 dnl   to be supported, but isn't currently (updates to the RTS, compiler 
733 dnl   and build system would be required to bring it back again.)
734 dnl   Hence, exposing it as an option is false advertisement, so better
735 dnl   disable it to avoid confusion (but leave it commented-out rather
736 dnl   than removed in order to remind ourselves to bring back the 
737 dnl   feature at some stage.) ]
738 dnl
739 dnl AC_ARG_ENABLE(win32-dlls,
740 dnl [  --enable-win32-dlls
741 dnl         If on a Win32 platform running mingw32/cygwin, enable the
742 dnl     construction of DLLs containing ghc-compiled code.
743 dnl ],
744 dnl [
745 dnl case $HostOS_CPP in
746 dnl cygwin32) ;;
747 dnl mingw32)  ;;
748 dnl *)    echo "Unrecognised win32 platform: $HostPlatform"
749 dnl       exit 1
750 dnl       ;;
751 dnl esac
752 dnl EnableWin32DLLs=YES
753 dnl ],
754 dnl [EnableWin32DLLs=NO]
755 dnl )
756 dnl AC_SUBST(EnableWin32DLLs)
757 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
758 dnl  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
759 dnl fi
760
761 dnl ** Enable the building of the ObjectIO?
762 dnl --------------------------------------------------------------
763 AC_ARG_ENABLE(objectio,
764 [AC_HELP_STRING([--enable-objectio],
765 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
766 [ if test x"$enableval" = x"yes"; then
767         GhcLibsWithObjectIO=YES
768   else
769         GhcLibsWithObjectIO=NO
770   fi
771 ],
772 [GhcLibsWithObjectIO=NO]
773 )
774 AC_SUBST(GhcLibsWithObjectIO)
775
776 dnl ** .NET interop support?
777 dnl --------------------------------------------------------------
778 AC_ARG_ENABLE(dotnet,
779 [AC_HELP_STRING([--enable-dotnet],
780 [Build .NET interop layer. [default=no]])],
781 [ if test x"$enableval" = x"yes"; then
782         DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
783   else 
784         DotnetSupport=NO
785   fi],
786 [DotnetSupport=NO]
787 )
788 AC_SUBST(DotnetSupport)
789
790 dnl --------------------------------------------------------------
791 dnl End of configure script option section
792 dnl --------------------------------------------------------------
793
794
795 dnl --------------------------------------------------------------
796 dnl * General configuration checks
797 dnl --------------------------------------------------------------
798
799 dnl ** Can the unix package be built?
800 dnl --------------------------------------------------------------
801
802 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
803    GhcLibsWithUnix=NO
804 else
805    GhcLibsWithUnix=YES
806 fi
807 AC_SUBST([GhcLibsWithUnix])
808
809 dnl ** does #! work?
810 AC_SYS_INTERPRETER()
811
812 dnl ** look for `perl', but only in /bin on Windows
813 case $HostOS_CPP in
814 cygwin32|mingw32)
815       AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
816       if test -z "$PerlCmd"; then
817          echo "You must install the version of Perl shipped with GHC"
818          echo "(or a compatible one) in /bin."
819          exit 1
820       fi
821    ;;
822 *)
823    AC_PATH_PROG(PerlCmd,perl)
824    if test -z "$PerlCmd"; then
825       echo "You must install perl before you can continue"
826       echo "Perhaps it is already installed, but not in your PATH?"
827       exit 1
828    else
829    FPTOOLS_CHECK_PERL_VERSION
830    fi
831    ;;
832 esac
833
834 dnl ** does #! path/to/perl work? (sometimes it's too long...)
835 FPTOOLS_SHEBANG_PERL
836
837 dnl ** check for Python
838 AC_PATH_PROG(PythonCmd,python)
839
840 dnl ** look for GCC and find out which version
841 dnl     Figure out which C compiler to use.  Gcc is preferred.
842 dnl     If gcc, make sure it's at least 2.1
843 dnl
844 FP_HAVE_GCC
845 FP_MINGW_GCC
846 FP_GCC_NEEDS_NO_OMIT_LFPTR
847 FP_GCC_HAS_NO_UNIT_AT_A_TIME
848
849 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
850 AC_PROG_CPP
851
852 dnl ** Without optimization some INLINE trickery fails for GHCi
853 SRC_CC_OPTS="-O"
854
855 dnl ** Try to add -mno-cygwin to the C compiler options
856 FP_CHECK_FLAG([-mno-cygwin], [
857 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
858 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
859 AC_SUBST(SRC_CC_OPTS)
860
861 dnl ** figure out how to do context diffs
862 FP_PROG_CONTEXT_DIFF
863
864 dnl ** Find find command (for Win32's benefit)
865 FP_PROG_FIND
866
867 dnl ** Find sort command (for the benefit of Win32 environs)
868 FP_PROG_SORT
869
870 dnl ** figure out how to do a BSD-ish install
871 AC_PROG_INSTALL
872
873 dnl If you can run configure, you certainly have /bin/sh
874 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
875
876 dnl ** how to invoke `ar' and `ranlib'
877 FP_PROG_AR_NEEDS_RANLIB
878 FP_PROG_AR_SUPPORTS_INPUT
879
880 dnl ** Check to see whether ln -s works
881 AC_PROG_LN_S
882
883
884 dnl ** Find the path to sed
885 AC_PATH_PROG(SedCmd,sed)
886
887
888 dnl ** check for time command
889 AC_PATH_PROG(TimeCmd,time)
890
891 dnl ** check for tar
892 dnl   if GNU tar is named gtar, look for it first.
893 AC_PATH_PROGS(TarCmd,gtar tar,tar)
894
895 dnl ** check for DocBook toolchain
896 FP_CHECK_DOCBOOK_DTD
897 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])
898 FP_PROG_FO_PROCESSOR
899
900 dnl ** check for ghc-pkg command
901 FP_PROG_GHC_PKG
902
903 AC_ARG_WITH(greencard,
904 [AC_HELP_STRING([--with-greencard=ARG],
905         [Use ARG as the path to greencard  [default=autodetct]])],
906 [
907 GreenCardCmd=$withval;
908 FPTOOLS_GREENCARD(3.00)
909 ]
910 )
911
912 dnl ** check for installed happy binary + version
913 dnl    (don't do it if we're booting from .hc files though.)
914 if test "$BootingFromHc" = "NO"; then
915 FPTOOLS_HAPPY
916 fi;
917
918 dnl ** check for installed haddock
919 FPTOOLS_HADDOCK
920
921 dnl ** check for installed alex binary + version
922 dnl    (don't do it if we're booting from .hc files though.)
923 if test "$BootingFromHc" = "NO"; then
924 FPTOOLS_ALEX
925 fi;
926
927 dnl --------------------------------------------------
928 dnl ### program checking section ends here ###
929 dnl --------------------------------------------------
930
931 dnl --------------------------------------------------
932 dnl * Platform header file and syscall feature tests
933 dnl ### checking the state of the local header files and syscalls ###
934
935 dnl ** check for full ANSI header (.h) files
936 AC_HEADER_STDC
937
938 dnl ** Enable large file support.  NB. do this before testing the type of
939 dnl    off_t, because it will affect the result of that test.
940 AC_SYS_LARGEFILE
941
942 dnl ** check for specific header (.h) files that we are interested in
943 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])
944
945 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
946 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
947
948 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
949   GhcLibsWithReadline=YES
950   AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
951 else
952   GhcLibsWithReadline=NO
953   AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
954 fi
955 AC_SUBST(GhcLibsWithReadline)
956
957 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
958 AC_HEADER_TIME
959
960 dnl ** how do we get a timezone name, and UTC offset ?
961 AC_STRUCT_TIMEZONE
962
963 dnl ** do we have altzone?
964 FP_DECL_ALTZONE
965
966 dnl ** do we have long longs?
967 AC_CHECK_TYPES([long long])
968
969 dnl ** what are the sizes of various types
970 AC_CHECK_SIZEOF(char,               1)
971 AC_CHECK_SIZEOF(double,             8)
972 AC_CHECK_SIZEOF(float,              4)
973 AC_CHECK_SIZEOF(int,                4)
974 AC_CHECK_SIZEOF(long,               4)
975 if test "$ac_cv_type_long_long" = yes; then
976 AC_CHECK_SIZEOF(long long,          8)
977 fi
978 AC_CHECK_SIZEOF(short,              2)
979 AC_CHECK_SIZEOF(unsigned char,      1)
980 AC_CHECK_SIZEOF(unsigned int,       4)
981 AC_CHECK_SIZEOF(unsigned long,      4)
982 if test "$ac_cv_type_long_long" = yes; then
983 AC_CHECK_SIZEOF(unsigned long long, 8)
984 fi
985 AC_CHECK_SIZEOF(unsigned short,     2)
986 AC_CHECK_SIZEOF(void *,             4)
987
988 dnl ** what are alignment constraints on various types
989 FP_CHECK_ALIGNMENT(char)
990 FP_CHECK_ALIGNMENT(double)
991 FP_CHECK_ALIGNMENT(float)
992 FP_CHECK_ALIGNMENT(int)
993 FP_CHECK_ALIGNMENT(long)
994 if test "$ac_cv_type_long_long" = yes; then
995 FP_CHECK_ALIGNMENT(long long)
996 fi
997 FP_CHECK_ALIGNMENT(short)
998 FP_CHECK_ALIGNMENT(unsigned char)
999 FP_CHECK_ALIGNMENT(unsigned int)
1000 FP_CHECK_ALIGNMENT(unsigned long)
1001 if test "$ac_cv_type_long_long" = yes; then
1002 FP_CHECK_ALIGNMENT(unsigned long long)
1003 fi
1004 FP_CHECK_ALIGNMENT(unsigned short)
1005 FP_CHECK_ALIGNMENT(void *)
1006
1007 FP_CHECK_FUNC([WinExec],
1008   [@%:@include <windows.h>], [WinExec("",0)])
1009
1010 FP_CHECK_FUNC([GetModuleFileName],
1011   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1012
1013 dnl ** check return type of signal handlers
1014 dnl Foo: assumes we can use prototypes.
1015 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1016 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1017 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1018 dnl #include <signal.h>
1019 dnl #ifdef signal
1020 dnl #undef signal
1021 dnl #endif
1022 dnl void (*signal (int, void (*)(int)))(int);
1023 dnl ]],
1024 dnl [[int i;]])],
1025 dnl [ac_cv_type_signal_handler=void_int],
1026 dnl [ac_cv_type_signal_handler=int_void])])
1027 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1028 dnl AC_DEFINE(VOID_INT_SIGNALS)
1029 dnl fi
1030
1031 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1032 AC_TYPE_SIGNAL
1033 if test "$ac_cv_type_signal" = void; then
1034   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).])
1035 fi
1036
1037 dnl ** check for more functions
1038 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1039 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1040 dnl ** For ghc/rts/gmp:
1041 AC_CHECK_FUNCS([getpagesize])
1042
1043 dnl ** check whether this machine has gmp3 installed
1044 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1045   AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp3,
1046     HaveLibGmp=NO; LibGmp=not-installed))
1047 AC_SUBST(HaveLibGmp)
1048 AC_SUBST(LibGmp)
1049
1050 dnl ** (Mac OS X only: check for GMP.framework)
1051 HaveFrameworkGMP=NO
1052 case $HostPlatform in
1053 *-apple-darwin)
1054     AC_MSG_CHECKING([for GMP.framework])
1055     save_libs="$LIBS"
1056     LIBS="-framework GMP"
1057     AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1058     if test $HaveFrameworkGMP = YES; then
1059       AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1060     fi;
1061     LIBS="$save_libs"
1062     AC_MSG_RESULT([$HaveFrameworkGMP])
1063     ;;
1064 esac
1065 AC_SUBST(HaveFrameworkGMP)
1066
1067 dnl ** check for mingwex library
1068 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1069 AC_SUBST(HaveLibMingwEx)
1070
1071 if test $HaveLibMingwEx = YES ; then
1072   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1073 fi
1074
1075 if test "$HaveLibGmp" = "NO"; then
1076 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1077 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1078 fi;
1079 fi;
1080
1081 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1082 dnl    the order of these tests matters: bfd needs liberty
1083 AC_CHECK_LIB(iberty, xmalloc)
1084 AC_CHECK_LIB(bfd,    bfd_init)
1085
1086 dnl ** check for math library
1087 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1088 if test x"$fp_libm_not_needed" = xdunno; then
1089    AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1090 fi
1091 AC_SUBST([LIBM])
1092
1093 dnl ################################################################
1094 dnl Check for libraries
1095 dnl ################################################################
1096
1097 dnl ** check whether we need -ldl to get dlopen()
1098
1099 AC_CHECK_LIB(dl, dlopen, 
1100     [HaveLibDL=YES
1101      AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1102      LIBS="$LIBS -ldl"], 
1103     [HaveLibDL=NO])
1104 AC_SUBST(HaveLibDL)
1105
1106 dnl --------------------------------------------------
1107 dnl * Miscellaneous feature tests
1108 dnl --------------------------------------------------
1109
1110 dnl ** can we get alloca?
1111 AC_FUNC_ALLOCA
1112
1113 dnl ** Working vfork?
1114 AC_FUNC_FORK
1115
1116 dnl ** determine whether or not const works
1117 AC_C_CONST
1118
1119 dnl ** are we big endian?
1120 AC_C_BIGENDIAN
1121
1122 dnl ** check for leading underscores in symbol names
1123 FP_LEADING_UNDERSCORE
1124
1125 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1126 FP_PROG_LD_X
1127 FP_PROG_LD_IS_GNU
1128
1129 dnl ** check for Apple-style dead-stripping support
1130 dnl    (.subsections-via-symbols assembler directive)
1131
1132
1133 AC_MSG_CHECKING(for .subsections_via_symbols)
1134 AC_TRY_COMPILE(,[__asm__ (".subsections_via_symbols");],
1135     [
1136         AC_MSG_RESULT(yes)
1137         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1138             [Define to 1 if Apple-style dead-stripping is supported.])
1139     ],
1140     [
1141         AC_MSG_RESULT(no)
1142         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
1143             [Define to 1 if Apple-style dead-stripping is supported.])
1144     ])
1145
1146 dnl ** check for librt
1147 AC_CHECK_LIB(rt, clock_gettime)
1148 AC_CHECK_FUNCS(clock_gettime)
1149
1150 dnl ** check for Apple's "interesting" long double compatibility scheme
1151 AC_MSG_CHECKING(for printf$LDBLStub)
1152 AC_TRY_LINK_FUNC(printf$LSBLStub,
1153     [
1154         AC_MSG_RESULT(yes)
1155         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1156             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1157     ],
1158     [
1159         AC_MSG_RESULT(no)
1160         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1161             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1162     ])
1163
1164 # test for GTK+
1165 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1166 if test -n "$GTK_CONFIG"; then
1167   if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1168     GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1169   else
1170     AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1171     GTK_CONFIG=
1172   fi
1173 fi
1174 AC_SUBST([GTK_CONFIG])
1175
1176 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1177 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
1178 AC_OUTPUT