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'
109 HostPlatform=x86_64-unknown-openbsd
110 TargetPlatform=x86_64-unknown-openbsd
111 BuildPlatform=x86_64-unknown-openbsd
112 HostPlatform_CPP='x86_64_unknown_openbsd'
113 HostArch_CPP='x86_64'
114 HostVendor_CPP='unknown'
118 HostPlatform=arm-unknown-linux # hack again
119 TargetPlatform=arm-unknown-linux
120 BuildPlatform=arm-unknown-linux
121 HostPlatform_CPP='arm_unknown_linux'
123 HostVendor_CPP='unknown'
127 HostPlatform=hppa-unknown-linux # hack again
128 TargetPlatform=hppa-unknown-linux
129 BuildPlatform=hppa-unknown-linux
130 HostPlatform_CPP='hppa_unknown_linux'
132 HostVendor_CPP='unknown'
136 HostPlatform=hppa1.1-hp-hpux # canonicalise for our purposes (hack)
137 TargetPlatform=hppa1.1-hp-hpux
138 BuildPlatform=hppa1.1-hp-hpux
139 HostPlatform_CPP='hppa1_1_hp_hpux'
140 HostArch_CPP='hppa1_1'
144 i[[3456]]86-*-linuxaout*)
145 HostPlatform=i386-unknown-linuxaout # hack again
146 TargetPlatform=i386-unknown-linuxaout
147 BuildPlatform=i386-unknown-linuxaout
148 HostPlatform_CPP='i386_unknown_linuxaout'
150 HostVendor_CPP='unknown'
151 HostOS_CPP='linuxaout'
153 i[[3456]]86-*-linux*)
154 HostPlatform=i386-unknown-linux # hack again
155 TargetPlatform=i386-unknown-linux
156 BuildPlatform=i386-unknown-linux
157 HostPlatform_CPP='i386_unknown_linux'
159 HostVendor_CPP='unknown'
162 i[[3456]]86-*-freebsd[[3-9]]*) # FreeBSD 3.0+ uses ELF
163 HostPlatform=i386-unknown-freebsd # hack again
164 TargetPlatform=i386-unknown-freebsd
165 BuildPlatform=i386-unknown-freebsd
166 HostPlatform_CPP='i386_unknown_freebsd'
168 HostVendor_CPP='unknown'
171 i[[3456]]86-*-freebsd2*) # Older FreeBSDs are a.out
172 HostPlatform=i386-unknown-freebsd2 # hack again
173 TargetPlatform=i386-unknown-freebsd2
174 BuildPlatform=i386-unknown-freebsd2
175 HostPlatform_CPP='i386_unknown_freebsd2'
177 HostVendor_CPP='unknown'
178 HostOS_CPP='freebsd2'
180 i[[3456]]86-*-netbsd*)
181 HostPlatform=i386-unknown-netbsd # hack again
182 TargetPlatform=i386-unknown-netbsd
183 BuildPlatform=i386-unknown-netbsd
184 HostPlatform_CPP='i386_unknown_netbsd'
186 HostVendor_CPP='unknown'
189 i[[3456]]86-*-openbsd*)
190 HostPlatform=i386-unknown-openbsd # hack again
191 TargetPlatform=i386-unknown-openbsd
192 BuildPlatform=i386-unknown-openbsd
193 HostPlatform_CPP='i386_unknown_openbsd'
195 HostVendor_CPP='unknown'
198 i[[3456]]86-*-solaris2*)
199 HostPlatform=i386-unknown-solaris2 # hack again
200 TargetPlatform=i386-unknown-solaris2
201 BuildPlatform=i386-unknown-solaris2
202 HostPlatform_CPP='i386_unknown_solaris2'
204 HostVendor_CPP='unknown'
205 HostOS_CPP='solaris2'
207 i[[3456]]86-*-cygwin*)
208 HostPlatform=i386-unknown-cygwin32 # hack again
209 TargetPlatform=i386-unknown-cygwin32
210 BuildPlatform=i386-unknown-cygwin32
211 HostPlatform_CPP='i386_unknown_cygwin32'
213 HostVendor_CPP='unknown'
214 HostOS_CPP='cygwin32'
217 i[[3456]]86-*-mingw32*)
218 HostPlatform=i386-unknown-mingw32 # hack again
219 TargetPlatform=i386-unknown-mingw32
220 BuildPlatform=i386-unknown-mingw32
221 HostPlatform_CPP='i386_unknown_mingw32'
223 HostVendor_CPP='unknown'
228 HostPlatform=ia64-unknown-linux # hack again
229 TargetPlatform=ia64-unknown-linux
230 BuildPlatform=ia64-unknown-linux
231 HostPlatform_CPP='ia64_unknown_linux'
233 HostVendor_CPP='unknown'
237 HostPlatform=x86_64-unknown-linux
238 TargetPlatform=x86_64-unknown-linux
239 BuildPlatform=x86_64-unknown-linux
240 HostPlatform_CPP='x86_64_unknown_linux'
241 HostArch_CPP='x86_64'
242 HostVendor_CPP='unknown'
246 HostPlatform=m68k-unknown-linux # hack again
247 TargetPlatform=m68k-unknown-linux
248 BuildPlatform=m68k-unknown-linux
249 HostPlatform_CPP='m68k_unknown_linux'
251 HostVendor_CPP='unknown'
255 HostPlatform_CPP='m68k_next_nextstep2'
257 HostVendor_CPP='next'
258 HostOS_CPP='nextstep2'
261 HostPlatform_CPP='m68k_next_nextstep3'
263 HostVendor_CPP='next'
264 HostOS_CPP='nextstep3'
266 i[[3456]]86-next-nextstep3)
267 HostPlatform=i386-next-nextstep3 # hack again
268 TargetPlatform=i386-next-nextstep3
269 BuildPlatform=i386-next-nextstep3
270 HostPlatform_CPP='i386_next_nextstep3'
272 HostVendor_CPP='next'
273 HostOS_CPP='nextstep3'
276 HostPlatform=m68k-unknown-openbsd
277 TargetPlatform=m68k-unknown-openbsd
278 BuildPlatform=m68k-unknown-openbsd
279 HostPlatform_CPP='m68k_unknown_openbsd'
281 HostVendor_CPP='unknown'
285 HostPlatform=m68k-unknown-netbsd
286 TargetPlatform=m68k-unknown-netbsd
287 BuildPlatform=m68k-unknown-netbsd
288 HostPlatform_CPP='m68k_unknown_netbsd'
290 HostVendor_CPP='unknown'
294 HostPlatform=m68k-sun-sunos4
295 TargetPlatform=m68k-sun-sunos4 #hack
296 BuildPlatform=m68k-sun-sunos4 #hack
297 HostPlatform_CPP='m68k_sun_sunos4'
303 HostPlatform=mips-unknown-linux # hack again
304 TargetPlatform=mips-unknown-linux
305 BuildPlatform=mips-unknown-linux
306 HostPlatform_CPP='mips_unknown_linux'
308 HostVendor_CPP='unknown'
312 HostPlatform_CPP='mips_dec_ultrix'
313 HostArch_CPP='mipsel' # NB a little different
318 HostPlatform=mips-sgi-irix
319 TargetPlatform=mips-sgi-irix #hack
320 BuildPlatform=mips-sgi-irix #hack
321 HostPlatform_CPP='mips_sgi_irix'
322 HostArch_CPP='mipseb' # NB a little different
327 HostPlatform=rs6000-ibm-aix
328 TargetPlatform=rs6000-ibm-aix #hack
329 BuildPlatform=rs6000-ibm-aix #hack
330 HostPlatform_CPP='rs6000_ibm_aix'
331 HostArch_CPP='rs6000'
336 HostPlatform=powerpc-ibm-aix
337 TargetPlatform=powerpc-ibm-aix #hack
338 BuildPlatform=powerpc-ibm-aix #hack
339 HostPlatform_CPP='powerpc_ibm_aix'
340 HostArch_CPP='powerpc'
344 powerpc-apple-darwin*)
345 HostPlatform=powerpc-apple-darwin
346 TargetPlatform=powerpc-apple-darwin #hack
347 BuildPlatform=powerpc-apple-darwin #hack
348 HostPlatform_CPP='powerpc_apple_darwin'
349 HostArch_CPP='powerpc'
350 HostVendor_CPP='apple'
353 powerpc-unknown-linux*)
354 HostPlatform=powerpc-unknown-linux
355 TargetPlatform=powerpc-unknown-linux
356 BuildPlatform=powerpc-unknown-linux
357 HostPlatform_CPP='powerpc_unknown_linux'
358 HostArch_CPP='powerpc'
359 HostVendor_CPP='unknown'
363 HostPlatform=s390-ibm-linux
364 TargetPlatform=s390-ibm-linux #hack
365 BuildPlatform=s390-ibm-linux #hack
366 HostPlatform_CPP='s390_ibm_linux'
372 HostPlatform=sparc-sun-sunos4
373 TargetPlatform=sparc-sun-sunos4 #hack
374 BuildPlatform=sparc-sun-sunos4 #hack
375 HostPlatform_CPP='sparc_sun_sunos4'
381 HostPlatform=sparc-sun-solaris2
382 TargetPlatform=sparc-sun-solaris2 #hack
383 BuildPlatform=sparc-sun-solaris2 #hack
384 HostPlatform_CPP='sparc_sun_solaris2'
387 HostOS_CPP='solaris2'
390 HostPlatform=sparc-unknown-linux
391 TargetPlatform=sparc-unknown-linux
392 BuildPlatform=sparc-unknown-linux
393 HostPlatform_CPP='sparc_unknown_linux'
395 HostVendor_CPP='unknown'
399 HostPlatform=sparc-unknown-openbsd
400 TargetPlatform=sparc-unknown-openbsd
401 BuildPlatform=sparc-unknown-openbsd
402 HostPlatform_CPP='sparc_unknown_openbsd'
404 HostVendor_CPP='unknown'
408 echo "Unrecognised platform: $HostPlatform"
412 echo "Canonicalised to: $HostPlatform"
413 test x"$HostPlatform" != x"$TargetPlatform" && echo "Target platform set to $TargetPlatform"
414 test x"$BuildPlatform" != x"$HostPlatform" && echo "Build platform set to $BuildPlatform"
416 BuildPlatform_CPP=$HostPlatform_CPP
417 TargetPlatform_CPP=$HostPlatform_CPP
418 BuildArch_CPP=$HostArch_CPP
419 TargetArch_CPP=$HostArch_CPP
420 BuildOS_CPP=$HostOS_CPP
422 TargetOS_CPP=$HostOS_CPP
423 BuildVendor_CPP=$HostVendor_CPP
424 TargetVendor_CPP=$HostVendor_CPP
426 AC_SUBST(BuildPlatform)
427 AC_SUBST(HostPlatform)
428 AC_SUBST(TargetPlatform)
429 AC_SUBST(HostPlatform_CPP)
430 AC_SUBST(BuildPlatform_CPP)
431 AC_SUBST(TargetPlatform_CPP)
433 AC_SUBST(HostArch_CPP)
434 AC_SUBST(BuildArch_CPP)
435 AC_SUBST(TargetArch_CPP)
438 AC_SUBST(HostOS_Full)
439 AC_SUBST(BuildOS_CPP)
440 AC_SUBST(TargetOS_CPP)
442 AC_SUBST(HostVendor_CPP)
443 AC_SUBST(BuildVendor_CPP)
444 AC_SUBST(TargetVendor_CPP)
448 dnl --------------------------------------------------------------
449 dnl * Calculate absolute path to build tree
450 dnl --------------------------------------------------------------
452 AC_MSG_CHECKING(for path to top of build tree)
456 dnl Remove common automounter nonsense
458 hardtop=`echo $hardtop | sed 's|^/tmp_mnt.*\(/local/.*\)$|\1|' | sed 's|^/tmp_mnt/|/|' | sed 's|^//\(.\)/|\1:/|' `
460 dnl Find 'hardtop_plat', the native format for 'hardtop'
461 dnl (i.e., right kind of \dnl slashes on a Win32 box, but with b-slashes being escaped).
463 dnl Note OSTYPE: On Cygwin we need to use 'cygpath' to convert /cygdrive/c/foo to c:/foo
464 dnl but we must not do that if we aren't building using Cygwin (notably msys),
465 dnl because cygpath doesn't exist. It seems that 'bash' sets OSTYPE to 'cygwin'
466 dnl or 'msys' respectively, but cygwin's 'sh' does not. So we hackily assume
467 dnl that if the shell hasn't set it to 'msys' then we must be in Cygwin. Sigh.
469 dnl The Right Thing is probably to test $BuildPlatform instead, but we are sloppy
470 dnl about setting that correctly at the moment, so we just work around for now.
472 dnl The quotes round "$(OSTYPE)" are essential, for the Cygwin-sh case where OSTYPE
474 case $HostPlatform in
475 i386-unknown-mingw32 | i386-unknown-cygwin32)
476 if test "${OSTYPE}" != "msys"
478 # convert $hardtop to a path that mingw will understand too
479 cyghardtop=${hardtop}
480 hardtop=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@/@g'`
481 hardtop_plat=`cygpath -w ${cyghardtop} | sed -e 's@\\\\@\\\\\\\\@g'`
483 hardtop_plat=${hardtop}
487 hardtop_plat=${hardtop}
491 AC_SUBST(hardtop_plat)
493 AC_MSG_RESULT(${hardtop})
495 dnl --------------------------------------------------------------
496 dnl * Project specific configuration options
497 dnl --------------------------------------------------------------
498 dnl What follows is a bunch of options that can either be configured
499 dnl through command line options to the configure script or by
500 dnl supplying defns in the build tree's mk/build.mk. Having the option to
501 dnl use either is considered a Feature.
503 dnl ** What command to use to compile compiler sources ?
504 dnl --------------------------------------------------------------
507 [AC_HELP_STRING([--with-ghc=ARG],
508 [Use ARG as the path to GHC [default=autodetect]])],
509 [ WithGhc="$withval" ],
511 if test "$GHC" = ""; then
512 AC_PATH_PROG(GHC,ghc)
519 [AC_HELP_STRING([--with-hc=ARG],
520 [Use ARG as the path to the compiler for compiling ordinary
521 Haskell code (default= value of --with-ghc)])],
527 if test "$WithGhc" != ""; then
528 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
529 AC_SUBST(GhcVersion)dnl
530 AC_SUBST(GhcMajVersion)dnl
531 AC_SUBST(GhcMinVersion)dnl
532 AC_SUBST(GhcPatchLevel)dnl
535 AC_PATH_PROGS(NHC,nhc nhc98)
536 AC_PATH_PROG(HBC,hbc)
538 dnl ** Which gcc to use?
539 dnl --------------------------------------------------------------
541 [AC_HELP_STRING([--with-gcc=ARG],
542 [Use ARG as the path to GCC [default=autodetect]])],
543 [WhatGccIsCalled="$withval"
544 if test "x$HostPlatform" = "xi386-unknown-mingw32"
546 if test "${OSTYPE}" != "msys"
548 # Canonicalise to <drive>:/path/to/gcc
549 withval=`cygpath -w ${withval} | sed -e 's@\\\\@/@g' `
553 [WhatGccIsCalled="gcc"]
555 AC_SUBST(WhatGccIsCalled)
557 dnl ** Booting from .hc files?
558 dnl --------------------------------------------------------------
559 AC_ARG_ENABLE(hc-boot,
560 [AC_HELP_STRING([--enable-hc-boot],
561 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
562 (This option is mostly of interest to porters.) [default=no]])],
563 [ if test x"$enableval" = x"yes"; then
571 AC_SUBST(BootingFromHc)
573 dnl ** Booting from unregisterised .hc files?
574 dnl --------------------------------------------------------------
575 AC_ARG_ENABLE(hc-boot-unregisterised,
576 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
577 [ With --enable-hc-boot, treat the intermediate .hc files as
578 unregisterised rather than registerised code.
579 (This option is mostly of interest to porters.) [default=no]])],
580 [ if test x"$enableval" = x"yes"; then
581 BootingFromUnregisterisedHc=YES
583 BootingFromUnregisterisedHc=NO
586 [BootingFromUnregisterisedHc=NO]
588 AC_SUBST(BootingFromUnregisterisedHc)
590 if test "$BootingFromHc" = "NO"; then
591 if test "$BootingFromUnregisterisedHc" = "YES"; then
592 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
596 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
597 if test "$BootingFromHc" = "NO" -a "$WithGhc" = "" -a -d "$srcdir/ghc"; then
598 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
601 dnl ** --enable-threaded-rts (not used any more)
602 dnl --------------------------------------------------------------
603 AC_ARG_ENABLE(threaded-rts,
604 [AC_HELP_STRING([--enable-threaded-rts],
605 [DEPRECATED (backwards compatibility only). [default=no]])],
606 [ if test x"$enableval" = x"yes"; then
614 AC_SUBST(ThreadedRts)
616 dnl ** Enable the construction of Win32 DLLs?
617 dnl --------------------------------------------------------------
619 dnl [ The ability to build the RTS and libraries as separate DLLs used
620 dnl to be supported, but isn't currently (updates to the RTS, compiler
621 dnl and build system would be required to bring it back again.)
622 dnl Hence, exposing it as an option is false advertisement, so better
623 dnl disable it to avoid confusion (but leave it commented-out rather
624 dnl than removed in order to remind ourselves to bring back the
625 dnl feature at some stage.) ]
627 dnl AC_ARG_ENABLE(win32-dlls,
628 dnl [ --enable-win32-dlls
629 dnl If on a Win32 platform running mingw32/cygwin, enable the
630 dnl construction of DLLs containing ghc-compiled code.
633 dnl case $HostOS_CPP in
636 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
640 dnl EnableWin32DLLs=YES
642 dnl [EnableWin32DLLs=NO]
644 dnl AC_SUBST(EnableWin32DLLs)
645 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
646 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
649 dnl ** Enable the building of the ObjectIO?
650 dnl --------------------------------------------------------------
651 AC_ARG_ENABLE(objectio,
652 [AC_HELP_STRING([--enable-objectio],
653 [Build ObjectIO, a portable GUI library for Haskell. [default=no]])],
654 [ if test x"$enableval" = x"yes"; then
655 GhcLibsWithObjectIO=YES
657 GhcLibsWithObjectIO=NO
660 [GhcLibsWithObjectIO=NO]
662 AC_SUBST(GhcLibsWithObjectIO)
664 dnl ** Enable the building of the OpenAL binding?
665 dnl --------------------------------------------------------------
666 AC_ARG_ENABLE([openal],
667 AC_HELP_STRING([--enable-openal],
668 [Build OpenAL binding [[default=autodetect]]]),
669 [ if test x"$enableval" = x"yes"; then
670 GhcLibsWithOpenAL=YES
675 [GhcLibsWithOpenAL=yes])
677 AC_SUBST([GhcLibsWithOpenAL])
679 dnl ** .NET interop support?
680 dnl --------------------------------------------------------------
681 AC_ARG_ENABLE(dotnet,
682 [AC_HELP_STRING([--enable-dotnet],
683 [Build .NET interop layer. [default=no]])],
684 [ if test x"$enableval" = x"yes"; then
685 DotnetSupport=YES; AC_DEFINE([WANT_DOTNET_SUPPORT], [1], [Define to 1 if you want to include .NET interop support.])
691 AC_SUBST(DotnetSupport)
693 dnl --------------------------------------------------------------
694 dnl End of configure script option section
695 dnl --------------------------------------------------------------
698 dnl --------------------------------------------------------------
699 dnl * General configuration checks
700 dnl --------------------------------------------------------------
702 dnl ** Can the unix package be built?
703 dnl --------------------------------------------------------------
705 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
710 AC_SUBST([GhcLibsWithUnix])
715 dnl ** look for `perl', but only in /bin on Windows
718 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
719 if test -z "$PerlCmd"; then
720 echo "You must install the version of Perl shipped with GHC"
721 echo "(or a compatible one) in /bin."
726 AC_PATH_PROG(PerlCmd,perl)
727 if test -z "$PerlCmd"; then
728 echo "You must install perl before you can continue"
729 echo "Perhaps it is already installed, but not in your PATH?"
732 FPTOOLS_CHECK_PERL_VERSION
737 dnl ** does #! path/to/perl work? (sometimes it's too long...)
740 dnl ** check for Python
741 AC_PATH_PROG(PythonCmd,python)
743 dnl ** look for GCC and find out which version
744 dnl Figure out which C compiler to use. Gcc is preferred.
745 dnl If gcc, make sure it's at least 2.1
749 FPTOOLS_GCC_NEEDS_NO_OMIT_LFPTR
751 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
754 dnl ** Without optimization some INLINE trickery fails for GHCi
757 dnl ** Try to add -mno-cygwin to the C compiler options
758 FP_CHECK_FLAG([-mno-cygwin], [
759 SRC_CC_OPTS="-mno-cygwin $SRC_CC_OPTS"
760 CPPFLAGS="-mno-cygwin $CPPFLAGS"])
761 AC_SUBST(SRC_CC_OPTS)
763 dnl ** figure out how to do context diffs
766 dnl ** Find find command (for Win32's benefit)
769 dnl ** figure out how to do a BSD-ish install
772 dnl If you can run configure, you certainly have /bin/sh
773 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
775 dnl ** how to invoke `ar' and `ranlib'
776 FP_PROG_AR_NEEDS_RANLIB
777 FP_PROG_AR_SUPPORTS_INPUT
779 dnl ** Check to see whether ln -s works
783 dnl ** Find the path to sed
784 AC_PATH_PROG(SedCmd,sed)
787 dnl ** check for time command
788 AC_PATH_PROG(TimeCmd,time)
791 dnl if GNU tar is named gtar, look for it first.
792 AC_PATH_PROGS(TarCmd,gtar tar,tar)
794 dnl ** check for jade/openjade & determine a working catalog
795 AC_PATH_PROGS(JadeCmd,openjade jade,jade)
796 FPTOOLS_DOCBOOK_CATALOG(Catalog, $JadeCmd, docs/fptools-both.dsl,
797 /etc/sgml/catalog /etc/sgml.catalog /usr/share/sgml/CATALOG.docbkdsl /usr/local/share/sgml/catalog glafp-utils/docbook/CATALOG*)
798 if test -z "$Catalog"; then
799 AC_MSG_RESULT([Warning: You will not be able to build the documentation.])
802 yes) # assume it is provided by other means (e.g., SGML_CATALOG_FILES env var).
808 if test "${OSTYPE}" == "msys"
810 Catalog=$hardtop/$Catalog
812 Catalog=`cygpath -w $hardtop/$Catalog`
815 *) Catalog=$hardtop/$Catalog
823 dnl ** check for ghc-pkg command
825 ghc_pkg_guess=`echo $WithGhc | sed 's@ghc\([^/\\]*\)$@ghc-pkg\1@'`
827 if $ghc_pkg_guess -l >/dev/null 2>/dev/null; then
828 GhcPkgCmd=$ghc_pkg_guess
829 AC_MSG_NOTICE([using $ghc_pkg_guess for ghc-pkg])
831 AC_PATH_PROG(GhcPkgCmd,ghc-pkg)
834 AC_ARG_WITH(greencard,
835 [AC_HELP_STRING([--with-greencard=ARG],
836 [Use ARG as the path to greencard [default=autodetct]])],
838 GreenCardCmd=$withval;
839 FPTOOLS_GREENCARD(3.00)
843 AC_ARG_ENABLE(src-tree-happy,
844 [AC_HELP_STRING([--enable-src-tree-happy],
845 [Build and use source tree (fptools/happy) version of Happy.
846 [default=autodetect]])],
847 [ if test x"$enableval" = x"yes"; then
855 dnl ** check for installed happy binary + version
856 dnl (don't do it if we're booting from .hc files though.)
857 if test "$BootingFromHc" = "NO"; then
861 AC_ARG_ENABLE(src-tree-haddock,
862 [AC_HELP_STRING([--enable-src-tree-haddock],
863 [Build and use source tree (fptools/haddock) version of Haddock.
864 [default=autodetect]])],
865 [ if test x"$enableval" = x"yes"; then
866 UseSrcTreeHaddock=YES
871 [UseSrcTreeHaddock=NO]
873 dnl ** check for installed haddock
876 AC_ARG_ENABLE(src-tree-alex,
877 [AC_HELP_STRING([--enable-src-tree-alex],
878 [Build and use source tree (fptools/alex) version of Alex.
879 [default=autodetect]])],
880 [ if test x"$enableval" = x"yes"; then
888 dnl ** check for installed alex binary + version
889 dnl (don't do it if we're booting from .hc files though.)
890 if test "$BootingFromHc" = "NO"; then
894 dnl --------------------------------------------------
895 dnl ### program checking section ends here ###
896 dnl --------------------------------------------------
898 dnl --------------------------------------------------
899 dnl * Platform header file and syscall feature tests
900 dnl ### checking the state of the local header files and syscalls ###
902 dnl ** check for full ANSI header (.h) files
905 dnl ** Enable large file support. NB. do this before testing the type of
906 dnl off_t, because it will affect the result of that test.
909 dnl ** check for specific header (.h) files that we are interested in
910 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)
911 AC_CHECK_HEADER(unistd.h,[AC_CHECK_FUNCS(lchown)])
913 AC_CHECK_HEADER(readline/readline.h, [HaveReadlineReadlineH=YES], [HaveReadlineReadlineH=NO])
914 AC_CHECK_HEADER(readline/history.h, [HaveReadlineHistoryH=YES], [HaveReadlineHistoryH=NO])
916 if test $HaveReadlineReadlineH = YES && test $HaveReadlineHistoryH = YES ; then
917 GhcLibsWithReadline=YES
918 AC_DEFINE([HAVE_READLINE_HEADERS], [1], [Define to 1 if readline/readline.h and readline/history.h exist.])
920 GhcLibsWithReadline=NO
921 AC_DEFINE([HAVE_READLINE_HEADERS], [0], [Define to 1 if readline/readline.h and readline/history.h exist.])
923 AC_SUBST(GhcLibsWithReadline)
925 dnl ** check for DOS include files
926 AC_CHECK_HEADERS(dos.h conio.h io.h std.h)
928 dnl ** check for Windows include files
929 AC_CHECK_HEADERS(windows.h)
931 dnl ** check for OpenGL/GLUT include paths and libraries
934 if test x"$no_GLU" = xyes; then
937 GhcLibsWithOpenGL=YES
939 AC_SUBST([GhcLibsWithOpenGL])
941 if test x"$no_GLUT" = xyes; then
946 AC_SUBST([GhcLibsWithGLUT])
948 dnl ** check for OpenGL include files
949 fp_save_cppflags="$CPPFLAGS"
950 CPPFLAGS="$CPPFLAGS $X_CFLAGS"
951 if test x"$use_quartz_opengl" = xyes; then
952 AC_CHECK_HEADERS([OpenGL/gl.h])
954 AC_CHECK_HEADERS([GL/gl.h])
956 CPPFLAGS="$fp_save_cppflags"
958 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
961 dnl dynamic loading include files
962 AC_CHECK_HEADERS(dlfcn.h dl.h)
964 dnl ** check for farcalloc (in bcc)
965 AC_CHECK_HEADER(alloc.h,[AC_CHECK_FUNCS(farcalloc)])
967 dnl ** check for valloc (in sunos, solaris, mips, amiga, next, minix, ultrix)
968 AC_CHECK_HEADER(malloc.h,[AC_CHECK_FUNCS(valloc)])
970 dnl ** check for POSIX regex
972 AC_CHECK_HEADERS(regex.h,[AC_CHECK_FUNC(regcomp, [HavePosixRegex=YES])])
973 AC_SUBST(HavePosixRegex)
975 dnl ** how do we get a timezone name, and UTC offset ?
978 dnl ** do we have altzone?
981 dnl ** does struct stat contain st_blksize?
984 dnl ** do we have long longs?
985 AC_CHECK_TYPES([long long])
987 dnl ** check what fields struct msghdr contains
988 AC_CHECK_HEADERS([sys/types.h sys/socket.h sys/uio.h])
989 AC_CHECK_MEMBERS([struct msghdr.msg_control, struct msghdr.msg_accrights], [], [], [#if HAVE_SYS_TYPES_H
990 # include <sys/types.h>
992 #if HAVE_SYS_SOCKET_H
993 # include <sys/socket.h>
996 # include <sys/uio.h>
999 dnl ** what are the sizes of various types
1000 AC_CHECK_SIZEOF(char, 1)
1001 AC_CHECK_SIZEOF(double, 8)
1002 AC_CHECK_SIZEOF(float, 4)
1003 AC_CHECK_SIZEOF(int, 4)
1004 AC_CHECK_SIZEOF(long, 4)
1005 if test "$ac_cv_type_long_long" = yes; then
1006 AC_CHECK_SIZEOF(long long, 8)
1008 AC_CHECK_SIZEOF(short, 2)
1009 AC_CHECK_SIZEOF(unsigned char, 1)
1010 AC_CHECK_SIZEOF(unsigned int, 4)
1011 AC_CHECK_SIZEOF(unsigned long, 4)
1012 if test "$ac_cv_type_long_long" = yes; then
1013 AC_CHECK_SIZEOF(unsigned long long, 8)
1015 AC_CHECK_SIZEOF(unsigned short, 2)
1016 AC_CHECK_SIZEOF(void *, 4)
1018 dnl ** what are alignment constraints on various types
1019 FP_CHECK_ALIGNMENT(char)
1020 FP_CHECK_ALIGNMENT(double)
1021 FP_CHECK_ALIGNMENT(float)
1022 FP_CHECK_ALIGNMENT(int)
1023 FP_CHECK_ALIGNMENT(long)
1024 if test "$ac_cv_type_long_long" = yes; then
1025 FP_CHECK_ALIGNMENT(long long)
1027 FP_CHECK_ALIGNMENT(short)
1028 FP_CHECK_ALIGNMENT(unsigned char)
1029 FP_CHECK_ALIGNMENT(unsigned int)
1030 FP_CHECK_ALIGNMENT(unsigned long)
1031 if test "$ac_cv_type_long_long" = yes; then
1032 FP_CHECK_ALIGNMENT(unsigned long long)
1034 FP_CHECK_ALIGNMENT(unsigned short)
1035 FP_CHECK_ALIGNMENT(void *)
1037 dnl ** map standard C types and ISO types to Haskell types
1038 FPTOOLS_CHECK_HTYPE(char)
1039 FPTOOLS_CHECK_HTYPE(signed char)
1040 FPTOOLS_CHECK_HTYPE(unsigned char)
1041 FPTOOLS_CHECK_HTYPE(short)
1042 FPTOOLS_CHECK_HTYPE(unsigned short)
1043 FPTOOLS_CHECK_HTYPE(int)
1044 FPTOOLS_CHECK_HTYPE(unsigned int)
1045 FPTOOLS_CHECK_HTYPE(long)
1046 FPTOOLS_CHECK_HTYPE(unsigned long)
1047 if test "$ac_cv_type_long_long" = yes; then
1048 FPTOOLS_CHECK_HTYPE(long long)
1049 FPTOOLS_CHECK_HTYPE(unsigned long long)
1051 FPTOOLS_CHECK_HTYPE(float)
1052 FPTOOLS_CHECK_HTYPE(double)
1053 FPTOOLS_CHECK_HTYPE(ptrdiff_t)
1054 FPTOOLS_CHECK_HTYPE(size_t)
1055 FPTOOLS_CHECK_HTYPE(wchar_t)
1056 dnl Int32 is a HACK for non-ISO C compilers
1057 FPTOOLS_CHECK_HTYPE(sig_atomic_t, Int32)
1058 FPTOOLS_CHECK_HTYPE(clock_t)
1059 FPTOOLS_CHECK_HTYPE(time_t)
1060 FPTOOLS_CHECK_HTYPE(dev_t, Word32)
1061 FPTOOLS_CHECK_HTYPE(ino_t)
1062 FPTOOLS_CHECK_HTYPE(mode_t)
1063 FPTOOLS_CHECK_HTYPE(off_t)
1064 FPTOOLS_CHECK_HTYPE(pid_t)
1065 FPTOOLS_CHECK_HTYPE(gid_t)
1066 FPTOOLS_CHECK_HTYPE(uid_t)
1067 FPTOOLS_CHECK_HTYPE(cc_t)
1068 FPTOOLS_CHECK_HTYPE(speed_t)
1069 FPTOOLS_CHECK_HTYPE(tcflag_t)
1070 FPTOOLS_CHECK_HTYPE(blkcnt_t)
1071 FPTOOLS_CHECK_HTYPE(nlink_t)
1072 FPTOOLS_CHECK_HTYPE(ssize_t)
1073 FPTOOLS_CHECK_HTYPE(rlim_t)
1074 FPTOOLS_CHECK_HTYPE(wint_t)
1076 dnl ** Map OpenGL data types to Haskell types
1077 if test $GhcLibsWithOpenGL = YES ; then
1078 FPTOOLS_CHECK_HTYPE(GLboolean)
1079 FPTOOLS_CHECK_HTYPE(GLbyte)
1080 FPTOOLS_CHECK_HTYPE(GLubyte)
1081 FPTOOLS_CHECK_HTYPE(GLshort)
1082 FPTOOLS_CHECK_HTYPE(GLushort)
1083 FPTOOLS_CHECK_HTYPE(GLint)
1084 FPTOOLS_CHECK_HTYPE(GLuint)
1085 FPTOOLS_CHECK_HTYPE(GLsizei)
1086 FPTOOLS_CHECK_HTYPE(GLenum)
1087 FPTOOLS_CHECK_HTYPE(GLbitfield)
1088 FPTOOLS_CHECK_HTYPE(GLfloat)
1089 FPTOOLS_CHECK_HTYPE(GLclampf)
1090 FPTOOLS_CHECK_HTYPE(GLdouble)
1091 FPTOOLS_CHECK_HTYPE(GLclampd)
1094 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>
1095 #include <errno.h>])
1097 dnl ** can we open files in binary mode?
1098 FP_CHECK_CONST([O_BINARY], [#include <fcntl.h>], [0])
1100 FP_CHECK_FUNC([WinExec],
1101 [@%:@include <windows.h>], [WinExec("",0)])
1103 FP_CHECK_FUNC([GetModuleFileName],
1104 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
1106 dnl ** check return type of signal handlers
1107 dnl Foo: assumes we can use prototypes.
1108 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1109 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
1110 dnl [AC_TRY_COMPILE([#include <sys/types.h>
1111 dnl #include <signal.h>
1115 dnl void (*signal (int, void (*)(int)))(int);
1118 dnl ac_cv_type_signal_handler=void_int,
1119 dnl ac_cv_type_signal_handler=int_void)])
1120 dnl if test "$ac_cv_type_signal_handler" = void_int; then
1121 dnl AC_DEFINE(VOID_INT_SIGNALS)
1124 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
1126 if test "$ac_cv_type_signal" = void; then
1127 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).])
1130 dnl ** check for more functions
1131 AC_CHECK_FUNCS(strcasecmp _stricmp stricmp strcmpi)
1132 AC_CHECK_FUNCS(strcmp)
1133 AC_CHECK_FUNCS(realpath _fullpath)
1134 AC_CHECK_FUNCS(PBHSetVolSync macsystem)
1135 AC_CHECK_FUNCS(fgetpos fsetpos fseek ftell)
1136 AC_CHECK_FUNCS(vsnprintf _vsnprintf)
1137 AC_CHECK_FUNCS(snprintf _snprintf )
1138 AC_CHECK_FUNCS(popen _popen )
1139 AC_CHECK_FUNCS(pclose _pclose )
1140 AC_CHECK_FUNCS(setenv unsetenv)
1143 dnl ** check for specific library functions that we are interested in
1144 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)
1146 dnl ** Solaris2 needs additionl flag for getpw*_r()
1147 case "$TargetPlatform" in
1149 unix_SRC_HSC2HS_OPTS="-D_POSIX_PTHREAD_SEMANTICS"
1150 AC_SUBST(unix_SRC_HSC2HS_OPTS)
1154 dnl ** check whether this machine has gmp3 installed
1155 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
1156 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
1157 HaveLibGmp=NO; LibGmp=not-installed))
1158 AC_SUBST(HaveLibGmp)
1161 dnl ** (Mac OS X only: check for HaskellSupport.framework)
1162 HaveFrameworkHaskellSupport=NO
1163 if test $HostPlatform = "powerpc-apple-darwin"; then
1164 AC_MSG_CHECKING([for HaskellSupport.framework])
1166 LIBS="-framework HaskellSupport"
1167 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkHaskellSupport=YES,)
1168 if test $HaveFrameworkHaskellSupport = YES; then
1169 AC_DEFINE([HAVE_FRAMEWORK_HASKELLSUPPORT], [1], [Define to 1 if the HaskellSupport.framework is installed (Mac OS X only).])
1172 AC_MSG_RESULT([$HaveFrameworkHaskellSupport])
1174 AC_SUBST(HaveFrameworkHaskellSupport)
1176 dnl ** check for mingwex library
1177 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
1178 AC_SUBST(HaveLibMingwEx)
1180 if test $HaveLibMingwEx = YES ; then
1181 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
1184 if test "$HaveLibGmp" = "NO"; then
1185 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
1186 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
1190 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
1191 dnl the order of these tests matters: bfd needs liberty
1192 AC_CHECK_LIB(iberty, xmalloc)
1193 AC_CHECK_LIB(bfd, bfd_init)
1195 dnl ** check for wide-char classifications
1196 dnl FreeBSD has an emtpy wctype.h, so test one of the affected
1197 dnl functions if it's really there.
1198 AC_CHECK_HEADERS(wctype.h,
1199 [AC_CHECK_FUNCS(iswspace)]
1202 dnl ** check for readline, for Hugs and hslibs' Readline
1203 dnl ncurses supersedes termcap and curses, but for compatibility,
1204 dnl we have to check for all...
1205 AC_CHECK_LIB(ncurses, tputs, HaveLibTermcap=YES; LibTermcap=ncurses,
1206 AC_CHECK_LIB(termcap, tputs, HaveLibTermcap=YES; LibTermcap=termcap,
1207 AC_CHECK_LIB(curses, tputs, HaveLibTermcap=YES; LibTermcap=curses,
1208 HaveLibTermcap=NO; LibTermcap=not-installed)))
1210 if test $HaveLibTermcap = YES ; then
1211 LIBS="-l$LibTermcap $LIBS"
1212 AC_CHECK_LIB(readline, readline, HaveLibReadline=YES, HaveLibReadline=NO)
1215 if test $HaveLibTermcap = YES && test x"$HaveLibReadline" = xYES ; then
1216 AC_DEFINE([HAVE_READLINE_LIBS], [1], [Define to 1 if readline plus any additional libs needed for it exist.])
1217 LibsReadline="readline $LibTermcap"
1219 AC_DEFINE([HAVE_READLINE_LIBS], [0], [Define to 1 if readline plus any additional libs needed for it exist.])
1222 AC_SUBST(LibsReadline)
1224 if test "$HaveLibReadline"; then
1225 AC_CHECK_LIB(readline, rl_erase_empty_line,
1226 [AC_DEFINE([HAVE_READLINE_4], [1], [Define to 1 if readline has version >= 4.0.])],
1227 [AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])])
1228 AC_CHECK_LIB(readline, rl_free_undo_list,
1229 [AC_DEFINE([HAVE_READLINE_4_2], [1], [Define to 1 if readline has version >= 4.2.])],
1230 [AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])])
1232 AC_DEFINE([HAVE_READLINE_4], [0], [Define to 1 if readline has version >= 4.0.])
1233 AC_DEFINE([HAVE_READLINE_4_2], [0], [Define to 1 if readline has version >= 4.2.])
1236 dnl ** check for math library
1237 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"], [LIBM=])
1240 dnl ** check for X Window System
1243 if test "$no_x" = yes; then
1248 AC_SUBST([GhcLibsWithX11])
1250 dnl ################################################################
1251 dnl Check for libraries
1252 dnl ################################################################
1254 dnl ** check for libdl & RTLD_NEXT
1256 dnl (Mac OS X only) ... but don't check if we already have the
1257 dnl HaskellSupport.framework
1259 if test $HaveFrameworkHaskellSupport = YES; then
1263 AC_DEFINE([HAVE_RTLDLOCAL], [1], [Define to 1 if RTLD_LOCAL is available.])
1265 AC_DEFINE([HAVE_RTLDGLOBAL], [1], [Define to 1 if RTLD_GLOBAL is available.])
1267 AC_DEFINE([HAVE_RTLDNOW], [1], [Define to 1 if we can see RTLD_NOW in dlfcn.h.])
1269 AC_SUBST(HaveRtldNext)
1270 AC_SUBST(HaveRtldLocal)
1271 AC_SUBST(HaveRtldGlobal)
1272 AC_SUBST(HaveRtldNow)
1274 AC_CHECK_LIB(dl, dlopen,
1276 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
1279 AC_CHECK_FUNCS(dlopen)
1282 dnl ** sometimes RTLD_NEXT is hidden in #ifdefs we really don't wan to set
1283 AC_MSG_CHECKING(for RTLD_NEXT from dlfcn.h)
1292 AC_DEFINE([HAVE_RTLDNEXT], [1], [Define to 1 if we can see RTLD_NEXT in dlfcn.h.])
1298 AC_SUBST(HaveRtldNext)
1300 dnl ** RTLD_LOCAL isn't available on cygwin or openbsd
1301 AC_MSG_CHECKING(for RTLD_LOCAL from dlfcn.h)
1310 AC_DEFINE(HAVE_RTLDLOCAL)
1316 AC_SUBST(HaveRtldLocal)
1318 dnl ** RTLD_GLOBAL isn't available on openbsd
1319 AC_MSG_CHECKING(for RTLD_GLOBAL from dlfcn.h)
1328 AC_DEFINE(HAVE_RTLDGLOBAL)
1334 AC_SUBST(HaveRtldGlobal)
1336 dnl ** RTLD_NOW isn't available on openbsd
1337 AC_MSG_CHECKING(for RTLD_NOW from dlfcn.h)
1346 AC_DEFINE(HAVE_RTLDNOW)
1352 AC_SUBST(HaveRtldNow)
1355 dnl ---------- usleep ----------
1356 dnl --- stolen from guile configure ---
1357 dnl --- FIXME: /usr/include/unistd.h can't be right?
1359 ### On some systems usleep has no return value. If it does have one,
1360 ### we'd like to return it; otherwise, we'll fake it.
1361 AC_CACHE_CHECK([return type of usleep], cv_func_usleep_return_type,
1362 [AC_EGREP_HEADER(changequote(<, >)<void[ ]+usleep>changequote([, ]),
1363 /usr/include/unistd.h,
1364 [cv_func_usleep_return_type=void],
1365 [cv_func_usleep_return_type=int])])
1366 case "$cv_func_usleep_return_type" in
1368 AC_DEFINE([USLEEP_RETURNS_VOID], [1], [Define if the system headers declare usleep to return void.])
1372 dnl --------------------------------------------------
1373 dnl * test for in_addr_t
1374 dnl --------------------------------------------------
1375 AC_MSG_CHECKING(for in_addr_t in netinet/in.h)
1376 AC_EGREP_HEADER(in_addr_t, netinet/in.h,
1377 [ AC_DEFINE([HAVE_IN_ADDR_T], [1], [Define to 1 if in_addr_t is available.]) AC_MSG_RESULT(yes) ],
1380 dnl --------------------------------------------------
1381 dnl * test for Linux sendfile(2)
1382 dnl --------------------------------------------------
1383 AC_MSG_CHECKING(for sendfile in sys/sendfile.h)
1384 AC_EGREP_HEADER(sendfile, sys/sendfile.h,
1385 [ AC_DEFINE([HAVE_LINUX_SENDFILE], [1], [Define to 1 if you have a Linux sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
1388 dnl --------------------------------------------------
1389 dnl * test for BSD sendfile(2)
1390 dnl --------------------------------------------------
1391 AC_MSG_CHECKING(for sendfile in sys/socket.h)
1392 AC_EGREP_HEADER(sendfile, sys/socket.h,
1393 [ AC_DEFINE([HAVE_BSD_SENDFILE], [1], [Define to 1 if you have a BSDish sendfile(2) implementation.]) AC_MSG_RESULT(yes) ],
1396 dnl --------------------------------------------------
1398 dnl --------------------------------------------------
1400 AC_PATH_PROGS([GTK_CONFIG], [gtk-config gtk12-config])
1401 if test -n "$GTK_CONFIG"; then
1402 AC_CACHE_CHECK([for version of GTK+], [fp_cv_gtk_version],
1403 [fp_cv_gtk_version=`$GTK_CONFIG --version`])
1404 FP_COMPARE_VERSIONS([$fp_cv_gtk_version], [-lt], [1.2],
1405 [AC_MSG_WARN([GTK+ not usable, need at least version 1.2])
1408 AC_SUBST([GTK_CONFIG])
1410 dnl --------------------------------------------------
1411 dnl * Miscellaneous feature tests
1412 dnl --------------------------------------------------
1414 dnl ** can we get alloca?
1417 dnl ** Working vfork?
1420 dnl ** determine whether or not const works
1423 dnl ** are we big endian?
1426 dnl ** check for leading underscores in symbol names
1429 dnl ** check for ld, and whether ld has -x option
1430 AC_PATH_PROG(LdCmdRaw, ld)
1433 if test "${OSTYPE}" == "msys"
1437 LdCmd=`cygpath -w ${LdCmdRaw} | sed -e 's@\\\\@/@g' `
1440 *) LdCmd=${LdCmdRaw}
1448 AC_MSG_CHECKING([for SIGPOLL])
1449 AC_EGREP_CPP(we_have_sigpoll,
1450 [#include <signal.h>
1454 ], AC_DEFINE([HAVE_SIGPOLL], [1], [Define to 1 if you have the sigpoll() function.]) haveSIGPOLL=yes, haveSIGPOLL=no)
1455 AC_MSG_RESULT([$haveSIGPOLL])
1457 AC_MSG_CHECKING([for _SC_GETGR_R_SIZE_MAX])
1458 AC_EGREP_CPP(we_have_that_sysconf_thing,
1461 #ifdef _SC_GETGR_R_SIZE_MAX
1462 we_have_that_sysconf_thing
1465 [AC_MSG_RESULT([yes])
1466 AC_DEFINE([HAVE_SC_GETGR_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETGR_R_SIZE_MAX.])],
1467 [AC_MSG_RESULT([no])])
1469 AC_MSG_CHECKING([for _SC_GETPW_R_SIZE_MAX])
1470 AC_EGREP_CPP(we_have_that_sysconf_thing,
1473 #ifdef _SC_GETPW_R_SIZE_MAX
1474 we_have_that_sysconf_thing
1477 [AC_MSG_RESULT([yes])
1478 AC_DEFINE([HAVE_SC_GETPW_R_SIZE_MAX], [1], [Define to 1 if <unistd.h> defines _SC_GETPW_R_SIZE_MAX.])],
1479 [AC_MSG_RESULT([no])])
1481 AC_OUTPUT(mk/config.mk, echo timestamp > mk/stamp-h )