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([fptools build system], [1.0], [cvs-fptools@haskell.org], [fptools])
18 # First off, a distrib sanity check..
19 AC_CONFIG_SRCDIR([mk/config.mk.in])
21 dnl * We require autoconf version 2.52
22 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
23 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
26 dnl * Declare subdirectories that have a private configure script
28 dnl After the toplevel configuration is complete, the script will recurse into
29 dnl these subdirectories if they exist. The use of a cache file makes repeated
31 AC_CONFIG_SUBDIRS([ghc libraries])
33 # -------------------------------------------------------------------------
34 # Prepare to generate the following header files
37 AC_CONFIG_HEADER(mk/config.h)
39 # No, semi-sadly, we don't do `--srcdir'...
40 if test x"$srcdir" != 'x.' ; then
41 echo "This configuration does not support the \`--srcdir' option.."
45 dnl--------------------------------------------------------------------
46 dnl * Choose host(/target/build) platform
47 dnl--------------------------------------------------------------------
49 dnl Guess host/target/build platform(s) if necessary.
52 # "$host" defaults to "$target"
53 if test "x$host" = xNONE ; then
57 dnl ** canonicalize platform names
58 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
59 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
60 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
62 if test x"$TargetPlatform" != x"$HostPlatform" ; then
63 echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
69 # The following will be more difficult when we *are* cross-compiling.
70 # Suitable names to slam in *_CPP are in platform.h.in.
71 # We also record the architecture, vendor, and operating system (OS)
74 alpha*-dec-osf[[12]]*)
75 HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
76 TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
77 BuildPlatform=alpha-dec-osf1 # hack
78 HostPlatform_CPP='alpha_dec_osf1'
83 alpha*-dec-osf[[345]]*)
84 HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
85 TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
86 BuildPlatform=alpha-dec-osf3 # hack
87 HostPlatform_CPP='alpha_dec_osf3'
92 alpha*-unknown-linux*)
93 HostPlatform=alpha-unknown-linux
94 TargetPlatform=alpha-unknown-linux
95 BuildPlatform=alpha-unknown-linux
96 HostPlatform_CPP='alpha_unknown_linux'
98 HostVendor_CPP='unknown'
101 alpha*-unknown-freebsd*)
102 HostPlatform=alpha-unknown-freebsd
103 TargetPlatform=alpha-unknown-freebsd
104 BuildPlatform=alpha-unknown-freebsd
105 HostPlatform_CPP='alpha_unknown_freebsd'
107 HostVendor_CPP='unknown'
110 alpha*-unknown-openbsd*)
111 HostPlatform=alpha-unknown-openbsd
112 TargetPlatform=alpha-unknown-openbsd
113 BuildPlatform=alpha-unknown-openbsd
114 HostPlatform_CPP='alpha_unknown_openbsd'
116 HostVendor_CPP='unknown'
119 amd64-*-openbsd*|x86_64-*-openbsd*)
120 HostPlatform=x86_64-unknown-openbsd
121 TargetPlatform=x86_64-unknown-openbsd
122 BuildPlatform=x86_64-unknown-openbsd
123 HostPlatform_CPP='x86_64_unknown_openbsd'
124 HostArch_CPP='x86_64'
125 HostVendor_CPP='unknown'
129 HostPlatform=arm-unknown-linux # hack again
130 TargetPlatform=arm-unknown-linux
131 BuildPlatform=arm-unknown-linux
132 HostPlatform_CPP='arm_unknown_linux'
134 HostVendor_CPP='unknown'
138 HostPlatform=arm-unknown-openbsd
139 TargetPlatform=arm-unknown-openbsd
140 BuildPlatform=arm-unknown-openbsd
141 HostPlatform_CPP='arm_unknown_openbsd'
143 HostVendor_CPP='unknown'
147 HostPlatform=hppa-unknown-linux # hack again
148 TargetPlatform=hppa-unknown-linux
149 BuildPlatform=hppa-unknown-linux
150 HostPlatform_CPP='hppa_unknown_linux'
152 HostVendor_CPP='unknown'
156 HostPlatform=hppa-unknown-openbsd # hack again
157 TargetPlatform=hppa-unknown-openbsd
158 BuildPlatform=hppa-unknown-openbsd
159 HostPlatform_CPP='hppa_unknown_openbsd'
161 HostVendor_CPP='unknown'
165 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
166 TargetPlatform=hppa1.1-hp-hpux
167 BuildPlatform=hppa1.1-hp-hpux
168 HostPlatform_CPP='hppa1_1_hp_hpux'
169 HostArch_CPP='hppa1_1'
173 i[[3456]]86-*-linuxaout*)
174 HostPlatform=i386-unknown-linuxaout # hack again
175 TargetPlatform=i386-unknown-linuxaout
176 BuildPlatform=i386-unknown-linuxaout
177 HostPlatform_CPP='i386_unknown_linuxaout'
179 HostVendor_CPP='unknown'
180 HostOS_CPP='linuxaout'
182 i[[3456]]86-*-linux*)
183 HostPlatform=i386-unknown-linux # hack again
184 TargetPlatform=i386-unknown-linux
185 BuildPlatform=i386-unknown-linux
186 HostPlatform_CPP='i386_unknown_linux'
188 HostVendor_CPP='unknown'
192 HostPlatform=i386-unknown-gnu
193 TargetPlatform=i386-unknown-gnu
194 BuildPlatform=i386-unknown-gnu
195 HostPlatform_CPP=i386_unknown_gnu
197 HostVendor_CPP=unknown
200 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
201 HostPlatform=i386-unknown-freebsd # hack again
202 TargetPlatform=i386-unknown-freebsd
203 BuildPlatform=i386-unknown-freebsd
204 HostPlatform_CPP='i386_unknown_freebsd'
206 HostVendor_CPP='unknown'
209 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
210 HostPlatform=i386-unknown-freebsd2 # hack again
211 TargetPlatform=i386-unknown-freebsd2
212 BuildPlatform=i386-unknown-freebsd2
213 HostPlatform_CPP='i386_unknown_freebsd2'
215 HostVendor_CPP='unknown'
216 HostOS_CPP='freebsd2'
218 i[[3456]]86-*-netbsd*)
219 HostPlatform=i386-unknown-netbsd # hack again
220 TargetPlatform=i386-unknown-netbsd
221 BuildPlatform=i386-unknown-netbsd
222 HostPlatform_CPP='i386_unknown_netbsd'
224 HostVendor_CPP='unknown'
227 i[[3456]]86-*-openbsd*)
228 HostPlatform=i386-unknown-openbsd # hack again
229 TargetPlatform=i386-unknown-openbsd
230 BuildPlatform=i386-unknown-openbsd
231 HostPlatform_CPP='i386_unknown_openbsd'
233 HostVendor_CPP='unknown'
236 i[[3456]]86-*-solaris2*)
237 HostPlatform=i386-unknown-solaris2 # hack again
238 TargetPlatform=i386-unknown-solaris2
239 BuildPlatform=i386-unknown-solaris2
240 HostPlatform_CPP='i386_unknown_solaris2'
242 HostVendor_CPP='unknown'
243 HostOS_CPP='solaris2'
245 i[[3456]]86-*-cygwin*)
246 HostPlatform=i386-unknown-cygwin32 # hack again
247 TargetPlatform=i386-unknown-cygwin32
248 BuildPlatform=i386-unknown-cygwin32
249 HostPlatform_CPP='i386_unknown_cygwin32'
251 HostVendor_CPP='unknown'
252 HostOS_CPP='cygwin32'
255 i[[3456]]86-*-mingw32*)
256 HostPlatform=i386-unknown-mingw32 # hack again
257 TargetPlatform=i386-unknown-mingw32
258 BuildPlatform=i386-unknown-mingw32
259 HostPlatform_CPP='i386_unknown_mingw32'
261 HostVendor_CPP='unknown'
265 i[[3456]]86-apple-darwin*)
266 HostPlatform=i386-apple-darwin
267 TargetPlatform=i386-apple-darwin #hack
268 BuildPlatform=i386-apple-darwin #hack
269 HostPlatform_CPP='i386_apple_darwin'
271 HostVendor_CPP='apple'
275 HostPlatform=ia64-unknown-linux # hack again
276 TargetPlatform=ia64-unknown-linux
277 BuildPlatform=ia64-unknown-linux
278 HostPlatform_CPP='ia64_unknown_linux'
280 HostVendor_CPP='unknown'
284 HostPlatform=x86_64-unknown-linux
285 TargetPlatform=x86_64-unknown-linux
286 BuildPlatform=x86_64-unknown-linux
287 HostPlatform_CPP='x86_64_unknown_linux'
288 HostArch_CPP='x86_64'
289 HostVendor_CPP='unknown'
293 HostPlatform=m68k-unknown-linux # hack again
294 TargetPlatform=m68k-unknown-linux
295 BuildPlatform=m68k-unknown-linux
296 HostPlatform_CPP='m68k_unknown_linux'
298 HostVendor_CPP='unknown'
302 HostPlatform_CPP='m68k_next_nextstep2'
304 HostVendor_CPP='next'
305 HostOS_CPP='nextstep2'
308 HostPlatform_CPP='m68k_next_nextstep3'
310 HostVendor_CPP='next'
311 HostOS_CPP='nextstep3'
313 i[[3456]]86-next-nextstep3)
314 HostPlatform=i386-next-nextstep3 # hack again
315 TargetPlatform=i386-next-nextstep3
316 BuildPlatform=i386-next-nextstep3
317 HostPlatform_CPP='i386_next_nextstep3'
319 HostVendor_CPP='next'
320 HostOS_CPP='nextstep3'
323 HostPlatform=m68k-unknown-openbsd
324 TargetPlatform=m68k-unknown-openbsd
325 BuildPlatform=m68k-unknown-openbsd
326 HostPlatform_CPP='m68k_unknown_openbsd'
328 HostVendor_CPP='unknown'
332 HostPlatform=m68k-unknown-netbsd
333 TargetPlatform=m68k-unknown-netbsd
334 BuildPlatform=m68k-unknown-netbsd
335 HostPlatform_CPP='m68k_unknown_netbsd'
337 HostVendor_CPP='unknown'
341 HostPlatform=m68k-sun-sunos4
342 TargetPlatform=m68k-sun-sunos4 #hack
343 BuildPlatform=m68k-sun-sunos4 #hack
344 HostPlatform_CPP='m68k_sun_sunos4'
350 HostPlatform=m88k-unknown-openbsd
351 TargetPlatform=m88k-unknown-openbsd
352 BuildPlatform=m88k-unknown-openbsd
353 HostPlatform_CPP='m88k_unknown_openbsd'
355 HostVendor_CPP='unknown'
359 HostPlatform=mips-unknown-linux # hack again
360 TargetPlatform=mips-unknown-linux
361 BuildPlatform=mips-unknown-linux
362 HostPlatform_CPP='mips_unknown_linux'
364 HostVendor_CPP='unknown'
368 HostPlatform_CPP='mips_dec_ultrix'
369 HostArch_CPP='mipsel' # NB a little different
374 HostPlatform=mips-sgi-irix
375 TargetPlatform=mips-sgi-irix #hack
376 BuildPlatform=mips-sgi-irix #hack
377 HostPlatform_CPP='mips_sgi_irix'
378 HostArch_CPP='mipseb' # NB a little different
383 HostPlatform=rs6000-ibm-aix
384 TargetPlatform=rs6000-ibm-aix #hack
385 BuildPlatform=rs6000-ibm-aix #hack
386 HostPlatform_CPP='rs6000_ibm_aix'
387 HostArch_CPP='rs6000'
392 HostPlatform=powerpc-ibm-aix
393 TargetPlatform=powerpc-ibm-aix #hack
394 BuildPlatform=powerpc-ibm-aix #hack
395 HostPlatform_CPP='powerpc_ibm_aix'
396 HostArch_CPP='powerpc'
400 powerpc-apple-darwin*)
401 HostPlatform=powerpc-apple-darwin
402 TargetPlatform=powerpc-apple-darwin #hack
403 BuildPlatform=powerpc-apple-darwin #hack
404 HostPlatform_CPP='powerpc_apple_darwin'
405 HostArch_CPP='powerpc'
406 HostVendor_CPP='apple'
409 powerpc-unknown-linux*)
410 HostPlatform=powerpc-unknown-linux
411 TargetPlatform=powerpc-unknown-linux
412 BuildPlatform=powerpc-unknown-linux
413 HostPlatform_CPP='powerpc_unknown_linux'
414 HostArch_CPP='powerpc'
415 HostVendor_CPP='unknown'
418 powerpc-unknown-openbsd*)
419 HostPlatform=powerpc-unknown-openbsd
420 TargetPlatform=powerpc-unknown-openbsd
421 BuildPlatform=powerpc-unknown-openbsd
422 HostPlatform_CPP='powerpc_unknown_openbsd'
423 HostArch_CPP='powerpc'
424 HostVendor_CPP='unknown'
427 powerpc64-unknown-linux*)
428 HostPlatform=powerpc64-unknown-linux
429 TargetPlatform=powerpc64-unknown-linux
430 BuildPlatform=powerpc64-unknown-linux
431 HostPlatform_CPP='powerpc64_unknown_linux'
432 HostArch_CPP='powerpc64'
433 HostVendor_CPP='unknown'
438 HostPlatform=s390-ibm-linux
439 TargetPlatform=s390-ibm-linux #hack
440 BuildPlatform=s390-ibm-linux #hack
441 HostPlatform_CPP='s390_ibm_linux'
447 HostPlatform=sparc-sun-sunos4
448 TargetPlatform=sparc-sun-sunos4 #hack
449 BuildPlatform=sparc-sun-sunos4 #hack
450 HostPlatform_CPP='sparc_sun_sunos4'
456 HostPlatform=sparc-sun-solaris2
457 TargetPlatform=sparc-sun-solaris2 #hack
458 BuildPlatform=sparc-sun-solaris2 #hack
459 HostPlatform_CPP='sparc_sun_solaris2'
462 HostOS_CPP='solaris2'
465 HostPlatform=sparc-unknown-linux
466 TargetPlatform=sparc-unknown-linux
467 BuildPlatform=sparc-unknown-linux
468 HostPlatform_CPP='sparc_unknown_linux'
470 HostVendor_CPP='unknown'
474 HostPlatform=sparc-unknown-openbsd
475 TargetPlatform=sparc-unknown-openbsd
476 BuildPlatform=sparc-unknown-openbsd
477 HostPlatform_CPP='sparc_unknown_openbsd'
479 HostVendor_CPP='unknown'
483 HostPlatform=sparc64-unknown-openbsd
484 TargetPlatform=sparc64-unknown-openbsd
485 BuildPlatform=sparc64-unknown-openbsd
486 HostPlatform_CPP='sparc64_unknown_openbsd'
487 HostArch_CPP='sparc64'
488 HostVendor_CPP='unknown'
492 HostPlatform=vax-unknown-openbsd
493 TargetPlatform=vax-unknown-openbsd
494 BuildPlatform=vax-unknown-openbsd
495 HostPlatform_CPP='vax_unknown_openbsd'
497 HostVendor_CPP='unknown'
501 echo "Unrecognised platform: $HostPlatform"
505 echo "Canonicalised to: $HostPlatform"
506 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
507 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
509 BuildPlatform_CPP=$HostPlatform_CPP
510 TargetPlatform_CPP=$HostPlatform_CPP
511 BuildArch_CPP=$HostArch_CPP
512 TargetArch_CPP=$HostArch_CPP
513 BuildOS_CPP=$HostOS_CPP
515 TargetOS_CPP=$HostOS_CPP
516 BuildVendor_CPP=$HostVendor_CPP
517 TargetVendor_CPP=$HostVendor_CPP
519 AC_SUBST(BuildPlatform)
520 AC_SUBST(HostPlatform)
521 AC_SUBST(TargetPlatform)
522 AC_SUBST(HostPlatform_CPP)
523 AC_SUBST(BuildPlatform_CPP)
524 AC_SUBST(TargetPlatform_CPP)
526 AC_SUBST(HostArch_CPP)
527 AC_SUBST(BuildArch_CPP)
528 AC_SUBST(TargetArch_CPP)
531 AC_SUBST(HostOS_Full)
532 AC_SUBST(BuildOS_CPP)
533 AC_SUBST(TargetOS_CPP)
535 AC_SUBST(HostVendor_CPP)
536 AC_SUBST(BuildVendor_CPP)
537 AC_SUBST(TargetVendor_CPP)
541 dnl --------------------------------------------------------------
542 dnl * Calculate absolute path to build tree
543 dnl --------------------------------------------------------------
545 AC_MSG_CHECKING(for path to top of build tree)
549 dnl Remove common automounter nonsense
551 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
553 dnl Find 'hardtop_plat', the native format for 'hardtop'
554 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
556 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
557 dnl but we must not do that if we aren't building using Cygwin (notably msys),
558 dnl because cygpath doesn't exist. It seems that 'bash' sets OSTYPE to 'cygwin'
559 dnl or 'msys' respectively, but cygwin's 'sh' does not. So we hackily assume
560 dnl that if the shell hasn't set it to 'msys' then we must be in Cygwin. Sigh.
562 dnl The Right Thing is probably to test $BuildPlatform instead, but we are sloppy
563 dnl about setting that correctly at the moment, so we just work around for now.
565 dnl The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
567 case $HostPlatform in
568 i386-unknown-mingw32 | i386-unknown-cygwin32)
569 if test "${OSTYPE}" != "msys"
571 # convert $hardtop to a path that mingw will understand too
572 cyghardtop=${hardtop}
573 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
574 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
576 hardtop_plat=${hardtop}
580 hardtop_plat=${hardtop}
584 AC_SUBST(hardtop_plat)
586 AC_MSG_RESULT(${hardtop})
588 # We don't support building in directories with spaces.
590 *' '*) AC_MSG_ERROR([
591 The build system does not support building in a directory containing
592 space characters. Suggestion: move the build tree somewhere else.])
596 dnl --------------------------------------------------------------
597 dnl * Project specific configuration options
598 dnl --------------------------------------------------------------
599 dnl What follows is a bunch of options that can either be configured
600 dnl through command line options to the configure script or by
601 dnl supplying defns in the build tree's mk/build.mk. Having the option to
602 dnl use either is considered a Feature.
604 dnl ** What command to use to compile compiler sources ?
605 dnl --------------------------------------------------------------
608 [AC_HELP_STRING([--with-ghc=ARG],
609 [Use ARG as the path to GHC [default=autodetect]])],
610 [WithGhc="$withval"],
611 [if test "$GHC" = ""; then
612 AC_PATH_PROG([GHC], [ghc])
618 [AC_HELP_STRING([--with-hc=ARG],
619 [Use ARG as the path to the compiler for compiling ordinary
620 Haskell code (default= value of --with-ghc)])],
626 if test "$WithGhc" != ""; then
627 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
628 AC_SUBST(GhcVersion)dnl
629 AC_SUBST(GhcMajVersion)dnl
630 AC_SUBST(GhcMinVersion)dnl
631 AC_SUBST(GhcPatchLevel)dnl
634 AC_PATH_PROGS(NHC,nhc nhc98)
635 AC_PATH_PROG(HBC,hbc)
637 dnl ** Which gcc to use?
638 dnl --------------------------------------------------------------
640 [AC_HELP_STRING([--with-gcc=ARG],
641 [Use ARG as the path to GCC [default=autodetect]])],
642 [WhatGccIsCalled="$withval"
643 if test "x$HostPlatform" = "xi386-unknown-mingw32"
645 if test "${OSTYPE}" != "msys"
647 # Canonicalise to <drive>:/path/to/gcc
648 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
654 [WhatGccIsCalled="gcc"]
656 AC_SUBST(WhatGccIsCalled)
658 dnl ** Booting from .hc files?
659 dnl --------------------------------------------------------------
660 AC_ARG_ENABLE(hc-boot,
661 [AC_HELP_STRING([--enable-hc-boot],
662 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
663 (This option is mostly of interest to porters.) [default=no]])],
664 [ if test x"$enableval" = x"yes"; then
672 AC_SUBST(BootingFromHc)
674 dnl ** Booting from unregisterised .hc files?
675 dnl --------------------------------------------------------------
676 AC_ARG_ENABLE(hc-boot-unregisterised,
677 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
678 [ With --enable-hc-boot, treat the intermediate .hc files as
679 unregisterised rather than registerised code.
680 (This option is mostly of interest to porters.) [default=no]])],
681 [ if test x"$enableval" = x"yes"; then
682 BootingFromUnregisterisedHc=YES
684 BootingFromUnregisterisedHc=NO
687 [BootingFromUnregisterisedHc=NO]
689 AC_SUBST(BootingFromUnregisterisedHc)
691 if test "$BootingFromHc" = "NO"; then
692 if test "$BootingFromUnregisterisedHc" = "YES"; then
693 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
697 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
698 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/ghc"; then
699 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
702 dnl ** --enable-threaded-rts (not used any more)
703 dnl --------------------------------------------------------------
704 AC_ARG_ENABLE(threaded-rts,
705 [AC_HELP_STRING([--enable-threaded-rts],
706 [DEPRECATED (backwards compatibility only). [default=no]])],
707 [ if test x"$enableval" = x"yes"; then
715 AC_SUBST(ThreadedRts)
717 dnl ** Enable the construction of Win32 DLLs?
718 dnl --------------------------------------------------------------
720 dnl [ The ability to build the RTS and libraries as separate DLLs used
721 dnl to be supported, but isn't currently (updates to the RTS, compiler
722 dnl and build system would be required to bring it back again.)
723 dnl Hence, exposing it as an option is false advertisement, so better
724 dnl disable it to avoid confusion (but leave it commented-out rather
725 dnl than removed in order to remind ourselves to bring back the
726 dnl feature at some stage.) ]
728 dnl AC_ARG_ENABLE(win32-dlls,
729 dnl [ --enable-win32-dlls
730 dnl If on a Win32 platform running mingw32/cygwin, enable the
731 dnl construction of DLLs containing ghc-compiled code.
734 dnl case $HostOS_CPP in
737 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
741 dnl EnableWin32DLLs=YES
743 dnl [EnableWin32DLLs=NO]
745 dnl AC_SUBST(EnableWin32DLLs)
746 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
747 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
750 dnl ** Enable the building of the ObjectIO?
751 dnl --------------------------------------------------------------
752 AC_ARG_ENABLE(objectio,
753 [AC_HELP_STRING([--enable-objectio],
754 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
755 [ if test x"$enableval" = x"yes"; then
756 GhcLibsWithObjectIO=YES
758 GhcLibsWithObjectIO=NO
761 [GhcLibsWithObjectIO=NO]
763 AC_SUBST(GhcLibsWithObjectIO)
765 dnl ** .NET interop support?
766 dnl --------------------------------------------------------------
767 AC_ARG_ENABLE(dotnet,
768 [AC_HELP_STRING([--enable-dotnet],
769 [Build .NET interop layer. [default=no]])],
770 [ if test x"$enableval" = x"yes"; then
771 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
777 AC_SUBST(DotnetSupport)
779 dnl --------------------------------------------------------------
780 dnl End of configure script option section
781 dnl --------------------------------------------------------------
784 dnl --------------------------------------------------------------
785 dnl * General configuration checks
786 dnl --------------------------------------------------------------
788 dnl ** Can the unix package be built?
789 dnl --------------------------------------------------------------
791 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
796 AC_SUBST([GhcLibsWithUnix])
801 dnl ** look for `perl', but only in /bin on Windows
804 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
805 if test -z "$PerlCmd"; then
806 echo "You must install the version of Perl shipped with GHC"
807 echo "(or a compatible one) in /bin."
812 AC_PATH_PROG(PerlCmd,perl)
813 if test -z "$PerlCmd"; then
814 echo "You must install perl before you can continue"
815 echo "Perhaps it is already installed, but not in your PATH?"
818 FPTOOLS_CHECK_PERL_VERSION
823 dnl ** does #! path/to/perl work? (sometimes it's too long...)
826 dnl ** check for Python
827 AC_PATH_PROG(PythonCmd,python)
829 dnl ** look for GCC and find out which version
830 dnl Figure out which C compiler to use. Gcc is preferred.
831 dnl If gcc, make sure it's at least 2.1
836 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
839 dnl ** Without optimization some INLINE trickery fails for GHCi
842 dnl ** Try to add -mno-cygwin to the C compiler options
843 FP_CHECK_FLAG([-mno-cygwin], [
844 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
845 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
846 AC_SUBST(SRC_CC_OPTS)
848 dnl ** figure out how to do context diffs
851 dnl ** Find find command (for Win32's benefit)
854 dnl ** Find sort command (for the benefit of Win32 environs)
857 dnl ** figure out how to do a BSD-ish install
860 dnl If you can run configure, you certainly have /bin/sh
861 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
863 dnl ** how to invoke `ar' and `ranlib'
864 FP_PROG_AR_NEEDS_RANLIB
865 FP_PROG_AR_SUPPORTS_INPUT
867 dnl ** Check to see whether ln -s works
871 dnl ** Find the path to sed
872 AC_PATH_PROG(SedCmd,sed)
875 dnl ** check for time command
876 AC_PATH_PROG(TimeCmd,time)
879 dnl if GNU tar is named gtar, look for it first.
880 AC_PATH_PROGS(TarCmd,gtar tar,tar)
882 dnl ** check for DocBook toolchain
884 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])
887 dnl ** check for ghc-pkg command
890 AC_ARG_WITH(greencard,
891 [AC_HELP_STRING([--with-greencard=ARG],
892 [Use ARG as the path to greencard [default=autodetct]])],
894 GreenCardCmd=$withval;
895 FPTOOLS_GREENCARD(3.00)
899 AC_ARG_ENABLE(src-tree-happy,
900 [AC_HELP_STRING([--enable-src-tree-happy],
901 [Build and use source tree (fptools/happy) version of Happy.
902 [default=autodetect]])],
903 [ if test x"$enableval" = x"yes"; then
911 dnl ** check for installed happy binary + version
912 dnl (don't do it if we're booting from .hc files though.)
913 if test "$BootingFromHc" = "NO"; then
917 AC_ARG_ENABLE(src-tree-haddock,
918 [AC_HELP_STRING([--enable-src-tree-haddock],
919 [Build and use source tree (fptools/haddock) version of Haddock.
920 [default=autodetect]])],
921 [ if test x"$enableval" = x"yes"; then
922 UseSrcTreeHaddock=YES
927 [UseSrcTreeHaddock=NO]
929 dnl ** check for installed haddock
932 AC_ARG_ENABLE(src-tree-alex,
933 [AC_HELP_STRING([--enable-src-tree-alex],
934 [Build and use source tree (fptools/alex) version of Alex.
935 [default=autodetect]])],
936 [ if test x"$enableval" = x"yes"; then
944 dnl ** check for installed alex binary + version
945 dnl (don't do it if we're booting from .hc files though.)
946 if test "$BootingFromHc" = "NO"; then
950 dnl --------------------------------------------------
951 dnl ### program checking section ends here ###
952 dnl --------------------------------------------------
954 dnl --------------------------------------------------
955 dnl * Platform header file and syscall feature tests
956 dnl ### checking the state of the local header files and syscalls ###
958 dnl ** check for full ANSI header (.h) files
961 dnl ** Enable large file support. NB. do this before testing the type of
962 dnl off_t, because it will affect the result of that test.
965 dnl ** check for specific header (.h) files that we are interested in
966 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])
968 AC_CHECK_HEADER([readline/readline.h], [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
969 AC_CHECK_HEADER([readline/history.h], [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
971 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
972 GhcLibsWithReadline=YES
973 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
975 GhcLibsWithReadline=NO
976 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
978 AC_SUBST(GhcLibsWithReadline)
980 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
983 dnl ** how do we get a timezone name, and UTC offset ?
986 dnl ** do we have altzone?
989 dnl ** do we have long longs?
990 AC_CHECK_TYPES([long long])
992 dnl ** what are the sizes of various types
993 AC_CHECK_SIZEOF(char, 1)
994 AC_CHECK_SIZEOF(double, 8)
995 AC_CHECK_SIZEOF(float, 4)
996 AC_CHECK_SIZEOF(int, 4)
997 AC_CHECK_SIZEOF(long, 4)
998 if test "$ac_cv_type_long_long" = yes; then
999 AC_CHECK_SIZEOF(long long, 8)
1001 AC_CHECK_SIZEOF(short, 2)
1002 AC_CHECK_SIZEOF(unsigned char, 1)
1003 AC_CHECK_SIZEOF(unsigned int, 4)
1004 AC_CHECK_SIZEOF(unsigned long, 4)
1005 if test "$ac_cv_type_long_long" = yes; then
1006 AC_CHECK_SIZEOF(unsigned long long, 8)
1008 AC_CHECK_SIZEOF(unsigned short, 2)
1009 AC_CHECK_SIZEOF(void *, 4)
1011 dnl ** what are alignment constraints on various types
1012 FP_CHECK_ALIGNMENT(char)
1013 FP_CHECK_ALIGNMENT(double)
1014 FP_CHECK_ALIGNMENT(float)
1015 FP_CHECK_ALIGNMENT(int)
1016 FP_CHECK_ALIGNMENT(long)
1017 if test "$ac_cv_type_long_long" = yes; then
1018 FP_CHECK_ALIGNMENT(long long)
1020 FP_CHECK_ALIGNMENT(short)
1021 FP_CHECK_ALIGNMENT(unsigned char)
1022 FP_CHECK_ALIGNMENT(unsigned int)
1023 FP_CHECK_ALIGNMENT(unsigned long)
1024 if test "$ac_cv_type_long_long" = yes; then
1025 FP_CHECK_ALIGNMENT(unsigned long long)
1027 FP_CHECK_ALIGNMENT(unsigned short)
1028 FP_CHECK_ALIGNMENT(void *)
1030 FP_CHECK_FUNC([WinExec],
1031 [@%:@include <windows.h>], [WinExec("",0)])
1033 FP_CHECK_FUNC([GetModuleFileName],
1034 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1036 dnl ** check return type of signal handlers
1037 dnl Foo: assumes we can use prototypes.
1038 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1039 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1040 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
1041 dnl #include <signal.h>
1045 dnl void (*signal (int, void (*)(int)))(int);
1048 dnl [ac_cv_type_signal_handler=void_int],
1049 dnl [ac_cv_type_signal_handler=int_void])])
1050 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1051 dnl AC_DEFINE(VOID_INT_SIGNALS)
1054 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1056 if test "$ac_cv_type_signal" = void; then
1057 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).])
1060 dnl ** check for more functions
1061 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
1062 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times])
1063 dnl ** For ghc/rts/gmp:
1064 AC_CHECK_FUNCS([getpagesize])
1066 dnl ** check whether this machine has gmp3 installed
1067 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1068 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1069 HaveLibGmp=NO; LibGmp=not-installed))
1070 AC_SUBST(HaveLibGmp)
1073 dnl ** (Mac OS X only: check for GMP.framework)
1075 if test $HostPlatform = "powerpc-apple-darwin"; then
1076 AC_MSG_CHECKING([for GMP.framework])
1078 LIBS="-framework GMP"
1079 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
1080 if test $HaveFrameworkGMP = YES; then
1081 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
1084 AC_MSG_RESULT([$HaveFrameworkGMP])
1086 AC_SUBST(HaveFrameworkGMP)
1088 dnl ** check for mingwex library
1089 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1090 AC_SUBST(HaveLibMingwEx)
1092 if test $HaveLibMingwEx = YES ; then
1093 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1096 if test "$HaveLibGmp" = "NO"; then
1097 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1098 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1102 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1103 dnl the order of these tests matters: bfd needs liberty
1104 AC_CHECK_LIB(iberty, xmalloc)
1105 AC_CHECK_LIB(bfd, bfd_init)
1107 dnl ** check for readline, for Hugs and hslibs' Readline
1108 dnl ncurses supersedes termcap and curses, but for compatibility,
1109 dnl we have to check for all...
1110 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
1111 AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
1112 AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
1113 HaveLibTermcap=NO; LibTermcap=not-installed)))
1115 if test $HaveLibTermcap = YES ; then
1116 LIBS="-l$LibTermcap $LIBS"
1117 AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
1120 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
1121 AC_DEFINE([HAVE_READLINE_LIBS], [1], [Define to 1 if readline plus any additional libs needed for it exist.])
1122 LibsReadline="readline $LibTermcap"
1124 AC_DEFINE([HAVE_READLINE_LIBS], [0], [Define to 1 if readline plus any additional libs needed for it exist.])
1127 AC_SUBST(LibsReadline)
1129 if test "$HaveLibReadline"; then
1130 AC_CHECK_LIB(readline, rl_erase_empty_line,
1131 [AC_DEFINE([HAVE_READLINE_4], [1], [Define to 1 if readline has version >= 4.0.])],
1132 [AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])])
1133 AC_CHECK_LIB(readline, rl_free_undo_list,
1134 [AC_DEFINE([HAVE_READLINE_4_2], [1], [Define to 1 if readline has version >= 4.2.])],
1135 [AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])])
1137 AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])
1138 AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])
1141 dnl ** check for math library
1142 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
1143 if test x"$fp_libm_not_needed" = xdunno; then
1144 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
1148 dnl ################################################################
1149 dnl Check for libraries
1150 dnl ################################################################
1152 dnl ** check for libdl & RTLD_NEXT
1154 AC_CHECK_LIB(dl, dlopen,
1156 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1161 dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
1162 AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
1171 AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
1177 AC_SUBST(HaveRtldNext)
1179 dnl ** RTLD_DEFAULT isn't available on cygwin
1180 AC_MSG_CHECKING(for RTLD_DEFAULT from dlfcn.h)
1189 AC_DEFINE([HAVE_RTLDDEFAULT], [1], [Define to 1 if RTLD_DEFAULT is available.])
1195 AC_SUBST(HaveRtldDefault)
1197 dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
1198 AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
1207 AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
1213 AC_SUBST(HaveRtldLocal)
1215 dnl ** RTLD_GLOBAL isn't available on openbsd
1216 AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
1225 AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
1231 AC_SUBST(HaveRtldGlobal)
1233 dnl ** RTLD_NOW isn't available on openbsd
1234 AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
1243 AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h])
1249 AC_SUBST(HaveRtldNow)
1251 dnl --------------------------------------------------
1252 dnl * Miscellaneous feature tests
1253 dnl --------------------------------------------------
1255 dnl ** can we get alloca?
1258 dnl ** Working vfork?
1261 dnl ** determine whether or not const works
1264 dnl ** are we big endian?
1267 dnl ** check for leading underscores in symbol names
1268 FP_LEADING_UNDERSCORE
1270 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
1274 dnl ** check for Apple-style dead-stripping support
1275 dnl (.subsections-via-symbols assembler directive)
1278 AC_MSG_CHECKING(for .subsections_via_symbols)
1279 AC_TRY_COMPILE(,[__asm__ (".subsections_via_symbols");],
1282 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
1283 [Define to 1 if Apple-style dead-stripping is supported.])
1287 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[0],
1288 [Define to 1 if Apple-style dead-stripping is supported.])
1291 dnl ** check for Apple's "interesting" long double compatibility scheme
1292 AC_MSG_CHECKING(for printf$LDBLStub)
1293 AC_TRY_LINK_FUNC(printf$LSBLStub,
1296 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
1297 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1301 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
1302 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
1306 AC_CONFIG_FILES([mk/config.mk])
1307 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])