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.5], [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 hardtop_plat=${hardtop}
622 hardtop_plat=${hardtop}
626 AC_SUBST(hardtop_plat)
628 AC_MSG_RESULT(${hardtop})
630 # We don't support building in directories with spaces.
632 *' '*) AC_MSG_ERROR([
633 The build system does not support building in a directory containing
634 space characters. Suggestion: move the build tree somewhere else.])
638 dnl --------------------------------------------------------------
639 dnl * Project specific configuration options
640 dnl --------------------------------------------------------------
641 dnl What follows is a bunch of options that can either be configured
642 dnl through command line options to the configure script or by
643 dnl supplying defns in the build tree's mk/build.mk. Having the option to
644 dnl use either is considered a Feature.
646 dnl ** What command to use to compile compiler sources ?
647 dnl --------------------------------------------------------------
650 [AC_HELP_STRING([--with-ghc=ARG],
651 [Use ARG as the path to GHC [default=autodetect]])],
652 [WithGhc="$withval"],
653 [if test "$GHC" = ""; then
654 AC_PATH_PROG([GHC], [ghc])
660 [AC_HELP_STRING([--with-hc=ARG],
661 [Use ARG as the path to the compiler for compiling ordinary
662 Haskell code (default= value of --with-ghc)])],
668 if test "$WithGhc" != ""; then
669 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
670 AC_SUBST(GhcVersion)dnl
671 AC_SUBST(GhcMajVersion)dnl
672 AC_SUBST(GhcMinVersion)dnl
673 AC_SUBST(GhcPatchLevel)dnl
676 # Check whether this GHC has readline installed
679 AC_PATH_PROGS(NHC,nhc nhc98)
680 AC_PATH_PROG(HBC,hbc)
682 dnl ** Which gcc to use?
683 dnl --------------------------------------------------------------
685 [AC_HELP_STRING([--with-gcc=ARG],
686 [Use ARG as the path to GCC [default=autodetect]])],
687 [WhatGccIsCalled="$withval"
688 if test "x$HostPlatform" = "xi386-unknown-mingw32"
690 if test "${OSTYPE}" != "msys"
692 # Canonicalise to <drive>:/path/to/gcc
693 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
699 [WhatGccIsCalled="gcc"]
701 AC_SUBST(WhatGccIsCalled)
703 dnl ** Booting from .hc files?
704 dnl --------------------------------------------------------------
705 AC_ARG_ENABLE(hc-boot,
706 [AC_HELP_STRING([--enable-hc-boot],
707 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
708 (This option is mostly of interest to porters.) [default=no]])],
709 [ if test x"$enableval" = x"yes"; then
717 AC_SUBST(BootingFromHc)
719 dnl ** Booting from unregisterised .hc files?
720 dnl --------------------------------------------------------------
721 AC_ARG_ENABLE(hc-boot-unregisterised,
722 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
723 [ With --enable-hc-boot, treat the intermediate .hc files as
724 unregisterised rather than registerised code.
725 (This option is mostly of interest to porters.) [default=no]])],
726 [ if test x"$enableval" = x"yes"; then
727 BootingFromUnregisterisedHc=YES
729 BootingFromUnregisterisedHc=NO
732 [BootingFromUnregisterisedHc=NO]
734 AC_SUBST(BootingFromUnregisterisedHc)
736 if test "$BootingFromHc" = "NO"; then
737 if test "$BootingFromUnregisterisedHc" = "YES"; then
738 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
742 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
743 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/compiler"; then
744 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
747 dnl ** Enable the construction of Win32 DLLs?
748 dnl --------------------------------------------------------------
750 dnl [ The ability to build the RTS and libraries as separate DLLs used
751 dnl to be supported, but isn't currently (updates to the RTS, compiler
752 dnl and build system would be required to bring it back again.)
753 dnl Hence, exposing it as an option is false advertisement, so better
754 dnl disable it to avoid confusion (but leave it commented-out rather
755 dnl than removed in order to remind ourselves to bring back the
756 dnl feature at some stage.) ]
758 dnl AC_ARG_ENABLE(win32-dlls,
759 dnl [ --enable-win32-dlls
760 dnl If on a Win32 platform running mingw32/cygwin, enable the
761 dnl construction of DLLs containing ghc-compiled code.
764 dnl case $HostOS_CPP in
767 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
771 dnl EnableWin32DLLs=YES
773 dnl [EnableWin32DLLs=NO]
775 dnl AC_SUBST(EnableWin32DLLs)
776 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
777 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
780 dnl ** Enable the building of the ObjectIO?
781 dnl --------------------------------------------------------------
782 AC_ARG_ENABLE(objectio,
783 [AC_HELP_STRING([--enable-objectio],
784 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
785 [ if test x"$enableval" = x"yes"; then
786 GhcLibsWithObjectIO=YES
788 GhcLibsWithObjectIO=NO
791 [GhcLibsWithObjectIO=NO]
793 AC_SUBST(GhcLibsWithObjectIO)
795 dnl ** .NET interop support?
796 dnl --------------------------------------------------------------
797 AC_ARG_ENABLE(dotnet,
798 [AC_HELP_STRING([--enable-dotnet],
799 [Build .NET interop layer. [default=no]])],
800 [ if test x"$enableval" = x"yes"; then
801 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
807 AC_SUBST(DotnetSupport)
809 dnl --------------------------------------------------------------
810 dnl End of configure script option section
811 dnl --------------------------------------------------------------
814 dnl --------------------------------------------------------------
815 dnl * General configuration checks
816 dnl --------------------------------------------------------------
818 dnl ** Can the unix package be built?
819 dnl --------------------------------------------------------------
821 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
826 AC_SUBST([GhcLibsWithUnix])
831 dnl ** look for `perl', but only in /bin on Windows
834 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
835 if test -z "$PerlCmd"; then
836 echo "You must install the version of Perl shipped with GHC"
837 echo "(or a compatible one) in /bin."
842 AC_PATH_PROG(PerlCmd,perl)
843 if test -z "$PerlCmd"; then
844 echo "You must install perl before you can continue"
845 echo "Perhaps it is already installed, but not in your PATH?"
848 FPTOOLS_CHECK_PERL_VERSION
853 dnl ** does #! path/to/perl work? (sometimes it's too long...)
856 dnl ** check for Python
857 AC_PATH_PROG(PythonCmd,python)
859 dnl ** look for GCC and find out which version
860 dnl Figure out which C compiler to use. Gcc is preferred.
861 dnl If gcc, make sure it's at least 2.1
865 FP_GCC_NEEDS_NO_OMIT_LFPTR
866 FP_GCC_HAS_NO_UNIT_AT_A_TIME
868 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
871 dnl ** Without optimization some INLINE trickery fails for GHCi
874 dnl ** Try to add -mno-cygwin to the C compiler options
875 FP_CHECK_FLAG([-mno-cygwin], [
876 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
877 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
878 AC_SUBST(SRC_CC_OPTS)
880 dnl ** figure out how to do context diffs
883 dnl ** Find find command (for Win32's benefit)
886 dnl ** Find sort command (for the benefit of Win32 environs)
889 dnl ** figure out how to do a BSD-ish install
892 dnl If you can run configure, you certainly have /bin/sh
893 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
895 dnl ** how to invoke `ar' and `ranlib'
896 FP_PROG_AR_NEEDS_RANLIB
897 FP_PROG_AR_SUPPORTS_INPUT
899 dnl ** Check to see whether ln -s works
903 dnl ** Find the path to sed
904 AC_PATH_PROG(SedCmd,sed)
907 dnl ** check for time command
908 AC_PATH_PROG(TimeCmd,time)
911 dnl if GNU tar is named gtar, look for it first.
912 AC_PATH_PROGS(TarCmd,gtar tar,tar)
914 dnl ** check for DocBook toolchain
916 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])
919 dnl ** check for ghc-pkg command
922 AC_ARG_WITH(greencard,
923 [AC_HELP_STRING([--with-greencard=ARG],
924 [Use ARG as the path to greencard [default=autodetct]])],
926 GreenCardCmd=$withval;
927 FPTOOLS_GREENCARD(3.00)
931 dnl ** check for installed happy binary + version
932 dnl (don't do it if we're booting from .hc files though.)
933 if test "$BootingFromHc" = "NO"; then
937 dnl ** check for installed haddock
940 dnl ** check for installed alex binary + version
941 dnl (don't do it if we're booting from .hc files though.)
942 if test "$BootingFromHc" = "NO"; then
946 dnl --------------------------------------------------
947 dnl ### program checking section ends here ###
948 dnl --------------------------------------------------
950 dnl --------------------------------------------------
951 dnl * Platform header file and syscall feature tests
952 dnl ### checking the state of the local header files and syscalls ###
954 dnl ** check for full ANSI header (.h) files
957 dnl ** Enable large file support. NB. do this before testing the type of
958 dnl off_t, because it will affect the result of that test.
961 dnl ** check for specific header (.h) files that we are interested in
962 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])
964 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
965 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
967 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
968 GhcLibsWithReadline=YES
969 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
971 GhcLibsWithReadline=NO
972 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
974 AC_SUBST(GhcLibsWithReadline)
976 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
979 dnl ** do we have long longs?
980 AC_CHECK_TYPES([long long])
982 dnl ** what are the sizes of various types
983 AC_CHECK_SIZEOF(char, 1)
984 AC_CHECK_SIZEOF(double, 8)
985 AC_CHECK_SIZEOF(float, 4)
986 AC_CHECK_SIZEOF(int, 4)
987 AC_CHECK_SIZEOF(long, 4)
988 if test "$ac_cv_type_long_long" = yes; then
989 AC_CHECK_SIZEOF(long long, 8)
991 AC_CHECK_SIZEOF(short, 2)
992 AC_CHECK_SIZEOF(unsigned char, 1)
993 AC_CHECK_SIZEOF(unsigned int, 4)
994 AC_CHECK_SIZEOF(unsigned long, 4)
995 if test "$ac_cv_type_long_long" = yes; then
996 AC_CHECK_SIZEOF(unsigned long long, 8)
998 AC_CHECK_SIZEOF(unsigned short, 2)
999 AC_CHECK_SIZEOF(void *, 4)
1001 dnl ** what are alignment constraints on various types
1002 FP_CHECK_ALIGNMENT(char)
1003 FP_CHECK_ALIGNMENT(double)
1004 FP_CHECK_ALIGNMENT(float)
1005 FP_CHECK_ALIGNMENT(int)
1006 FP_CHECK_ALIGNMENT(long)
1007 if test "$ac_cv_type_long_long" = yes; then
1008 FP_CHECK_ALIGNMENT(long long)
1010 FP_CHECK_ALIGNMENT(short)
1011 FP_CHECK_ALIGNMENT(unsigned char)
1012 FP_CHECK_ALIGNMENT(unsigned int)
1013 FP_CHECK_ALIGNMENT(unsigned long)
1014 if test "$ac_cv_type_long_long" = yes; then
1015 FP_CHECK_ALIGNMENT(unsigned long long)
1017 FP_CHECK_ALIGNMENT(unsigned short)
1018 FP_CHECK_ALIGNMENT(void *)
1020 FP_CHECK_FUNC([WinExec],
1021 [@%:@include <windows.h>], [WinExec("",0)])
1023 FP_CHECK_FUNC([GetModuleFileName],
1024 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1026 dnl ** check return type of signal handlers
1027 dnl Foo: assumes we can use prototypes.
1028 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1029 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1030 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1031 dnl #include <signal.h>
1035 dnl void (*signal (int, void (*)(int)))(int);
1038 dnl [ac_cv_type_signal_handler=void_int],
1039 dnl [ac_cv_type_signal_handler=int_void])])
1040 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1041 dnl AC_DEFINE(VOID_INT_SIGNALS)
1044 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1046 if test "$ac_cv_type_signal" = void; then
1047 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).])
1050 dnl ** check for more functions
1051 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1052 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r])
1053 dnl ** For ghc/rts/gmp:
1054 AC_CHECK_FUNCS([getpagesize])
1056 dnl ** check whether this machine has gmp3 installed
1057 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1058 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1059 HaveLibGmp=NO; LibGmp=not-installed))
1060 AC_SUBST(HaveLibGmp)
1063 dnl ** (Mac OS X only: check for GMP.framework)
1065 case $HostPlatform in
1067 AC_MSG_CHECKING([for GMP.framework])
1069 LIBS="-framework GMP"
1070 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1071 if test $HaveFrameworkGMP = YES; then
1072 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1075 AC_MSG_RESULT([$HaveFrameworkGMP])
1078 AC_SUBST(HaveFrameworkGMP)
1080 dnl ** check for mingwex library
1081 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1082 AC_SUBST(HaveLibMingwEx)
1084 if test $HaveLibMingwEx = YES ; then
1085 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1088 if test "$HaveLibGmp" = "NO"; then
1089 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1090 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1094 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1095 dnl the order of these tests matters: bfd needs liberty
1096 AC_CHECK_LIB(iberty, xmalloc)
1097 AC_CHECK_LIB(bfd, bfd_init)
1099 dnl ** check for math library
1100 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1101 if test x"$fp_libm_not_needed" = xdunno; then
1102 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1106 dnl ################################################################
1107 dnl Check for libraries
1108 dnl ################################################################
1110 dnl ** check whether we need -ldl to get dlopen()
1112 AC_CHECK_LIB(dl, dlopen,
1114 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1119 dnl --------------------------------------------------
1120 dnl * Miscellaneous feature tests
1121 dnl --------------------------------------------------
1123 dnl ** can we get alloca?
1126 dnl ** Working vfork?
1129 dnl ** determine whether or not const works
1132 dnl ** are we big endian?
1135 dnl ** check for leading underscores in symbol names
1136 FP_LEADING_UNDERSCORE
1138 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1142 dnl ** check for Apple-style dead-stripping support
1143 dnl (.subsections-via-symbols assembler directive)
1146 AC_MSG_CHECKING(for .subsections_via_symbols)
1148 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
1150 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1151 [Define to 1 if Apple-style dead-stripping is supported.])
1153 [AC_MSG_RESULT(no)])
1155 dnl *** check for GNU non-executable stack note support (ELF only)
1156 dnl (.section .note.GNU-stack,"",@progbits)
1158 AC_MSG_CHECKING(for GNU non-executable stack support)
1160 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
1162 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
1163 [Define to 1 if GNU non-executable stack notes are supported.])
1165 [AC_MSG_RESULT(no)])
1167 dnl ** check for librt
1168 AC_CHECK_LIB(rt, clock_gettime)
1169 AC_CHECK_FUNCS(clock_gettime)
1171 dnl ** check for Apple's "interesting" long double compatibility scheme
1172 AC_MSG_CHECKING(for printf$LDBLStub)
1173 AC_TRY_LINK_FUNC(printf$LSBLStub,
1176 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1177 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1181 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1182 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1186 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
1187 if test -n "$GTK_CONFIG"; then
1188 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
1189 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
1191 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
1195 AC_SUBST([GTK_CONFIG])
1197 AC_CONFIG_FILES([mk/config.mk ghc.spec docs/users_guide/ug-book.xml])
1198 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])