Improve newtype deriving
[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/ghc"; 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
848 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
849 AC_PROG_CPP
850
851 dnl ** Without optimization some INLINE trickery fails for GHCi
852 SRC_CC_OPTS="-O"
853
854 dnl ** Try to add -mno-cygwin to the C compiler options
855 FP_CHECK_FLAG([-mno-cygwin], [
856 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
857 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
858 AC_SUBST(SRC_CC_OPTS)
859
860 dnl ** figure out how to do context diffs
861 FP_PROG_CONTEXT_DIFF
862
863 dnl ** Find find command (for Win32's benefit)
864 FP_PROG_FIND
865
866 dnl ** Find sort command (for the benefit of Win32 environs)
867 FP_PROG_SORT
868
869 dnl ** figure out how to do a BSD-ish install
870 AC_PROG_INSTALL
871
872 dnl If you can run configure, you certainly have /bin/sh
873 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
874
875 dnl ** how to invoke `ar' and `ranlib'
876 FP_PROG_AR_NEEDS_RANLIB
877 FP_PROG_AR_SUPPORTS_INPUT
878
879 dnl ** Check to see whether ln -s works
880 AC_PROG_LN_S
881
882
883 dnl ** Find the path to sed
884 AC_PATH_PROG(SedCmd,sed)
885
886
887 dnl ** check for time command
888 AC_PATH_PROG(TimeCmd,time)
889
890 dnl ** check for tar
891 dnl   if GNU tar is named gtar, look for it first.
892 AC_PATH_PROGS(TarCmd,gtar tar,tar)
893
894 dnl ** check for DocBook toolchain
895 FP_CHECK_DOCBOOK_DTD
896 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])
897 FP_PROG_FO_PROCESSOR
898
899 dnl ** check for ghc-pkg command
900 FP_PROG_GHC_PKG
901
902 AC_ARG_WITH(greencard,
903 [AC_HELP_STRING([--with-greencard=ARG],
904         [Use ARG as the path to greencard  [default=autodetct]])],
905 [
906 GreenCardCmd=$withval;
907 FPTOOLS_GREENCARD(3.00)
908 ]
909 )
910
911 AC_ARG_ENABLE(src-tree-happy,
912 [AC_HELP_STRING([--enable-src-tree-happy],
913         [Build and use source tree (fptools/happy) version of Happy. 
914          [default=autodetect]])],
915 [ if test x"$enableval" = x"yes"; then
916         UseSrcTreeHappy=YES
917   else
918         UseSrcTreeHappy=NO
919   fi
920 ],
921 [UseSrcTreeHappy=NO]
922 )
923 dnl ** check for installed happy binary + version
924 dnl    (don't do it if we're booting from .hc files though.)
925 if test "$BootingFromHc" = "NO"; then
926 FPTOOLS_HAPPY
927 fi;
928
929 AC_ARG_ENABLE(src-tree-haddock,
930 [AC_HELP_STRING([--enable-src-tree-haddock],
931         [Build and use source tree (fptools/haddock) version of Haddock.
932          [default=autodetect]])],
933 [ if test x"$enableval" = x"yes"; then
934         UseSrcTreeHaddock=YES
935   else
936         UseSrcTreeHaddock=NO
937   fi
938 ],
939 [UseSrcTreeHaddock=NO]
940 )
941 dnl ** check for installed haddock
942 FPTOOLS_HADDOCK
943
944 AC_ARG_ENABLE(src-tree-alex,
945 [AC_HELP_STRING([--enable-src-tree-alex],
946         [Build and use source tree (fptools/alex) version of Alex.
947          [default=autodetect]])],
948 [ if test x"$enableval" = x"yes"; then
949         UseSrcTreeAlex=YES
950   else
951         UseSrcTreeAlex=NO
952   fi
953 ],
954 [UseSrcTreeAlex=NO]
955 )
956 dnl ** check for installed alex binary + version
957 dnl    (don't do it if we're booting from .hc files though.)
958 if test "$BootingFromHc" = "NO"; then
959 FPTOOLS_ALEX
960 fi;
961
962 dnl --------------------------------------------------
963 dnl ### program checking section ends here ###
964 dnl --------------------------------------------------
965
966 dnl --------------------------------------------------
967 dnl * Platform header file and syscall feature tests
968 dnl ### checking the state of the local header files and syscalls ###
969
970 dnl ** check for full ANSI header (.h) files
971 AC_HEADER_STDC
972
973 dnl ** Enable large file support.  NB. do this before testing the type of
974 dnl    off_t, because it will affect the result of that test.
975 AC_SYS_LARGEFILE
976
977 dnl ** check for specific header (.h) files that we are interested in
978 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])
979
980 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
981 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
982
983 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
984   GhcLibsWithReadline=YES
985   AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
986 else
987   GhcLibsWithReadline=NO
988   AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
989 fi
990 AC_SUBST(GhcLibsWithReadline)
991
992 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
993 AC_HEADER_TIME
994
995 dnl ** how do we get a timezone name, and UTC offset ?
996 AC_STRUCT_TIMEZONE
997
998 dnl ** do we have altzone?
999 FP_DECL_ALTZONE
1000
1001 dnl ** do we have long longs?
1002 AC_CHECK_TYPES([long long])
1003
1004 dnl ** what are the sizes of various types
1005 AC_CHECK_SIZEOF(char,               1)
1006 AC_CHECK_SIZEOF(double,             8)
1007 AC_CHECK_SIZEOF(float,              4)
1008 AC_CHECK_SIZEOF(int,                4)
1009 AC_CHECK_SIZEOF(long,               4)
1010 if test "$ac_cv_type_long_long" = yes; then
1011 AC_CHECK_SIZEOF(long long,          8)
1012 fi
1013 AC_CHECK_SIZEOF(short,              2)
1014 AC_CHECK_SIZEOF(unsigned char,      1)
1015 AC_CHECK_SIZEOF(unsigned int,       4)
1016 AC_CHECK_SIZEOF(unsigned long,      4)
1017 if test "$ac_cv_type_long_long" = yes; then
1018 AC_CHECK_SIZEOF(unsigned long long, 8)
1019 fi
1020 AC_CHECK_SIZEOF(unsigned short,     2)
1021 AC_CHECK_SIZEOF(void *,             4)
1022
1023 dnl ** what are alignment constraints on various types
1024 FP_CHECK_ALIGNMENT(char)
1025 FP_CHECK_ALIGNMENT(double)
1026 FP_CHECK_ALIGNMENT(float)
1027 FP_CHECK_ALIGNMENT(int)
1028 FP_CHECK_ALIGNMENT(long)
1029 if test "$ac_cv_type_long_long" = yes; then
1030 FP_CHECK_ALIGNMENT(long long)
1031 fi
1032 FP_CHECK_ALIGNMENT(short)
1033 FP_CHECK_ALIGNMENT(unsigned char)
1034 FP_CHECK_ALIGNMENT(unsigned int)
1035 FP_CHECK_ALIGNMENT(unsigned long)
1036 if test "$ac_cv_type_long_long" = yes; then
1037 FP_CHECK_ALIGNMENT(unsigned long long)
1038 fi
1039 FP_CHECK_ALIGNMENT(unsigned short)
1040 FP_CHECK_ALIGNMENT(void *)
1041
1042 FP_CHECK_FUNC([WinExec],
1043   [@%:@include <windows.h>], [WinExec("",0)])
1044
1045 FP_CHECK_FUNC([GetModuleFileName],
1046   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1047
1048 dnl ** check return type of signal handlers
1049 dnl Foo: assumes we can use prototypes.
1050 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1051 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1052 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1053 dnl #include <signal.h>
1054 dnl #ifdef signal
1055 dnl #undef signal
1056 dnl #endif
1057 dnl void (*signal (int, void (*)(int)))(int);
1058 dnl ]],
1059 dnl [[int i;]])],
1060 dnl [ac_cv_type_signal_handler=void_int],
1061 dnl [ac_cv_type_signal_handler=int_void])])
1062 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1063 dnl AC_DEFINE(VOID_INT_SIGNALS)
1064 dnl fi
1065
1066 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1067 AC_TYPE_SIGNAL
1068 if test "$ac_cv_type_signal" = void; then
1069   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).])
1070 fi
1071
1072 dnl ** check for more functions
1073 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1074 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1075 dnl ** For ghc/rts/gmp:
1076 AC_CHECK_FUNCS([getpagesize])
1077
1078 dnl ** check whether this machine has gmp3 installed
1079 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1080   AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp3,
1081     HaveLibGmp=NO; LibGmp=not-installed))
1082 AC_SUBST(HaveLibGmp)
1083 AC_SUBST(LibGmp)
1084
1085 dnl ** (Mac OS X only: check for GMP.framework)
1086 HaveFrameworkGMP=NO
1087 case $HostPlatform in
1088 *-apple-darwin)
1089     AC_MSG_CHECKING([for GMP.framework])
1090     save_libs="$LIBS"
1091     LIBS="-framework GMP"
1092     AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1093     if test $HaveFrameworkGMP = YES; then
1094       AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1095     fi;
1096     LIBS="$save_libs"
1097     AC_MSG_RESULT([$HaveFrameworkGMP])
1098     ;;
1099 esac
1100 AC_SUBST(HaveFrameworkGMP)
1101
1102 dnl ** check for mingwex library
1103 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1104 AC_SUBST(HaveLibMingwEx)
1105
1106 if test $HaveLibMingwEx = YES ; then
1107   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1108 fi
1109
1110 if test "$HaveLibGmp" = "NO"; then
1111 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1112 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1113 fi;
1114 fi;
1115
1116 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1117 dnl    the order of these tests matters: bfd needs liberty
1118 AC_CHECK_LIB(iberty, xmalloc)
1119 AC_CHECK_LIB(bfd,    bfd_init)
1120
1121 dnl ** check for readline, for Hugs and hslibs' Readline
1122 dnl ncurses supersedes termcap and curses, but for compatibility,
1123 dnl we have to check for all...
1124 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
1125   AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
1126     AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
1127       HaveLibTermcap=NO; LibTermcap=not-installed)))
1128
1129 if test $HaveLibTermcap = YES ; then
1130   LIBS="-l$LibTermcap $LIBS"
1131   AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
1132 fi
1133
1134 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
1135   AC_DEFINE([HAVE_READLINE_LIBS], [1], [Define to 1 if readline plus any additional libs needed for it exist.])
1136   LibsReadline="readline $LibTermcap"
1137 else
1138   AC_DEFINE([HAVE_READLINE_LIBS], [0], [Define to 1 if readline plus any additional libs needed for it exist.])
1139   LibsReadline=
1140 fi
1141 AC_SUBST(LibsReadline)
1142
1143 if test "$HaveLibReadline"; then
1144   AC_CHECK_LIB(readline, rl_erase_empty_line,
1145     [AC_DEFINE([HAVE_READLINE_4], [1], [Define to 1 if readline has version >= 4.0.])],
1146     [AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])])
1147   AC_CHECK_LIB(readline, rl_free_undo_list,
1148     [AC_DEFINE([HAVE_READLINE_4_2], [1], [Define to 1 if readline has version >= 4.2.])],
1149     [AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])])
1150 else
1151   AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])
1152   AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])
1153 fi
1154
1155 dnl ** check for math library
1156 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1157 if test x"$fp_libm_not_needed" = xdunno; then
1158    AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1159 fi
1160 AC_SUBST([LIBM])
1161
1162 dnl ################################################################
1163 dnl Check for libraries
1164 dnl ################################################################
1165
1166 dnl ** check whether we need -ldl to get dlopen()
1167
1168 AC_CHECK_LIB(dl, dlopen, 
1169     [HaveLibDL=YES
1170      AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1171      LIBS="$LIBS -ldl"], 
1172     [HaveLibDL=NO])
1173 AC_SUBST(HaveLibDL)
1174
1175 dnl --------------------------------------------------
1176 dnl * Miscellaneous feature tests
1177 dnl --------------------------------------------------
1178
1179 dnl ** can we get alloca?
1180 AC_FUNC_ALLOCA
1181
1182 dnl ** Working vfork?
1183 AC_FUNC_FORK
1184
1185 dnl ** determine whether or not const works
1186 AC_C_CONST
1187
1188 dnl ** are we big endian?
1189 AC_C_BIGENDIAN
1190
1191 dnl ** check for leading underscores in symbol names
1192 FP_LEADING_UNDERSCORE
1193
1194 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1195 FP_PROG_LD_X
1196 FP_PROG_LD_IS_GNU
1197
1198 dnl ** check for Apple-style dead-stripping support
1199 dnl    (.subsections-via-symbols assembler directive)
1200
1201
1202 AC_MSG_CHECKING(for .subsections_via_symbols)
1203 AC_TRY_COMPILE(,[__asm__ (".subsections_via_symbols");],
1204     [
1205         AC_MSG_RESULT(yes)
1206         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1207             [Define to 1 if Apple-style dead-stripping is supported.])
1208     ],
1209     [
1210         AC_MSG_RESULT(no)
1211         AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
1212             [Define to 1 if Apple-style dead-stripping is supported.])
1213     ])
1214
1215 dnl ** check for librt
1216 AC_CHECK_LIB(rt, clock_gettime)
1217 AC_CHECK_FUNCS(clock_gettime)
1218
1219 dnl ** check for Apple's "interesting" long double compatibility scheme
1220 AC_MSG_CHECKING(for printf$LDBLStub)
1221 AC_TRY_LINK_FUNC(printf$LSBLStub,
1222     [
1223         AC_MSG_RESULT(yes)
1224         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1225             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1226     ],
1227     [
1228         AC_MSG_RESULT(no)
1229         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1230             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1231     ])
1232
1233 # test for GTK+
1234 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1235 if test -n "$GTK_CONFIG"; then
1236   if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1237     GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1238   else
1239     AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1240     GTK_CONFIG=
1241   fi
1242 fi
1243 AC_SUBST([GTK_CONFIG])
1244
1245 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1246 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
1247 AC_OUTPUT