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)
6 # (c) The University of Glasgow 1994-2004
8 # Configure script template for GHC
10 # Process with 'autoreconf' to get a working configure script.
12 # For the generated configure script, do "./configure --help" to
13 # see what flags are available. (Better yet, read the documentation!)
16 AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.7], [glasgow-haskell-bugs@haskell.org], [ghc])
18 # Set this to YES for a released version, otherwise NO
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.
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'?"
34 FP_SETUP_PROJECT_VERSION
36 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
37 AC_SUBST([release], [1])
39 # First off, a distrib sanity check..
40 AC_CONFIG_SRCDIR([mk/config.mk.in])
42 dnl * We require autoconf version 2.52
43 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
44 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
47 # -------------------------------------------------------------------------
48 # Prepare to generate the following header files
51 AC_CONFIG_HEADER(mk/config.h)
53 # No, semi-sadly, we don't do `--srcdir'...
54 if test x"$srcdir" != 'x.' ; then
55 echo "This configuration does not support the \`--srcdir' option.."
59 dnl--------------------------------------------------------------------
60 dnl * Deal with arguments telling us gmp is somewhere odd
61 dnl--------------------------------------------------------------------
67 if test "x$gmp_libraries" != "xNONE"; then
68 LDFLAGS="-L$gmp_libraries $LDFLAGS"
69 GMP_LIB_DIRS=$gmp_libraries
71 if test "x$gmp_includes" != "xNONE"; then
72 CPPFLAGS="-I$gmp_includes $CPPFLAGS"
73 GMP_INCLUDE_DIRS=$gmp_includes
75 AC_SUBST(GMP_INCLUDE_DIRS)
76 AC_SUBST(GMP_LIB_DIRS)
78 dnl--------------------------------------------------------------------
79 dnl * Choose host(/target/build) platform
80 dnl--------------------------------------------------------------------
82 dnl Guess host/target/build platform(s) if necessary.
85 # "$host" defaults to "$target"
86 if test "x$host" = xNONE ; then
90 dnl ** canonicalize platform names
91 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
92 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
93 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
95 if test x"$TargetPlatform" != x"$HostPlatform" ; then
96 echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
102 # The following will be more difficult when we *are* cross-compiling.
103 # Suitable names to slam in *_CPP are in platform.h.in.
104 # We also record the architecture, vendor, and operating system (OS)
106 case $HostPlatform in
107 alpha*-dec-osf[[12]]*)
108 HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
109 TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
110 BuildPlatform=alpha-dec-osf1 # hack
111 HostPlatform_CPP='alpha_dec_osf1'
116 alpha*-dec-osf[[345]]*)
117 HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
118 TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
119 BuildPlatform=alpha-dec-osf3 # hack
120 HostPlatform_CPP='alpha_dec_osf3'
125 alpha*-unknown-linux*)
126 HostPlatform=alpha-unknown-linux
127 TargetPlatform=alpha-unknown-linux
128 BuildPlatform=alpha-unknown-linux
129 HostPlatform_CPP='alpha_unknown_linux'
131 HostVendor_CPP='unknown'
134 alpha*-unknown-freebsd*)
135 HostPlatform=alpha-unknown-freebsd
136 TargetPlatform=alpha-unknown-freebsd
137 BuildPlatform=alpha-unknown-freebsd
138 HostPlatform_CPP='alpha_unknown_freebsd'
140 HostVendor_CPP='unknown'
143 alpha*-unknown-openbsd*)
144 HostPlatform=alpha-unknown-openbsd
145 TargetPlatform=alpha-unknown-openbsd
146 BuildPlatform=alpha-unknown-openbsd
147 HostPlatform_CPP='alpha_unknown_openbsd'
149 HostVendor_CPP='unknown'
152 amd64-*-openbsd*|x86_64-*-openbsd*)
153 HostPlatform=x86_64-unknown-openbsd
154 TargetPlatform=x86_64-unknown-openbsd
155 BuildPlatform=x86_64-unknown-openbsd
156 HostPlatform_CPP='x86_64_unknown_openbsd'
157 HostArch_CPP='x86_64'
158 HostVendor_CPP='unknown'
162 HostPlatform=x86_64-unknown-freebsd
163 TargetPlatform=x86_64-unknown-freebsd
164 BuildPlatform=x86_64-unknown-freebsd
165 HostPlatform_CPP='x86_64_unknown_freebsd'
166 HostArch_CPP='x86_64'
167 HostVendor_CPP='unknown'
171 HostPlatform=arm-unknown-linux # hack again
172 TargetPlatform=arm-unknown-linux
173 BuildPlatform=arm-unknown-linux
174 HostPlatform_CPP='arm_unknown_linux'
176 HostVendor_CPP='unknown'
180 HostPlatform=arm-unknown-openbsd
181 TargetPlatform=arm-unknown-openbsd
182 BuildPlatform=arm-unknown-openbsd
183 HostPlatform_CPP='arm_unknown_openbsd'
185 HostVendor_CPP='unknown'
189 HostPlatform=hppa-unknown-linux # hack again
190 TargetPlatform=hppa-unknown-linux
191 BuildPlatform=hppa-unknown-linux
192 HostPlatform_CPP='hppa_unknown_linux'
194 HostVendor_CPP='unknown'
198 HostPlatform=hppa-unknown-openbsd # hack again
199 TargetPlatform=hppa-unknown-openbsd
200 BuildPlatform=hppa-unknown-openbsd
201 HostPlatform_CPP='hppa_unknown_openbsd'
203 HostVendor_CPP='unknown'
207 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
208 TargetPlatform=hppa1.1-hp-hpux
209 BuildPlatform=hppa1.1-hp-hpux
210 HostPlatform_CPP='hppa1_1_hp_hpux'
211 HostArch_CPP='hppa1_1'
215 i[[3456]]86-*-linuxaout*)
216 HostPlatform=i386-unknown-linuxaout # hack again
217 TargetPlatform=i386-unknown-linuxaout
218 BuildPlatform=i386-unknown-linuxaout
219 HostPlatform_CPP='i386_unknown_linuxaout'
221 HostVendor_CPP='unknown'
222 HostOS_CPP='linuxaout'
224 i[[3456]]86-*-linux*)
225 HostPlatform=i386-unknown-linux # hack again
226 TargetPlatform=i386-unknown-linux
227 BuildPlatform=i386-unknown-linux
228 HostPlatform_CPP='i386_unknown_linux'
230 HostVendor_CPP='unknown'
233 i[[3456]]86-*-kfreebsd*-gnu)
234 HostPlatform=i386-unknown-kfreebsdgnu # hack again
235 TargetPlatform=i386-unknown-kfreebsdgnu
236 BuildPlatform=i386-unknown-kfreebsdgnu
237 HostPlatform_CPP='i386_unknown_kfreebsdgnu'
239 HostVendor_CPP='unknown'
240 HostOS_CPP='kfreebsdgnu'
242 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
243 HostPlatform=i386-unknown-freebsd # hack again
244 TargetPlatform=i386-unknown-freebsd
245 BuildPlatform=i386-unknown-freebsd
246 HostPlatform_CPP='i386_unknown_freebsd'
248 HostVendor_CPP='unknown'
251 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
252 HostPlatform=i386-unknown-freebsd2 # hack again
253 TargetPlatform=i386-unknown-freebsd2
254 BuildPlatform=i386-unknown-freebsd2
255 HostPlatform_CPP='i386_unknown_freebsd2'
257 HostVendor_CPP='unknown'
258 HostOS_CPP='freebsd2'
260 i[[3456]]86-*-netbsd*)
261 HostPlatform=i386-unknown-netbsd # hack again
262 TargetPlatform=i386-unknown-netbsd
263 BuildPlatform=i386-unknown-netbsd
264 HostPlatform_CPP='i386_unknown_netbsd'
266 HostVendor_CPP='unknown'
269 i[[3456]]86-*-openbsd*)
270 HostPlatform=i386-unknown-openbsd # hack again
271 TargetPlatform=i386-unknown-openbsd
272 BuildPlatform=i386-unknown-openbsd
273 HostPlatform_CPP='i386_unknown_openbsd'
275 HostVendor_CPP='unknown'
278 i[[3456]]86-*-solaris2*)
279 HostPlatform=i386-unknown-solaris2 # hack again
280 TargetPlatform=i386-unknown-solaris2
281 BuildPlatform=i386-unknown-solaris2
282 HostPlatform_CPP='i386_unknown_solaris2'
284 HostVendor_CPP='unknown'
285 HostOS_CPP='solaris2'
287 i[[3456]]86-*-cygwin*)
288 HostPlatform=i386-unknown-cygwin32 # hack again
289 TargetPlatform=i386-unknown-cygwin32
290 BuildPlatform=i386-unknown-cygwin32
291 HostPlatform_CPP='i386_unknown_cygwin32'
293 HostVendor_CPP='unknown'
294 HostOS_CPP='cygwin32'
297 i[[3456]]86-*-mingw32*)
298 HostPlatform=i386-unknown-mingw32 # hack again
299 TargetPlatform=i386-unknown-mingw32
300 BuildPlatform=i386-unknown-mingw32
301 HostPlatform_CPP='i386_unknown_mingw32'
303 HostVendor_CPP='unknown'
307 i[[3456]]86-apple-darwin*)
308 HostPlatform=i386-apple-darwin
309 TargetPlatform=i386-apple-darwin #hack
310 BuildPlatform=i386-apple-darwin #hack
311 HostPlatform_CPP='i386_apple_darwin'
313 HostVendor_CPP='apple'
317 HostPlatform=i386-unknown-gnu
318 TargetPlatform=i386-unknown-gnu
319 BuildPlatform=i386-unknown-gnu
320 HostPlatform_CPP=i386_unknown_gnu
322 HostVendor_CPP=unknown
326 HostPlatform=ia64-unknown-linux # hack again
327 TargetPlatform=ia64-unknown-linux
328 BuildPlatform=ia64-unknown-linux
329 HostPlatform_CPP='ia64_unknown_linux'
331 HostVendor_CPP='unknown'
335 HostPlatform=x86_64-unknown-linux
336 TargetPlatform=x86_64-unknown-linux
337 BuildPlatform=x86_64-unknown-linux
338 HostPlatform_CPP='x86_64_unknown_linux'
339 HostArch_CPP='x86_64'
340 HostVendor_CPP='unknown'
343 x86_64-apple-darwin*)
344 HostPlatform=x86_64-apple-darwin
345 TargetPlatform=x86_64-apple-darwin
346 BuildPlatform=x86_64-apple-darwin
347 HostPlatform_CPP='x86_64_apple_darwin'
348 HostArch_CPP='x86_64'
349 HostVendor_CPP='apple'
353 HostPlatform=m68k-unknown-linux # hack again
354 TargetPlatform=m68k-unknown-linux
355 BuildPlatform=m68k-unknown-linux
356 HostPlatform_CPP='m68k_unknown_linux'
358 HostVendor_CPP='unknown'
362 HostPlatform_CPP='m68k_next_nextstep2'
364 HostVendor_CPP='next'
365 HostOS_CPP='nextstep2'
368 HostPlatform_CPP='m68k_next_nextstep3'
370 HostVendor_CPP='next'
371 HostOS_CPP='nextstep3'
373 i[[3456]]86-next-nextstep3)
374 HostPlatform=i386-next-nextstep3 # hack again
375 TargetPlatform=i386-next-nextstep3
376 BuildPlatform=i386-next-nextstep3
377 HostPlatform_CPP='i386_next_nextstep3'
379 HostVendor_CPP='next'
380 HostOS_CPP='nextstep3'
383 HostPlatform=m68k-unknown-openbsd
384 TargetPlatform=m68k-unknown-openbsd
385 BuildPlatform=m68k-unknown-openbsd
386 HostPlatform_CPP='m68k_unknown_openbsd'
388 HostVendor_CPP='unknown'
392 HostPlatform=m68k-unknown-netbsd
393 TargetPlatform=m68k-unknown-netbsd
394 BuildPlatform=m68k-unknown-netbsd
395 HostPlatform_CPP='m68k_unknown_netbsd'
397 HostVendor_CPP='unknown'
401 HostPlatform=m68k-sun-sunos4
402 TargetPlatform=m68k-sun-sunos4 #hack
403 BuildPlatform=m68k-sun-sunos4 #hack
404 HostPlatform_CPP='m68k_sun_sunos4'
410 HostPlatform=m88k-unknown-openbsd
411 TargetPlatform=m88k-unknown-openbsd
412 BuildPlatform=m88k-unknown-openbsd
413 HostPlatform_CPP='m88k_unknown_openbsd'
415 HostVendor_CPP='unknown'
419 HostPlatform=mips-unknown-linux # hack again
420 TargetPlatform=mips-unknown-linux
421 BuildPlatform=mips-unknown-linux
422 HostPlatform_CPP='mips_unknown_linux'
424 HostVendor_CPP='unknown'
428 HostPlatform=mipsel-unknown-linux # hack again
429 TargetPlatform=mipsel-unknown-linux
430 BuildPlatform=mipsel-unknown-linux
431 HostPlatform_CPP='mipsel_unknown_linux'
432 HostArch_CPP='mipsel'
433 HostVendor_CPP='unknown'
437 HostPlatform_CPP='mips_dec_ultrix'
438 HostArch_CPP='mipsel' # NB a little different
443 HostPlatform=mips-sgi-irix
444 TargetPlatform=mips-sgi-irix #hack
445 BuildPlatform=mips-sgi-irix #hack
446 HostPlatform_CPP='mips_sgi_irix'
447 HostArch_CPP='mipseb' # NB a little different
452 HostPlatform=rs6000-ibm-aix
453 TargetPlatform=rs6000-ibm-aix #hack
454 BuildPlatform=rs6000-ibm-aix #hack
455 HostPlatform_CPP='rs6000_ibm_aix'
456 HostArch_CPP='rs6000'
461 HostPlatform=powerpc-ibm-aix
462 TargetPlatform=powerpc-ibm-aix #hack
463 BuildPlatform=powerpc-ibm-aix #hack
464 HostPlatform_CPP='powerpc_ibm_aix'
465 HostArch_CPP='powerpc'
469 powerpc-apple-darwin*)
470 HostPlatform=powerpc-apple-darwin
471 TargetPlatform=powerpc-apple-darwin #hack
472 BuildPlatform=powerpc-apple-darwin #hack
473 HostPlatform_CPP='powerpc_apple_darwin'
474 HostArch_CPP='powerpc'
475 HostVendor_CPP='apple'
478 powerpc-unknown-linux*)
479 HostPlatform=powerpc-unknown-linux
480 TargetPlatform=powerpc-unknown-linux
481 BuildPlatform=powerpc-unknown-linux
482 HostPlatform_CPP='powerpc_unknown_linux'
483 HostArch_CPP='powerpc'
484 HostVendor_CPP='unknown'
487 powerpc-unknown-openbsd*)
488 HostPlatform=powerpc-unknown-openbsd
489 TargetPlatform=powerpc-unknown-openbsd
490 BuildPlatform=powerpc-unknown-openbsd
491 HostPlatform_CPP='powerpc_unknown_openbsd'
492 HostArch_CPP='powerpc'
493 HostVendor_CPP='unknown'
496 powerpc64-unknown-linux*)
497 HostPlatform=powerpc64-unknown-linux
498 TargetPlatform=powerpc64-unknown-linux
499 BuildPlatform=powerpc64-unknown-linux
500 HostPlatform_CPP='powerpc64_unknown_linux'
501 HostArch_CPP='powerpc64'
502 HostVendor_CPP='unknown'
507 HostPlatform=s390-ibm-linux
508 TargetPlatform=s390-ibm-linux #hack
509 BuildPlatform=s390-ibm-linux #hack
510 HostPlatform_CPP='s390_ibm_linux'
516 HostPlatform=sparc-sun-sunos4
517 TargetPlatform=sparc-sun-sunos4 #hack
518 BuildPlatform=sparc-sun-sunos4 #hack
519 HostPlatform_CPP='sparc_sun_sunos4'
525 HostPlatform=sparc-sun-solaris2
526 TargetPlatform=sparc-sun-solaris2 #hack
527 BuildPlatform=sparc-sun-solaris2 #hack
528 HostPlatform_CPP='sparc_sun_solaris2'
531 HostOS_CPP='solaris2'
534 HostPlatform=sparc-unknown-linux
535 TargetPlatform=sparc-unknown-linux
536 BuildPlatform=sparc-unknown-linux
537 HostPlatform_CPP='sparc_unknown_linux'
539 HostVendor_CPP='unknown'
543 HostPlatform=sparc-unknown-openbsd
544 TargetPlatform=sparc-unknown-openbsd
545 BuildPlatform=sparc-unknown-openbsd
546 HostPlatform_CPP='sparc_unknown_openbsd'
548 HostVendor_CPP='unknown'
552 HostPlatform=sparc64-unknown-openbsd
553 TargetPlatform=sparc64-unknown-openbsd
554 BuildPlatform=sparc64-unknown-openbsd
555 HostPlatform_CPP='sparc64_unknown_openbsd'
556 HostArch_CPP='sparc64'
557 HostVendor_CPP='unknown'
561 HostPlatform=vax-unknown-openbsd
562 TargetPlatform=vax-unknown-openbsd
563 BuildPlatform=vax-unknown-openbsd
564 HostPlatform_CPP='vax_unknown_openbsd'
566 HostVendor_CPP='unknown'
570 echo "Unrecognised platform: $HostPlatform"
574 echo "Canonicalised to: $HostPlatform"
575 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
576 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
578 BuildPlatform_CPP=$HostPlatform_CPP
579 TargetPlatform_CPP=$HostPlatform_CPP
580 BuildArch_CPP=$HostArch_CPP
581 TargetArch_CPP=$HostArch_CPP
582 BuildOS_CPP=$HostOS_CPP
584 TargetOS_CPP=$HostOS_CPP
585 BuildVendor_CPP=$HostVendor_CPP
586 TargetVendor_CPP=$HostVendor_CPP
588 AC_SUBST(BuildPlatform)
589 AC_SUBST(HostPlatform)
590 AC_SUBST(TargetPlatform)
591 AC_SUBST(HostPlatform_CPP)
592 AC_SUBST(BuildPlatform_CPP)
593 AC_SUBST(TargetPlatform_CPP)
595 AC_SUBST(HostArch_CPP)
596 AC_SUBST(BuildArch_CPP)
597 AC_SUBST(TargetArch_CPP)
600 AC_SUBST(HostOS_Full)
601 AC_SUBST(BuildOS_CPP)
602 AC_SUBST(TargetOS_CPP)
604 AC_SUBST(HostVendor_CPP)
605 AC_SUBST(BuildVendor_CPP)
606 AC_SUBST(TargetVendor_CPP)
610 dnl --------------------------------------------------------------
611 dnl * Calculate absolute path to build tree
612 dnl --------------------------------------------------------------
614 AC_MSG_CHECKING(for path to top of build tree)
618 dnl Remove common automounter nonsense
620 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
622 dnl Find 'hardtop_plat', the native format for 'hardtop'
623 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes
626 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert
627 dnl /cygdrive/c/foo to c:/foo but we must not do that if we
628 dnl aren't building using Cygwin (notably msys), because
629 dnl cygpath doesn't exist. It seems that 'bash' sets
630 dnl OSTYPE to 'cygwin' or 'msys' respectively, but cygwin's
631 dnl 'sh' does not. So we hackily assume that if the shell
632 dnl hasn't set it to 'msys' then we must be in Cygwin.
635 dnl The Right Thing is probably to test $BuildPlatform
636 dnl instead, but we are sloppy about setting that correctly
637 dnl at the moment, so we just work around for now.
639 dnl The quotes round "$(OSTYPE)" are essential, for the
640 dnl Cygwin-sh case where OSTYPE is not set.
641 case $HostPlatform in
642 i386-unknown-mingw32 | i386-unknown-cygwin32)
643 if test "${OSTYPE}" != "msys"
645 # convert $hardtop to a path that mingw will understand too
646 cyghardtop=${hardtop}
647 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
648 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
650 dnl OK, so we're in the MSYS case. hardtop looks like /c/....
651 dnl We want to make hardtop_plat into c:/...
652 dnl Stop using [] for quotes temporarily, so we can use [] in the sed regexp
654 hardtop_plat=`echo ${hardtop} | sed -e 's@^/\\([a-zA-Z]\\)/@\\1:/@g'`
659 hardtop_plat=${hardtop}
663 AC_SUBST(hardtop_plat)
665 AC_MSG_RESULT(${hardtop})
667 # We don't support building in directories with spaces.
669 *' '*) AC_MSG_ERROR([
670 The build system does not support building in a directory containing
671 space characters. Suggestion: move the build tree somewhere else.])
675 dnl --------------------------------------------------------------
676 dnl * Project specific configuration options
677 dnl --------------------------------------------------------------
678 dnl What follows is a bunch of options that can either be configured
679 dnl through command line options to the configure script or by
680 dnl supplying defns in the build tree's mk/build.mk. Having the option to
681 dnl use either is considered a Feature.
683 dnl ** What command to use to compile compiler sources ?
684 dnl --------------------------------------------------------------
687 [AC_HELP_STRING([--with-ghc=ARG],
688 [Use ARG as the path to GHC [default=autodetect]])],
689 [WithGhc="$withval"],
690 [if test "$GHC" = ""; then
691 AC_PATH_PROG([GHC], [ghc])
697 [AC_HELP_STRING([--with-hc=ARG],
698 [Use ARG as the path to the compiler for compiling ordinary
699 Haskell code (default= value of --with-ghc)])],
705 if test "$WithGhc" != ""; then
706 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
707 AC_SUBST(GhcVersion)dnl
708 AC_SUBST(GhcMajVersion)dnl
709 AC_SUBST(GhcMinVersion)dnl
710 AC_SUBST(GhcPatchLevel)dnl
711 GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
712 GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
713 if test $GhcCanonVersion -ge 504; then ghc_ge_504=YES; else ghc_ge_504=NO; fi
714 if test $GhcCanonVersion -ge 601; then ghc_ge_601=YES; else ghc_ge_601=NO; fi
715 if test $GhcCanonVersion -ge 602; then ghc_ge_602=YES; else ghc_ge_602=NO; fi
716 if test $GhcCanonVersion -ge 603; then ghc_ge_603=YES; else ghc_ge_603=NO; fi
717 if test $GhcCanonVersion -ge 605; then ghc_ge_605=YES; else ghc_ge_605=NO; fi
718 AC_SUBST(ghc_ge_504)dnl
719 AC_SUBST(ghc_ge_601)dnl
720 AC_SUBST(ghc_ge_602)dnl
721 AC_SUBST(ghc_ge_603)dnl
722 AC_SUBST(ghc_ge_605)dnl
725 # Check whether this GHC has readline installed
728 AC_PATH_PROGS(NHC,nhc nhc98)
729 AC_PATH_PROG(HBC,hbc)
731 dnl ** Which gcc to use?
732 dnl --------------------------------------------------------------
734 [AC_HELP_STRING([--with-gcc=ARG],
735 [Use ARG as the path to GCC [default=autodetect]])],
736 [WhatGccIsCalled="$withval"
737 if test "x$HostPlatform" = "xi386-unknown-mingw32"
739 if test "${OSTYPE}" != "msys"
741 # Canonicalise to <drive>:/path/to/gcc
742 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
748 [WhatGccIsCalled="gcc"]
750 AC_SUBST(WhatGccIsCalled)
752 dnl ** Which ld to use?
753 dnl --------------------------------------------------------------
755 [AC_HELP_STRING([--with-ld=ARG],
756 [Use ARG as the path to LD [default=autodetect]])],
757 [if test "x$HostPlatform" = "xi386-unknown-mingw32"
759 if test "${OSTYPE}" != "msys"
761 # Canonicalise to <drive>:/path/to/ld
762 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
771 dnl ** Booting from .hc files?
772 dnl --------------------------------------------------------------
773 AC_ARG_ENABLE(hc-boot,
774 [AC_HELP_STRING([--enable-hc-boot],
775 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
776 (This option is mostly of interest to porters.) [default=no]])],
777 [ if test x"$enableval" = x"yes"; then
785 AC_SUBST(BootingFromHc)
787 dnl ** Booting from unregisterised .hc files?
788 dnl --------------------------------------------------------------
789 AC_ARG_ENABLE(hc-boot-unregisterised,
790 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
791 [ With --enable-hc-boot, treat the intermediate .hc files as
792 unregisterised rather than registerised code.
793 (This option is mostly of interest to porters.) [default=no]])],
794 [ if test x"$enableval" = x"yes"; then
795 BootingFromUnregisterisedHc=YES
797 BootingFromUnregisterisedHc=NO
800 [BootingFromUnregisterisedHc=NO]
802 AC_SUBST(BootingFromUnregisterisedHc)
804 if test "$BootingFromHc" = "NO"; then
805 if test "$BootingFromUnregisterisedHc" = "YES"; then
806 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
810 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
811 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/compiler"; then
812 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
815 dnl ** Enable the construction of Win32 DLLs?
816 dnl --------------------------------------------------------------
818 dnl [ The ability to build the RTS and libraries as separate DLLs used
819 dnl to be supported, but isn't currently (updates to the RTS, compiler
820 dnl and build system would be required to bring it back again.)
821 dnl Hence, exposing it as an option is false advertisement, so better
822 dnl disable it to avoid confusion (but leave it commented-out rather
823 dnl than removed in order to remind ourselves to bring back the
824 dnl feature at some stage.) ]
826 dnl AC_ARG_ENABLE(win32-dlls,
827 dnl [ --enable-win32-dlls
828 dnl If on a Win32 platform running mingw32/cygwin, enable the
829 dnl construction of DLLs containing ghc-compiled code.
832 dnl case $HostOS_CPP in
835 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
839 dnl EnableWin32DLLs=YES
841 dnl [EnableWin32DLLs=NO]
843 dnl AC_SUBST(EnableWin32DLLs)
844 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
845 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
848 dnl ** Enable the building of the ObjectIO?
849 dnl --------------------------------------------------------------
850 AC_ARG_ENABLE(objectio,
851 [AC_HELP_STRING([--enable-objectio],
852 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
853 [ if test x"$enableval" = x"yes"; then
854 GhcLibsWithObjectIO=YES
856 GhcLibsWithObjectIO=NO
859 [GhcLibsWithObjectIO=NO]
861 AC_SUBST(GhcLibsWithObjectIO)
863 dnl ** .NET interop support?
864 dnl --------------------------------------------------------------
865 AC_ARG_ENABLE(dotnet,
866 [AC_HELP_STRING([--enable-dotnet],
867 [Build .NET interop layer. [default=no]])],
868 [ if test x"$enableval" = x"yes"; then
869 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
875 AC_SUBST(DotnetSupport)
877 dnl --------------------------------------------------------------
878 dnl End of configure script option section
879 dnl --------------------------------------------------------------
882 dnl --------------------------------------------------------------
883 dnl * General configuration checks
884 dnl --------------------------------------------------------------
886 dnl ** Can the unix package be built?
887 dnl --------------------------------------------------------------
889 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
894 AC_SUBST([GhcLibsWithUnix])
899 dnl ** look for `perl', but only in /bin on Windows
902 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
903 if test -z "$PerlCmd"; then
904 echo "You must install the version of Perl shipped with GHC"
905 echo "(or a compatible one) in /bin."
910 AC_PATH_PROG(PerlCmd,perl)
911 if test -z "$PerlCmd"; then
912 echo "You must install perl before you can continue"
913 echo "Perhaps it is already installed, but not in your PATH?"
916 FPTOOLS_CHECK_PERL_VERSION
921 dnl ** does #! path/to/perl work? (sometimes it's too long...)
924 dnl ** check for Python
925 AC_PATH_PROG(PythonCmd,python)
927 dnl ** look for GCC and find out which version
928 dnl Figure out which C compiler to use. Gcc is preferred.
929 dnl If gcc, make sure it's at least 2.1
933 FP_GCC_NEEDS_NO_OMIT_LFPTR
934 FP_GCC_HAS_NO_UNIT_AT_A_TIME
937 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
940 dnl ** Without optimization some INLINE trickery fails for GHCi
943 dnl ** Try to add -mno-cygwin to the C compiler options
944 FP_CHECK_FLAG([-mno-cygwin], [
945 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
946 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
947 AC_SUBST(SRC_CC_OPTS)
949 dnl ** figure out how to do context diffs
952 dnl ** Find find command (for Win32's benefit)
955 dnl ** Find sort command (for the benefit of Win32 environs)
958 dnl ** figure out how to do a BSD-ish install
960 dnl Let's make sure install-sh is executable here. If we got it from
961 dnl a darcs repo, it might not be (see bug #978).
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.])
967 dnl ** how to invoke `ar' and `ranlib'
968 FP_PROG_AR_NEEDS_RANLIB
969 FP_PROG_AR_SUPPORTS_INPUT
971 dnl ** Check to see whether ln -s works
975 dnl ** Find the path to sed
976 AC_PATH_PROG(SedCmd,sed)
979 dnl ** check for time command
980 AC_PATH_PROG(TimeCmd,time)
983 dnl if GNU tar is named gtar, look for it first.
984 AC_PATH_PROGS(TarCmd,gtar tar,tar)
986 dnl ** check for DocBook toolchain
988 FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl])
991 dnl ** check for ghc-pkg command
994 AC_ARG_WITH(greencard,
995 [AC_HELP_STRING([--with-greencard=ARG],
996 [Use ARG as the path to greencard [default=autodetct]])],
998 GreenCardCmd=$withval;
999 FPTOOLS_GREENCARD(3.00)
1003 dnl ** check for installed happy binary + version
1004 dnl (don't do it if we're booting from .hc files though.)
1005 if test "$BootingFromHc" = "NO"; then
1009 dnl ** check for installed haddock
1012 dnl ** check for installed alex binary + version
1013 dnl (don't do it if we're booting from .hc files though.)
1014 if test "$BootingFromHc" = "NO"; then
1018 dnl --------------------------------------------------
1019 dnl ### program checking section ends here ###
1020 dnl --------------------------------------------------
1022 dnl --------------------------------------------------
1023 dnl * Platform header file and syscall feature tests
1024 dnl ### checking the state of the local header files and syscalls ###
1026 dnl ** check for full ANSI header (.h) files
1029 dnl ** Enable large file support. NB. do this before testing the type of
1030 dnl off_t, because it will affect the result of that test.
1033 dnl ** check for specific header (.h) files that we are interested in
1034 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])
1036 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
1037 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
1039 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
1040 GhcLibsWithReadline=YES
1041 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
1043 GhcLibsWithReadline=NO
1044 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
1046 AC_SUBST(GhcLibsWithReadline)
1048 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
1051 dnl ** do we have long longs?
1052 AC_CHECK_TYPES([long long])
1054 dnl ** what are the sizes of various types
1055 AC_CHECK_SIZEOF(char, 1)
1056 AC_CHECK_SIZEOF(double, 8)
1057 AC_CHECK_SIZEOF(float, 4)
1058 AC_CHECK_SIZEOF(int, 4)
1059 AC_CHECK_SIZEOF(long, 4)
1060 if test "$ac_cv_type_long_long" = yes; then
1061 AC_CHECK_SIZEOF(long long, 8)
1063 AC_CHECK_SIZEOF(short, 2)
1064 AC_CHECK_SIZEOF(unsigned char, 1)
1065 AC_CHECK_SIZEOF(unsigned int, 4)
1066 AC_CHECK_SIZEOF(unsigned long, 4)
1067 if test "$ac_cv_type_long_long" = yes; then
1068 AC_CHECK_SIZEOF(unsigned long long, 8)
1070 AC_CHECK_SIZEOF(unsigned short, 2)
1071 AC_CHECK_SIZEOF(void *, 4)
1073 dnl ** what are alignment constraints on various types
1074 FP_CHECK_ALIGNMENT(char)
1075 FP_CHECK_ALIGNMENT(double)
1076 FP_CHECK_ALIGNMENT(float)
1077 FP_CHECK_ALIGNMENT(int)
1078 FP_CHECK_ALIGNMENT(long)
1079 if test "$ac_cv_type_long_long" = yes; then
1080 FP_CHECK_ALIGNMENT(long long)
1082 FP_CHECK_ALIGNMENT(short)
1083 FP_CHECK_ALIGNMENT(unsigned char)
1084 FP_CHECK_ALIGNMENT(unsigned int)
1085 FP_CHECK_ALIGNMENT(unsigned long)
1086 if test "$ac_cv_type_long_long" = yes; then
1087 FP_CHECK_ALIGNMENT(unsigned long long)
1089 FP_CHECK_ALIGNMENT(unsigned short)
1090 FP_CHECK_ALIGNMENT(void *)
1092 FP_CHECK_FUNC([WinExec],
1093 [@%:@include <windows.h>], [WinExec("",0)])
1095 FP_CHECK_FUNC([GetModuleFileName],
1096 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1098 dnl ** check return type of signal handlers
1099 dnl Foo: assumes we can use prototypes.
1100 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1101 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1102 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1103 dnl #include <signal.h>
1107 dnl void (*signal (int, void (*)(int)))(int);
1110 dnl [ac_cv_type_signal_handler=void_int],
1111 dnl [ac_cv_type_signal_handler=int_void])])
1112 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1113 dnl AC_DEFINE(VOID_INT_SIGNALS)
1116 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1118 if test "$ac_cv_type_signal" = void; then
1119 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).])
1122 dnl ** check for more functions
1123 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1124 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1125 dnl ** For ghc/rts/gmp:
1126 AC_CHECK_FUNCS([getpagesize])
1128 dnl ** check whether this machine has gmp3 installed
1129 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1130 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1131 HaveLibGmp=NO; LibGmp=not-installed))
1132 AC_SUBST(HaveLibGmp)
1135 dnl ** (Mac OS X only: check for GMP.framework)
1137 case $HostPlatform in
1139 AC_MSG_CHECKING([for GMP.framework])
1141 LIBS="-framework GMP"
1142 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1143 if test $HaveFrameworkGMP = YES; then
1144 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1147 AC_MSG_RESULT([$HaveFrameworkGMP])
1150 AC_SUBST(HaveFrameworkGMP)
1152 dnl ** check for mingwex library
1153 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1154 AC_SUBST(HaveLibMingwEx)
1156 if test $HaveLibMingwEx = YES ; then
1157 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1160 if test "$HaveLibGmp" = "NO"; then
1161 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1162 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1166 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1167 dnl the order of these tests matters: bfd needs liberty
1168 AC_CHECK_LIB(iberty, xmalloc)
1169 AC_CHECK_LIB(bfd, bfd_init)
1171 dnl ** check for math library
1172 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1173 if test x"$fp_libm_not_needed" = xdunno; then
1174 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1178 dnl ################################################################
1179 dnl Check for libraries
1180 dnl ################################################################
1182 dnl ** check whether we need -ldl to get dlopen()
1184 AC_CHECK_LIB(dl, dlopen,
1186 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1191 dnl --------------------------------------------------
1192 dnl * Miscellaneous feature tests
1193 dnl --------------------------------------------------
1195 dnl ** can we get alloca?
1198 dnl ** Working vfork?
1201 dnl ** determine whether or not const works
1204 dnl ** are we big endian?
1206 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
1208 dnl ** check for leading underscores in symbol names
1209 FP_LEADING_UNDERSCORE
1211 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1215 dnl ** check for Apple-style dead-stripping support
1216 dnl (.subsections-via-symbols assembler directive)
1219 AC_MSG_CHECKING(for .subsections_via_symbols)
1221 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1223 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1224 [Define to 1 if Apple-style dead-stripping is supported.])
1226 [AC_MSG_RESULT(no)])
1228 dnl *** check for GNU non-executable stack note support (ELF only)
1229 dnl (.section .note.GNU-stack,"",@progbits)
1231 AC_MSG_CHECKING(for GNU non-executable stack support)
1233 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1235 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1236 [Define to 1 if GNU non-executable stack notes are supported.])
1238 [AC_MSG_RESULT(no)])
1240 dnl ** check for librt
1241 AC_CHECK_LIB(rt, clock_gettime)
1242 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
1243 FP_CHECK_TIMER_CREATE
1245 dnl ** check for Apple's "interesting" long double compatibility scheme
1246 AC_MSG_CHECKING(for printf\$LDBLStub)
1247 AC_TRY_LINK_FUNC(printf\$LDBLStub,
1250 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1251 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1255 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1256 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1260 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1261 if test -n "$GTK_CONFIG"; then
1262 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1263 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1265 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1269 AC_SUBST([GTK_CONFIG])
1272 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
1273 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
1274 AC_SUBST(HavePapiLib)
1275 AC_SUBST(HavePapiHeader)
1277 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
1284 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1285 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])