GHC new build system megapatch
[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 University of Glasgow 1994-2004
7 #
8 # Configure script template for GHC
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.11], [glasgow-haskell-bugs@haskell.org], [ghc])
17
18 # Set this to YES for a released version, otherwise NO
19 : ${RELEASE=NO}
20
21 # The primary version (e.g. 6.7, 6.6.1) is set in the AC_INIT line
22 # above.  If this is not a released version, then we will append the
23 # date to the version number (e.g. 6.7.20070204).  The date is
24 # constructed by finding the date of the most recent patch in the
25 # darcs repository.  If this is a source distribution (not a darcs
26 # checkout), then we ship a file 'VERSION' containing the full version
27 # when the source distribution was created.
28
29 if test ! -f mk/config.h.in; then
30    echo "mk/config.h.in doesn't exist: perhaps you haven't run 'sh boot'?"
31    exit 1
32 fi
33
34 AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args])
35
36 FP_SETUP_PROJECT_VERSION
37
38 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
39 AC_SUBST([release], [1])
40
41 # First off, a distrib sanity check..
42 AC_CONFIG_SRCDIR([mk/config.mk.in])
43
44 dnl * We require autoconf version 2.52
45 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
46 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
47 AC_PREREQ([2.52])
48
49 # -------------------------------------------------------------------------
50 # Prepare to generate the following header files
51 #
52 #
53 AC_CONFIG_HEADER(mk/config.h)
54
55 # No, semi-sadly, we don't do `--srcdir'...
56 if test x"$srcdir" != 'x.' ; then
57     echo "This configuration does not support the \`--srcdir' option.."
58     exit 1
59 fi
60
61 dnl--------------------------------------------------------------------
62 dnl * Deal with arguments telling us gmp is somewhere odd
63 dnl--------------------------------------------------------------------
64
65 FP_ARG_GMP
66
67 GMP_INCLUDE_DIRS=
68 GMP_LIB_DIRS=
69 if test "x$gmp_libraries" != "xNONE"; then
70   LDFLAGS="-L$gmp_libraries $LDFLAGS"
71   GMP_LIB_DIRS=$gmp_libraries
72 fi
73 if test "x$gmp_includes" != "xNONE"; then
74   CPPFLAGS="-I$gmp_includes $CPPFLAGS"
75   GMP_INCLUDE_DIRS=$gmp_includes
76 fi
77 AC_SUBST(GMP_INCLUDE_DIRS)
78 AC_SUBST(GMP_LIB_DIRS)
79
80 dnl--------------------------------------------------------------------
81 dnl * Choose host(/target/build) platform
82 dnl--------------------------------------------------------------------
83
84 dnl Guess host/target/build platform(s) if necessary.
85 AC_CANONICAL_TARGET
86
87 # "$host" defaults to "$target"
88 if test "x$host" = xNONE ; then
89     host=$target
90 fi
91
92 dnl ** canonicalize platform names
93 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
94 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
95 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
96
97 if test x"$TargetPlatform" != x"$HostPlatform" ; then
98     AC_MSG_ERROR([
99       GHC configuration does not support differing host/target (i.e., cross-compiling)])
100 fi
101
102 case $HostPlatform in
103 *-cygwin*)
104     AC_MSG_WARN([GHC does not support the Cygwin target at the moment])
105     AC_MSG_WARN([I'm assuming you wanted to build for i386-unknown-mingw32])
106     HostPlatform=i386-unknown-mingw32  
107     ;;
108 esac
109
110 exeext=''
111 soext='.so'
112 #
113 # The following will be more difficult when we *are* cross-compiling.
114 # Suitable names to slam in *_CPP are in platform.h.in.
115 # We also record the architecture, vendor, and operating system (OS)
116 # separately.
117 case $HostPlatform in
118 alpha*-dec-osf[[12]]*)
119         HostPlatform=alpha-dec-osf1   # canonicalise for our purposes
120         TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
121         BuildPlatform=alpha-dec-osf1  # hack
122         HostPlatform_CPP='alpha_dec_osf1'
123         HostArch_CPP='alpha'
124         HostVendor_CPP='dec'
125         HostOS_CPP='osf1'
126         ;;
127 alpha*-dec-osf[[345]]*)
128         HostPlatform=alpha-dec-osf3   # canonicalise for our purposes
129         TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
130         BuildPlatform=alpha-dec-osf3  # hack
131         HostPlatform_CPP='alpha_dec_osf3'
132         HostArch_CPP='alpha'
133         HostVendor_CPP='dec'
134         HostOS_CPP='osf3'
135         ;;
136 alpha*-unknown-linux*)
137         HostPlatform=alpha-unknown-linux
138         TargetPlatform=alpha-unknown-linux
139         BuildPlatform=alpha-unknown-linux
140         HostPlatform_CPP='alpha_unknown_linux'
141         HostArch_CPP='alpha'
142         HostVendor_CPP='unknown'
143         HostOS_CPP='linux'
144         ;;
145 alpha*-unknown-freebsd*)
146         HostPlatform=alpha-unknown-freebsd
147         TargetPlatform=alpha-unknown-freebsd
148         BuildPlatform=alpha-unknown-freebsd
149         HostPlatform_CPP='alpha_unknown_freebsd'
150         HostArch_CPP='alpha'
151         HostVendor_CPP='unknown'
152         HostOS_CPP='freebsd'
153         ;;
154 alpha*-unknown-openbsd*)
155         HostPlatform=alpha-unknown-openbsd
156         TargetPlatform=alpha-unknown-openbsd
157         BuildPlatform=alpha-unknown-openbsd
158         HostPlatform_CPP='alpha_unknown_openbsd'
159         HostArch_CPP='alpha'
160         HostVendor_CPP='unknown'
161         HostOS_CPP='openbsd'
162         ;;
163 amd64-*-openbsd*|x86_64-*-openbsd*)
164         HostPlatform=x86_64-unknown-openbsd
165         TargetPlatform=x86_64-unknown-openbsd
166         BuildPlatform=x86_64-unknown-openbsd
167         HostPlatform_CPP='x86_64_unknown_openbsd'
168         HostArch_CPP='x86_64'
169         HostVendor_CPP='unknown'
170         HostOS_CPP='openbsd'
171         ;;
172 amd64-*-freebsd*|x86_64-*-freebsd*)
173         HostPlatform=x86_64-unknown-freebsd
174         TargetPlatform=x86_64-unknown-freebsd
175         BuildPlatform=x86_64-unknown-freebsd
176         HostPlatform_CPP='x86_64_unknown_freebsd'
177         HostArch_CPP='x86_64'
178         HostVendor_CPP='unknown'
179         HostOS_CPP='freebsd'
180         ;;
181 amd64-*-netbsd*|x86_64-*-netbsd*)
182         HostPlatform=x86_64-unknown-netbsd
183         TargetPlatform=x86_64-unknown-netbsd
184         BuildPlatform=x86_64-unknown-netbsd
185         HostPlatform_CPP='x86_64_unknown_netbsd'
186         HostArch_CPP='x86_64'
187         HostVendor_CPP='unknown'
188         HostOS_CPP='netbsd'
189         ;;
190 arm*-linux*)
191         HostPlatform=arm-unknown-linux # hack again
192         TargetPlatform=arm-unknown-linux
193         BuildPlatform=arm-unknown-linux
194         HostPlatform_CPP='arm_unknown_linux'
195         HostArch_CPP='arm'
196         HostVendor_CPP='unknown'
197         HostOS_CPP='linux'
198         ;;
199 arm*-openbsd*)
200         HostPlatform=arm-unknown-openbsd
201         TargetPlatform=arm-unknown-openbsd
202         BuildPlatform=arm-unknown-openbsd
203         HostPlatform_CPP='arm_unknown_openbsd'
204         HostArch_CPP='arm'
205         HostVendor_CPP='unknown'
206         HostOS_CPP='openbsd'
207         ;;
208 hppa*-*-linux*)
209         HostPlatform=hppa-unknown-linux # hack again
210         TargetPlatform=hppa-unknown-linux
211         BuildPlatform=hppa-unknown-linux
212         HostPlatform_CPP='hppa_unknown_linux'
213         HostArch_CPP='hppa'
214         HostVendor_CPP='unknown'
215         HostOS_CPP='linux'
216         ;;
217 hppa*-*-openbsd*)
218         HostPlatform=hppa-unknown-openbsd # hack again
219         TargetPlatform=hppa-unknown-openbsd
220         BuildPlatform=hppa-unknown-openbsd
221         HostPlatform_CPP='hppa_unknown_openbsd'
222         HostArch_CPP='hppa'
223         HostVendor_CPP='unknown'
224         HostOS_CPP='openbsd'
225         ;;
226 hppa1.1-hp-hpux*)
227         HostPlatform=hppa1.1-hp-hpux  # canonicalise for our purposes (hack)
228         TargetPlatform=hppa1.1-hp-hpux
229         BuildPlatform=hppa1.1-hp-hpux
230         HostPlatform_CPP='hppa1_1_hp_hpux'
231         HostArch_CPP='hppa1_1'
232         HostVendor_CPP='hp'
233         HostOS_CPP='hpux'
234         ;;
235 i[[3456]]86-*-linuxaout*)
236         HostPlatform=i386-unknown-linuxaout   # hack again
237         TargetPlatform=i386-unknown-linuxaout
238         BuildPlatform=i386-unknown-linuxaout
239         HostPlatform_CPP='i386_unknown_linuxaout'
240         HostArch_CPP='i386'
241         HostVendor_CPP='unknown'
242         HostOS_CPP='linuxaout'
243         ;;
244 i[[3456]]86-*-linux*)
245         HostPlatform=i386-unknown-linux # hack again
246         TargetPlatform=i386-unknown-linux
247         BuildPlatform=i386-unknown-linux
248         HostPlatform_CPP='i386_unknown_linux'
249         HostArch_CPP='i386'
250         HostVendor_CPP='unknown'
251         HostOS_CPP='linux'
252         ;;
253 i[[3456]]86-*-kfreebsd*-gnu)
254         HostPlatform=i386-unknown-kfreebsdgnu # hack again
255         TargetPlatform=i386-unknown-kfreebsdgnu
256         BuildPlatform=i386-unknown-kfreebsdgnu
257         HostPlatform_CPP='i386_unknown_kfreebsdgnu'
258         HostArch_CPP='i386'
259         HostVendor_CPP='unknown'
260         HostOS_CPP='kfreebsdgnu'
261         ;;
262 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
263         HostPlatform=i386-unknown-freebsd # hack again
264         TargetPlatform=i386-unknown-freebsd
265         BuildPlatform=i386-unknown-freebsd
266         HostPlatform_CPP='i386_unknown_freebsd'
267         HostArch_CPP='i386'
268         HostVendor_CPP='unknown'
269         HostOS_CPP='freebsd'
270         ;;
271 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
272         HostPlatform=i386-unknown-freebsd2 # hack again
273         TargetPlatform=i386-unknown-freebsd2
274         BuildPlatform=i386-unknown-freebsd2
275         HostPlatform_CPP='i386_unknown_freebsd2'
276         HostArch_CPP='i386'
277         HostVendor_CPP='unknown'
278         HostOS_CPP='freebsd2'
279         ;;
280 i[[3456]]86-*-netbsd*)
281         HostPlatform=i386-unknown-netbsd # hack again
282         TargetPlatform=i386-unknown-netbsd
283         BuildPlatform=i386-unknown-netbsd
284         HostPlatform_CPP='i386_unknown_netbsd'
285         HostArch_CPP='i386'
286         HostVendor_CPP='unknown'
287         HostOS_CPP='netbsd'
288         ;;
289 i[[3456]]86-*-openbsd*)
290         HostPlatform=i386-unknown-openbsd # hack again
291         TargetPlatform=i386-unknown-openbsd
292         BuildPlatform=i386-unknown-openbsd
293         HostPlatform_CPP='i386_unknown_openbsd'
294         HostArch_CPP='i386'
295         HostVendor_CPP='unknown'
296         HostOS_CPP='openbsd'
297         ;;
298 i[[3456]]86-*-solaris2*)
299         HostPlatform=i386-unknown-solaris2 # hack again
300         TargetPlatform=i386-unknown-solaris2
301         BuildPlatform=i386-unknown-solaris2
302         HostPlatform_CPP='i386_unknown_solaris2'
303         HostArch_CPP='i386'
304         HostVendor_CPP='unknown'
305         HostOS_CPP='solaris2'
306         ;;
307 i[[3456]]86-*-cygwin*)
308         HostPlatform=i386-unknown-cygwin32 # hack again
309         TargetPlatform=i386-unknown-cygwin32
310         BuildPlatform=i386-unknown-cygwin32
311         HostPlatform_CPP='i386_unknown_cygwin32'
312         HostArch_CPP='i386'
313         HostVendor_CPP='unknown'
314         HostOS_CPP='cygwin32'
315         exeext='.exe'
316         soext='.dll'
317         ;;
318 i[[3456]]86-*-mingw32*)
319         HostPlatform=i386-unknown-mingw32 # hack again
320         TargetPlatform=i386-unknown-mingw32
321         BuildPlatform=i386-unknown-mingw32
322         HostPlatform_CPP='i386_unknown_mingw32'
323         HostArch_CPP='i386'
324         HostVendor_CPP='unknown'
325         HostOS_CPP='mingw32'
326         exeext='.exe'
327         soext='.dll'
328         ;;
329 i[[3456]]86-apple-darwin*)
330         HostPlatform=i386-apple-darwin
331         TargetPlatform=i386-apple-darwin #hack
332         BuildPlatform=i386-apple-darwin #hack
333         HostPlatform_CPP='i386_apple_darwin'
334         HostArch_CPP='i386'
335         HostVendor_CPP='apple'
336         HostOS_CPP='darwin'
337         soext='.dylib'
338         ;;
339 i[[3456]]86-*-gnu*)
340         HostPlatform=i386-unknown-gnu
341         TargetPlatform=i386-unknown-gnu
342         BuildPlatform=i386-unknown-gnu
343         HostPlatform_CPP=i386_unknown_gnu
344         HostArch_CPP=i386
345         HostVendor_CPP=unknown
346         HostOS_CPP=gnu
347         ;;
348 ia64-*-linux*)
349         HostPlatform=ia64-unknown-linux # hack again
350         TargetPlatform=ia64-unknown-linux
351         BuildPlatform=ia64-unknown-linux
352         HostPlatform_CPP='ia64_unknown_linux'
353         HostArch_CPP='ia64'
354         HostVendor_CPP='unknown'
355         HostOS_CPP='linux'
356         ;;
357 x86_64-*-linux*)
358         HostPlatform=x86_64-unknown-linux
359         TargetPlatform=x86_64-unknown-linux
360         BuildPlatform=x86_64-unknown-linux
361         HostPlatform_CPP='x86_64_unknown_linux'
362         HostArch_CPP='x86_64'
363         HostVendor_CPP='unknown'
364         HostOS_CPP='linux'
365         ;;
366 x86_64-apple-darwin*)
367         HostPlatform=x86_64-apple-darwin
368         TargetPlatform=x86_64-apple-darwin
369         BuildPlatform=x86_64-apple-darwin
370         HostPlatform_CPP='x86_64_apple_darwin'
371         HostArch_CPP='x86_64'
372         HostVendor_CPP='apple'
373         HostOS_CPP='darwin'
374         soext='.dylib'
375         ;;
376 m68k-*-linux*)
377         HostPlatform=m68k-unknown-linux # hack again
378         TargetPlatform=m68k-unknown-linux
379         BuildPlatform=m68k-unknown-linux
380         HostPlatform_CPP='m68k_unknown_linux'
381         HostArch_CPP='m68k'
382         HostVendor_CPP='unknown'
383         HostOS_CPP='linux'
384         ;;
385 m68k-next-nextstep2)
386         HostPlatform_CPP='m68k_next_nextstep2'
387         HostArch_CPP='m68k'
388         HostVendor_CPP='next'
389         HostOS_CPP='nextstep2'
390         ;;
391 m68k-next-nextstep3)
392         HostPlatform_CPP='m68k_next_nextstep3'
393         HostArch_CPP='m68k'
394         HostVendor_CPP='next'
395         HostOS_CPP='nextstep3'
396         ;;
397 i[[3456]]86-next-nextstep3)
398         HostPlatform=i386-next-nextstep3 # hack again
399         TargetPlatform=i386-next-nextstep3
400         BuildPlatform=i386-next-nextstep3
401         HostPlatform_CPP='i386_next_nextstep3'
402         HostArch_CPP='i386'
403         HostVendor_CPP='next'
404         HostOS_CPP='nextstep3'
405         ;;
406 m68k-*-openbsd*)
407         HostPlatform=m68k-unknown-openbsd
408         TargetPlatform=m68k-unknown-openbsd
409         BuildPlatform=m68k-unknown-openbsd
410         HostPlatform_CPP='m68k_unknown_openbsd'
411         HostArch_CPP='m68k'
412         HostVendor_CPP='unknown'
413         HostOS_CPP='openbsd'
414         ;;
415 m68k-*-netbsd*)
416         HostPlatform=m68k-unknown-netbsd
417         TargetPlatform=m68k-unknown-netbsd
418         BuildPlatform=m68k-unknown-netbsd
419         HostPlatform_CPP='m68k_unknown_netbsd'
420         HostArch_CPP='m68k'
421         HostVendor_CPP='unknown'
422         HostOS_CPP='netbsd'
423         ;;
424 m68k-sun-sunos4*)
425         HostPlatform=m68k-sun-sunos4
426         TargetPlatform=m68k-sun-sunos4 #hack
427         BuildPlatform=m68k-sun-sunos4 #hack
428         HostPlatform_CPP='m68k_sun_sunos4'
429         HostArch_CPP='m68k'
430         HostVendor_CPP='sun'
431         HostOS_CPP='sunos4'
432         ;;
433 m88k-*-openbsd*)
434         HostPlatform=m88k-unknown-openbsd
435         TargetPlatform=m88k-unknown-openbsd
436         BuildPlatform=m88k-unknown-openbsd
437         HostPlatform_CPP='m88k_unknown_openbsd'
438         HostArch_CPP='m88k'
439         HostVendor_CPP='unknown'
440         HostOS_CPP='openbsd'
441         ;;
442 mips-*-linux*)
443         HostPlatform=mips-unknown-linux # hack again
444         TargetPlatform=mips-unknown-linux
445         BuildPlatform=mips-unknown-linux
446         HostPlatform_CPP='mips_unknown_linux'
447         HostArch_CPP='mips'
448         HostVendor_CPP='unknown'
449         HostOS_CPP='linux'
450         ;;
451 mipsel-*-linux*)
452         HostPlatform=mipsel-unknown-linux # hack again
453         TargetPlatform=mipsel-unknown-linux
454         BuildPlatform=mipsel-unknown-linux
455         HostPlatform_CPP='mipsel_unknown_linux'
456         HostArch_CPP='mipsel'
457         HostVendor_CPP='unknown'
458         HostOS_CPP='linux'
459         ;;
460 mips-dec-ultrix*)
461         HostPlatform_CPP='mips_dec_ultrix'
462         HostArch_CPP='mipsel'   # NB a little different
463         HostVendor_CPP='dec'
464         HostOS_CPP='ultrix'
465         ;;
466 mips-sgi-irix*)
467         HostPlatform=mips-sgi-irix
468         TargetPlatform=mips-sgi-irix #hack
469         BuildPlatform=mips-sgi-irix #hack
470         HostPlatform_CPP='mips_sgi_irix'
471         HostArch_CPP='mipseb'   # NB a little different
472         HostVendor_CPP='sgi'
473         HostOS_CPP='irix'
474         ;;
475 rs6000-ibm-aix*)
476         HostPlatform=rs6000-ibm-aix
477         TargetPlatform=rs6000-ibm-aix #hack
478         BuildPlatform=rs6000-ibm-aix #hack
479         HostPlatform_CPP='rs6000_ibm_aix'
480         HostArch_CPP='rs6000'
481         HostVendor_CPP='ibm'
482         HostOS_CPP='aix'
483         ;;
484 powerpc-ibm-aix*)
485         HostPlatform=powerpc-ibm-aix
486         TargetPlatform=powerpc-ibm-aix #hack
487         BuildPlatform=powerpc-ibm-aix #hack
488         HostPlatform_CPP='powerpc_ibm_aix'
489         HostArch_CPP='powerpc'
490         HostVendor_CPP='ibm'
491         HostOS_CPP='aix'
492         ;;
493 powerpc-apple-darwin*)
494         HostPlatform=powerpc-apple-darwin
495         TargetPlatform=powerpc-apple-darwin #hack
496         BuildPlatform=powerpc-apple-darwin #hack
497         HostPlatform_CPP='powerpc_apple_darwin'
498         HostArch_CPP='powerpc'
499         HostVendor_CPP='apple'
500         HostOS_CPP='darwin'
501         soext='.dylib'
502         ;;
503 powerpc-unknown-linux*)
504         HostPlatform=powerpc-unknown-linux
505         TargetPlatform=powerpc-unknown-linux
506         BuildPlatform=powerpc-unknown-linux
507         HostPlatform_CPP='powerpc_unknown_linux'
508         HostArch_CPP='powerpc'
509         HostVendor_CPP='unknown'
510         HostOS_CPP='linux'
511         ;;
512 powerpc-unknown-openbsd*)
513         HostPlatform=powerpc-unknown-openbsd
514         TargetPlatform=powerpc-unknown-openbsd
515         BuildPlatform=powerpc-unknown-openbsd
516         HostPlatform_CPP='powerpc_unknown_openbsd'
517         HostArch_CPP='powerpc'
518         HostVendor_CPP='unknown'
519         HostOS_CPP='openbsd'
520         ;;
521 powerpc64-unknown-linux*)
522         HostPlatform=powerpc64-unknown-linux
523         TargetPlatform=powerpc64-unknown-linux
524         BuildPlatform=powerpc64-unknown-linux
525         HostPlatform_CPP='powerpc64_unknown_linux'
526         HostArch_CPP='powerpc64'
527         HostVendor_CPP='unknown'
528         HostOS_CPP='linux'
529         ;;
530
531 s390-ibm-linux*)
532        HostPlatform=s390-ibm-linux
533        TargetPlatform=s390-ibm-linux #hack
534        BuildPlatform=s390-ibm-linux #hack
535         HostPlatform_CPP='s390_ibm_linux'
536         HostArch_CPP='s390'
537         HostVendor_CPP='ibm'
538         HostOS_CPP='linux'
539         ;;
540 sparc-sun-sunos4*)
541         HostPlatform=sparc-sun-sunos4
542         TargetPlatform=sparc-sun-sunos4 #hack
543         BuildPlatform=sparc-sun-sunos4 #hack
544         HostPlatform_CPP='sparc_sun_sunos4'
545         HostArch_CPP='sparc'
546         HostVendor_CPP='sun'
547         HostOS_CPP='sunos4'
548         ;;
549 sparc-sun-solaris2*)
550         HostPlatform=sparc-sun-solaris2
551         TargetPlatform=sparc-sun-solaris2 #hack
552         BuildPlatform=sparc-sun-solaris2 #hack
553         HostPlatform_CPP='sparc_sun_solaris2'
554         HostArch_CPP='sparc'
555         HostVendor_CPP='sun'
556         HostOS_CPP='solaris2'
557         ;;
558 sparc*-linux*)
559         HostPlatform=sparc-unknown-linux
560         TargetPlatform=sparc-unknown-linux
561         BuildPlatform=sparc-unknown-linux
562         HostPlatform_CPP='sparc_unknown_linux'
563         HostArch_CPP='sparc'
564         HostVendor_CPP='unknown'
565         HostOS_CPP='linux'
566         ;;
567 sparc-*-openbsd*)
568         HostPlatform=sparc-unknown-openbsd
569         TargetPlatform=sparc-unknown-openbsd
570         BuildPlatform=sparc-unknown-openbsd
571         HostPlatform_CPP='sparc_unknown_openbsd'
572         HostArch_CPP='sparc'
573         HostVendor_CPP='unknown'
574         HostOS_CPP='openbsd'
575         ;;
576 sparc64-*-openbsd*)
577         HostPlatform=sparc64-unknown-openbsd
578         TargetPlatform=sparc64-unknown-openbsd
579         BuildPlatform=sparc64-unknown-openbsd
580         HostPlatform_CPP='sparc64_unknown_openbsd'
581         HostArch_CPP='sparc64'
582         HostVendor_CPP='unknown'
583         HostOS_CPP='openbsd'
584         ;;
585 vax-*-openbsd*)
586         HostPlatform=vax-unknown-openbsd
587         TargetPlatform=vax-unknown-openbsd
588         BuildPlatform=vax-unknown-openbsd
589         HostPlatform_CPP='vax_unknown_openbsd'
590         HostArch_CPP='vax'
591         HostVendor_CPP='unknown'
592         HostOS_CPP='openbsd'
593         ;;
594 *)
595         echo "Unrecognised platform: $HostPlatform"
596         exit 1
597         ;;
598 esac
599 echo "Canonicalised to: $HostPlatform"
600 test  x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
601 test  x"$BuildPlatform" != x"$HostPlatform"  && echo "Build platform set to $BuildPlatform"
602
603 BuildPlatform_CPP=$HostPlatform_CPP
604 TargetPlatform_CPP=$HostPlatform_CPP
605 BuildArch_CPP=$HostArch_CPP
606 TargetArch_CPP=$HostArch_CPP
607 BuildOS_CPP=$HostOS_CPP
608 HostOS_Full=$host_os
609 TargetOS_CPP=$HostOS_CPP
610 BuildVendor_CPP=$HostVendor_CPP
611 TargetVendor_CPP=$HostVendor_CPP
612
613 AC_SUBST(BuildPlatform)
614 AC_SUBST(HostPlatform)
615 AC_SUBST(TargetPlatform)
616 AC_SUBST(HostPlatform_CPP)
617 AC_SUBST(BuildPlatform_CPP)
618 AC_SUBST(TargetPlatform_CPP)
619
620 AC_SUBST(HostArch_CPP)
621 AC_SUBST(BuildArch_CPP)
622 AC_SUBST(TargetArch_CPP)
623
624 AC_SUBST(HostOS_CPP)
625 AC_SUBST(HostOS_Full)
626 AC_SUBST(BuildOS_CPP)
627 AC_SUBST(TargetOS_CPP)
628
629 AC_SUBST(HostVendor_CPP)
630 AC_SUBST(BuildVendor_CPP)
631 AC_SUBST(TargetVendor_CPP)
632
633 AC_SUBST(exeext)
634 AC_SUBST(soext)
635
636 dnl --------------------------------------------------------------
637 dnl * Project specific configuration options
638 dnl --------------------------------------------------------------
639 dnl What follows is a bunch of options that can either be configured
640 dnl through command line options to the configure script or by
641 dnl supplying defns in the build tree's mk/build.mk. Having the option to
642 dnl use either is considered a Feature.
643
644 dnl ** What command to use to compile compiler sources ?
645 dnl --------------------------------------------------------------
646
647 AC_ARG_WITH([ghc],
648 [AC_HELP_STRING([--with-ghc=ARG],
649   [Use ARG as the path to GHC  [default=autodetect]])],
650   [WithGhc="$withval"],
651   [if test "$GHC" = ""; then
652     AC_PATH_PROG([GHC], [ghc])
653   fi
654   WithGhc="$GHC"])
655 # GHC is passed to Cabal, so we need a native path
656 if test "${WithGhc}" != "" && test "$HostPlatform" = "i386-unknown-mingw32"
657 then
658     if test "${OSTYPE}" = "msys"
659     then
660         WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
661     else
662         # Canonicalise to <drive>:/path/to/ghc
663         WithGhc=`cygpath -m ${WithGhc}`
664     fi
665     echo "Canonicalised to: ${WithGhc}"
666 fi
667 AC_SUBST([WithGhc])
668
669 AC_ARG_WITH(hc,
670 [AC_HELP_STRING([--with-hc=ARG],
671         [Use ARG as the path to the compiler for compiling ordinary
672          Haskell code  (default= value of --with-ghc)])],
673 [WithHc="$withval"],
674 [WithHc=$WithGhc]
675 )
676 AC_SUBST(WithHc)
677
678 AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
679 [AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot],
680                 [Allow bootstrapping using a development snapshot of GHC.  This is not guaranteed to work.])],
681         EnableBootstrapWithDevelSnaphost=YES,
682         EnableBootstrapWithDevelSnaphost=NO
683 )
684
685 if test "$WithGhc" != ""; then
686   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
687
688   if test `expr $GhcMinVersion % 2` = "1"; then
689      echo $EnableBootstrapWithDevelSnaphost
690      if test "$EnableBootstrapWithDevelSnaphost" = "NO"; then
691         AC_MSG_ERROR([
692      $WithGhc is a development snapshot of GHC, version $GhcVersion.
693      Bootstrapping using this version of GHC is not supported, and may not
694      work.  Use --enable-bootstrap-with-devel-snapshot to try it anyway,
695      or --with-ghc to specify a different GHC to use.])
696      fi
697   fi
698
699   AC_SUBST(GhcVersion)dnl
700   AC_SUBST(GhcMajVersion)dnl
701   AC_SUBST(GhcMinVersion)dnl
702   AC_SUBST(GhcPatchLevel)dnl
703   GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
704   GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
705   if test $GhcCanonVersion -ge 607; then ghc_ge_607=YES; else ghc_ge_607=NO; fi
706   if test $GhcCanonVersion -ge 609; then ghc_ge_609=YES; else ghc_ge_609=NO; fi
707   AC_SUBST(ghc_ge_607)dnl
708   AC_SUBST(ghc_ge_609)dnl
709 fi
710
711 # Check whether this GHC has editline installed
712 FP_GHC_HAS_EDITLINE
713
714 # Dummy arguments to print help for --with-editline-* arguments.
715 # Those are actually passed to the editline package's configure script
716 # via the CONFIGURE_ARGS variable in mk/config.mk
717 AC_ARG_WITH(dummy-editline-includes,
718   [AC_HELP_STRING([--with-editline-includes],
719     [directory containing editline/editline.h or editline/readline.h])],
720     [],
721     [])
722
723 AC_ARG_WITH(dummy-editline-libraries,
724   [AC_HELP_STRING([--with-editline-libraries],
725     [directory containing the editline library])],
726     [],
727     [])
728
729
730 AC_PATH_PROGS(NHC,nhc nhc98)
731 AC_PATH_PROG(HBC,hbc)
732
733 dnl ** Which gcc to use?
734 dnl --------------------------------------------------------------
735 AC_ARG_WITH(gcc,
736 [AC_HELP_STRING([--with-gcc=ARG],
737         [Use ARG as the path to GCC  [default=autodetect]])],
738 [WhatGccIsCalled="$withval"
739  if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
740     test "${OSTYPE}"      != "msys"                  && \
741     test "${withval}"     != ""
742  then
743      # Canonicalise to <drive>:/path/to/gcc
744      withval=`cygpath -m ${withval}`
745  fi;
746  CC="$withval"
747  export CC
748  ],
749 [WhatGccIsCalled="gcc"]
750 )
751 AC_SUBST(WhatGccIsCalled)
752
753 dnl ** Which ld to use?
754 dnl --------------------------------------------------------------
755 AC_ARG_WITH(ld,
756 [AC_HELP_STRING([--with-ld=ARG],
757         [Use ARG as the path to LD  [default=autodetect]])],
758 [if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
759     test "${OSTYPE}"      != "msys"                  && \
760     test "${withval}"     != ""
761  then
762      # Canonicalise to <drive>:/path/to/ld
763      withval=`cygpath -m ${withval}`
764  fi;
765  LD=$withval
766  FP_PROG_LD([$LD])
767  ],
768  [FP_PROG_LD()]
769 )
770
771 dnl ** Build shared and/or static libs?
772 dnl --------------------------------------------------------------
773 AC_ARG_ENABLE(shared,
774 [AC_HELP_STRING([--enable-shared],
775 [Build shared libraries, if available (EXPERIMENTAL, non-working). [default=no]])],
776 [ if test x"$enableval" = x"yes"; then
777         AC_MSG_WARN([--enable-shared is experimental and not fully supported at this time])
778         BuildSharedLibs=YES
779   else
780         BuildSharedLibs=NO
781   fi
782 ],
783 [BuildSharedLibs=NO]
784 )
785 AC_SUBST(BuildSharedLibs)
786
787 # ToDo later:
788 # AC_ARG_ENABLE(static,
789 # [AC_HELP_STRING([--enable-static],
790 # [Build static libraries. [default=yes]])],
791 # [ if test x"$enableval" = x"yes"; then
792 #         BuildStaticLibs=YES
793 #   else
794 #         BuildStaticLibs=NO
795 #   fi
796 # ],
797 # [BuildStaticLibs=YES]
798 # )
799 # AC_SUBST(BuildStaticLibs)
800
801 dnl ** Booting from .hc files?
802 dnl --------------------------------------------------------------
803 AC_ARG_ENABLE(hc-boot,
804 [AC_HELP_STRING([--enable-hc-boot],
805 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
806  (This option is mostly of interest to porters.) [default=no]])],
807 [ if test x"$enableval" = x"yes"; then
808         BootingFromHc=YES
809   else
810         BootingFromHc=NO
811   fi
812 ],
813 [BootingFromHc=NO]
814 )
815 AC_SUBST(BootingFromHc)
816
817 dnl ** Booting from unregisterised .hc files?
818 dnl --------------------------------------------------------------
819 AC_ARG_ENABLE(hc-boot-unregisterised,
820 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
821 [ With --enable-hc-boot, treat the intermediate .hc files as
822  unregisterised rather than registerised code.
823  (This option is mostly of interest to porters.) [default=no]])],
824 [ if test x"$enableval" = x"yes"; then
825         BootingFromUnregisterisedHc=YES
826   else
827         BootingFromUnregisterisedHc=NO
828   fi
829 ],
830 [BootingFromUnregisterisedHc=NO]
831 )
832 AC_SUBST(BootingFromUnregisterisedHc)
833
834 if test "$BootingFromHc" = "NO"; then
835 if test "$BootingFromUnregisterisedHc" = "YES"; then
836 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
837 fi;
838 fi;
839
840 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
841 if test "$BootingFromHc" = "NO" -a -d "$srcdir/compiler"; then
842   if test "$WithGhc" = ""; then
843      AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
844   fi
845   FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.6],
846     [AC_MSG_ERROR([GHC version 6.6 or later is required to compile GHC.])])dnl
847 fi;
848
849 # This uses GHC, so put it after the "GHC is required" check above:
850 FP_FIND_ROOT
851
852 dnl ** Enable the construction of Win32 DLLs?
853 dnl --------------------------------------------------------------
854 dnl
855 dnl [ The ability to build the RTS and libraries as separate DLLs used
856 dnl   to be supported, but isn't currently (updates to the RTS, compiler
857 dnl   and build system would be required to bring it back again.)
858 dnl   Hence, exposing it as an option is false advertisement, so better
859 dnl   disable it to avoid confusion (but leave it commented-out rather
860 dnl   than removed in order to remind ourselves to bring back the
861 dnl   feature at some stage.) ]
862 dnl
863 dnl AC_ARG_ENABLE(win32-dlls,
864 dnl [  --enable-win32-dlls
865 dnl         If on a Win32 platform running mingw32/cygwin, enable the
866 dnl         construction of DLLs containing ghc-compiled code.
867 dnl ],
868 dnl [
869 dnl case $HostOS_CPP in
870 dnl cygwin32) ;;
871 dnl mingw32)  ;;
872 dnl *)    echo "Unrecognised win32 platform: $HostPlatform"
873 dnl       exit 1
874 dnl       ;;
875 dnl esac
876 dnl EnableWin32DLLs=YES
877 dnl ],
878 dnl [EnableWin32DLLs=NO]
879 dnl )
880 dnl AC_SUBST(EnableWin32DLLs)
881 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
882 dnl  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
883 dnl fi
884
885 dnl ** Mac OS X: explicit deployment target
886 dnl --------------------------------------------------------------
887 AC_ARG_WITH([macosx-deployment-target],
888 [AC_HELP_STRING([--with-macosx-deployment-target=VERSION],
889         [Build for Mac OS VERSION and higher  (default= version of build host)])],
890 [FP_MACOSX_DEPLOYMENT_TARGET="$withval"
891  if test "x$TargetOS_CPP-$TargetVendor_CPP" != "xdarwin-apple"; then
892    # ignore everywhere, but on Mac OS
893    AC_MSG_WARN([--macosx-deployment-target is only available on Mac OS X])
894    FP_MACOSX_DEPLOYMENT_TARGET=none
895  fi],
896 [FP_MACOSX_DEPLOYMENT_TARGET=none]
897 )
898 FP_CHECK_MACOSX_DEPLOYMENT_TARGET
899 AC_SUBST(MACOSX_DEPLOYMENT_VERSION)
900 AC_SUBST(MACOSX_DEPLOYMENT_SDK)
901
902 dnl --------------------------------------------------------------
903 dnl End of configure script option section
904 dnl --------------------------------------------------------------
905
906
907 dnl --------------------------------------------------------------
908 dnl * General configuration checks
909 dnl --------------------------------------------------------------
910
911 dnl ** Can the unix package be built?
912 dnl --------------------------------------------------------------
913
914 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
915    GhcLibsWithUnix=NO
916 else
917    GhcLibsWithUnix=YES
918 fi
919 AC_SUBST([GhcLibsWithUnix])
920
921 dnl ** does #! work?
922 AC_SYS_INTERPRETER()
923
924 dnl ** look for `perl', but only in /bin on Windows
925 case $HostOS_CPP in
926 cygwin32|mingw32)
927       AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
928       if test -z "$PerlCmd"; then
929          echo "You must install the version of Perl shipped with GHC"
930          echo "(or a compatible one) in /bin."
931          exit 1
932       fi
933    ;;
934 *)
935    AC_PATH_PROG(PerlCmd,perl)
936    if test -z "$PerlCmd"; then
937       echo "You must install perl before you can continue"
938       echo "Perhaps it is already installed, but not in your PATH?"
939       exit 1
940    else
941    FPTOOLS_CHECK_PERL_VERSION
942    fi
943    ;;
944 esac
945
946 dnl ** does #! path/to/perl work? (sometimes it's too long...)
947 FPTOOLS_SHEBANG_PERL
948
949 dnl ** check for Python
950 AC_PATH_PROG(PythonCmd,python)
951
952 dnl ** look for GCC and find out which version
953 dnl     Figure out which C compiler to use.  Gcc is preferred.
954 dnl     If gcc, make sure it's at least 2.1
955 dnl
956 FP_HAVE_GCC
957 FP_MINGW_GCC
958 FP_GCC_EXTRA_FLAGS
959
960 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
961 AC_PROG_CPP
962
963 dnl ** Without optimization some INLINE trickery fails for GHCi
964 SRC_CC_OPTS="-O"
965
966 AC_SUBST(SRC_CC_OPTS)
967
968 dnl ** figure out how to do context diffs
969 FP_PROG_CONTEXT_DIFF
970
971 dnl ** Find find command (for Win32's benefit)
972 FP_PROG_FIND
973
974 dnl ** Find sort command (for the benefit of Win32 environs)
975 FP_PROG_SORT
976
977 dnl Let's make sure install-sh is executable here.  If we got it from
978 dnl a darcs repo, it might not be (see bug #978).
979 chmod +x install-sh
980 dnl ** figure out how to do a BSD-ish install
981 AC_PROG_INSTALL
982
983 dnl If you can run configure, you certainly have /bin/sh
984 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
985
986 dnl ** how to invoke `ar' and `ranlib'
987 FP_PROG_AR_NEEDS_RANLIB
988 FP_PROG_AR_SUPPORTS_INPUT
989
990 dnl ** Check to see whether ln -s works
991 AC_PROG_LN_S
992
993
994 dnl ** Find the path to sed
995 AC_PATH_PROG(SedCmd,sed)
996
997
998 dnl ** check for time command
999 AC_PATH_PROG(TimeCmd,time)
1000
1001 dnl ** check for tar
1002 dnl   if GNU tar is named gtar, look for it first.
1003 AC_PATH_PROGS(TarCmd,gtar tar,tar)
1004
1005 dnl ** check for patch
1006 dnl if GNU patch is named gpatch, look for it first
1007 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
1008
1009 AC_PATH_PROG(HSCOLOUR,HsColour)
1010 # HsColour is passed to Cabal, so we need a native path
1011 if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
1012    test "${OSTYPE}"      != "msys"                  && \
1013    test "${HSCOLOUR}"    != ""
1014 then
1015     # Canonicalise to <drive>:/path/to/gcc
1016     HSCOLOUR=`cygpath -m ${HSCOLOUR}`
1017 fi
1018
1019 dnl ** check for DocBook toolchain
1020 FP_CHECK_DOCBOOK_DTD
1021 FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/xml/docbook/xsl-stylesheets* /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])
1022 FP_PROG_FO_PROCESSOR
1023
1024 dnl ** check for ghc-pkg command
1025 FP_PROG_GHC_PKG
1026
1027 dnl ** check for installed happy binary + version
1028 dnl    (don't do it if we're booting from .hc files though.)
1029 if test "$BootingFromHc" = "NO"; then
1030 FPTOOLS_HAPPY
1031 fi;
1032
1033 dnl ** check for installed alex binary + version
1034 dnl    (don't do it if we're booting from .hc files though.)
1035 if test "$BootingFromHc" = "NO"; then
1036 FPTOOLS_ALEX
1037 fi;
1038
1039 dnl Check we have an acceptable version of windres
1040 FPTOOLS_WINDRES
1041
1042 dnl --------------------------------------------------
1043 dnl ### program checking section ends here ###
1044 dnl --------------------------------------------------
1045
1046 dnl --------------------------------------------------
1047 dnl * Platform header file and syscall feature tests
1048 dnl ### checking the state of the local header files and syscalls ###
1049
1050 dnl ** check for full ANSI header (.h) files
1051 AC_HEADER_STDC
1052
1053 dnl ** Enable large file support.  NB. do this before testing the type of
1054 dnl    off_t, because it will affect the result of that test.
1055 AC_SYS_LARGEFILE
1056
1057 dnl ** check for specific header (.h) files that we are interested in
1058 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 sched.h])
1059
1060 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
1061 AC_HEADER_TIME
1062
1063 dnl ** do we have long longs?
1064 AC_CHECK_TYPES([long long])
1065
1066 dnl ** what are the sizes of various types
1067 AC_CHECK_SIZEOF(char,               1)
1068 AC_CHECK_SIZEOF(double,             8)
1069 AC_CHECK_SIZEOF(float,              4)
1070 AC_CHECK_SIZEOF(int,                4)
1071 AC_CHECK_SIZEOF(long,               4)
1072 if test "$ac_cv_type_long_long" = yes; then
1073 AC_CHECK_SIZEOF(long long,          8)
1074 fi
1075 AC_CHECK_SIZEOF(short,              2)
1076 AC_CHECK_SIZEOF(unsigned char,      1)
1077 AC_CHECK_SIZEOF(unsigned int,       4)
1078 AC_CHECK_SIZEOF(unsigned long,      4)
1079 if test "$ac_cv_type_long_long" = yes; then
1080 AC_CHECK_SIZEOF(unsigned long long, 8)
1081 fi
1082 AC_CHECK_SIZEOF(unsigned short,     2)
1083 AC_CHECK_SIZEOF(void *,             4)
1084
1085 dnl ** what are alignment constraints on various types
1086 FP_CHECK_ALIGNMENT(char)
1087 FP_CHECK_ALIGNMENT(double)
1088 FP_CHECK_ALIGNMENT(float)
1089 FP_CHECK_ALIGNMENT(int)
1090 FP_CHECK_ALIGNMENT(long)
1091 if test "$ac_cv_type_long_long" = yes; then
1092 FP_CHECK_ALIGNMENT(long long)
1093 fi
1094 FP_CHECK_ALIGNMENT(short)
1095 FP_CHECK_ALIGNMENT(unsigned char)
1096 FP_CHECK_ALIGNMENT(unsigned int)
1097 FP_CHECK_ALIGNMENT(unsigned long)
1098 if test "$ac_cv_type_long_long" = yes; then
1099 FP_CHECK_ALIGNMENT(unsigned long long)
1100 fi
1101 FP_CHECK_ALIGNMENT(unsigned short)
1102 FP_CHECK_ALIGNMENT(void *)
1103
1104 FP_CHECK_FUNC([WinExec],
1105   [@%:@include <windows.h>], [WinExec("",0)])
1106
1107 FP_CHECK_FUNC([GetModuleFileName],
1108   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1109
1110 dnl ** check return type of signal handlers
1111 dnl Foo: assumes we can use prototypes.
1112 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1113 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1114 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1115 dnl #include <signal.h>
1116 dnl #ifdef signal
1117 dnl #undef signal
1118 dnl #endif
1119 dnl void (*signal (int, void (*)(int)))(int);
1120 dnl ]],
1121 dnl [[int i;]])],
1122 dnl [ac_cv_type_signal_handler=void_int],
1123 dnl [ac_cv_type_signal_handler=int_void])])
1124 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1125 dnl AC_DEFINE(VOID_INT_SIGNALS)
1126 dnl fi
1127
1128 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1129 AC_TYPE_SIGNAL
1130 if test "$ac_cv_type_signal" = void; then
1131   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).])
1132 fi
1133
1134 dnl ** check for more functions
1135 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1136 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r, sched_setaffinity])
1137
1138 AC_TRY_RUN([
1139 #include <sys/types.h>
1140 #include <sys/time.h>
1141 int main(void) {
1142   struct itimerval tval;
1143   tval.it_value.tv_sec = 1;
1144   tval.it_value.tv_usec = 0;
1145   tval.it_interval = tval.it_value;
1146   return setitimer(ITIMER_VIRTUAL, &tval, (void*)0) != 0;
1147 }
1148 ],[AC_DEFINE([HAVE_SETITIMER_VIRTUAL], [1], [Define to 1 if setitimer accepts ITIMER_VIRTUAL, 0 else.])])
1149
1150 dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if
1151 dnl ** _POSIX_C_SOURCE is defined
1152 AC_CHECK_DECLS([ctime_r], , ,
1153 [#define _POSIX_SOURCE 1
1154 #define _POSIX_C_SOURCE 199506L
1155 #include <time.h>])
1156
1157 dnl ** For ghc/rts/gmp:
1158 AC_CHECK_FUNCS([getpagesize])
1159
1160 dnl ** check whether this machine has gmp3 installed
1161 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1162   AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp3,
1163     HaveLibGmp=NO; LibGmp=not-installed))
1164   if test $HaveLibGmp = YES; then
1165     AC_DEFINE([HAVE_LIB_GMP], [1], [Define to 1 if GMP library is installed.])
1166   fi;
1167 AC_SUBST(HaveLibGmp)
1168 AC_SUBST(LibGmp)
1169
1170 dnl ** (Mac OS X only: check for GMP.framework)
1171 HaveFrameworkGMP=NO
1172 case $HostPlatform in
1173 *-apple-darwin)
1174     AC_MSG_CHECKING([for GMP.framework])
1175     save_libs="$LIBS"
1176     LIBS="-framework GMP"
1177     AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1178     if test $HaveFrameworkGMP = YES; then
1179       AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1180     fi;
1181     LIBS="$save_libs"
1182     AC_MSG_RESULT([$HaveFrameworkGMP])
1183     ;;
1184 esac
1185 AC_SUBST(HaveFrameworkGMP)
1186
1187 dnl ** check for mingwex library
1188 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1189 AC_SUBST(HaveLibMingwEx)
1190
1191 if test $HaveLibMingwEx = YES ; then
1192   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1193 fi
1194
1195 if test "$HaveLibGmp" = "NO"; then
1196 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1197 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1198 fi;
1199 fi;
1200
1201 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1202 dnl    the order of these tests matters: bfd needs liberty
1203 AC_CHECK_LIB(iberty, xmalloc)
1204 AC_CHECK_LIB(bfd,    bfd_init)
1205
1206 dnl ** check for math library
1207 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1208 if test x"$fp_libm_not_needed" = xdunno; then
1209    AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1210 fi
1211 AC_SUBST([LIBM])
1212
1213 dnl ################################################################
1214 dnl Check for libraries
1215 dnl ################################################################
1216
1217 dnl ** check whether we need -ldl to get dlopen()
1218
1219 AC_CHECK_LIB(dl, dlopen,
1220     [HaveLibDL=YES
1221      AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1222      LIBS="$LIBS -ldl"],
1223     [HaveLibDL=NO])
1224 AC_SUBST(HaveLibDL)
1225
1226 dnl --------------------------------------------------
1227 dnl * Miscellaneous feature tests
1228 dnl --------------------------------------------------
1229
1230 dnl ** can we get alloca?
1231 AC_FUNC_ALLOCA
1232
1233 dnl ** Working vfork?
1234 AC_FUNC_FORK
1235
1236 dnl ** determine whether or not const works
1237 AC_C_CONST
1238
1239 dnl ** are we big endian?
1240 AC_C_BIGENDIAN
1241 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
1242
1243 dnl ** check for leading underscores in symbol names
1244 FP_LEADING_UNDERSCORE
1245
1246 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1247 FP_PROG_LD_X
1248 FP_PROG_LD_IS_GNU
1249
1250 dnl ** check for Apple-style dead-stripping support
1251 dnl    (.subsections-via-symbols assembler directive)
1252
1253
1254 AC_MSG_CHECKING(for .subsections_via_symbols)
1255 AC_COMPILE_IFELSE(
1256     [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1257     [AC_MSG_RESULT(yes)
1258      AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1259                [Define to 1 if Apple-style dead-stripping is supported.])
1260     ],
1261     [AC_MSG_RESULT(no)])
1262
1263 dnl *** check for GNU non-executable stack note support (ELF only)
1264 dnl     (.section .note.GNU-stack,"",@progbits)
1265
1266 AC_MSG_CHECKING(for GNU non-executable stack support)
1267 AC_COMPILE_IFELSE(
1268     [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1269     [AC_MSG_RESULT(yes)
1270      AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1271                [Define to 1 if GNU non-executable stack notes are supported.])
1272     ],
1273     [AC_MSG_RESULT(no)])
1274
1275 dnl ** check for librt
1276 AC_CHECK_LIB(rt, clock_gettime)
1277 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
1278 FP_CHECK_TIMER_CREATE
1279
1280 dnl ** check for Apple's "interesting" long double compatibility scheme
1281 AC_MSG_CHECKING(for printf\$LDBLStub)
1282 AC_TRY_LINK_FUNC(printf\$LDBLStub,
1283     [
1284         AC_MSG_RESULT(yes)
1285         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1286             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1287     ],
1288     [
1289         AC_MSG_RESULT(no)
1290         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1291             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1292     ])
1293
1294 # test for GTK+
1295 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1296 if test -n "$GTK_CONFIG"; then
1297   if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1298     GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1299   else
1300     AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1301     GTK_CONFIG=
1302   fi
1303 fi
1304 AC_SUBST([GTK_CONFIG])
1305
1306 #Checking for PAPI
1307 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
1308 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
1309 AC_SUBST(HavePapiLib)
1310 AC_SUBST(HavePapiHeader)
1311
1312 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
1313    HavePapi=YES
1314 else
1315    HavePapi=NO
1316 fi
1317 AC_SUBST(HavePapi)
1318
1319 AC_CONFIG_FILES([mk/config.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml])
1320 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
1321 AC_OUTPUT
1322
1323 # We get caught by
1324 #     http://savannah.gnu.org/bugs/index.php?1516
1325 #     $(eval ...) inside conditionals causes errors
1326 # with make 3.80, so warn the user if it looks like they're about to
1327 # try to use it.
1328 # We would use "grep -q" here, but Solaris's grep doesn't support it.
1329 checkMake380() {
1330     if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
1331     then
1332         echo
1333         echo "WARNING: It looks like \"$1\" is GNU make 3.80."
1334         echo "This version cannot be used to build GHC."
1335         echo "Please use GNU make >= 3.81."
1336     fi
1337 }
1338
1339 checkMake380 make
1340 checkMake380 gmake
1341
1342 echo ["
1343 ----------------------------------------------------------------------
1344 Configure completed successfully.
1345
1346    Building GHC version  : $ProjectVersion
1347
1348    Build platform        : $BuildPlatform
1349    Host platform         : $HostPlatform
1350    Target platform       : $TargetPlatform
1351 "]
1352
1353 if test "$BootingFromHc" = "YES"; then
1354 echo ["\
1355    Bootstrapping from HC files.
1356 "]
1357 else
1358 echo ["\
1359    Bootstrapping using   : $WithGhc
1360       which is version   : $GhcVersion
1361 "]
1362 fi
1363
1364 echo ["\
1365    Using GCC             : $WhatGccIsCalled
1366       which is version   : $GccVersion
1367
1368    ld       : $LdCmd
1369    Happy    : $HappyCmd
1370    Alex     : $AlexCmd
1371    Python   : $PythonCmd
1372    Perl     : $PerlCmd"]
1373
1374 if test "$HSCOLOUR" = ""; then
1375 echo ["
1376    HsColour was not found; documentation will not contain source links
1377 "]
1378 else
1379 echo ["\
1380    HsColour : $HSCOLOUR
1381 "]
1382 fi
1383
1384 if test "$DIR_DOCBOOK_XSL" = ""; then
1385 echo ["\
1386    Building DocBook documentation : no"]
1387 else
1388 echo ["\
1389    Building DocBook documentation : yes"]
1390 fi
1391
1392
1393 echo ["\
1394    Building shared libraries      : $BuildSharedLibs"]
1395
1396 echo ["----------------------------------------------------------------------
1397 "]
1398
1399 echo "\
1400 For a standard build of GHC (fully optimised with profiling), type (g)make.
1401
1402 To make changes to the default build configuration, copy the file
1403 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
1404
1405 For more information on how to configure your GHC build, see
1406    http://hackage.haskell.org/trac/ghc/wiki/Building
1407 "