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-1998
8 # Configure script template for the Glasgow functional programming tools
10 # Process with 'autoconf' 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 # First off, a distrib sanity check..
17 AC_INIT(mk/config.mk.in)
19 dnl * We require autoconf version 2.52
20 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
21 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
24 dnl * Declare subdirectories that have a private configure script
26 dnl After the toplevel configuration is complete, the script will recurse into
27 dnl these subdirectories if they exist. The use of a cache file makes repeated
29 AC_CONFIG_SUBDIRS([ghc libraries])
31 # -------------------------------------------------------------------------
32 # Prepare to generate the following header files
35 AC_CONFIG_HEADER(mk/config.h)
37 # No, semi-sadly, we don't do `--srcdir'...
38 if test x"$srcdir" != 'x.' ; then
39 echo "This configuration does not support the \`--srcdir' option.."
43 dnl--------------------------------------------------------------------
44 dnl * Choose host(/target/build) platform
45 dnl--------------------------------------------------------------------
47 dnl Guess host/target/build platform(s) if necessary.
50 # "$host" defaults to "$target"
51 if test "x$host" = xNONE ; then
55 dnl ** canonicalize platform names
56 BuildPlatform=`/bin/sh $srcdir/config.sub $build` || exit 1
57 HostPlatform=`/bin/sh $srcdir/config.sub $host` || exit 1
58 TargetPlatform=`/bin/sh $srcdir/config.sub $target` || exit 1
60 if test x"$TargetPlatform" != x"$HostPlatform" ; then
61 echo "GHC configuration does not support differing host/target (i.e., cross-compiling)"
67 # The following will be more difficult when we *are* cross-compiling.
68 # Suitable names to slam in *_CPP are in platform.h.in.
69 # We also record the architecture, vendor, and operating system (OS)
72 alpha*-dec-osf[[12]]*)
73 HostPlatform=alpha-dec-osf1 # canonicalise for our purposes
74 TargetPlatform=alpha-dec-osf1 # this will work for now... (hack)
75 BuildPlatform=alpha-dec-osf1 # hack
76 HostPlatform_CPP='alpha_dec_osf1'
81 alpha*-dec-osf[[345]]*)
82 HostPlatform=alpha-dec-osf3 # canonicalise for our purposes
83 TargetPlatform=alpha-dec-osf3 # this will work for now... (hack)
84 BuildPlatform=alpha-dec-osf3 # hack
85 HostPlatform_CPP='alpha_dec_osf3'
90 alpha*-unknown-linux*)
91 HostPlatform=alpha-unknown-linux
92 TargetPlatform=alpha-unknown-linux
93 BuildPlatform=alpha-unknown-linux
94 HostPlatform_CPP='alpha_unknown_linux'
96 HostVendor_CPP='unknown'
99 alpha*-unknown-freebsd*)
100 HostPlatform=alpha-unknown-freebsd
101 TargetPlatform=alpha-unknown-freebsd
102 BuildPlatform=alpha-unknown-freebsd
103 HostPlatform_CPP='alpha_unknown_freebsd'
105 HostVendor_CPP='unknown'
108 alpha*-unknown-openbsd*)
109 HostPlatform=alpha-unknown-openbsd
110 TargetPlatform=alpha-unknown-openbsd
111 BuildPlatform=alpha-unknown-openbsd
112 HostPlatform_CPP='alpha_unknown_openbsd'
114 HostVendor_CPP='unknown'
118 HostPlatform=x86_64-unknown-openbsd
119 TargetPlatform=x86_64-unknown-openbsd
120 BuildPlatform=x86_64-unknown-openbsd
121 HostPlatform_CPP='x86_64_unknown_openbsd'
122 HostArch_CPP='x86_64'
123 HostVendor_CPP='unknown'
127 HostPlatform=arm-unknown-linux # hack again
128 TargetPlatform=arm-unknown-linux
129 BuildPlatform=arm-unknown-linux
130 HostPlatform_CPP='arm_unknown_linux'
132 HostVendor_CPP='unknown'
136 HostPlatform=arm-unknown-openbsd
137 TargetPlatform=arm-unknown-openbsd
138 BuildPlatform=arm-unknown-openbsd
139 HostPlatform_CPP='arm_unknown_openbsd'
141 HostVendor_CPP='unknown'
145 HostPlatform=hppa-unknown-linux # hack again
146 TargetPlatform=hppa-unknown-linux
147 BuildPlatform=hppa-unknown-linux
148 HostPlatform_CPP='hppa_unknown_linux'
150 HostVendor_CPP='unknown'
154 HostPlatform=hppa-unknown-openbsd # hack again
155 TargetPlatform=hppa-unknown-openbsd
156 BuildPlatform=hppa-unknown-openbsd
157 HostPlatform_CPP='hppa_unknown_openbsd'
159 HostVendor_CPP='unknown'
163 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
164 TargetPlatform=hppa1.1-hp-hpux
165 BuildPlatform=hppa1.1-hp-hpux
166 HostPlatform_CPP='hppa1_1_hp_hpux'
167 HostArch_CPP='hppa1_1'
171 i[[3456]]86-*-linuxaout*)
172 HostPlatform=i386-unknown-linuxaout # hack again
173 TargetPlatform=i386-unknown-linuxaout
174 BuildPlatform=i386-unknown-linuxaout
175 HostPlatform_CPP='i386_unknown_linuxaout'
177 HostVendor_CPP='unknown'
178 HostOS_CPP='linuxaout'
180 i[[3456]]86-*-linux*)
181 HostPlatform=i386-unknown-linux # hack again
182 TargetPlatform=i386-unknown-linux
183 BuildPlatform=i386-unknown-linux
184 HostPlatform_CPP='i386_unknown_linux'
186 HostVendor_CPP='unknown'
189 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
190 HostPlatform=i386-unknown-freebsd # hack again
191 TargetPlatform=i386-unknown-freebsd
192 BuildPlatform=i386-unknown-freebsd
193 HostPlatform_CPP='i386_unknown_freebsd'
195 HostVendor_CPP='unknown'
198 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
199 HostPlatform=i386-unknown-freebsd2 # hack again
200 TargetPlatform=i386-unknown-freebsd2
201 BuildPlatform=i386-unknown-freebsd2
202 HostPlatform_CPP='i386_unknown_freebsd2'
204 HostVendor_CPP='unknown'
205 HostOS_CPP='freebsd2'
207 i[[3456]]86-*-netbsd*)
208 HostPlatform=i386-unknown-netbsd # hack again
209 TargetPlatform=i386-unknown-netbsd
210 BuildPlatform=i386-unknown-netbsd
211 HostPlatform_CPP='i386_unknown_netbsd'
213 HostVendor_CPP='unknown'
216 i[[3456]]86-*-openbsd*)
217 HostPlatform=i386-unknown-openbsd # hack again
218 TargetPlatform=i386-unknown-openbsd
219 BuildPlatform=i386-unknown-openbsd
220 HostPlatform_CPP='i386_unknown_openbsd'
222 HostVendor_CPP='unknown'
225 i[[3456]]86-*-solaris2*)
226 HostPlatform=i386-unknown-solaris2 # hack again
227 TargetPlatform=i386-unknown-solaris2
228 BuildPlatform=i386-unknown-solaris2
229 HostPlatform_CPP='i386_unknown_solaris2'
231 HostVendor_CPP='unknown'
232 HostOS_CPP='solaris2'
234 i[[3456]]86-*-cygwin*)
235 HostPlatform=i386-unknown-cygwin32 # hack again
236 TargetPlatform=i386-unknown-cygwin32
237 BuildPlatform=i386-unknown-cygwin32
238 HostPlatform_CPP='i386_unknown_cygwin32'
240 HostVendor_CPP='unknown'
241 HostOS_CPP='cygwin32'
244 i[[3456]]86-*-mingw32*)
245 HostPlatform=i386-unknown-mingw32 # hack again
246 TargetPlatform=i386-unknown-mingw32
247 BuildPlatform=i386-unknown-mingw32
248 HostPlatform_CPP='i386_unknown_mingw32'
250 HostVendor_CPP='unknown'
255 HostPlatform=ia64-unknown-linux # hack again
256 TargetPlatform=ia64-unknown-linux
257 BuildPlatform=ia64-unknown-linux
258 HostPlatform_CPP='ia64_unknown_linux'
260 HostVendor_CPP='unknown'
264 HostPlatform=x86_64-unknown-linux
265 TargetPlatform=x86_64-unknown-linux
266 BuildPlatform=x86_64-unknown-linux
267 HostPlatform_CPP='x86_64_unknown_linux'
268 HostArch_CPP='x86_64'
269 HostVendor_CPP='unknown'
273 HostPlatform=m68k-unknown-linux # hack again
274 TargetPlatform=m68k-unknown-linux
275 BuildPlatform=m68k-unknown-linux
276 HostPlatform_CPP='m68k_unknown_linux'
278 HostVendor_CPP='unknown'
282 HostPlatform_CPP='m68k_next_nextstep2'
284 HostVendor_CPP='next'
285 HostOS_CPP='nextstep2'
288 HostPlatform_CPP='m68k_next_nextstep3'
290 HostVendor_CPP='next'
291 HostOS_CPP='nextstep3'
293 i[[3456]]86-next-nextstep3)
294 HostPlatform=i386-next-nextstep3 # hack again
295 TargetPlatform=i386-next-nextstep3
296 BuildPlatform=i386-next-nextstep3
297 HostPlatform_CPP='i386_next_nextstep3'
299 HostVendor_CPP='next'
300 HostOS_CPP='nextstep3'
303 HostPlatform=m68k-unknown-openbsd
304 TargetPlatform=m68k-unknown-openbsd
305 BuildPlatform=m68k-unknown-openbsd
306 HostPlatform_CPP='m68k_unknown_openbsd'
308 HostVendor_CPP='unknown'
312 HostPlatform=m68k-unknown-netbsd
313 TargetPlatform=m68k-unknown-netbsd
314 BuildPlatform=m68k-unknown-netbsd
315 HostPlatform_CPP='m68k_unknown_netbsd'
317 HostVendor_CPP='unknown'
321 HostPlatform=m68k-sun-sunos4
322 TargetPlatform=m68k-sun-sunos4 #hack
323 BuildPlatform=m68k-sun-sunos4 #hack
324 HostPlatform_CPP='m68k_sun_sunos4'
330 HostPlatform=mips-unknown-linux # hack again
331 TargetPlatform=mips-unknown-linux
332 BuildPlatform=mips-unknown-linux
333 HostPlatform_CPP='mips_unknown_linux'
335 HostVendor_CPP='unknown'
339 HostPlatform_CPP='mips_dec_ultrix'
340 HostArch_CPP='mipsel' # NB a little different
345 HostPlatform=mips-sgi-irix
346 TargetPlatform=mips-sgi-irix #hack
347 BuildPlatform=mips-sgi-irix #hack
348 HostPlatform_CPP='mips_sgi_irix'
349 HostArch_CPP='mipseb' # NB a little different
354 HostPlatform=rs6000-ibm-aix
355 TargetPlatform=rs6000-ibm-aix #hack
356 BuildPlatform=rs6000-ibm-aix #hack
357 HostPlatform_CPP='rs6000_ibm_aix'
358 HostArch_CPP='rs6000'
363 HostPlatform=powerpc-ibm-aix
364 TargetPlatform=powerpc-ibm-aix #hack
365 BuildPlatform=powerpc-ibm-aix #hack
366 HostPlatform_CPP='powerpc_ibm_aix'
367 HostArch_CPP='powerpc'
371 powerpc-apple-darwin*)
372 HostPlatform=powerpc-apple-darwin
373 TargetPlatform=powerpc-apple-darwin #hack
374 BuildPlatform=powerpc-apple-darwin #hack
375 HostPlatform_CPP='powerpc_apple_darwin'
376 HostArch_CPP='powerpc'
377 HostVendor_CPP='apple'
380 powerpc-unknown-linux*)
381 HostPlatform=powerpc-unknown-linux
382 TargetPlatform=powerpc-unknown-linux
383 BuildPlatform=powerpc-unknown-linux
384 HostPlatform_CPP='powerpc_unknown_linux'
385 HostArch_CPP='powerpc'
386 HostVendor_CPP='unknown'
389 powerpc-unknown-openbsd*)
390 HostPlatform=powerpc-unknown-openbsd
391 TargetPlatform=powerpc-unknown-openbsd
392 BuildPlatform=powerpc-unknown-openbsd
393 HostPlatform_CPP='powerpc_unknown_openbsd'
394 HostArch_CPP='powerpc'
395 HostVendor_CPP='unknown'
399 HostPlatform=s390-ibm-linux
400 TargetPlatform=s390-ibm-linux #hack
401 BuildPlatform=s390-ibm-linux #hack
402 HostPlatform_CPP='s390_ibm_linux'
408 HostPlatform=sparc-sun-sunos4
409 TargetPlatform=sparc-sun-sunos4 #hack
410 BuildPlatform=sparc-sun-sunos4 #hack
411 HostPlatform_CPP='sparc_sun_sunos4'
417 HostPlatform=sparc-sun-solaris2
418 TargetPlatform=sparc-sun-solaris2 #hack
419 BuildPlatform=sparc-sun-solaris2 #hack
420 HostPlatform_CPP='sparc_sun_solaris2'
423 HostOS_CPP='solaris2'
426 HostPlatform=sparc-unknown-linux
427 TargetPlatform=sparc-unknown-linux
428 BuildPlatform=sparc-unknown-linux
429 HostPlatform_CPP='sparc_unknown_linux'
431 HostVendor_CPP='unknown'
435 HostPlatform=sparc-unknown-openbsd
436 TargetPlatform=sparc-unknown-openbsd
437 BuildPlatform=sparc-unknown-openbsd
438 HostPlatform_CPP='sparc_unknown_openbsd'
440 HostVendor_CPP='unknown'
444 echo "Unrecognised platform: $HostPlatform"
448 echo "Canonicalised to: $HostPlatform"
449 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
450 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
452 BuildPlatform_CPP=$HostPlatform_CPP
453 TargetPlatform_CPP=$HostPlatform_CPP
454 BuildArch_CPP=$HostArch_CPP
455 TargetArch_CPP=$HostArch_CPP
456 BuildOS_CPP=$HostOS_CPP
458 TargetOS_CPP=$HostOS_CPP
459 BuildVendor_CPP=$HostVendor_CPP
460 TargetVendor_CPP=$HostVendor_CPP
462 AC_SUBST(BuildPlatform)
463 AC_SUBST(HostPlatform)
464 AC_SUBST(TargetPlatform)
465 AC_SUBST(HostPlatform_CPP)
466 AC_SUBST(BuildPlatform_CPP)
467 AC_SUBST(TargetPlatform_CPP)
469 AC_SUBST(HostArch_CPP)
470 AC_SUBST(BuildArch_CPP)
471 AC_SUBST(TargetArch_CPP)
474 AC_SUBST(HostOS_Full)
475 AC_SUBST(BuildOS_CPP)
476 AC_SUBST(TargetOS_CPP)
478 AC_SUBST(HostVendor_CPP)
479 AC_SUBST(BuildVendor_CPP)
480 AC_SUBST(TargetVendor_CPP)
484 dnl --------------------------------------------------------------
485 dnl * Calculate absolute path to build tree
486 dnl --------------------------------------------------------------
488 AC_MSG_CHECKING(for path to top of build tree)
492 dnl Remove common automounter nonsense
494 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
496 dnl Find 'hardtop_plat', the native format for 'hardtop'
497 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
499 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
500 dnl but we must not do that if we aren't building using Cygwin (notably msys),
501 dnl because cygpath doesn't exist. It seems that 'bash' sets OSTYPE to 'cygwin'
502 dnl or 'msys' respectively, but cygwin's 'sh' does not. So we hackily assume
503 dnl that if the shell hasn't set it to 'msys' then we must be in Cygwin. Sigh.
505 dnl The Right Thing is probably to test $BuildPlatform instead, but we are sloppy
506 dnl about setting that correctly at the moment, so we just work around for now.
508 dnl The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
510 case $HostPlatform in
511 i386-unknown-mingw32 | i386-unknown-cygwin32)
512 if test "${OSTYPE}" != "msys"
514 # convert $hardtop to a path that mingw will understand too
515 cyghardtop=${hardtop}
516 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
517 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
519 hardtop_plat=${hardtop}
523 hardtop_plat=${hardtop}
527 AC_SUBST(hardtop_plat)
529 AC_MSG_RESULT(${hardtop})
531 dnl --------------------------------------------------------------
532 dnl * Project specific configuration options
533 dnl --------------------------------------------------------------
534 dnl What follows is a bunch of options that can either be configured
535 dnl through command line options to the configure script or by
536 dnl supplying defns in the build tree's mk/build.mk. Having the option to
537 dnl use either is considered a Feature.
539 dnl ** What command to use to compile compiler sources ?
540 dnl --------------------------------------------------------------
543 [AC_HELP_STRING([--with-ghc=ARG],
544 [Use ARG as the path to GHC [default=autodetect]])],
545 [ WithGhc="$withval" ],
547 if test "$GHC" = ""; then
548 AC_PATH_PROG(GHC,ghc)
555 [AC_HELP_STRING([--with-hc=ARG],
556 [Use ARG as the path to the compiler for compiling ordinary
557 Haskell code (default= value of --with-ghc)])],
563 if test "$WithGhc" != ""; then
564 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
565 AC_SUBST(GhcVersion)dnl
566 AC_SUBST(GhcMajVersion)dnl
567 AC_SUBST(GhcMinVersion)dnl
568 AC_SUBST(GhcPatchLevel)dnl
571 AC_PATH_PROGS(NHC,nhc nhc98)
572 AC_PATH_PROG(HBC,hbc)
574 dnl ** Which gcc to use?
575 dnl --------------------------------------------------------------
577 [AC_HELP_STRING([--with-gcc=ARG],
578 [Use ARG as the path to GCC [default=autodetect]])],
579 [WhatGccIsCalled="$withval"
580 if test "x$HostPlatform" = "xi386-unknown-mingw32"
582 if test "${OSTYPE}" != "msys"
584 # Canonicalise to <drive>:/path/to/gcc
585 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
589 [WhatGccIsCalled="gcc"]
591 AC_SUBST(WhatGccIsCalled)
593 dnl ** Booting from .hc files?
594 dnl --------------------------------------------------------------
595 AC_ARG_ENABLE(hc-boot,
596 [AC_HELP_STRING([--enable-hc-boot],
597 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
598 (This option is mostly of interest to porters.) [default=no]])],
599 [ if test x"$enableval" = x"yes"; then
607 AC_SUBST(BootingFromHc)
609 dnl ** Booting from unregisterised .hc files?
610 dnl --------------------------------------------------------------
611 AC_ARG_ENABLE(hc-boot-unregisterised,
612 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
613 [ With --enable-hc-boot, treat the intermediate .hc files as
614 unregisterised rather than registerised code.
615 (This option is mostly of interest to porters.) [default=no]])],
616 [ if test x"$enableval" = x"yes"; then
617 BootingFromUnregisterisedHc=YES
619 BootingFromUnregisterisedHc=NO
622 [BootingFromUnregisterisedHc=NO]
624 AC_SUBST(BootingFromUnregisterisedHc)
626 if test "$BootingFromHc" = "NO"; then
627 if test "$BootingFromUnregisterisedHc" = "YES"; then
628 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
632 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
633 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/ghc"; then
634 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
637 dnl ** --enable-threaded-rts (not used any more)
638 dnl --------------------------------------------------------------
639 AC_ARG_ENABLE(threaded-rts,
640 [AC_HELP_STRING([--enable-threaded-rts],
641 [DEPRECATED (backwards compatibility only). [default=no]])],
642 [ if test x"$enableval" = x"yes"; then
650 AC_SUBST(ThreadedRts)
652 dnl ** Enable the construction of Win32 DLLs?
653 dnl --------------------------------------------------------------
655 dnl [ The ability to build the RTS and libraries as separate DLLs used
656 dnl to be supported, but isn't currently (updates to the RTS, compiler
657 dnl and build system would be required to bring it back again.)
658 dnl Hence, exposing it as an option is false advertisement, so better
659 dnl disable it to avoid confusion (but leave it commented-out rather
660 dnl than removed in order to remind ourselves to bring back the
661 dnl feature at some stage.) ]
663 dnl AC_ARG_ENABLE(win32-dlls,
664 dnl [ --enable-win32-dlls
665 dnl If on a Win32 platform running mingw32/cygwin, enable the
666 dnl construction of DLLs containing ghc-compiled code.
669 dnl case $HostOS_CPP in
672 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
676 dnl EnableWin32DLLs=YES
678 dnl [EnableWin32DLLs=NO]
680 dnl AC_SUBST(EnableWin32DLLs)
681 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
682 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
685 dnl ** Enable the building of the ObjectIO?
686 dnl --------------------------------------------------------------
687 AC_ARG_ENABLE(objectio,
688 [AC_HELP_STRING([--enable-objectio],
689 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
690 [ if test x"$enableval" = x"yes"; then
691 GhcLibsWithObjectIO=YES
693 GhcLibsWithObjectIO=NO
696 [GhcLibsWithObjectIO=NO]
698 AC_SUBST(GhcLibsWithObjectIO)
700 dnl ** Enable the building of the OpenAL binding?
701 dnl --------------------------------------------------------------
702 AC_ARG_ENABLE([openal],
703 AC_HELP_STRING([--enable-openal],
704 [Build OpenAL binding [[default=autodetect]]]),
705 [ if test x"$enableval" = x"yes"; then
706 GhcLibsWithOpenAL=YES
711 [GhcLibsWithOpenAL=yes])
713 AC_SUBST([GhcLibsWithOpenAL])
715 dnl ** .NET interop support?
716 dnl --------------------------------------------------------------
717 AC_ARG_ENABLE(dotnet,
718 [AC_HELP_STRING([--enable-dotnet],
719 [Build .NET interop layer. [default=no]])],
720 [ if test x"$enableval" = x"yes"; then
721 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
727 AC_SUBST(DotnetSupport)
729 dnl --------------------------------------------------------------
730 dnl End of configure script option section
731 dnl --------------------------------------------------------------
734 dnl --------------------------------------------------------------
735 dnl * General configuration checks
736 dnl --------------------------------------------------------------
738 dnl ** Can the unix package be built?
739 dnl --------------------------------------------------------------
741 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
746 AC_SUBST([GhcLibsWithUnix])
751 dnl ** look for `perl', but only in /bin on Windows
754 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
755 if test -z "$PerlCmd"; then
756 echo "You must install the version of Perl shipped with GHC"
757 echo "(or a compatible one) in /bin."
762 AC_PATH_PROG(PerlCmd,perl)
763 if test -z "$PerlCmd"; then
764 echo "You must install perl before you can continue"
765 echo "Perhaps it is already installed, but not in your PATH?"
768 FPTOOLS_CHECK_PERL_VERSION
773 dnl ** does #! path/to/perl work? (sometimes it's too long...)
776 dnl ** check for Python
777 AC_PATH_PROG(PythonCmd,python)
779 dnl ** look for GCC and find out which version
780 dnl Figure out which C compiler to use. Gcc is preferred.
781 dnl If gcc, make sure it's at least 2.1
785 FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR
787 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
790 dnl ** Without optimization some INLINE trickery fails for GHCi
793 dnl ** Try to add -mno-cygwin to the C compiler options
794 FP_CHECK_FLAG([-mno-cygwin], [
795 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
796 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
797 AC_SUBST(SRC_CC_OPTS)
799 dnl ** figure out how to do context diffs
802 dnl ** Find find command (for Win32's benefit)
805 dnl ** figure out how to do a BSD-ish install
808 dnl If you can run configure, you certainly have /bin/sh
809 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
811 dnl ** how to invoke `ar' and `ranlib'
812 FP_PROG_AR_NEEDS_RANLIB
813 FP_PROG_AR_SUPPORTS_INPUT
815 dnl ** Check to see whether ln -s works
819 dnl ** Find the path to sed
820 AC_PATH_PROG(SedCmd,sed)
823 dnl ** check for time command
824 AC_PATH_PROG(TimeCmd,time)
827 dnl if GNU tar is named gtar, look for it first.
828 AC_PATH_PROGS(TarCmd,gtar tar,tar)
830 dnl ** check for jade/openjade & determine a working catalog
831 AC_PATH_PROGS(JadeCmd,openjade jade,jade)
832 FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl,
833 /etc/sgml/catalog /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl /usr/local/share/sgml/catalog glafp-utils/docbook/CATALOG*)
834 if test -z "$Catalog"; then
835 AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
838 yes) # assume it is provided by other means (e.g., SGML_CATALOG_FILES env var).
844 if test "${OSTYPE}" == "msys"
846 Catalog=$hardtop/$Catalog
848 Catalog=`cygpath -w $hardtop/$Catalog`
851 *) Catalog=$hardtop/$Catalog
859 dnl ** check for ghc-pkg command
861 ghc_pkg_guess=`echo $WithGhc | sed 's@ghc\([^/\\]*\)$@ghc-pkg\1@'`
863 if $ghc_pkg_guess -l >/dev/null 2>/dev/null; then
864 GhcPkgCmd=$ghc_pkg_guess
865 AC_MSG_NOTICE([using $ghc_pkg_guess for ghc-pkg])
867 AC_PATH_PROG(GhcPkgCmd,ghc-pkg)
870 AC_ARG_WITH(greencard,
871 [AC_HELP_STRING([--with-greencard=ARG],
872 [Use ARG as the path to greencard [default=autodetct]])],
874 GreenCardCmd=$withval;
875 FPTOOLS_GREENCARD(3.00)
879 AC_ARG_ENABLE(src-tree-happy,
880 [AC_HELP_STRING([--enable-src-tree-happy],
881 [Build and use source tree (fptools/happy) version of Happy.
882 [default=autodetect]])],
883 [ if test x"$enableval" = x"yes"; then
891 dnl ** check for installed happy binary + version
892 dnl (don't do it if we're booting from .hc files though.)
893 if test "$BootingFromHc" = "NO"; then
897 AC_ARG_ENABLE(src-tree-haddock,
898 [AC_HELP_STRING([--enable-src-tree-haddock],
899 [Build and use source tree (fptools/haddock) version of Haddock.
900 [default=autodetect]])],
901 [ if test x"$enableval" = x"yes"; then
902 UseSrcTreeHaddock=YES
907 [UseSrcTreeHaddock=NO]
909 dnl ** check for installed haddock
912 AC_ARG_ENABLE(src-tree-alex,
913 [AC_HELP_STRING([--enable-src-tree-alex],
914 [Build and use source tree (fptools/alex) version of Alex.
915 [default=autodetect]])],
916 [ if test x"$enableval" = x"yes"; then
924 dnl ** check for installed alex binary + version
925 dnl (don't do it if we're booting from .hc files though.)
926 if test "$BootingFromHc" = "NO"; then
930 dnl --------------------------------------------------
931 dnl ### program checking section ends here ###
932 dnl --------------------------------------------------
934 dnl --------------------------------------------------
935 dnl * Platform header file and syscall feature tests
936 dnl ### checking the state of the local header files and syscalls ###
938 dnl ** check for full ANSI header (.h) files
941 dnl ** Enable large file support. NB. do this before testing the type of
942 dnl off_t, because it will affect the result of that test.
945 dnl ** check for specific header (.h) files that we are interested in
946 AC_CHECK_HEADERS(Files.h arpa/inet.h assert.h console.h ctype.h dirent.h errno.h fcntl.h float.h ftw.h grp.h ieee754.h inttypes.h limits.h locale.h malloc.h memory.h nlist.h pascal.h pwd.h sgtty.h siginfo.h signal.h stat.h stdint.h stdlib.h stddef.h stdarg.h string.h sys/fault.h sys/file.h sys/ioctl.h sys/limits.h sys/mman.h sys/param.h sys/procfs.h sys/resource.h sys/signal.h sys/socket.h netdb.h netinet/in.h netinet/tcp.h sys/stat.h sys/syscall.h sys/time.h sys/timeb.h sys/timers.h sys/times.h sys/types.h sys/un.h sys/utsname.h sys/vadvise.h sys/wait.h termio.h termios.h time.h types.h unistd.h utime.h values.h bfd.h winsock.h pthread.h sys/uio.h)
947 AC_CHECK_HEADER(unistd.h,[AC_CHECK_FUNCS(lchown)])
949 AC_CHECK_HEADER(readline/readline.h, [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
950 AC_CHECK_HEADER(readline/history.h, [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
952 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
953 GhcLibsWithReadline=YES
954 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
956 GhcLibsWithReadline=NO
957 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
959 AC_SUBST(GhcLibsWithReadline)
961 dnl ** check for DOS include files
962 AC_CHECK_HEADERS(dos.h conio.h io.h std.h)
964 dnl ** check for Windows include files
965 AC_CHECK_HEADERS(windows.h)
967 dnl ** check for OpenGL/GLUT include paths and libraries
970 if test x"$no_GLU" = xyes; then
973 GhcLibsWithOpenGL=YES
975 AC_SUBST([GhcLibsWithOpenGL])
977 if test x"$no_GLUT" = xyes; then
982 AC_SUBST([GhcLibsWithGLUT])
984 dnl ** check for OpenGL include files
985 fp_save_cppflags="$CPPFLAGS"
986 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
987 if test x"$use_quartz_opengl" = xyes; then
988 AC_CHECK_HEADERS([OpenGL/gl.h])
990 AC_CHECK_HEADERS([GL/gl.h])
992 CPPFLAGS="$fp_save_cppflags"
994 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
997 dnl dynamic loading include files
998 AC_CHECK_HEADERS(dlfcn.h dl.h)
1000 dnl ** check for farcalloc (in bcc)
1001 AC_CHECK_HEADER(alloc.h,[AC_CHECK_FUNCS(farcalloc)])
1003 dnl ** check for valloc (in sunos, solaris, mips, amiga, next, minix, ultrix)
1004 AC_CHECK_HEADER(malloc.h,[AC_CHECK_FUNCS(valloc)])
1006 dnl ** check for POSIX regex
1008 AC_CHECK_HEADERS(regex.h,[AC_CHECK_FUNC(regcomp, [HavePosixRegex=YES])])
1009 AC_SUBST(HavePosixRegex)
1011 dnl ** how do we get a timezone name, and UTC offset ?
1014 dnl ** do we have altzone?
1017 dnl ** does struct stat contain st_blksize?
1018 AC_STRUCT_ST_BLKSIZE
1020 dnl ** do we have long longs?
1021 AC_CHECK_TYPES([long long])
1023 dnl ** check what fields struct msghdr contains
1024 AC_CHECK_HEADERS([sys/types.h sys/socket.h sys/uio.h])
1025 AC_CHECK_MEMBERS([struct msghdr.msg_control, struct msghdr.msg_accrights], [], [], [#if HAVE_SYS_TYPES_H
1026 # include <sys/types.h>
1028 #if HAVE_SYS_SOCKET_H
1029 # include <sys/socket.h>
1032 # include <sys/uio.h>
1035 dnl ** what are the sizes of various types
1036 AC_CHECK_SIZEOF(char, 1)
1037 AC_CHECK_SIZEOF(double, 8)
1038 AC_CHECK_SIZEOF(float, 4)
1039 AC_CHECK_SIZEOF(int, 4)
1040 AC_CHECK_SIZEOF(long, 4)
1041 if test "$ac_cv_type_long_long" = yes; then
1042 AC_CHECK_SIZEOF(long long, 8)
1044 AC_CHECK_SIZEOF(short, 2)
1045 AC_CHECK_SIZEOF(unsigned char, 1)
1046 AC_CHECK_SIZEOF(unsigned int, 4)
1047 AC_CHECK_SIZEOF(unsigned long, 4)
1048 if test "$ac_cv_type_long_long" = yes; then
1049 AC_CHECK_SIZEOF(unsigned long long, 8)
1051 AC_CHECK_SIZEOF(unsigned short, 2)
1052 AC_CHECK_SIZEOF(void *, 4)
1054 dnl ** what are alignment constraints on various types
1055 FP_CHECK_ALIGNMENT(char)
1056 FP_CHECK_ALIGNMENT(double)
1057 FP_CHECK_ALIGNMENT(float)
1058 FP_CHECK_ALIGNMENT(int)
1059 FP_CHECK_ALIGNMENT(long)
1060 if test "$ac_cv_type_long_long" = yes; then
1061 FP_CHECK_ALIGNMENT(long long)
1063 FP_CHECK_ALIGNMENT(short)
1064 FP_CHECK_ALIGNMENT(unsigned char)
1065 FP_CHECK_ALIGNMENT(unsigned int)
1066 FP_CHECK_ALIGNMENT(unsigned long)
1067 if test "$ac_cv_type_long_long" = yes; then
1068 FP_CHECK_ALIGNMENT(unsigned long long)
1070 FP_CHECK_ALIGNMENT(unsigned short)
1071 FP_CHECK_ALIGNMENT(void *)
1073 dnl ** map standard C types and ISO types to Haskell types
1074 FPTOOLS_CHECK_HTYPE(char)
1075 FPTOOLS_CHECK_HTYPE(signed char)
1076 FPTOOLS_CHECK_HTYPE(unsigned char)
1077 FPTOOLS_CHECK_HTYPE(short)
1078 FPTOOLS_CHECK_HTYPE(unsigned short)
1079 FPTOOLS_CHECK_HTYPE(int)
1080 FPTOOLS_CHECK_HTYPE(unsigned int)
1081 FPTOOLS_CHECK_HTYPE(long)
1082 FPTOOLS_CHECK_HTYPE(unsigned long)
1083 if test "$ac_cv_type_long_long" = yes; then
1084 FPTOOLS_CHECK_HTYPE(long long)
1085 FPTOOLS_CHECK_HTYPE(unsigned long long)
1087 FPTOOLS_CHECK_HTYPE(float)
1088 FPTOOLS_CHECK_HTYPE(double)
1089 FPTOOLS_CHECK_HTYPE(ptrdiff_t)
1090 FPTOOLS_CHECK_HTYPE(size_t)
1091 FPTOOLS_CHECK_HTYPE(wchar_t)
1092 dnl Int32 is a HACK for non-ISO C compilers
1093 FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32)
1094 FPTOOLS_CHECK_HTYPE(clock_t)
1095 FPTOOLS_CHECK_HTYPE(time_t)
1096 FPTOOLS_CHECK_HTYPE(dev_t, Word32)
1097 FPTOOLS_CHECK_HTYPE(ino_t)
1098 FPTOOLS_CHECK_HTYPE(mode_t)
1099 FPTOOLS_CHECK_HTYPE(off_t)
1100 FPTOOLS_CHECK_HTYPE(pid_t)
1101 FPTOOLS_CHECK_HTYPE(gid_t)
1102 FPTOOLS_CHECK_HTYPE(uid_t)
1103 FPTOOLS_CHECK_HTYPE(cc_t)
1104 FPTOOLS_CHECK_HTYPE(speed_t)
1105 FPTOOLS_CHECK_HTYPE(tcflag_t)
1106 FPTOOLS_CHECK_HTYPE(blkcnt_t)
1107 FPTOOLS_CHECK_HTYPE(nlink_t)
1108 FPTOOLS_CHECK_HTYPE(ssize_t)
1109 FPTOOLS_CHECK_HTYPE(rlim_t)
1110 FPTOOLS_CHECK_HTYPE(wint_t)
1112 dnl ** Map OpenGL data types to Haskell types
1113 if test $GhcLibsWithOpenGL = YES ; then
1114 FPTOOLS_CHECK_HTYPE(GLboolean)
1115 FPTOOLS_CHECK_HTYPE(GLbyte)
1116 FPTOOLS_CHECK_HTYPE(GLubyte)
1117 FPTOOLS_CHECK_HTYPE(GLshort)
1118 FPTOOLS_CHECK_HTYPE(GLushort)
1119 FPTOOLS_CHECK_HTYPE(GLint)
1120 FPTOOLS_CHECK_HTYPE(GLuint)
1121 FPTOOLS_CHECK_HTYPE(GLsizei)
1122 FPTOOLS_CHECK_HTYPE(GLenum)
1123 FPTOOLS_CHECK_HTYPE(GLbitfield)
1124 FPTOOLS_CHECK_HTYPE(GLfloat)
1125 FPTOOLS_CHECK_HTYPE(GLclampf)
1126 FPTOOLS_CHECK_HTYPE(GLdouble)
1127 FPTOOLS_CHECK_HTYPE(GLclampd)
1130 FP_CHECK_CONSTS([E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EADV EAFNOSUPPORT EAGAIN EALREADY EBADF EBADMSG EBADRPC EBUSY ECHILD ECOMM ECONNABORTED ECONNREFUSED ECONNRESET EDEADLK EDESTADDRREQ EDIRTY EDOM EDQUOT EEXIST EFAULT EFBIG EFTYPE EHOSTDOWN EHOSTUNREACH EIDRM EILSEQ EINPROGRESS EINTR EINVAL EIO EISCONN EISDIR ELOOP EMFILE EMLINK EMSGSIZE EMULTIHOP ENAMETOOLONG ENETDOWN ENETRESET ENETUNREACH ENFILE ENOBUFS ENODATA ENODEV ENOENT ENOEXEC ENOLCK ENOLINK ENOMEM ENOMSG ENONET ENOPROTOOPT ENOSPC ENOSR ENOSTR ENOSYS ENOTBLK ENOTCONN ENOTDIR ENOTEMPTY ENOTSOCK ENOTTY ENXIO EOPNOTSUPP EPERM EPFNOSUPPORT EPIPE EPROCLIM EPROCUNAVAIL EPROGMISMATCH EPROGUNAVAIL EPROTO EPROTONOSUPPORT EPROTOTYPE ERANGE EREMCHG EREMOTE EROFS ERPCMISMATCH ERREMOTE ESHUTDOWN ESOCKTNOSUPPORT ESPIPE ESRCH ESRMNT ESTALE ETIME ETIMEDOUT ETOOMANYREFS ETXTBSY EUSERS EWOULDBLOCK EXDEV], [#include <stdio.h>
1131 #include <errno.h>])
1133 dnl ** can we open files in binary mode?
1134 FP_CHECK_CONST([O_BINARY], [#include <fcntl.h>], [0])
1136 FP_CHECK_FUNC([WinExec],
1137 [@%:@include <windows.h>], [WinExec("",0)])
1139 FP_CHECK_FUNC([GetModuleFileName],
1140 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1142 dnl ** check return type of signal handlers
1143 dnl Foo: assumes we can use prototypes.
1144 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1145 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1146 dnl [AC_TRY_COMPILE([#include <sys/types.h>
1147 dnl #include <signal.h>
1151 dnl void (*signal (int, void (*)(int)))(int);
1154 dnl ac_cv_type_signal_handler=void_int,
1155 dnl ac_cv_type_signal_handler=int_void)])
1156 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1157 dnl AC_DEFINE(VOID_INT_SIGNALS)
1160 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1162 if test "$ac_cv_type_signal" = void; then
1163 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).])
1166 dnl ** check for more functions
1167 AC_CHECK_FUNCS(strcasecmp _stricmp stricmp strcmpi)
1168 AC_CHECK_FUNCS(strcmp)
1169 AC_CHECK_FUNCS(realpath _fullpath)
1170 AC_CHECK_FUNCS(PBHSetVolSync macsystem)
1171 AC_CHECK_FUNCS(fgetpos fsetpos fseek ftell)
1172 AC_CHECK_FUNCS(vsnprintf _vsnprintf)
1173 AC_CHECK_FUNCS(snprintf _snprintf )
1174 AC_CHECK_FUNCS(popen _popen )
1175 AC_CHECK_FUNCS(pclose _pclose )
1176 AC_CHECK_FUNCS(setenv unsetenv)
1179 dnl ** check for specific library functions that we are interested in
1180 AC_CHECK_FUNCS(access ftime getclock getpagesize getrusage gettimeofday mktime mprotect readlink setitimer stat lstat siginterrupt symlink sysconf timelocal times vadvise localtime_r gmtime_r readdir_r getgrgid_r getgrnam_r getpwuid_r getpwnam_r)
1182 dnl ** Solaris2 needs additionl flag for getpw*_r()
1183 case "$TargetPlatform" in
1185 unix_SRC_HSC2HS_OPTS="-D_POSIX_PTHREAD_SEMANTICS"
1186 AC_SUBST(unix_SRC_HSC2HS_OPTS)
1190 dnl ** check whether this machine has gmp3 installed
1191 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1192 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1193 HaveLibGmp=NO; LibGmp=not-installed))
1194 AC_SUBST(HaveLibGmp)
1197 dnl ** (Mac OS X only: check for HaskellSupport.framework)
1198 HaveFrameworkHaskellSupport=NO
1199 if test $HostPlatform = "powerpc-apple-darwin"; then
1200 AC_MSG_CHECKING([for HaskellSupport.framework])
1202 LIBS="-framework HaskellSupport"
1203 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkHaskellSupport=YES,)
1204 if test $HaveFrameworkHaskellSupport = YES; then
1205 AC_DEFINE([HAVE_FRAMEWORK_HASKELLSUPPORT], [1], [Define to 1 if the HaskellSupport.framework is installed (Mac OS X only).])
1208 AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
1210 AC_SUBST(HaveFrameworkHaskellSupport)
1212 dnl ** check for mingwex library
1213 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1214 AC_SUBST(HaveLibMingwEx)
1216 if test $HaveLibMingwEx = YES ; then
1217 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1220 if test "$HaveLibGmp" = "NO"; then
1221 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1222 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1226 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1227 dnl the order of these tests matters: bfd needs liberty
1228 AC_CHECK_LIB(iberty, xmalloc)
1229 AC_CHECK_LIB(bfd, bfd_init)
1231 dnl ** check for wide-char classifications
1232 dnl FreeBSD has an emtpy wctype.h, so test one of the affected
1233 dnl functions if it's really there.
1234 AC_CHECK_HEADERS(wctype.h,
1235 [AC_CHECK_FUNCS(iswspace)]
1238 dnl ** check for readline, for Hugs and hslibs' Readline
1239 dnl ncurses supersedes termcap and curses, but for compatibility,
1240 dnl we have to check for all...
1241 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
1242 AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
1243 AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
1244 HaveLibTermcap=NO; LibTermcap=not-installed)))
1246 if test $HaveLibTermcap = YES ; then
1247 LIBS="-l$LibTermcap $LIBS"
1248 AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
1251 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
1252 AC_DEFINE([HAVE_READLINE_LIBS], [1], [Define to 1 if readline plus any additional libs needed for it exist.])
1253 LibsReadline="readline $LibTermcap"
1255 AC_DEFINE([HAVE_READLINE_LIBS], [0], [Define to 1 if readline plus any additional libs needed for it exist.])
1258 AC_SUBST(LibsReadline)
1260 if test "$HaveLibReadline"; then
1261 AC_CHECK_LIB(readline, rl_erase_empty_line,
1262 [AC_DEFINE([HAVE_READLINE_4], [1], [Define to 1 if readline has version >= 4.0.])],
1263 [AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])])
1264 AC_CHECK_LIB(readline, rl_free_undo_list,
1265 [AC_DEFINE([HAVE_READLINE_4_2], [1], [Define to 1 if readline has version >= 4.2.])],
1266 [AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])])
1268 AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])
1269 AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])
1272 dnl ** check for math library
1273 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
1276 dnl ** check for X Window System
1279 if test "$no_x" = yes; then
1284 AC_SUBST([GhcLibsWithX11])
1286 dnl ################################################################
1287 dnl Check for libraries
1288 dnl ################################################################
1290 dnl ** check for libdl & RTLD_NEXT
1292 dnl (Mac OS X only) ... but don't check if we already have the
1293 dnl HaskellSupport.framework
1295 if test $HaveFrameworkHaskellSupport = YES; then
1299 AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
1301 AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
1303 AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h.])
1305 AC_SUBST(HaveRtldNext)
1306 AC_SUBST(HaveRtldLocal)
1307 AC_SUBST(HaveRtldGlobal)
1308 AC_SUBST(HaveRtldNow)
1310 AC_CHECK_LIB(dl, dlopen,
1312 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1315 AC_CHECK_FUNCS(dlopen)
1318 dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
1319 AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
1328 AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
1334 AC_SUBST(HaveRtldNext)
1336 dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
1337 AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
1346 AC_DEFINE(HAVE_RTLDLOCAL)
1352 AC_SUBST(HaveRtldLocal)
1354 dnl ** RTLD_GLOBAL isn't available on openbsd
1355 AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
1364 AC_DEFINE(HAVE_RTLDGLOBAL)
1370 AC_SUBST(HaveRtldGlobal)
1372 dnl ** RTLD_NOW isn't available on openbsd
1373 AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
1382 AC_DEFINE(HAVE_RTLDNOW)
1388 AC_SUBST(HaveRtldNow)
1391 dnl ---------- usleep ----------
1392 dnl --- stolen from guile configure ---
1393 dnl --- FIXME: /usr/include/unistd.h can't be right?
1395 ### On some systems usleep has no return value. If it does have one,
1396 ### we'd like to return it; otherwise, we'll fake it.
1397 AC_CACHE_CHECK([return type of usleep], cv_func_usleep_return_type,
1398 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
1399 /usr/include/unistd.h,
1400 [cv_func_usleep_return_type=void],
1401 [cv_func_usleep_return_type=int])])
1402 case "$cv_func_usleep_return_type" in
1404 AC_DEFINE([USLEEP_RETURNS_VOID], [1], [Define if the system headers declare usleep to return void.])
1408 dnl --------------------------------------------------
1409 dnl * test for in_addr_t
1410 dnl --------------------------------------------------
1411 AC_MSG_CHECKING(for in_addr_t in netinet/in.h)
1412 AC_EGREP_HEADER(in_addr_t, netinet/in.h,
1413 [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],
1416 dnl --------------------------------------------------
1417 dnl * test for Linux sendfile(2)
1418 dnl --------------------------------------------------
1419 AC_MSG_CHECKING(for sendfile in sys/sendfile.h)
1420 AC_EGREP_HEADER(sendfile, sys/sendfile.h,
1421 [ AC_DEFINE([HAVE_LINUX_SENDFILE], [1], [Define to 1 if you have a Linux sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
1424 dnl --------------------------------------------------
1425 dnl * test for BSD sendfile(2)
1426 dnl --------------------------------------------------
1427 AC_MSG_CHECKING(for sendfile in sys/socket.h)
1428 AC_EGREP_HEADER(sendfile, sys/socket.h,
1429 [ AC_DEFINE([HAVE_BSD_SENDFILE], [1], [Define to 1 if you have a BSDish sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
1432 dnl --------------------------------------------------
1434 dnl --------------------------------------------------
1436 AC_PATH_PROGS([GTK_CONFIG], [gtk-config gtk12-config])
1437 if test -n "$GTK_CONFIG"; then
1438 AC_CACHE_CHECK([for version of GTK+], [fp_cv_gtk_version],
1439 [fp_cv_gtk_version=`$GTK_CONFIG --version`])
1440 FP_COMPARE_VERSIONS([$fp_cv_gtk_version], [-lt], [1.2],
1441 [AC_MSG_WARN([GTK+ not usable, need at least version 1.2])
1444 AC_SUBST([GTK_CONFIG])
1446 dnl --------------------------------------------------
1447 dnl * Miscellaneous feature tests
1448 dnl --------------------------------------------------
1450 dnl ** can we get alloca?
1453 dnl ** Working vfork?
1456 dnl ** determine whether or not const works
1459 dnl ** are we big endian?
1462 dnl ** check for leading underscores in symbol names
1465 dnl ** check for ld, and whether ld has -x option
1466 AC_PATH_PROG(LdCmdRaw, ld)
1469 if test "${OSTYPE}" == "msys"
1473 LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
1476 *) LdCmd=${LdCmdRaw}
1484 AC_MSG_CHECKING([for SIGPOLL])
1485 AC_EGREP_CPP(we_have_sigpoll,
1486 [#include <signal.h>
1490 ], AC_DEFINE([HAVE_SIGPOLL], [1], [Define to 1 if you have the sigpoll() function.]) haveSIGPOLL=yes, haveSIGPOLL=no)
1491 AC_MSG_RESULT([$haveSIGPOLL])
1493 AC_MSG_CHECKING([for _SC_GETGR_R_SIZE_MAX])
1494 AC_EGREP_CPP(we_have_that_sysconf_thing,
1497 #ifdef _SC_GETGR_R_SIZE_MAX
1498 we_have_that_sysconf_thing
1501 [AC_MSG_RESULT([yes])
1502 AC_DEFINE([HAVE_SC_GETGR_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETGR_R_SIZE_MAX.])],
1503 [AC_MSG_RESULT([no])])
1505 AC_MSG_CHECKING([for _SC_GETPW_R_SIZE_MAX])
1506 AC_EGREP_CPP(we_have_that_sysconf_thing,
1509 #ifdef _SC_GETPW_R_SIZE_MAX
1510 we_have_that_sysconf_thing
1513 [AC_MSG_RESULT([yes])
1514 AC_DEFINE([HAVE_SC_GETPW_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETPW_R_SIZE_MAX.])],
1515 [AC_MSG_RESULT([no])])
1517 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )