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