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