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 AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args])
36 FP_SETUP_PROJECT_VERSION
38 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
39 AC_SUBST([release], [1])
41 # First off, a distrib sanity check..
42 AC_CONFIG_SRCDIR([mk/config.mk.in])
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.
49 # -------------------------------------------------------------------------
50 # Prepare to generate the following header files
53 AC_CONFIG_HEADER(mk/config.h)
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.."
61 dnl--------------------------------------------------------------------
62 dnl * Deal with arguments telling us gmp is somewhere odd
63 dnl--------------------------------------------------------------------
69 if test "x$gmp_libraries" != "xNONE"; then
70 LDFLAGS="-L$gmp_libraries $LDFLAGS"
71 GMP_LIB_DIRS=$gmp_libraries
73 if test "x$gmp_includes" != "xNONE"; then
74 CPPFLAGS="-I$gmp_includes $CPPFLAGS"
75 GMP_INCLUDE_DIRS=$gmp_includes
77 AC_SUBST(GMP_INCLUDE_DIRS)
78 AC_SUBST(GMP_LIB_DIRS)
80 dnl--------------------------------------------------------------------
81 dnl * Choose host(/target/build) platform
82 dnl--------------------------------------------------------------------
84 dnl Guess host/target/build platform(s) if necessary.
87 # "$host" defaults to "$target"
88 if test "x$host" = xNONE ; then
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
97 if test x"$TargetPlatform" != x"$HostPlatform" ; then
98 echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
104 # The following will be more difficult when we *are* cross-compiling.
105 # Suitable names to slam in *_CPP are in platform.h.in.
106 # We also record the architecture, vendor, and operating system (OS)
108 case $HostPlatform in
109 alpha*-dec-osf[[12]]*)
110 HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
111 TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
112 BuildPlatform=alpha-dec-osf1 # hack
113 HostPlatform_CPP='alpha_dec_osf1'
118 alpha*-dec-osf[[345]]*)
119 HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
120 TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
121 BuildPlatform=alpha-dec-osf3 # hack
122 HostPlatform_CPP='alpha_dec_osf3'
127 alpha*-unknown-linux*)
128 HostPlatform=alpha-unknown-linux
129 TargetPlatform=alpha-unknown-linux
130 BuildPlatform=alpha-unknown-linux
131 HostPlatform_CPP='alpha_unknown_linux'
133 HostVendor_CPP='unknown'
136 alpha*-unknown-freebsd*)
137 HostPlatform=alpha-unknown-freebsd
138 TargetPlatform=alpha-unknown-freebsd
139 BuildPlatform=alpha-unknown-freebsd
140 HostPlatform_CPP='alpha_unknown_freebsd'
142 HostVendor_CPP='unknown'
145 alpha*-unknown-openbsd*)
146 HostPlatform=alpha-unknown-openbsd
147 TargetPlatform=alpha-unknown-openbsd
148 BuildPlatform=alpha-unknown-openbsd
149 HostPlatform_CPP='alpha_unknown_openbsd'
151 HostVendor_CPP='unknown'
154 amd64-*-openbsd*|x86_64-*-openbsd*)
155 HostPlatform=x86_64-unknown-openbsd
156 TargetPlatform=x86_64-unknown-openbsd
157 BuildPlatform=x86_64-unknown-openbsd
158 HostPlatform_CPP='x86_64_unknown_openbsd'
159 HostArch_CPP='x86_64'
160 HostVendor_CPP='unknown'
164 HostPlatform=x86_64-unknown-freebsd
165 TargetPlatform=x86_64-unknown-freebsd
166 BuildPlatform=x86_64-unknown-freebsd
167 HostPlatform_CPP='x86_64_unknown_freebsd'
168 HostArch_CPP='x86_64'
169 HostVendor_CPP='unknown'
173 HostPlatform=arm-unknown-linux # hack again
174 TargetPlatform=arm-unknown-linux
175 BuildPlatform=arm-unknown-linux
176 HostPlatform_CPP='arm_unknown_linux'
178 HostVendor_CPP='unknown'
182 HostPlatform=arm-unknown-openbsd
183 TargetPlatform=arm-unknown-openbsd
184 BuildPlatform=arm-unknown-openbsd
185 HostPlatform_CPP='arm_unknown_openbsd'
187 HostVendor_CPP='unknown'
191 HostPlatform=hppa-unknown-linux # hack again
192 TargetPlatform=hppa-unknown-linux
193 BuildPlatform=hppa-unknown-linux
194 HostPlatform_CPP='hppa_unknown_linux'
196 HostVendor_CPP='unknown'
200 HostPlatform=hppa-unknown-openbsd # hack again
201 TargetPlatform=hppa-unknown-openbsd
202 BuildPlatform=hppa-unknown-openbsd
203 HostPlatform_CPP='hppa_unknown_openbsd'
205 HostVendor_CPP='unknown'
209 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
210 TargetPlatform=hppa1.1-hp-hpux
211 BuildPlatform=hppa1.1-hp-hpux
212 HostPlatform_CPP='hppa1_1_hp_hpux'
213 HostArch_CPP='hppa1_1'
217 i[[3456]]86-*-linuxaout*)
218 HostPlatform=i386-unknown-linuxaout # hack again
219 TargetPlatform=i386-unknown-linuxaout
220 BuildPlatform=i386-unknown-linuxaout
221 HostPlatform_CPP='i386_unknown_linuxaout'
223 HostVendor_CPP='unknown'
224 HostOS_CPP='linuxaout'
226 i[[3456]]86-*-linux*)
227 HostPlatform=i386-unknown-linux # hack again
228 TargetPlatform=i386-unknown-linux
229 BuildPlatform=i386-unknown-linux
230 HostPlatform_CPP='i386_unknown_linux'
232 HostVendor_CPP='unknown'
235 i[[3456]]86-*-kfreebsd*-gnu)
236 HostPlatform=i386-unknown-kfreebsdgnu # hack again
237 TargetPlatform=i386-unknown-kfreebsdgnu
238 BuildPlatform=i386-unknown-kfreebsdgnu
239 HostPlatform_CPP='i386_unknown_kfreebsdgnu'
241 HostVendor_CPP='unknown'
242 HostOS_CPP='kfreebsdgnu'
244 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
245 HostPlatform=i386-unknown-freebsd # hack again
246 TargetPlatform=i386-unknown-freebsd
247 BuildPlatform=i386-unknown-freebsd
248 HostPlatform_CPP='i386_unknown_freebsd'
250 HostVendor_CPP='unknown'
253 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
254 HostPlatform=i386-unknown-freebsd2 # hack again
255 TargetPlatform=i386-unknown-freebsd2
256 BuildPlatform=i386-unknown-freebsd2
257 HostPlatform_CPP='i386_unknown_freebsd2'
259 HostVendor_CPP='unknown'
260 HostOS_CPP='freebsd2'
262 i[[3456]]86-*-netbsd*)
263 HostPlatform=i386-unknown-netbsd # hack again
264 TargetPlatform=i386-unknown-netbsd
265 BuildPlatform=i386-unknown-netbsd
266 HostPlatform_CPP='i386_unknown_netbsd'
268 HostVendor_CPP='unknown'
271 i[[3456]]86-*-openbsd*)
272 HostPlatform=i386-unknown-openbsd # hack again
273 TargetPlatform=i386-unknown-openbsd
274 BuildPlatform=i386-unknown-openbsd
275 HostPlatform_CPP='i386_unknown_openbsd'
277 HostVendor_CPP='unknown'
280 i[[3456]]86-*-solaris2*)
281 HostPlatform=i386-unknown-solaris2 # hack again
282 TargetPlatform=i386-unknown-solaris2
283 BuildPlatform=i386-unknown-solaris2
284 HostPlatform_CPP='i386_unknown_solaris2'
286 HostVendor_CPP='unknown'
287 HostOS_CPP='solaris2'
289 i[[3456]]86-*-cygwin*)
290 HostPlatform=i386-unknown-cygwin32 # hack again
291 TargetPlatform=i386-unknown-cygwin32
292 BuildPlatform=i386-unknown-cygwin32
293 HostPlatform_CPP='i386_unknown_cygwin32'
295 HostVendor_CPP='unknown'
296 HostOS_CPP='cygwin32'
299 i[[3456]]86-*-mingw32*)
300 HostPlatform=i386-unknown-mingw32 # hack again
301 TargetPlatform=i386-unknown-mingw32
302 BuildPlatform=i386-unknown-mingw32
303 HostPlatform_CPP='i386_unknown_mingw32'
305 HostVendor_CPP='unknown'
309 i[[3456]]86-apple-darwin*)
310 HostPlatform=i386-apple-darwin
311 TargetPlatform=i386-apple-darwin #hack
312 BuildPlatform=i386-apple-darwin #hack
313 HostPlatform_CPP='i386_apple_darwin'
315 HostVendor_CPP='apple'
319 HostPlatform=i386-unknown-gnu
320 TargetPlatform=i386-unknown-gnu
321 BuildPlatform=i386-unknown-gnu
322 HostPlatform_CPP=i386_unknown_gnu
324 HostVendor_CPP=unknown
328 HostPlatform=ia64-unknown-linux # hack again
329 TargetPlatform=ia64-unknown-linux
330 BuildPlatform=ia64-unknown-linux
331 HostPlatform_CPP='ia64_unknown_linux'
333 HostVendor_CPP='unknown'
337 HostPlatform=x86_64-unknown-linux
338 TargetPlatform=x86_64-unknown-linux
339 BuildPlatform=x86_64-unknown-linux
340 HostPlatform_CPP='x86_64_unknown_linux'
341 HostArch_CPP='x86_64'
342 HostVendor_CPP='unknown'
345 x86_64-apple-darwin*)
346 HostPlatform=x86_64-apple-darwin
347 TargetPlatform=x86_64-apple-darwin
348 BuildPlatform=x86_64-apple-darwin
349 HostPlatform_CPP='x86_64_apple_darwin'
350 HostArch_CPP='x86_64'
351 HostVendor_CPP='apple'
355 HostPlatform=m68k-unknown-linux # hack again
356 TargetPlatform=m68k-unknown-linux
357 BuildPlatform=m68k-unknown-linux
358 HostPlatform_CPP='m68k_unknown_linux'
360 HostVendor_CPP='unknown'
364 HostPlatform_CPP='m68k_next_nextstep2'
366 HostVendor_CPP='next'
367 HostOS_CPP='nextstep2'
370 HostPlatform_CPP='m68k_next_nextstep3'
372 HostVendor_CPP='next'
373 HostOS_CPP='nextstep3'
375 i[[3456]]86-next-nextstep3)
376 HostPlatform=i386-next-nextstep3 # hack again
377 TargetPlatform=i386-next-nextstep3
378 BuildPlatform=i386-next-nextstep3
379 HostPlatform_CPP='i386_next_nextstep3'
381 HostVendor_CPP='next'
382 HostOS_CPP='nextstep3'
385 HostPlatform=m68k-unknown-openbsd
386 TargetPlatform=m68k-unknown-openbsd
387 BuildPlatform=m68k-unknown-openbsd
388 HostPlatform_CPP='m68k_unknown_openbsd'
390 HostVendor_CPP='unknown'
394 HostPlatform=m68k-unknown-netbsd
395 TargetPlatform=m68k-unknown-netbsd
396 BuildPlatform=m68k-unknown-netbsd
397 HostPlatform_CPP='m68k_unknown_netbsd'
399 HostVendor_CPP='unknown'
403 HostPlatform=m68k-sun-sunos4
404 TargetPlatform=m68k-sun-sunos4 #hack
405 BuildPlatform=m68k-sun-sunos4 #hack
406 HostPlatform_CPP='m68k_sun_sunos4'
412 HostPlatform=m88k-unknown-openbsd
413 TargetPlatform=m88k-unknown-openbsd
414 BuildPlatform=m88k-unknown-openbsd
415 HostPlatform_CPP='m88k_unknown_openbsd'
417 HostVendor_CPP='unknown'
421 HostPlatform=mips-unknown-linux # hack again
422 TargetPlatform=mips-unknown-linux
423 BuildPlatform=mips-unknown-linux
424 HostPlatform_CPP='mips_unknown_linux'
426 HostVendor_CPP='unknown'
430 HostPlatform=mipsel-unknown-linux # hack again
431 TargetPlatform=mipsel-unknown-linux
432 BuildPlatform=mipsel-unknown-linux
433 HostPlatform_CPP='mipsel_unknown_linux'
434 HostArch_CPP='mipsel'
435 HostVendor_CPP='unknown'
439 HostPlatform_CPP='mips_dec_ultrix'
440 HostArch_CPP='mipsel' # NB a little different
445 HostPlatform=mips-sgi-irix
446 TargetPlatform=mips-sgi-irix #hack
447 BuildPlatform=mips-sgi-irix #hack
448 HostPlatform_CPP='mips_sgi_irix'
449 HostArch_CPP='mipseb' # NB a little different
454 HostPlatform=rs6000-ibm-aix
455 TargetPlatform=rs6000-ibm-aix #hack
456 BuildPlatform=rs6000-ibm-aix #hack
457 HostPlatform_CPP='rs6000_ibm_aix'
458 HostArch_CPP='rs6000'
463 HostPlatform=powerpc-ibm-aix
464 TargetPlatform=powerpc-ibm-aix #hack
465 BuildPlatform=powerpc-ibm-aix #hack
466 HostPlatform_CPP='powerpc_ibm_aix'
467 HostArch_CPP='powerpc'
471 powerpc-apple-darwin*)
472 HostPlatform=powerpc-apple-darwin
473 TargetPlatform=powerpc-apple-darwin #hack
474 BuildPlatform=powerpc-apple-darwin #hack
475 HostPlatform_CPP='powerpc_apple_darwin'
476 HostArch_CPP='powerpc'
477 HostVendor_CPP='apple'
480 powerpc-unknown-linux*)
481 HostPlatform=powerpc-unknown-linux
482 TargetPlatform=powerpc-unknown-linux
483 BuildPlatform=powerpc-unknown-linux
484 HostPlatform_CPP='powerpc_unknown_linux'
485 HostArch_CPP='powerpc'
486 HostVendor_CPP='unknown'
489 powerpc-unknown-openbsd*)
490 HostPlatform=powerpc-unknown-openbsd
491 TargetPlatform=powerpc-unknown-openbsd
492 BuildPlatform=powerpc-unknown-openbsd
493 HostPlatform_CPP='powerpc_unknown_openbsd'
494 HostArch_CPP='powerpc'
495 HostVendor_CPP='unknown'
498 powerpc64-unknown-linux*)
499 HostPlatform=powerpc64-unknown-linux
500 TargetPlatform=powerpc64-unknown-linux
501 BuildPlatform=powerpc64-unknown-linux
502 HostPlatform_CPP='powerpc64_unknown_linux'
503 HostArch_CPP='powerpc64'
504 HostVendor_CPP='unknown'
509 HostPlatform=s390-ibm-linux
510 TargetPlatform=s390-ibm-linux #hack
511 BuildPlatform=s390-ibm-linux #hack
512 HostPlatform_CPP='s390_ibm_linux'
518 HostPlatform=sparc-sun-sunos4
519 TargetPlatform=sparc-sun-sunos4 #hack
520 BuildPlatform=sparc-sun-sunos4 #hack
521 HostPlatform_CPP='sparc_sun_sunos4'
527 HostPlatform=sparc-sun-solaris2
528 TargetPlatform=sparc-sun-solaris2 #hack
529 BuildPlatform=sparc-sun-solaris2 #hack
530 HostPlatform_CPP='sparc_sun_solaris2'
533 HostOS_CPP='solaris2'
536 HostPlatform=sparc-unknown-linux
537 TargetPlatform=sparc-unknown-linux
538 BuildPlatform=sparc-unknown-linux
539 HostPlatform_CPP='sparc_unknown_linux'
541 HostVendor_CPP='unknown'
545 HostPlatform=sparc-unknown-openbsd
546 TargetPlatform=sparc-unknown-openbsd
547 BuildPlatform=sparc-unknown-openbsd
548 HostPlatform_CPP='sparc_unknown_openbsd'
550 HostVendor_CPP='unknown'
554 HostPlatform=sparc64-unknown-openbsd
555 TargetPlatform=sparc64-unknown-openbsd
556 BuildPlatform=sparc64-unknown-openbsd
557 HostPlatform_CPP='sparc64_unknown_openbsd'
558 HostArch_CPP='sparc64'
559 HostVendor_CPP='unknown'
563 HostPlatform=vax-unknown-openbsd
564 TargetPlatform=vax-unknown-openbsd
565 BuildPlatform=vax-unknown-openbsd
566 HostPlatform_CPP='vax_unknown_openbsd'
568 HostVendor_CPP='unknown'
572 echo "Unrecognised platform: $HostPlatform"
576 echo "Canonicalised to: $HostPlatform"
577 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
578 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
580 BuildPlatform_CPP=$HostPlatform_CPP
581 TargetPlatform_CPP=$HostPlatform_CPP
582 BuildArch_CPP=$HostArch_CPP
583 TargetArch_CPP=$HostArch_CPP
584 BuildOS_CPP=$HostOS_CPP
586 TargetOS_CPP=$HostOS_CPP
587 BuildVendor_CPP=$HostVendor_CPP
588 TargetVendor_CPP=$HostVendor_CPP
590 AC_SUBST(BuildPlatform)
591 AC_SUBST(HostPlatform)
592 AC_SUBST(TargetPlatform)
593 AC_SUBST(HostPlatform_CPP)
594 AC_SUBST(BuildPlatform_CPP)
595 AC_SUBST(TargetPlatform_CPP)
597 AC_SUBST(HostArch_CPP)
598 AC_SUBST(BuildArch_CPP)
599 AC_SUBST(TargetArch_CPP)
602 AC_SUBST(HostOS_Full)
603 AC_SUBST(BuildOS_CPP)
604 AC_SUBST(TargetOS_CPP)
606 AC_SUBST(HostVendor_CPP)
607 AC_SUBST(BuildVendor_CPP)
608 AC_SUBST(TargetVendor_CPP)
612 dnl --------------------------------------------------------------
613 dnl * Calculate absolute path to build tree
614 dnl --------------------------------------------------------------
616 AC_MSG_CHECKING(for path to top of build tree)
620 dnl Remove common automounter nonsense
622 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
624 dnl Find 'hardtop_plat', the native format for 'hardtop'
625 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes
628 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert
629 dnl /cygdrive/c/foo to c:/foo but we must not do that if we
630 dnl aren't building using Cygwin (notably msys), because
631 dnl cygpath doesn't exist. It seems that 'bash' sets
632 dnl OSTYPE to 'cygwin' or 'msys' respectively, but cygwin's
633 dnl 'sh' does not. So we hackily assume that if the shell
634 dnl hasn't set it to 'msys' then we must be in Cygwin.
637 dnl The Right Thing is probably to test $BuildPlatform
638 dnl instead, but we are sloppy about setting that correctly
639 dnl at the moment, so we just work around for now.
641 dnl The quotes round "$(OSTYPE)" are essential, for the
642 dnl Cygwin-sh case where OSTYPE is not set.
643 case $HostPlatform in
644 i386-unknown-mingw32 | i386-unknown-cygwin32)
645 if test "${OSTYPE}" != "msys"
647 # convert $hardtop to a path that mingw will understand too
648 cyghardtop=${hardtop}
649 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
650 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
652 dnl OK, so we're in the MSYS case. hardtop looks like /c/....
653 dnl We want to make hardtop_plat into c:/...
654 dnl Stop using [] for quotes temporarily, so we can use [] in the sed regexp
656 hardtop_plat=`echo ${hardtop} | sed -e 's@^/\\([a-zA-Z]\\)/@\\1:/@g'`
661 hardtop_plat=${hardtop}
665 AC_SUBST(hardtop_plat)
667 AC_MSG_RESULT(${hardtop})
669 # We don't support building in directories with spaces.
671 *' '*) AC_MSG_ERROR([
672 The build system does not support building in a directory containing
673 space characters. Suggestion: move the build tree somewhere else.])
677 dnl --------------------------------------------------------------
678 dnl * Project specific configuration options
679 dnl --------------------------------------------------------------
680 dnl What follows is a bunch of options that can either be configured
681 dnl through command line options to the configure script or by
682 dnl supplying defns in the build tree's mk/build.mk. Having the option to
683 dnl use either is considered a Feature.
685 dnl ** What command to use to compile compiler sources ?
686 dnl --------------------------------------------------------------
689 [AC_HELP_STRING([--with-ghc=ARG],
690 [Use ARG as the path to GHC [default=autodetect]])],
691 [WithGhc="$withval"],
692 [if test "$GHC" = ""; then
693 AC_PATH_PROG([GHC], [ghc])
699 [AC_HELP_STRING([--with-hc=ARG],
700 [Use ARG as the path to the compiler for compiling ordinary
701 Haskell code (default= value of --with-ghc)])],
707 if test "$WithGhc" != ""; then
708 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
709 AC_SUBST(GhcVersion)dnl
710 AC_SUBST(GhcMajVersion)dnl
711 AC_SUBST(GhcMinVersion)dnl
712 AC_SUBST(GhcPatchLevel)dnl
713 GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
714 GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
715 if test $GhcCanonVersion -ge 504; then ghc_ge_504=YES; else ghc_ge_504=NO; fi
716 if test $GhcCanonVersion -ge 601; then ghc_ge_601=YES; else ghc_ge_601=NO; fi
717 if test $GhcCanonVersion -ge 602; then ghc_ge_602=YES; else ghc_ge_602=NO; fi
718 if test $GhcCanonVersion -ge 603; then ghc_ge_603=YES; else ghc_ge_603=NO; fi
719 if test $GhcCanonVersion -ge 605; then ghc_ge_605=YES; else ghc_ge_605=NO; fi
720 AC_SUBST(ghc_ge_504)dnl
721 AC_SUBST(ghc_ge_601)dnl
722 AC_SUBST(ghc_ge_602)dnl
723 AC_SUBST(ghc_ge_603)dnl
724 AC_SUBST(ghc_ge_605)dnl
727 # Check whether this GHC has readline installed
730 AC_PATH_PROGS(NHC,nhc nhc98)
731 AC_PATH_PROG(HBC,hbc)
733 dnl ** Which gcc to use?
734 dnl --------------------------------------------------------------
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"
741 if test "${OSTYPE}" != "msys"
743 # Canonicalise to <drive>:/path/to/gcc
744 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
750 [WhatGccIsCalled="gcc"]
752 AC_SUBST(WhatGccIsCalled)
754 dnl ** Which ld to use?
755 dnl --------------------------------------------------------------
757 [AC_HELP_STRING([--with-ld=ARG],
758 [Use ARG as the path to LD [default=autodetect]])],
759 [if test "x$HostPlatform" = "xi386-unknown-mingw32"
761 if test "${OSTYPE}" != "msys"
763 # Canonicalise to <drive>:/path/to/ld
764 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
773 dnl ** Booting from .hc files?
774 dnl --------------------------------------------------------------
775 AC_ARG_ENABLE(hc-boot,
776 [AC_HELP_STRING([--enable-hc-boot],
777 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
778 (This option is mostly of interest to porters.) [default=no]])],
779 [ if test x"$enableval" = x"yes"; then
787 AC_SUBST(BootingFromHc)
789 dnl ** Booting from unregisterised .hc files?
790 dnl --------------------------------------------------------------
791 AC_ARG_ENABLE(hc-boot-unregisterised,
792 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
793 [ With --enable-hc-boot, treat the intermediate .hc files as
794 unregisterised rather than registerised code.
795 (This option is mostly of interest to porters.) [default=no]])],
796 [ if test x"$enableval" = x"yes"; then
797 BootingFromUnregisterisedHc=YES
799 BootingFromUnregisterisedHc=NO
802 [BootingFromUnregisterisedHc=NO]
804 AC_SUBST(BootingFromUnregisterisedHc)
806 if test "$BootingFromHc" = "NO"; then
807 if test "$BootingFromUnregisterisedHc" = "YES"; then
808 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
812 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
813 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/compiler"; then
814 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
817 dnl ** Enable the construction of Win32 DLLs?
818 dnl --------------------------------------------------------------
820 dnl [ The ability to build the RTS and libraries as separate DLLs used
821 dnl to be supported, but isn't currently (updates to the RTS, compiler
822 dnl and build system would be required to bring it back again.)
823 dnl Hence, exposing it as an option is false advertisement, so better
824 dnl disable it to avoid confusion (but leave it commented-out rather
825 dnl than removed in order to remind ourselves to bring back the
826 dnl feature at some stage.) ]
828 dnl AC_ARG_ENABLE(win32-dlls,
829 dnl [ --enable-win32-dlls
830 dnl If on a Win32 platform running mingw32/cygwin, enable the
831 dnl construction of DLLs containing ghc-compiled code.
834 dnl case $HostOS_CPP in
837 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
841 dnl EnableWin32DLLs=YES
843 dnl [EnableWin32DLLs=NO]
845 dnl AC_SUBST(EnableWin32DLLs)
846 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
847 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
850 dnl ** Enable the building of the ObjectIO?
851 dnl --------------------------------------------------------------
852 AC_ARG_ENABLE(objectio,
853 [AC_HELP_STRING([--enable-objectio],
854 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
855 [ if test x"$enableval" = x"yes"; then
856 GhcLibsWithObjectIO=YES
858 GhcLibsWithObjectIO=NO
861 [GhcLibsWithObjectIO=NO]
863 AC_SUBST(GhcLibsWithObjectIO)
865 dnl ** .NET interop support?
866 dnl --------------------------------------------------------------
867 AC_ARG_ENABLE(dotnet,
868 [AC_HELP_STRING([--enable-dotnet],
869 [Build .NET interop layer. [default=no]])],
870 [ if test x"$enableval" = x"yes"; then
871 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
877 AC_SUBST(DotnetSupport)
879 dnl --------------------------------------------------------------
880 dnl End of configure script option section
881 dnl --------------------------------------------------------------
884 dnl --------------------------------------------------------------
885 dnl * General configuration checks
886 dnl --------------------------------------------------------------
888 dnl ** Can the unix package be built?
889 dnl --------------------------------------------------------------
891 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
896 AC_SUBST([GhcLibsWithUnix])
901 dnl ** look for `perl', but only in /bin on Windows
904 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
905 if test -z "$PerlCmd"; then
906 echo "You must install the version of Perl shipped with GHC"
907 echo "(or a compatible one) in /bin."
912 AC_PATH_PROG(PerlCmd,perl)
913 if test -z "$PerlCmd"; then
914 echo "You must install perl before you can continue"
915 echo "Perhaps it is already installed, but not in your PATH?"
918 FPTOOLS_CHECK_PERL_VERSION
923 dnl ** does #! path/to/perl work? (sometimes it's too long...)
926 dnl ** check for Python
927 AC_PATH_PROG(PythonCmd,python)
929 dnl ** look for GCC and find out which version
930 dnl Figure out which C compiler to use. Gcc is preferred.
931 dnl If gcc, make sure it's at least 2.1
935 FP_GCC_NEEDS_NO_OMIT_LFPTR
936 FP_GCC_HAS_NO_UNIT_AT_A_TIME
939 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
942 dnl ** Without optimization some INLINE trickery fails for GHCi
945 dnl ** Try to add -mno-cygwin to the C compiler options
946 FP_CHECK_FLAG([-mno-cygwin], [
947 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
948 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
949 AC_SUBST(SRC_CC_OPTS)
951 dnl ** figure out how to do context diffs
954 dnl ** Find find command (for Win32's benefit)
957 dnl ** Find sort command (for the benefit of Win32 environs)
960 dnl ** figure out how to do a BSD-ish install
962 dnl Let's make sure install-sh is executable here. If we got it from
963 dnl a darcs repo, it might not be (see bug #978).
966 dnl If you can run configure, you certainly have /bin/sh
967 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
969 dnl ** how to invoke `ar' and `ranlib'
970 FP_PROG_AR_NEEDS_RANLIB
971 FP_PROG_AR_SUPPORTS_INPUT
973 dnl ** Check to see whether ln -s works
977 dnl ** Find the path to sed
978 AC_PATH_PROG(SedCmd,sed)
981 dnl ** check for time command
982 AC_PATH_PROG(TimeCmd,time)
985 dnl if GNU tar is named gtar, look for it first.
986 AC_PATH_PROGS(TarCmd,gtar tar,tar)
988 dnl ** check for DocBook toolchain
990 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])
993 dnl ** check for ghc-pkg command
996 AC_ARG_WITH(greencard,
997 [AC_HELP_STRING([--with-greencard=ARG],
998 [Use ARG as the path to greencard [default=autodetct]])],
1000 GreenCardCmd=$withval;
1001 FPTOOLS_GREENCARD(3.00)
1005 dnl ** check for installed happy binary + version
1006 dnl (don't do it if we're booting from .hc files though.)
1007 if test "$BootingFromHc" = "NO"; then
1011 dnl ** check for installed haddock
1014 dnl ** check for installed alex binary + version
1015 dnl (don't do it if we're booting from .hc files though.)
1016 if test "$BootingFromHc" = "NO"; then
1020 dnl --------------------------------------------------
1021 dnl ### program checking section ends here ###
1022 dnl --------------------------------------------------
1024 dnl --------------------------------------------------
1025 dnl * Platform header file and syscall feature tests
1026 dnl ### checking the state of the local header files and syscalls ###
1028 dnl ** check for full ANSI header (.h) files
1031 dnl ** Enable large file support. NB. do this before testing the type of
1032 dnl off_t, because it will affect the result of that test.
1035 dnl ** check for specific header (.h) files that we are interested in
1036 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])
1038 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
1039 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
1041 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
1042 GhcLibsWithReadline=YES
1043 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
1045 GhcLibsWithReadline=NO
1046 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
1048 AC_SUBST(GhcLibsWithReadline)
1050 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
1053 dnl ** do we have long longs?
1054 AC_CHECK_TYPES([long long])
1056 dnl ** what are the sizes of various types
1057 AC_CHECK_SIZEOF(char, 1)
1058 AC_CHECK_SIZEOF(double, 8)
1059 AC_CHECK_SIZEOF(float, 4)
1060 AC_CHECK_SIZEOF(int, 4)
1061 AC_CHECK_SIZEOF(long, 4)
1062 if test "$ac_cv_type_long_long" = yes; then
1063 AC_CHECK_SIZEOF(long long, 8)
1065 AC_CHECK_SIZEOF(short, 2)
1066 AC_CHECK_SIZEOF(unsigned char, 1)
1067 AC_CHECK_SIZEOF(unsigned int, 4)
1068 AC_CHECK_SIZEOF(unsigned long, 4)
1069 if test "$ac_cv_type_long_long" = yes; then
1070 AC_CHECK_SIZEOF(unsigned long long, 8)
1072 AC_CHECK_SIZEOF(unsigned short, 2)
1073 AC_CHECK_SIZEOF(void *, 4)
1075 dnl ** what are alignment constraints on various types
1076 FP_CHECK_ALIGNMENT(char)
1077 FP_CHECK_ALIGNMENT(double)
1078 FP_CHECK_ALIGNMENT(float)
1079 FP_CHECK_ALIGNMENT(int)
1080 FP_CHECK_ALIGNMENT(long)
1081 if test "$ac_cv_type_long_long" = yes; then
1082 FP_CHECK_ALIGNMENT(long long)
1084 FP_CHECK_ALIGNMENT(short)
1085 FP_CHECK_ALIGNMENT(unsigned char)
1086 FP_CHECK_ALIGNMENT(unsigned int)
1087 FP_CHECK_ALIGNMENT(unsigned long)
1088 if test "$ac_cv_type_long_long" = yes; then
1089 FP_CHECK_ALIGNMENT(unsigned long long)
1091 FP_CHECK_ALIGNMENT(unsigned short)
1092 FP_CHECK_ALIGNMENT(void *)
1094 FP_CHECK_FUNC([WinExec],
1095 [@%:@include <windows.h>], [WinExec("",0)])
1097 FP_CHECK_FUNC([GetModuleFileName],
1098 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1100 dnl ** check return type of signal handlers
1101 dnl Foo: assumes we can use prototypes.
1102 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1103 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1104 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1105 dnl #include <signal.h>
1109 dnl void (*signal (int, void (*)(int)))(int);
1112 dnl [ac_cv_type_signal_handler=void_int],
1113 dnl [ac_cv_type_signal_handler=int_void])])
1114 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1115 dnl AC_DEFINE(VOID_INT_SIGNALS)
1118 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1120 if test "$ac_cv_type_signal" = void; then
1121 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).])
1124 dnl ** check for more functions
1125 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1126 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1127 dnl ** For ghc/rts/gmp:
1128 AC_CHECK_FUNCS([getpagesize])
1130 dnl ** check whether this machine has gmp3 installed
1131 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1132 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1133 HaveLibGmp=NO; LibGmp=not-installed))
1134 AC_SUBST(HaveLibGmp)
1137 dnl ** (Mac OS X only: check for GMP.framework)
1139 case $HostPlatform in
1141 AC_MSG_CHECKING([for GMP.framework])
1143 LIBS="-framework GMP"
1144 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1145 if test $HaveFrameworkGMP = YES; then
1146 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1149 AC_MSG_RESULT([$HaveFrameworkGMP])
1152 AC_SUBST(HaveFrameworkGMP)
1154 dnl ** check for mingwex library
1155 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1156 AC_SUBST(HaveLibMingwEx)
1158 if test $HaveLibMingwEx = YES ; then
1159 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1162 if test "$HaveLibGmp" = "NO"; then
1163 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1164 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1168 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1169 dnl the order of these tests matters: bfd needs liberty
1170 AC_CHECK_LIB(iberty, xmalloc)
1171 AC_CHECK_LIB(bfd, bfd_init)
1173 dnl ** check for math library
1174 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1175 if test x"$fp_libm_not_needed" = xdunno; then
1176 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1180 dnl ################################################################
1181 dnl Check for libraries
1182 dnl ################################################################
1184 dnl ** check whether we need -ldl to get dlopen()
1186 AC_CHECK_LIB(dl, dlopen,
1188 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1193 dnl --------------------------------------------------
1194 dnl * Miscellaneous feature tests
1195 dnl --------------------------------------------------
1197 dnl ** can we get alloca?
1200 dnl ** Working vfork?
1203 dnl ** determine whether or not const works
1206 dnl ** are we big endian?
1208 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
1210 dnl ** check for leading underscores in symbol names
1211 FP_LEADING_UNDERSCORE
1213 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1217 dnl ** check for Apple-style dead-stripping support
1218 dnl (.subsections-via-symbols assembler directive)
1221 AC_MSG_CHECKING(for .subsections_via_symbols)
1223 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1225 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1226 [Define to 1 if Apple-style dead-stripping is supported.])
1228 [AC_MSG_RESULT(no)])
1230 dnl *** check for GNU non-executable stack note support (ELF only)
1231 dnl (.section .note.GNU-stack,"",@progbits)
1233 AC_MSG_CHECKING(for GNU non-executable stack support)
1235 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1237 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1238 [Define to 1 if GNU non-executable stack notes are supported.])
1240 [AC_MSG_RESULT(no)])
1242 dnl ** check for librt
1243 AC_CHECK_LIB(rt, clock_gettime)
1244 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
1245 FP_CHECK_TIMER_CREATE
1247 dnl ** check for Apple's "interesting" long double compatibility scheme
1248 AC_MSG_CHECKING(for printf\$LDBLStub)
1249 AC_TRY_LINK_FUNC(printf\$LDBLStub,
1252 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1253 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1257 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1258 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1262 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1263 if test -n "$GTK_CONFIG"; then
1264 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1265 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1267 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1271 AC_SUBST([GTK_CONFIG])
1274 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
1275 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
1276 AC_SUBST(HavePapiLib)
1277 AC_SUBST(HavePapiHeader)
1279 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
1286 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1287 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])