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