Fix Trac #3219: type of a record update
[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 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 AC_PATH_PROGS(NHC,nhc nhc98)
712 AC_PATH_PROG(HBC,hbc)
713
714 dnl ** Which gcc to use?
715 dnl --------------------------------------------------------------
716 AC_ARG_WITH(gcc,
717 [AC_HELP_STRING([--with-gcc=ARG],
718         [Use ARG as the path to GCC  [default=autodetect]])],
719 [WhatGccIsCalled="$withval"
720  if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
721     test "${OSTYPE}"      != "msys"                  && \
722     test "${withval}"     != ""
723  then
724      # Canonicalise to <drive>:/path/to/gcc
725      withval=`cygpath -m ${withval}`
726  fi;
727  CC="$withval"
728  export CC
729  ],
730 [WhatGccIsCalled="gcc"]
731 )
732 AC_SUBST(WhatGccIsCalled)
733
734 dnl ** Which ld to use?
735 dnl --------------------------------------------------------------
736 AC_ARG_WITH(ld,
737 [AC_HELP_STRING([--with-ld=ARG],
738         [Use ARG as the path to LD  [default=autodetect]])],
739 [if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
740     test "${OSTYPE}"      != "msys"                  && \
741     test "${withval}"     != ""
742  then
743      # Canonicalise to <drive>:/path/to/ld
744      withval=`cygpath -m ${withval}`
745  fi;
746  LD=$withval
747  FP_PROG_LD([$LD])
748  ],
749  [FP_PROG_LD()]
750 )
751
752 dnl ** Build shared and/or static libs?
753 dnl --------------------------------------------------------------
754 AC_ARG_ENABLE(shared,
755 [AC_HELP_STRING([--enable-shared],
756 [Build shared libraries, if available (EXPERIMENTAL, non-working). [default=no]])],
757 [ if test x"$enableval" = x"yes"; then
758         AC_MSG_WARN([--enable-shared is experimental and not fully supported at this time])
759         BuildSharedLibs=YES
760   else
761         BuildSharedLibs=NO
762   fi
763 ],
764 [BuildSharedLibs=NO]
765 )
766 AC_SUBST(BuildSharedLibs)
767
768 # ToDo later:
769 # AC_ARG_ENABLE(static,
770 # [AC_HELP_STRING([--enable-static],
771 # [Build static libraries. [default=yes]])],
772 # [ if test x"$enableval" = x"yes"; then
773 #         BuildStaticLibs=YES
774 #   else
775 #         BuildStaticLibs=NO
776 #   fi
777 # ],
778 # [BuildStaticLibs=YES]
779 # )
780 # AC_SUBST(BuildStaticLibs)
781
782 dnl ** Booting from .hc files?
783 dnl --------------------------------------------------------------
784 AC_ARG_ENABLE(hc-boot,
785 [AC_HELP_STRING([--enable-hc-boot],
786 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
787  (This option is mostly of interest to porters.) [default=no]])],
788 [ if test x"$enableval" = x"yes"; then
789         BootingFromHc=YES
790   else
791         BootingFromHc=NO
792   fi
793 ],
794 [BootingFromHc=NO]
795 )
796 AC_SUBST(BootingFromHc)
797
798 dnl ** Booting from unregisterised .hc files?
799 dnl --------------------------------------------------------------
800 AC_ARG_ENABLE(hc-boot-unregisterised,
801 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
802 [ With --enable-hc-boot, treat the intermediate .hc files as
803  unregisterised rather than registerised code.
804  (This option is mostly of interest to porters.) [default=no]])],
805 [ if test x"$enableval" = x"yes"; then
806         BootingFromUnregisterisedHc=YES
807   else
808         BootingFromUnregisterisedHc=NO
809   fi
810 ],
811 [BootingFromUnregisterisedHc=NO]
812 )
813 AC_SUBST(BootingFromUnregisterisedHc)
814
815 if test "$BootingFromHc" = "NO"; then
816 if test "$BootingFromUnregisterisedHc" = "YES"; then
817 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
818 fi;
819 fi;
820
821 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
822 if test "$BootingFromHc" = "NO" -a -d "$srcdir/compiler"; then
823   if test "$WithGhc" = ""; then
824      AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
825   fi
826   FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.6],
827     [AC_MSG_ERROR([GHC version 6.6 or later is required to compile GHC.])])dnl
828 fi;
829
830 # This uses GHC, so put it after the "GHC is required" check above:
831 FP_FIND_ROOT
832
833 dnl ** Enable the construction of Win32 DLLs?
834 dnl --------------------------------------------------------------
835 dnl
836 dnl [ The ability to build the RTS and libraries as separate DLLs used
837 dnl   to be supported, but isn't currently (updates to the RTS, compiler
838 dnl   and build system would be required to bring it back again.)
839 dnl   Hence, exposing it as an option is false advertisement, so better
840 dnl   disable it to avoid confusion (but leave it commented-out rather
841 dnl   than removed in order to remind ourselves to bring back the
842 dnl   feature at some stage.) ]
843 dnl
844 dnl AC_ARG_ENABLE(win32-dlls,
845 dnl [  --enable-win32-dlls
846 dnl         If on a Win32 platform running mingw32/cygwin, enable the
847 dnl         construction of DLLs containing ghc-compiled code.
848 dnl ],
849 dnl [
850 dnl case $HostOS_CPP in
851 dnl cygwin32) ;;
852 dnl mingw32)  ;;
853 dnl *)    echo "Unrecognised win32 platform: $HostPlatform"
854 dnl       exit 1
855 dnl       ;;
856 dnl esac
857 dnl EnableWin32DLLs=YES
858 dnl ],
859 dnl [EnableWin32DLLs=NO]
860 dnl )
861 dnl AC_SUBST(EnableWin32DLLs)
862 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
863 dnl  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
864 dnl fi
865
866 dnl ** Mac OS X: explicit deployment target
867 dnl --------------------------------------------------------------
868 AC_ARG_WITH([macosx-deployment-target],
869 [AC_HELP_STRING([--with-macosx-deployment-target=VERSION],
870         [Build for Mac OS VERSION and higher  (default= version of build host)])],
871 [FP_MACOSX_DEPLOYMENT_TARGET="$withval"
872  if test "x$TargetOS_CPP-$TargetVendor_CPP" != "xdarwin-apple"; then
873    # ignore everywhere, but on Mac OS
874    AC_MSG_WARN([--macosx-deployment-target is only available on Mac OS X])
875    FP_MACOSX_DEPLOYMENT_TARGET=none
876  fi],
877 [FP_MACOSX_DEPLOYMENT_TARGET=none]
878 )
879 FP_CHECK_MACOSX_DEPLOYMENT_TARGET
880 AC_SUBST(MACOSX_DEPLOYMENT_VERSION)
881 AC_SUBST(MACOSX_DEPLOYMENT_SDK)
882
883 dnl --------------------------------------------------------------
884 dnl End of configure script option section
885 dnl --------------------------------------------------------------
886
887
888 dnl --------------------------------------------------------------
889 dnl * General configuration checks
890 dnl --------------------------------------------------------------
891
892 dnl ** Can the unix package be built?
893 dnl --------------------------------------------------------------
894
895 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
896    GhcLibsWithUnix=NO
897 else
898    GhcLibsWithUnix=YES
899 fi
900 AC_SUBST([GhcLibsWithUnix])
901
902 dnl ** does #! work?
903 AC_SYS_INTERPRETER()
904
905 dnl ** look for `perl', but only in /bin on Windows
906 case $HostOS_CPP in
907 cygwin32|mingw32)
908       AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
909       if test -z "$PerlCmd"; then
910          echo "You must install the version of Perl shipped with GHC"
911          echo "(or a compatible one) in /bin."
912          exit 1
913       fi
914    ;;
915 *)
916    AC_PATH_PROG(PerlCmd,perl)
917    if test -z "$PerlCmd"; then
918       echo "You must install perl before you can continue"
919       echo "Perhaps it is already installed, but not in your PATH?"
920       exit 1
921    else
922    FPTOOLS_CHECK_PERL_VERSION
923    fi
924    ;;
925 esac
926
927 dnl ** does #! path/to/perl work? (sometimes it's too long...)
928 FPTOOLS_SHEBANG_PERL
929
930 dnl ** check for Python
931 AC_PATH_PROG(PythonCmd,python)
932
933 dnl ** look for GCC and find out which version
934 dnl     Figure out which C compiler to use.  Gcc is preferred.
935 dnl     If gcc, make sure it's at least 2.1
936 dnl
937 FP_HAVE_GCC
938 FP_MINGW_GCC
939 FP_GCC_EXTRA_FLAGS
940
941 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
942 AC_PROG_CPP
943
944 dnl ** Without optimization some INLINE trickery fails for GHCi
945 SRC_CC_OPTS="-O"
946
947 AC_SUBST(SRC_CC_OPTS)
948
949 dnl ** figure out how to do context diffs
950 FP_PROG_CONTEXT_DIFF
951
952 dnl ** Find find command (for Win32's benefit)
953 FP_PROG_FIND
954
955 dnl ** Find sort command (for the benefit of Win32 environs)
956 FP_PROG_SORT
957
958 dnl Let's make sure install-sh is executable here.  If we got it from
959 dnl a darcs repo, it might not be (see bug #978).
960 chmod +x install-sh
961 dnl ** figure out how to do a BSD-ish install
962 AC_PROG_INSTALL
963
964 dnl If you can run configure, you certainly have /bin/sh
965 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
966
967 dnl ** how to invoke `ar' and `ranlib'
968 FP_PROG_AR_NEEDS_RANLIB
969 FP_PROG_AR_SUPPORTS_INPUT
970
971 dnl ** Check to see whether ln -s works
972 AC_PROG_LN_S
973
974
975 dnl ** Find the path to sed
976 AC_PATH_PROG(SedCmd,sed)
977
978
979 dnl ** check for time command
980 AC_PATH_PROG(TimeCmd,time)
981
982 dnl ** check for tar
983 dnl   if GNU tar is named gtar, look for it first.
984 AC_PATH_PROGS(TarCmd,gtar tar,tar)
985
986 dnl ** check for patch
987 dnl if GNU patch is named gpatch, look for it first
988 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
989
990 AC_PATH_PROG(HSCOLOUR,HsColour)
991 # HsColour is passed to Cabal, so we need a native path
992 if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
993    test "${OSTYPE}"      != "msys"                  && \
994    test "${HSCOLOUR}"    != ""
995 then
996     # Canonicalise to <drive>:/path/to/gcc
997     HSCOLOUR=`cygpath -m ${HSCOLOUR}`
998 fi
999
1000 dnl ** check for DocBook toolchain
1001 FP_CHECK_DOCBOOK_DTD
1002 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])
1003
1004 FP_PROG_DBLATEX
1005
1006 dnl ** check for ghc-pkg command
1007 FP_PROG_GHC_PKG
1008
1009 dnl ** check for installed happy binary + version
1010 dnl    (don't do it if we're booting from .hc files though.)
1011 if test "$BootingFromHc" = "NO"; then
1012 FPTOOLS_HAPPY
1013 fi;
1014
1015 dnl ** check for installed alex binary + version
1016 dnl    (don't do it if we're booting from .hc files though.)
1017 if test "$BootingFromHc" = "NO"; then
1018 FPTOOLS_ALEX
1019 fi;
1020
1021 dnl Check we have an acceptable version of windres
1022 FPTOOLS_WINDRES
1023
1024 dnl --------------------------------------------------
1025 dnl ### program checking section ends here ###
1026 dnl --------------------------------------------------
1027
1028 dnl --------------------------------------------------
1029 dnl * Platform header file and syscall feature tests
1030 dnl ### checking the state of the local header files and syscalls ###
1031
1032 dnl ** check for full ANSI header (.h) files
1033 AC_HEADER_STDC
1034
1035 dnl ** Enable large file support.  NB. do this before testing the type of
1036 dnl    off_t, because it will affect the result of that test.
1037 AC_SYS_LARGEFILE
1038
1039 dnl ** check for specific header (.h) files that we are interested in
1040 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])
1041
1042 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
1043 AC_HEADER_TIME
1044
1045 dnl ** do we have long longs?
1046 AC_CHECK_TYPES([long long])
1047
1048 dnl ** what are the sizes of various types
1049 AC_CHECK_SIZEOF(char,               1)
1050 AC_CHECK_SIZEOF(double,             8)
1051 AC_CHECK_SIZEOF(float,              4)
1052 AC_CHECK_SIZEOF(int,                4)
1053 AC_CHECK_SIZEOF(long,               4)
1054 if test "$ac_cv_type_long_long" = yes; then
1055 AC_CHECK_SIZEOF(long long,          8)
1056 fi
1057 AC_CHECK_SIZEOF(short,              2)
1058 AC_CHECK_SIZEOF(unsigned char,      1)
1059 AC_CHECK_SIZEOF(unsigned int,       4)
1060 AC_CHECK_SIZEOF(unsigned long,      4)
1061 if test "$ac_cv_type_long_long" = yes; then
1062 AC_CHECK_SIZEOF(unsigned long long, 8)
1063 fi
1064 AC_CHECK_SIZEOF(unsigned short,     2)
1065 AC_CHECK_SIZEOF(void *,             4)
1066
1067 dnl ** what are alignment constraints on various types
1068 FP_CHECK_ALIGNMENT(char)
1069 FP_CHECK_ALIGNMENT(double)
1070 FP_CHECK_ALIGNMENT(float)
1071 FP_CHECK_ALIGNMENT(int)
1072 FP_CHECK_ALIGNMENT(long)
1073 if test "$ac_cv_type_long_long" = yes; then
1074 FP_CHECK_ALIGNMENT(long long)
1075 fi
1076 FP_CHECK_ALIGNMENT(short)
1077 FP_CHECK_ALIGNMENT(unsigned char)
1078 FP_CHECK_ALIGNMENT(unsigned int)
1079 FP_CHECK_ALIGNMENT(unsigned long)
1080 if test "$ac_cv_type_long_long" = yes; then
1081 FP_CHECK_ALIGNMENT(unsigned long long)
1082 fi
1083 FP_CHECK_ALIGNMENT(unsigned short)
1084 FP_CHECK_ALIGNMENT(void *)
1085
1086 FP_CHECK_FUNC([WinExec],
1087   [@%:@include <windows.h>], [WinExec("",0)])
1088
1089 FP_CHECK_FUNC([GetModuleFileName],
1090   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1091
1092 dnl ** check return type of signal handlers
1093 dnl Foo: assumes we can use prototypes.
1094 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1095 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1096 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1097 dnl #include <signal.h>
1098 dnl #ifdef signal
1099 dnl #undef signal
1100 dnl #endif
1101 dnl void (*signal (int, void (*)(int)))(int);
1102 dnl ]],
1103 dnl [[int i;]])],
1104 dnl [ac_cv_type_signal_handler=void_int],
1105 dnl [ac_cv_type_signal_handler=int_void])])
1106 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1107 dnl AC_DEFINE(VOID_INT_SIGNALS)
1108 dnl fi
1109
1110 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1111 AC_TYPE_SIGNAL
1112 if test "$ac_cv_type_signal" = void; then
1113   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).])
1114 fi
1115
1116 dnl ** check for more functions
1117 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1118 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r, sched_setaffinity])
1119
1120 AC_TRY_RUN([
1121 #include <sys/types.h>
1122 #include <sys/time.h>
1123 int main(void) {
1124   struct itimerval tval;
1125   tval.it_value.tv_sec = 1;
1126   tval.it_value.tv_usec = 0;
1127   tval.it_interval = tval.it_value;
1128   return setitimer(ITIMER_VIRTUAL, &tval, (void*)0) != 0;
1129 }
1130 ],[AC_DEFINE([HAVE_SETITIMER_VIRTUAL], [1], [Define to 1 if setitimer accepts ITIMER_VIRTUAL, 0 else.])])
1131
1132 dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if
1133 dnl ** _POSIX_C_SOURCE is defined
1134 AC_CHECK_DECLS([ctime_r], , ,
1135 [#define _POSIX_SOURCE 1
1136 #define _POSIX_C_SOURCE 199506L
1137 #include <time.h>])
1138
1139 dnl ** For ghc/rts/gmp:
1140 AC_CHECK_FUNCS([getpagesize])
1141
1142 dnl ** check whether this machine has gmp3 installed
1143 AC_CHECK_LIB(gmp,  __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1144   AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr,  HaveLibGmp=YES; LibGmp=gmp3,
1145     HaveLibGmp=NO; LibGmp=not-installed))
1146   if test $HaveLibGmp = YES; then
1147     AC_DEFINE([HAVE_LIB_GMP], [1], [Define to 1 if GMP library is installed.])
1148   fi;
1149 AC_SUBST(HaveLibGmp)
1150 AC_SUBST(LibGmp)
1151
1152 dnl ** (Mac OS X only: check for GMP.framework)
1153 HaveFrameworkGMP=NO
1154 case $HostPlatform in
1155 *-apple-darwin)
1156     AC_MSG_CHECKING([for GMP.framework])
1157     save_libs="$LIBS"
1158     LIBS="-framework GMP"
1159     AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1160     if test $HaveFrameworkGMP = YES; then
1161       AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1162     fi;
1163     LIBS="$save_libs"
1164     AC_MSG_RESULT([$HaveFrameworkGMP])
1165     ;;
1166 esac
1167 AC_SUBST(HaveFrameworkGMP)
1168
1169 dnl ** check for mingwex library
1170 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1171 AC_SUBST(HaveLibMingwEx)
1172
1173 if test $HaveLibMingwEx = YES ; then
1174   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1175 fi
1176
1177 if test "$HaveLibGmp" = "NO"; then
1178 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1179 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1180 fi;
1181 fi;
1182
1183 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1184 dnl    the order of these tests matters: bfd needs liberty
1185 AC_CHECK_LIB(iberty, xmalloc)
1186 AC_CHECK_LIB(bfd,    bfd_init)
1187
1188 dnl ** check for math library
1189 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1190 if test x"$fp_libm_not_needed" = xdunno; then
1191    AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1192 fi
1193 AC_SUBST([LIBM])
1194
1195 dnl ################################################################
1196 dnl Check for libraries
1197 dnl ################################################################
1198
1199 dnl ** check whether we need -ldl to get dlopen()
1200
1201 AC_CHECK_LIB(dl, dlopen,
1202     [HaveLibDL=YES
1203      AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1204      LIBS="$LIBS -ldl"],
1205     [HaveLibDL=NO])
1206 AC_SUBST(HaveLibDL)
1207
1208 dnl --------------------------------------------------
1209 dnl * Miscellaneous feature tests
1210 dnl --------------------------------------------------
1211
1212 dnl ** can we get alloca?
1213 AC_FUNC_ALLOCA
1214
1215 dnl ** Working vfork?
1216 AC_FUNC_FORK
1217
1218 dnl ** determine whether or not const works
1219 AC_C_CONST
1220
1221 dnl ** are we big endian?
1222 AC_C_BIGENDIAN
1223 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
1224
1225 dnl ** check for leading underscores in symbol names
1226 FP_LEADING_UNDERSCORE
1227
1228 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1229 FP_PROG_LD_X
1230 FP_PROG_LD_IS_GNU
1231
1232 dnl ** check for Apple-style dead-stripping support
1233 dnl    (.subsections-via-symbols assembler directive)
1234
1235
1236 AC_MSG_CHECKING(for .subsections_via_symbols)
1237 AC_COMPILE_IFELSE(
1238     [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1239     [AC_MSG_RESULT(yes)
1240      AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1241                [Define to 1 if Apple-style dead-stripping is supported.])
1242     ],
1243     [AC_MSG_RESULT(no)])
1244
1245 dnl *** check for GNU non-executable stack note support (ELF only)
1246 dnl     (.section .note.GNU-stack,"",@progbits)
1247
1248 AC_MSG_CHECKING(for GNU non-executable stack support)
1249 AC_COMPILE_IFELSE(
1250     [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1251     [AC_MSG_RESULT(yes)
1252      AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1253                [Define to 1 if GNU non-executable stack notes are supported.])
1254     ],
1255     [AC_MSG_RESULT(no)])
1256
1257 dnl ** check for librt
1258 AC_CHECK_LIB(rt, clock_gettime)
1259 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
1260 FP_CHECK_TIMER_CREATE
1261
1262 dnl ** check for Apple's "interesting" long double compatibility scheme
1263 AC_MSG_CHECKING(for printf\$LDBLStub)
1264 AC_TRY_LINK_FUNC(printf\$LDBLStub,
1265     [
1266         AC_MSG_RESULT(yes)
1267         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1268             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1269     ],
1270     [
1271         AC_MSG_RESULT(no)
1272         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1273             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1274     ])
1275
1276 # test for GTK+
1277 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1278 if test -n "$GTK_CONFIG"; then
1279   if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1280     GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1281   else
1282     AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1283     GTK_CONFIG=
1284   fi
1285 fi
1286 AC_SUBST([GTK_CONFIG])
1287
1288 #Checking for PAPI
1289 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
1290 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
1291 AC_SUBST(HavePapiLib)
1292 AC_SUBST(HavePapiHeader)
1293
1294 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
1295    HavePapi=YES
1296 else
1297    HavePapi=NO
1298 fi
1299 AC_SUBST(HavePapi)
1300
1301 if test "$DIR_DOCBOOK_XSL" = "" ||
1302    test "$XsltprocCmd" = ""
1303 then
1304     BUILD_DOCBOOK_HTML=NO
1305 else
1306     BUILD_DOCBOOK_HTML=YES
1307 fi
1308 AC_SUBST(BUILD_DOCBOOK_HTML)
1309
1310 if test "$DblatexCmd" = ""
1311 then
1312     BUILD_DOCBOOK_PS=NO
1313     BUILD_DOCBOOK_PDF=NO
1314 else
1315     BUILD_DOCBOOK_PS=YES
1316     BUILD_DOCBOOK_PDF=YES
1317 fi
1318 AC_SUBST(BUILD_DOCBOOK_PS)
1319 AC_SUBST(BUILD_DOCBOOK_PDF)
1320
1321 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])
1322 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
1323 AC_OUTPUT
1324
1325 # We get caught by
1326 #     http://savannah.gnu.org/bugs/index.php?1516
1327 #     $(eval ...) inside conditionals causes errors
1328 # with make 3.80, so warn the user if it looks like they're about to
1329 # try to use it.
1330 # We would use "grep -q" here, but Solaris's grep doesn't support it.
1331 checkMake380() {
1332     if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
1333     then
1334         echo
1335         echo "WARNING: It looks like \"$1\" is GNU make 3.80."
1336         echo "This version cannot be used to build GHC."
1337         echo "Please use GNU make >= 3.81."
1338     fi
1339 }
1340
1341 checkMake380 make
1342 checkMake380 gmake
1343
1344 echo ["
1345 ----------------------------------------------------------------------
1346 Configure completed successfully.
1347
1348    Building GHC version  : $ProjectVersion
1349
1350    Build platform        : $BuildPlatform
1351    Host platform         : $HostPlatform
1352    Target platform       : $TargetPlatform
1353 "]
1354
1355 if test "$BootingFromHc" = "YES"; then
1356 echo ["\
1357    Bootstrapping from HC files.
1358 "]
1359 else
1360 echo ["\
1361    Bootstrapping using   : $WithGhc
1362       which is version   : $GhcVersion
1363 "]
1364 fi
1365
1366 echo ["\
1367    Using GCC             : $WhatGccIsCalled
1368       which is version   : $GccVersion
1369
1370    ld       : $LdCmd
1371    Happy    : $HappyCmd
1372    Alex     : $AlexCmd
1373    Python   : $PythonCmd
1374    Perl     : $PerlCmd"]
1375
1376 if test "$HSCOLOUR" = ""; then
1377 echo ["
1378    HsColour was not found; documentation will not contain source links
1379 "]
1380 else
1381 echo ["\
1382    HsColour : $HSCOLOUR
1383 "]
1384 fi
1385
1386 echo "Building DocBook HTML documentation: $BUILD_DOCBOOK_HTML"
1387 echo "Building DocBook PS documentation:   $BUILD_DOCBOOK_PS"
1388 echo "Building DocBook PDF documentation:  $BUILD_DOCBOOK_PDF"
1389
1390 echo ["Building shared libraries      : $BuildSharedLibs"]
1391
1392 echo ["----------------------------------------------------------------------
1393 "]
1394
1395 echo "\
1396 For a standard build of GHC (fully optimised with profiling), type (g)make.
1397
1398 To make changes to the default build configuration, copy the file
1399 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
1400
1401 For more information on how to configure your GHC build, see
1402    http://hackage.haskell.org/trac/ghc/wiki/Building
1403 "