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 AQUA Project, Glasgow University, 1994-2004
8 # Configure script template for the Glasgow functional programming tools
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 if test ! -f mk/config.h.in; then
19 echo "mk/config.h.in doesn't exist: perhaps you haven't run 'autoreconf'?"
23 FP_SETUP_PROJECT_VERSION
25 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
26 AC_SUBST([release], [1])
28 # First off, a distrib sanity check..
29 AC_CONFIG_SRCDIR([mk/config.mk.in])
31 dnl * We require autoconf version 2.52
32 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
33 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
36 dnl * Declare subdirectories that have a private configure script
38 dnl After the toplevel configuration is complete, the script will recurse into
39 dnl these subdirectories if they exist. The use of a cache file makes repeated
41 AC_CONFIG_SUBDIRS([libraries])
43 # -------------------------------------------------------------------------
44 # Prepare to generate the following header files
47 AC_CONFIG_HEADER(mk/config.h)
49 # No, semi-sadly, we don't do `--srcdir'...
50 if test x"$srcdir" != 'x.' ; then
51 echo "This configuration does not support the \`--srcdir' option.."
55 dnl--------------------------------------------------------------------
56 dnl * Choose host(/target/build) platform
57 dnl--------------------------------------------------------------------
59 dnl Guess host/target/build platform(s) if necessary.
62 # "$host" defaults to "$target"
63 if test "x$host" = xNONE ; then
67 dnl ** canonicalize platform names
68 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
69 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
70 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
72 if test x"$TargetPlatform" != x"$HostPlatform" ; then
73 echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
79 # The following will be more difficult when we *are* cross-compiling.
80 # Suitable names to slam in *_CPP are in platform.h.in.
81 # We also record the architecture, vendor, and operating system (OS)
84 alpha*-dec-osf[[12]]*)
85 HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
86 TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
87 BuildPlatform=alpha-dec-osf1 # hack
88 HostPlatform_CPP='alpha_dec_osf1'
93 alpha*-dec-osf[[345]]*)
94 HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
95 TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
96 BuildPlatform=alpha-dec-osf3 # hack
97 HostPlatform_CPP='alpha_dec_osf3'
102 alpha*-unknown-linux*)
103 HostPlatform=alpha-unknown-linux
104 TargetPlatform=alpha-unknown-linux
105 BuildPlatform=alpha-unknown-linux
106 HostPlatform_CPP='alpha_unknown_linux'
108 HostVendor_CPP='unknown'
111 alpha*-unknown-freebsd*)
112 HostPlatform=alpha-unknown-freebsd
113 TargetPlatform=alpha-unknown-freebsd
114 BuildPlatform=alpha-unknown-freebsd
115 HostPlatform_CPP='alpha_unknown_freebsd'
117 HostVendor_CPP='unknown'
120 alpha*-unknown-openbsd*)
121 HostPlatform=alpha-unknown-openbsd
122 TargetPlatform=alpha-unknown-openbsd
123 BuildPlatform=alpha-unknown-openbsd
124 HostPlatform_CPP='alpha_unknown_openbsd'
126 HostVendor_CPP='unknown'
129 amd64-*-openbsd*|x86_64-*-openbsd*)
130 HostPlatform=x86_64-unknown-openbsd
131 TargetPlatform=x86_64-unknown-openbsd
132 BuildPlatform=x86_64-unknown-openbsd
133 HostPlatform_CPP='x86_64_unknown_openbsd'
134 HostArch_CPP='x86_64'
135 HostVendor_CPP='unknown'
139 HostPlatform=x86_64-unknown-freebsd
140 TargetPlatform=x86_64-unknown-freebsd
141 BuildPlatform=x86_64-unknown-freebsd
142 HostPlatform_CPP='x86_64_unknown_freebsd'
143 HostArch_CPP='x86_64'
144 HostVendor_CPP='unknown'
148 HostPlatform=arm-unknown-linux # hack again
149 TargetPlatform=arm-unknown-linux
150 BuildPlatform=arm-unknown-linux
151 HostPlatform_CPP='arm_unknown_linux'
153 HostVendor_CPP='unknown'
157 HostPlatform=arm-unknown-openbsd
158 TargetPlatform=arm-unknown-openbsd
159 BuildPlatform=arm-unknown-openbsd
160 HostPlatform_CPP='arm_unknown_openbsd'
162 HostVendor_CPP='unknown'
166 HostPlatform=hppa-unknown-linux # hack again
167 TargetPlatform=hppa-unknown-linux
168 BuildPlatform=hppa-unknown-linux
169 HostPlatform_CPP='hppa_unknown_linux'
171 HostVendor_CPP='unknown'
175 HostPlatform=hppa-unknown-openbsd # hack again
176 TargetPlatform=hppa-unknown-openbsd
177 BuildPlatform=hppa-unknown-openbsd
178 HostPlatform_CPP='hppa_unknown_openbsd'
180 HostVendor_CPP='unknown'
184 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
185 TargetPlatform=hppa1.1-hp-hpux
186 BuildPlatform=hppa1.1-hp-hpux
187 HostPlatform_CPP='hppa1_1_hp_hpux'
188 HostArch_CPP='hppa1_1'
192 i[[3456]]86-*-linuxaout*)
193 HostPlatform=i386-unknown-linuxaout # hack again
194 TargetPlatform=i386-unknown-linuxaout
195 BuildPlatform=i386-unknown-linuxaout
196 HostPlatform_CPP='i386_unknown_linuxaout'
198 HostVendor_CPP='unknown'
199 HostOS_CPP='linuxaout'
201 i[[3456]]86-*-linux*)
202 HostPlatform=i386-unknown-linux # hack again
203 TargetPlatform=i386-unknown-linux
204 BuildPlatform=i386-unknown-linux
205 HostPlatform_CPP='i386_unknown_linux'
207 HostVendor_CPP='unknown'
210 i[[3456]]86-*-kfreebsd*-gnu)
211 HostPlatform=i386-unknown-kfreebsdgnu # hack again
212 TargetPlatform=i386-unknown-kfreebsdgnu
213 BuildPlatform=i386-unknown-kfreebsdgnu
214 HostPlatform_CPP='i386_unknown_kfreebsdgnu'
216 HostVendor_CPP='unknown'
217 HostOS_CPP='kfreebsdgnu'
219 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
220 HostPlatform=i386-unknown-freebsd # hack again
221 TargetPlatform=i386-unknown-freebsd
222 BuildPlatform=i386-unknown-freebsd
223 HostPlatform_CPP='i386_unknown_freebsd'
225 HostVendor_CPP='unknown'
228 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
229 HostPlatform=i386-unknown-freebsd2 # hack again
230 TargetPlatform=i386-unknown-freebsd2
231 BuildPlatform=i386-unknown-freebsd2
232 HostPlatform_CPP='i386_unknown_freebsd2'
234 HostVendor_CPP='unknown'
235 HostOS_CPP='freebsd2'
237 i[[3456]]86-*-netbsd*)
238 HostPlatform=i386-unknown-netbsd # hack again
239 TargetPlatform=i386-unknown-netbsd
240 BuildPlatform=i386-unknown-netbsd
241 HostPlatform_CPP='i386_unknown_netbsd'
243 HostVendor_CPP='unknown'
246 i[[3456]]86-*-openbsd*)
247 HostPlatform=i386-unknown-openbsd # hack again
248 TargetPlatform=i386-unknown-openbsd
249 BuildPlatform=i386-unknown-openbsd
250 HostPlatform_CPP='i386_unknown_openbsd'
252 HostVendor_CPP='unknown'
255 i[[3456]]86-*-solaris2*)
256 HostPlatform=i386-unknown-solaris2 # hack again
257 TargetPlatform=i386-unknown-solaris2
258 BuildPlatform=i386-unknown-solaris2
259 HostPlatform_CPP='i386_unknown_solaris2'
261 HostVendor_CPP='unknown'
262 HostOS_CPP='solaris2'
264 i[[3456]]86-*-cygwin*)
265 HostPlatform=i386-unknown-cygwin32 # hack again
266 TargetPlatform=i386-unknown-cygwin32
267 BuildPlatform=i386-unknown-cygwin32
268 HostPlatform_CPP='i386_unknown_cygwin32'
270 HostVendor_CPP='unknown'
271 HostOS_CPP='cygwin32'
274 i[[3456]]86-*-mingw32*)
275 HostPlatform=i386-unknown-mingw32 # hack again
276 TargetPlatform=i386-unknown-mingw32
277 BuildPlatform=i386-unknown-mingw32
278 HostPlatform_CPP='i386_unknown_mingw32'
280 HostVendor_CPP='unknown'
284 i[[3456]]86-apple-darwin*)
285 HostPlatform=i386-apple-darwin
286 TargetPlatform=i386-apple-darwin #hack
287 BuildPlatform=i386-apple-darwin #hack
288 HostPlatform_CPP='i386_apple_darwin'
290 HostVendor_CPP='apple'
294 HostPlatform=i386-unknown-gnu
295 TargetPlatform=i386-unknown-gnu
296 BuildPlatform=i386-unknown-gnu
297 HostPlatform_CPP=i386_unknown_gnu
299 HostVendor_CPP=unknown
303 HostPlatform=ia64-unknown-linux # hack again
304 TargetPlatform=ia64-unknown-linux
305 BuildPlatform=ia64-unknown-linux
306 HostPlatform_CPP='ia64_unknown_linux'
308 HostVendor_CPP='unknown'
312 HostPlatform=x86_64-unknown-linux
313 TargetPlatform=x86_64-unknown-linux
314 BuildPlatform=x86_64-unknown-linux
315 HostPlatform_CPP='x86_64_unknown_linux'
316 HostArch_CPP='x86_64'
317 HostVendor_CPP='unknown'
321 HostPlatform=m68k-unknown-linux # hack again
322 TargetPlatform=m68k-unknown-linux
323 BuildPlatform=m68k-unknown-linux
324 HostPlatform_CPP='m68k_unknown_linux'
326 HostVendor_CPP='unknown'
330 HostPlatform_CPP='m68k_next_nextstep2'
332 HostVendor_CPP='next'
333 HostOS_CPP='nextstep2'
336 HostPlatform_CPP='m68k_next_nextstep3'
338 HostVendor_CPP='next'
339 HostOS_CPP='nextstep3'
341 i[[3456]]86-next-nextstep3)
342 HostPlatform=i386-next-nextstep3 # hack again
343 TargetPlatform=i386-next-nextstep3
344 BuildPlatform=i386-next-nextstep3
345 HostPlatform_CPP='i386_next_nextstep3'
347 HostVendor_CPP='next'
348 HostOS_CPP='nextstep3'
351 HostPlatform=m68k-unknown-openbsd
352 TargetPlatform=m68k-unknown-openbsd
353 BuildPlatform=m68k-unknown-openbsd
354 HostPlatform_CPP='m68k_unknown_openbsd'
356 HostVendor_CPP='unknown'
360 HostPlatform=m68k-unknown-netbsd
361 TargetPlatform=m68k-unknown-netbsd
362 BuildPlatform=m68k-unknown-netbsd
363 HostPlatform_CPP='m68k_unknown_netbsd'
365 HostVendor_CPP='unknown'
369 HostPlatform=m68k-sun-sunos4
370 TargetPlatform=m68k-sun-sunos4 #hack
371 BuildPlatform=m68k-sun-sunos4 #hack
372 HostPlatform_CPP='m68k_sun_sunos4'
378 HostPlatform=m88k-unknown-openbsd
379 TargetPlatform=m88k-unknown-openbsd
380 BuildPlatform=m88k-unknown-openbsd
381 HostPlatform_CPP='m88k_unknown_openbsd'
383 HostVendor_CPP='unknown'
387 HostPlatform=mips-unknown-linux # hack again
388 TargetPlatform=mips-unknown-linux
389 BuildPlatform=mips-unknown-linux
390 HostPlatform_CPP='mips_unknown_linux'
392 HostVendor_CPP='unknown'
396 HostPlatform=mipsel-unknown-linux # hack again
397 TargetPlatform=mipsel-unknown-linux
398 BuildPlatform=mipsel-unknown-linux
399 HostPlatform_CPP='mipsel_unknown_linux'
400 HostArch_CPP='mipsel'
401 HostVendor_CPP='unknown'
405 HostPlatform_CPP='mips_dec_ultrix'
406 HostArch_CPP='mipsel' # NB a little different
411 HostPlatform=mips-sgi-irix
412 TargetPlatform=mips-sgi-irix #hack
413 BuildPlatform=mips-sgi-irix #hack
414 HostPlatform_CPP='mips_sgi_irix'
415 HostArch_CPP='mipseb' # NB a little different
420 HostPlatform=rs6000-ibm-aix
421 TargetPlatform=rs6000-ibm-aix #hack
422 BuildPlatform=rs6000-ibm-aix #hack
423 HostPlatform_CPP='rs6000_ibm_aix'
424 HostArch_CPP='rs6000'
429 HostPlatform=powerpc-ibm-aix
430 TargetPlatform=powerpc-ibm-aix #hack
431 BuildPlatform=powerpc-ibm-aix #hack
432 HostPlatform_CPP='powerpc_ibm_aix'
433 HostArch_CPP='powerpc'
437 powerpc-apple-darwin*)
438 HostPlatform=powerpc-apple-darwin
439 TargetPlatform=powerpc-apple-darwin #hack
440 BuildPlatform=powerpc-apple-darwin #hack
441 HostPlatform_CPP='powerpc_apple_darwin'
442 HostArch_CPP='powerpc'
443 HostVendor_CPP='apple'
446 powerpc-unknown-linux*)
447 HostPlatform=powerpc-unknown-linux
448 TargetPlatform=powerpc-unknown-linux
449 BuildPlatform=powerpc-unknown-linux
450 HostPlatform_CPP='powerpc_unknown_linux'
451 HostArch_CPP='powerpc'
452 HostVendor_CPP='unknown'
455 powerpc-unknown-openbsd*)
456 HostPlatform=powerpc-unknown-openbsd
457 TargetPlatform=powerpc-unknown-openbsd
458 BuildPlatform=powerpc-unknown-openbsd
459 HostPlatform_CPP='powerpc_unknown_openbsd'
460 HostArch_CPP='powerpc'
461 HostVendor_CPP='unknown'
464 powerpc64-unknown-linux*)
465 HostPlatform=powerpc64-unknown-linux
466 TargetPlatform=powerpc64-unknown-linux
467 BuildPlatform=powerpc64-unknown-linux
468 HostPlatform_CPP='powerpc64_unknown_linux'
469 HostArch_CPP='powerpc64'
470 HostVendor_CPP='unknown'
475 HostPlatform=s390-ibm-linux
476 TargetPlatform=s390-ibm-linux #hack
477 BuildPlatform=s390-ibm-linux #hack
478 HostPlatform_CPP='s390_ibm_linux'
484 HostPlatform=sparc-sun-sunos4
485 TargetPlatform=sparc-sun-sunos4 #hack
486 BuildPlatform=sparc-sun-sunos4 #hack
487 HostPlatform_CPP='sparc_sun_sunos4'
493 HostPlatform=sparc-sun-solaris2
494 TargetPlatform=sparc-sun-solaris2 #hack
495 BuildPlatform=sparc-sun-solaris2 #hack
496 HostPlatform_CPP='sparc_sun_solaris2'
499 HostOS_CPP='solaris2'
502 HostPlatform=sparc-unknown-linux
503 TargetPlatform=sparc-unknown-linux
504 BuildPlatform=sparc-unknown-linux
505 HostPlatform_CPP='sparc_unknown_linux'
507 HostVendor_CPP='unknown'
511 HostPlatform=sparc-unknown-openbsd
512 TargetPlatform=sparc-unknown-openbsd
513 BuildPlatform=sparc-unknown-openbsd
514 HostPlatform_CPP='sparc_unknown_openbsd'
516 HostVendor_CPP='unknown'
520 HostPlatform=sparc64-unknown-openbsd
521 TargetPlatform=sparc64-unknown-openbsd
522 BuildPlatform=sparc64-unknown-openbsd
523 HostPlatform_CPP='sparc64_unknown_openbsd'
524 HostArch_CPP='sparc64'
525 HostVendor_CPP='unknown'
529 HostPlatform=vax-unknown-openbsd
530 TargetPlatform=vax-unknown-openbsd
531 BuildPlatform=vax-unknown-openbsd
532 HostPlatform_CPP='vax_unknown_openbsd'
534 HostVendor_CPP='unknown'
538 echo "Unrecognised platform: $HostPlatform"
542 echo "Canonicalised to: $HostPlatform"
543 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
544 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
546 BuildPlatform_CPP=$HostPlatform_CPP
547 TargetPlatform_CPP=$HostPlatform_CPP
548 BuildArch_CPP=$HostArch_CPP
549 TargetArch_CPP=$HostArch_CPP
550 BuildOS_CPP=$HostOS_CPP
552 TargetOS_CPP=$HostOS_CPP
553 BuildVendor_CPP=$HostVendor_CPP
554 TargetVendor_CPP=$HostVendor_CPP
556 AC_SUBST(BuildPlatform)
557 AC_SUBST(HostPlatform)
558 AC_SUBST(TargetPlatform)
559 AC_SUBST(HostPlatform_CPP)
560 AC_SUBST(BuildPlatform_CPP)
561 AC_SUBST(TargetPlatform_CPP)
563 AC_SUBST(HostArch_CPP)
564 AC_SUBST(BuildArch_CPP)
565 AC_SUBST(TargetArch_CPP)
568 AC_SUBST(HostOS_Full)
569 AC_SUBST(BuildOS_CPP)
570 AC_SUBST(TargetOS_CPP)
572 AC_SUBST(HostVendor_CPP)
573 AC_SUBST(BuildVendor_CPP)
574 AC_SUBST(TargetVendor_CPP)
578 dnl --------------------------------------------------------------
579 dnl * Calculate absolute path to build tree
580 dnl --------------------------------------------------------------
582 AC_MSG_CHECKING(for path to top of build tree)
586 dnl Remove common automounter nonsense
588 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
590 dnl Find 'hardtop_plat', the native format for 'hardtop'
591 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes
594 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert
595 dnl /cygdrive/c/foo to c:/foo but we must not do that if we
596 dnl aren't building using Cygwin (notably msys), because
597 dnl cygpath doesn't exist. It seems that 'bash' sets
598 dnl OSTYPE to 'cygwin' or 'msys' respectively, but cygwin's
599 dnl 'sh' does not. So we hackily assume that if the shell
600 dnl hasn't set it to 'msys' then we must be in Cygwin.
603 dnl The Right Thing is probably to test $BuildPlatform
604 dnl instead, but we are sloppy about setting that correctly
605 dnl at the moment, so we just work around for now.
607 dnl The quotes round "$(OSTYPE)" are essential, for the
608 dnl Cygwin-sh case where OSTYPE is not set.
609 case $HostPlatform in
610 i386-unknown-mingw32 | i386-unknown-cygwin32)
611 if test "${OSTYPE}" != "msys"
613 # convert $hardtop to a path that mingw will understand too
614 cyghardtop=${hardtop}
615 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
616 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
618 dnl OK, so we're in the MSYS case. hardtop looks like /c/....
619 dnl We want to make hardtop_plat into c:/...
620 dnl Stop using [] for quotes temporarily, so we can use [] in the sed regexp
622 hardtop_plat=`echo ${hardtop} | sed -e 's@^/\\([a-zA-Z]\\)/@\\1:/@g'`
627 hardtop_plat=${hardtop}
631 AC_SUBST(hardtop_plat)
633 AC_MSG_RESULT(${hardtop})
635 # We don't support building in directories with spaces.
637 *' '*) AC_MSG_ERROR([
638 The build system does not support building in a directory containing
639 space characters. Suggestion: move the build tree somewhere else.])
643 dnl --------------------------------------------------------------
644 dnl * Project specific configuration options
645 dnl --------------------------------------------------------------
646 dnl What follows is a bunch of options that can either be configured
647 dnl through command line options to the configure script or by
648 dnl supplying defns in the build tree's mk/build.mk. Having the option to
649 dnl use either is considered a Feature.
651 dnl ** What command to use to compile compiler sources ?
652 dnl --------------------------------------------------------------
655 [AC_HELP_STRING([--with-ghc=ARG],
656 [Use ARG as the path to GHC [default=autodetect]])],
657 [WithGhc="$withval"],
658 [if test "$GHC" = ""; then
659 AC_PATH_PROG([GHC], [ghc])
665 [AC_HELP_STRING([--with-hc=ARG],
666 [Use ARG as the path to the compiler for compiling ordinary
667 Haskell code (default= value of --with-ghc)])],
673 if test "$WithGhc" != ""; then
674 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
675 AC_SUBST(GhcVersion)dnl
676 AC_SUBST(GhcMajVersion)dnl
677 AC_SUBST(GhcMinVersion)dnl
678 AC_SUBST(GhcPatchLevel)dnl
681 # Check whether this GHC has readline installed
684 AC_PATH_PROGS(NHC,nhc nhc98)
685 AC_PATH_PROG(HBC,hbc)
687 dnl ** Which gcc to use?
688 dnl --------------------------------------------------------------
690 [AC_HELP_STRING([--with-gcc=ARG],
691 [Use ARG as the path to GCC [default=autodetect]])],
692 [WhatGccIsCalled="$withval"
693 if test "x$HostPlatform" = "xi386-unknown-mingw32"
695 if test "${OSTYPE}" != "msys"
697 # Canonicalise to <drive>:/path/to/gcc
698 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
704 [WhatGccIsCalled="gcc"]
706 AC_SUBST(WhatGccIsCalled)
708 dnl ** Booting from .hc files?
709 dnl --------------------------------------------------------------
710 AC_ARG_ENABLE(hc-boot,
711 [AC_HELP_STRING([--enable-hc-boot],
712 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
713 (This option is mostly of interest to porters.) [default=no]])],
714 [ if test x"$enableval" = x"yes"; then
722 AC_SUBST(BootingFromHc)
724 dnl ** Booting from unregisterised .hc files?
725 dnl --------------------------------------------------------------
726 AC_ARG_ENABLE(hc-boot-unregisterised,
727 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
728 [ With --enable-hc-boot, treat the intermediate .hc files as
729 unregisterised rather than registerised code.
730 (This option is mostly of interest to porters.) [default=no]])],
731 [ if test x"$enableval" = x"yes"; then
732 BootingFromUnregisterisedHc=YES
734 BootingFromUnregisterisedHc=NO
737 [BootingFromUnregisterisedHc=NO]
739 AC_SUBST(BootingFromUnregisterisedHc)
741 if test "$BootingFromHc" = "NO"; then
742 if test "$BootingFromUnregisterisedHc" = "YES"; then
743 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
747 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
748 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/compiler"; then
749 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
752 dnl ** Enable the construction of Win32 DLLs?
753 dnl --------------------------------------------------------------
755 dnl [ The ability to build the RTS and libraries as separate DLLs used
756 dnl to be supported, but isn't currently (updates to the RTS, compiler
757 dnl and build system would be required to bring it back again.)
758 dnl Hence, exposing it as an option is false advertisement, so better
759 dnl disable it to avoid confusion (but leave it commented-out rather
760 dnl than removed in order to remind ourselves to bring back the
761 dnl feature at some stage.) ]
763 dnl AC_ARG_ENABLE(win32-dlls,
764 dnl [ --enable-win32-dlls
765 dnl If on a Win32 platform running mingw32/cygwin, enable the
766 dnl construction of DLLs containing ghc-compiled code.
769 dnl case $HostOS_CPP in
772 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
776 dnl EnableWin32DLLs=YES
778 dnl [EnableWin32DLLs=NO]
780 dnl AC_SUBST(EnableWin32DLLs)
781 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
782 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
785 dnl ** Enable the building of the ObjectIO?
786 dnl --------------------------------------------------------------
787 AC_ARG_ENABLE(objectio,
788 [AC_HELP_STRING([--enable-objectio],
789 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
790 [ if test x"$enableval" = x"yes"; then
791 GhcLibsWithObjectIO=YES
793 GhcLibsWithObjectIO=NO
796 [GhcLibsWithObjectIO=NO]
798 AC_SUBST(GhcLibsWithObjectIO)
800 dnl ** .NET interop support?
801 dnl --------------------------------------------------------------
802 AC_ARG_ENABLE(dotnet,
803 [AC_HELP_STRING([--enable-dotnet],
804 [Build .NET interop layer. [default=no]])],
805 [ if test x"$enableval" = x"yes"; then
806 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
812 AC_SUBST(DotnetSupport)
814 dnl --------------------------------------------------------------
815 dnl End of configure script option section
816 dnl --------------------------------------------------------------
819 dnl --------------------------------------------------------------
820 dnl * General configuration checks
821 dnl --------------------------------------------------------------
823 dnl ** Can the unix package be built?
824 dnl --------------------------------------------------------------
826 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
831 AC_SUBST([GhcLibsWithUnix])
836 dnl ** look for `perl', but only in /bin on Windows
839 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
840 if test -z "$PerlCmd"; then
841 echo "You must install the version of Perl shipped with GHC"
842 echo "(or a compatible one) in /bin."
847 AC_PATH_PROG(PerlCmd,perl)
848 if test -z "$PerlCmd"; then
849 echo "You must install perl before you can continue"
850 echo "Perhaps it is already installed, but not in your PATH?"
853 FPTOOLS_CHECK_PERL_VERSION
858 dnl ** does #! path/to/perl work? (sometimes it's too long...)
861 dnl ** check for Python
862 AC_PATH_PROG(PythonCmd,python)
864 dnl ** look for GCC and find out which version
865 dnl Figure out which C compiler to use. Gcc is preferred.
866 dnl If gcc, make sure it's at least 2.1
870 FP_GCC_NEEDS_NO_OMIT_LFPTR
871 FP_GCC_HAS_NO_UNIT_AT_A_TIME
873 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
876 dnl ** Without optimization some INLINE trickery fails for GHCi
879 dnl ** Try to add -mno-cygwin to the C compiler options
880 FP_CHECK_FLAG([-mno-cygwin], [
881 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
882 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
883 AC_SUBST(SRC_CC_OPTS)
885 dnl ** figure out how to do context diffs
888 dnl ** Find find command (for Win32's benefit)
891 dnl ** Find sort command (for the benefit of Win32 environs)
894 dnl ** figure out how to do a BSD-ish install
897 dnl If you can run configure, you certainly have /bin/sh
898 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
900 dnl ** how to invoke `ar' and `ranlib'
901 FP_PROG_AR_NEEDS_RANLIB
902 FP_PROG_AR_SUPPORTS_INPUT
904 dnl ** Check to see whether ln -s works
908 dnl ** Find the path to sed
909 AC_PATH_PROG(SedCmd,sed)
912 dnl ** check for time command
913 AC_PATH_PROG(TimeCmd,time)
916 dnl if GNU tar is named gtar, look for it first.
917 AC_PATH_PROGS(TarCmd,gtar tar,tar)
919 dnl ** check for DocBook toolchain
921 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])
924 dnl ** check for ghc-pkg command
927 AC_ARG_WITH(greencard,
928 [AC_HELP_STRING([--with-greencard=ARG],
929 [Use ARG as the path to greencard [default=autodetct]])],
931 GreenCardCmd=$withval;
932 FPTOOLS_GREENCARD(3.00)
936 dnl ** check for installed happy binary + version
937 dnl (don't do it if we're booting from .hc files though.)
938 if test "$BootingFromHc" = "NO"; then
942 dnl ** check for installed haddock
945 dnl ** check for installed alex binary + version
946 dnl (don't do it if we're booting from .hc files though.)
947 if test "$BootingFromHc" = "NO"; then
951 dnl --------------------------------------------------
952 dnl ### program checking section ends here ###
953 dnl --------------------------------------------------
955 dnl --------------------------------------------------
956 dnl * Platform header file and syscall feature tests
957 dnl ### checking the state of the local header files and syscalls ###
959 dnl ** check for full ANSI header (.h) files
962 dnl ** Enable large file support. NB. do this before testing the type of
963 dnl off_t, because it will affect the result of that test.
966 dnl ** check for specific header (.h) files that we are interested in
967 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])
969 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
970 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
972 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
973 GhcLibsWithReadline=YES
974 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
976 GhcLibsWithReadline=NO
977 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
979 AC_SUBST(GhcLibsWithReadline)
981 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
984 dnl ** do we have long longs?
985 AC_CHECK_TYPES([long long])
987 dnl ** what are the sizes of various types
988 AC_CHECK_SIZEOF(char, 1)
989 AC_CHECK_SIZEOF(double, 8)
990 AC_CHECK_SIZEOF(float, 4)
991 AC_CHECK_SIZEOF(int, 4)
992 AC_CHECK_SIZEOF(long, 4)
993 if test "$ac_cv_type_long_long" = yes; then
994 AC_CHECK_SIZEOF(long long, 8)
996 AC_CHECK_SIZEOF(short, 2)
997 AC_CHECK_SIZEOF(unsigned char, 1)
998 AC_CHECK_SIZEOF(unsigned int, 4)
999 AC_CHECK_SIZEOF(unsigned long, 4)
1000 if test "$ac_cv_type_long_long" = yes; then
1001 AC_CHECK_SIZEOF(unsigned long long, 8)
1003 AC_CHECK_SIZEOF(unsigned short, 2)
1004 AC_CHECK_SIZEOF(void *, 4)
1006 dnl ** what are alignment constraints on various types
1007 FP_CHECK_ALIGNMENT(char)
1008 FP_CHECK_ALIGNMENT(double)
1009 FP_CHECK_ALIGNMENT(float)
1010 FP_CHECK_ALIGNMENT(int)
1011 FP_CHECK_ALIGNMENT(long)
1012 if test "$ac_cv_type_long_long" = yes; then
1013 FP_CHECK_ALIGNMENT(long long)
1015 FP_CHECK_ALIGNMENT(short)
1016 FP_CHECK_ALIGNMENT(unsigned char)
1017 FP_CHECK_ALIGNMENT(unsigned int)
1018 FP_CHECK_ALIGNMENT(unsigned long)
1019 if test "$ac_cv_type_long_long" = yes; then
1020 FP_CHECK_ALIGNMENT(unsigned long long)
1022 FP_CHECK_ALIGNMENT(unsigned short)
1023 FP_CHECK_ALIGNMENT(void *)
1025 FP_CHECK_FUNC([WinExec],
1026 [@%:@include <windows.h>], [WinExec("",0)])
1028 FP_CHECK_FUNC([GetModuleFileName],
1029 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1031 dnl ** check return type of signal handlers
1032 dnl Foo: assumes we can use prototypes.
1033 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1034 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1035 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1036 dnl #include <signal.h>
1040 dnl void (*signal (int, void (*)(int)))(int);
1043 dnl [ac_cv_type_signal_handler=void_int],
1044 dnl [ac_cv_type_signal_handler=int_void])])
1045 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1046 dnl AC_DEFINE(VOID_INT_SIGNALS)
1049 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1051 if test "$ac_cv_type_signal" = void; then
1052 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).])
1055 dnl ** check for more functions
1056 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1057 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1058 dnl ** For ghc/rts/gmp:
1059 AC_CHECK_FUNCS([getpagesize])
1061 dnl ** check whether this machine has gmp3 installed
1062 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1063 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1064 HaveLibGmp=NO; LibGmp=not-installed))
1065 AC_SUBST(HaveLibGmp)
1068 dnl ** (Mac OS X only: check for GMP.framework)
1070 case $HostPlatform in
1072 AC_MSG_CHECKING([for GMP.framework])
1074 LIBS="-framework GMP"
1075 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1076 if test $HaveFrameworkGMP = YES; then
1077 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1080 AC_MSG_RESULT([$HaveFrameworkGMP])
1083 AC_SUBST(HaveFrameworkGMP)
1085 dnl ** check for mingwex library
1086 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1087 AC_SUBST(HaveLibMingwEx)
1089 if test $HaveLibMingwEx = YES ; then
1090 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1093 if test "$HaveLibGmp" = "NO"; then
1094 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1095 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1099 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1100 dnl the order of these tests matters: bfd needs liberty
1101 AC_CHECK_LIB(iberty, xmalloc)
1102 AC_CHECK_LIB(bfd, bfd_init)
1104 dnl ** check for math library
1105 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1106 if test x"$fp_libm_not_needed" = xdunno; then
1107 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1111 dnl ################################################################
1112 dnl Check for libraries
1113 dnl ################################################################
1115 dnl ** check whether we need -ldl to get dlopen()
1117 AC_CHECK_LIB(dl, dlopen,
1119 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1124 dnl --------------------------------------------------
1125 dnl * Miscellaneous feature tests
1126 dnl --------------------------------------------------
1128 dnl ** can we get alloca?
1131 dnl ** Working vfork?
1134 dnl ** determine whether or not const works
1137 dnl ** are we big endian?
1140 dnl ** check for leading underscores in symbol names
1141 FP_LEADING_UNDERSCORE
1143 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1147 dnl ** check for Apple-style dead-stripping support
1148 dnl (.subsections-via-symbols assembler directive)
1151 AC_MSG_CHECKING(for .subsections_via_symbols)
1153 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1155 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1156 [Define to 1 if Apple-style dead-stripping is supported.])
1158 [AC_MSG_RESULT(no)])
1160 dnl *** check for GNU non-executable stack note support (ELF only)
1161 dnl (.section .note.GNU-stack,"",@progbits)
1163 AC_MSG_CHECKING(for GNU non-executable stack support)
1165 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1167 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1168 [Define to 1 if GNU non-executable stack notes are supported.])
1170 [AC_MSG_RESULT(no)])
1172 dnl ** check for librt
1173 AC_CHECK_LIB(rt, clock_gettime)
1174 AC_CHECK_FUNCS(clock_gettime)
1176 dnl ** check for Apple's "interesting" long double compatibility scheme
1177 AC_MSG_CHECKING(for printf$LDBLStub)
1178 AC_TRY_LINK_FUNC(printf$LSBLStub,
1181 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1182 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1186 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1187 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1191 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1192 if test -n "$GTK_CONFIG"; then
1193 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1194 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1196 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1200 AC_SUBST([GTK_CONFIG])
1202 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1203 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])