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 University of Glasgow 1994-2004
8 # Configure script template for GHC
10 # Process with 'autoreconf' to get a working configure script.
12 # For the generated configure script, do "./configure --help" to
13 # see what flags are available. (Better yet, read the documentation!)
16 AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.11], [glasgow-haskell-bugs@haskell.org], [ghc])
18 # Set this to YES for a released version, otherwise NO
21 # The primary version (e.g. 6.7, 6.6.1) is set in the AC_INIT line
22 # above. If this is not a released version, then we will append the
23 # date to the version number (e.g. 6.7.20070204). The date is
24 # constructed by finding the date of the most recent patch in the
25 # darcs repository. If this is a source distribution (not a darcs
26 # checkout), then we ship a file 'VERSION' containing the full version
27 # when the source distribution was created.
29 if test ! -f mk/config.h.in; then
30 echo "mk/config.h.in doesn't exist: perhaps you haven't run 'sh boot'?"
34 AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args])
36 FP_SETUP_PROJECT_VERSION
38 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
39 AC_SUBST([release], [1])
41 # First off, a distrib sanity check..
42 AC_CONFIG_SRCDIR([mk/config.mk.in])
44 dnl * We require autoconf version 2.52
45 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
46 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
49 # -------------------------------------------------------------------------
50 # Prepare to generate the following header files
53 AC_CONFIG_HEADER(mk/config.h)
55 # No, semi-sadly, we don't do `--srcdir'...
56 if test x"$srcdir" != 'x.' ; then
57 echo "This configuration does not support the \`--srcdir' option.."
61 dnl--------------------------------------------------------------------
62 dnl * Deal with arguments telling us gmp is somewhere odd
63 dnl--------------------------------------------------------------------
69 if test "x$gmp_libraries" != "xNONE"; then
70 LDFLAGS="-L$gmp_libraries $LDFLAGS"
71 GMP_LIB_DIRS=$gmp_libraries
73 if test "x$gmp_includes" != "xNONE"; then
74 CPPFLAGS="-I$gmp_includes $CPPFLAGS"
75 GMP_INCLUDE_DIRS=$gmp_includes
77 AC_SUBST(GMP_INCLUDE_DIRS)
78 AC_SUBST(GMP_LIB_DIRS)
80 dnl --------------------------------------------------------------
81 dnl * Project specific configuration options
82 dnl --------------------------------------------------------------
83 dnl What follows is a bunch of options that can either be configured
84 dnl through command line options to the configure script or by
85 dnl supplying defns in the build tree's mk/build.mk. Having the option to
86 dnl use either is considered a Feature.
88 dnl ** What command to use to compile compiler sources ?
89 dnl --------------------------------------------------------------
92 [AC_HELP_STRING([--with-ghc=ARG],
93 [Use ARG as the path to GHC [default=autodetect]])],
95 [if test "$GHC" = ""; then
96 AC_PATH_PROG([GHC], [ghc])
100 dnl ** Booting from unregisterised .hc files?
101 dnl --------------------------------------------------------------
102 AC_ARG_ENABLE(hc-boot-unregisterised,
103 [AC_HELP_STRING([--enable-hc-boot-unregisterised],
104 [ With --enable-hc-boot, treat the intermediate .hc files as
105 unregisterised rather than registerised code.
106 (This option is mostly of interest to porters.) [default=no]])],
107 [ if test x"$enableval" = x"yes"; then
108 BootingFromUnregisterisedHc=YES
110 BootingFromUnregisterisedHc=NO
113 [BootingFromUnregisterisedHc=NO]
115 AC_SUBST(BootingFromUnregisterisedHc)
117 if test "$BootingFromHc" = "NO"; then
118 if test "$BootingFromUnregisterisedHc" = "YES"; then
119 AC_MSG_ERROR([--enable-hc-boot-unregisterised requires --enable-hc-boot.])
123 dnl ** Must have GHC to build GHC, unless --enable-hc-boot is on
124 if test "$BootingFromHc" = "NO" -a -d "$srcdir/compiler"; then
125 if test "$WithGhc" = ""; then
126 AC_MSG_ERROR([GHC is required unless bootstrapping from .hc files.])
128 FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[6.8],
129 [AC_MSG_ERROR([GHC version 6.8 or later is required to compile GHC.])])dnl
131 if test `expr $GhcMinVersion % 2` = "1"; then
132 echo $EnableBootstrapWithDevelSnaphost
133 if test "$EnableBootstrapWithDevelSnaphost" = "NO"; then
135 $WithGhc is a development snapshot of GHC, version $GhcVersion.
136 Bootstrapping using this version of GHC is not supported, and may not
137 work. Use --enable-bootstrap-with-devel-snapshot to try it anyway,
138 or --with-ghc to specify a different GHC to use.])
143 AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
144 [AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot],
145 [Allow bootstrapping using a development snapshot of GHC. This is not guaranteed to work.])],
146 EnableBootstrapWithDevelSnaphost=YES,
147 EnableBootstrapWithDevelSnaphost=NO
150 if test "$WithGhc" != ""; then
151 FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
153 if test "$GhcMajVersion" = "unknown" -o "$GhcMinVersion" = "unknown"; then
154 AC_MSG_ERROR([Cannot determine the version of $WithGhc. Is it really GHC?])
157 AC_SUBST(GhcVersion)dnl
158 AC_SUBST(GhcMajVersion)dnl
159 AC_SUBST(GhcMinVersion)dnl
160 AC_SUBST(GhcPatchLevel)dnl
161 GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
162 GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
163 if test $GhcCanonVersion -ge 607; then ghc_ge_607=YES; else ghc_ge_607=NO; fi
164 if test $GhcCanonVersion -ge 609; then ghc_ge_609=YES; else ghc_ge_609=NO; fi
165 AC_SUBST(ghc_ge_607)dnl
166 AC_SUBST(ghc_ge_609)dnl
169 # GHC is passed to Cabal, so we need a native path
170 if test "${WithGhc}" != ""
172 ghc_host=`${WithGhc} +RTS --info | grep 'Host platform' | sed -e 's/.*, "//' -e 's/")//'`
174 if test "$ghc_host" = "i386-unknown-mingw32"
176 if test "${OSTYPE}" = "msys"
178 WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
180 # Canonicalise to <drive>:/path/to/ghc
181 WithGhc=`cygpath -m ${WithGhc}`
183 echo "GHC path canonicalised to: ${WithGhc}"
188 dnl--------------------------------------------------------------------
189 dnl * Choose host(/target/build) platform
190 dnl--------------------------------------------------------------------
191 dnl We don't use the standard autoconf macros for this, but instead
192 dnl ask the bootstrapping compiler what platform it is for
194 dnl Guess host/target/build platform(s) if necessary.
195 m4_divert_once([HELP_CANON],
198 --build=BUILD configure for building on BUILD [guessed]
199 --host=HOST cross-compile to build programs to run on HOST [guessed]
200 --target=TARGET configure for building compilers for TARGET [guessed]]])dnl
202 if test "$build" = ""
204 if test "${WithGhc}" != ""
206 build=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//'`
207 echo "Build platform inferred as: $build"
209 echo "Can't work out build platform"
216 if test "${WithGhc}" != ""
218 host=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//'`
219 echo "Host platform inferred as: $host"
221 echo "Can't work out host platform"
226 if test "$target" = ""
228 if test "${WithGhc}" != ""
230 target=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//'`
231 echo "Target platform inferred as: $target"
233 echo "Can't work out target platform"
240 case $HostPlatform in
242 AC_MSG_WARN([GHC does not support the Cygwin target at the moment])
243 AC_MSG_WARN([I'm assuming you wanted to build for i386-unknown-mingw32])
250 i386-apple-darwin|powerpc-apple-darwin)
255 CFLAGS="$CFLAGS -m64"
256 LDFLAGS="$LDFLAGS -m64"
261 BuildPlatform_CPP=`echo "$build" | sed 's/\.\|-/_/g'`
262 BuildArch_CPP=`echo "$build" | sed 's/-.*//' | sed 's/\.\|-/_/g'`
263 BuildVendor_CPP=`echo "$build" | sed -e 's/.*-\(.*\)-.*/\1/' | sed 's/\.\|-/_/g'`
264 BuildOS_CPP=`echo "$build" | sed 's/.*-//' | sed 's/\.\|-/_/g'`
267 HostPlatform_CPP=`echo "$host" | sed 's/\.\|-/_/g'`
268 HostArch_CPP=`echo "$host" | sed 's/-.*//' | sed 's/\.\|-/_/g'`
269 HostVendor_CPP=`echo "$host" | sed -e 's/.*-\(.*\)-.*/\1/' | sed 's/\.\|-/_/g'`
270 HostOS_CPP=`echo "$host" | sed 's/.*-//' | sed 's/\.\|-/_/g'`
272 TargetPlatform=$target
273 TargetPlatform_CPP=`echo "$target" | sed 's/\.\|-/_/g'`
274 TargetArch_CPP=`echo "$target" | sed 's/-.*//' | sed 's/\.\|-/_/g'`
275 TargetVendor_CPP=`echo "$target" | sed -e 's/.*-\(.*\)-.*/\1/' | sed 's/\.\|-/_/g'`
276 TargetOS_CPP=`echo "$target" | sed 's/.*-//' | sed 's/\.\|-/_/g'`
278 AC_SUBST(BuildPlatform)
279 AC_SUBST(HostPlatform)
280 AC_SUBST(TargetPlatform)
281 AC_SUBST(HostPlatform_CPP)
282 AC_SUBST(BuildPlatform_CPP)
283 AC_SUBST(TargetPlatform_CPP)
285 AC_SUBST(HostArch_CPP)
286 AC_SUBST(BuildArch_CPP)
287 AC_SUBST(TargetArch_CPP)
290 AC_SUBST(BuildOS_CPP)
291 AC_SUBST(TargetOS_CPP)
293 AC_SUBST(HostVendor_CPP)
294 AC_SUBST(BuildVendor_CPP)
295 AC_SUBST(TargetVendor_CPP)
301 [AC_HELP_STRING([--with-hc=ARG],
302 [Use ARG as the path to the compiler for compiling ordinary
303 Haskell code (default= value of --with-ghc)])],
309 AC_PATH_PROGS(NHC,nhc nhc98)
310 AC_PATH_PROG(HBC,hbc)
312 dnl ** Which gcc to use?
313 dnl --------------------------------------------------------------
315 [AC_HELP_STRING([--with-gcc=ARG],
316 [Use ARG as the path to GCC [default=autodetect]])],
317 [WhatGccIsCalled="$withval"
318 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
319 test "${OSTYPE}" != "msys" && \
320 test "${withval}" != ""
322 # Canonicalise to <drive>:/path/to/gcc
323 withval=`cygpath -m ${withval}`
328 [WhatGccIsCalled="gcc"]
330 AC_SUBST(WhatGccIsCalled)
332 dnl ** Which ld to use?
333 dnl --------------------------------------------------------------
335 [AC_HELP_STRING([--with-ld=ARG],
336 [Use ARG as the path to LD [default=autodetect]])],
337 [if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
338 test "${OSTYPE}" != "msys" && \
339 test "${withval}" != ""
341 # Canonicalise to <drive>:/path/to/ld
342 withval=`cygpath -m ${withval}`
350 dnl ** Build shared and/or static libs?
351 dnl --------------------------------------------------------------
352 AC_ARG_ENABLE(shared,
353 [AC_HELP_STRING([--enable-shared],
354 [Build shared libraries, if available (EXPERIMENTAL, non-working). [default=no]])],
355 [ if test x"$enableval" = x"yes"; then
356 AC_MSG_WARN([--enable-shared is experimental and not fully supported at this time])
364 AC_SUBST(BuildSharedLibs)
367 # AC_ARG_ENABLE(static,
368 # [AC_HELP_STRING([--enable-static],
369 # [Build static libraries. [default=yes]])],
370 # [ if test x"$enableval" = x"yes"; then
371 # BuildStaticLibs=YES
376 # [BuildStaticLibs=YES]
378 # AC_SUBST(BuildStaticLibs)
380 dnl ** Booting from .hc files?
381 dnl --------------------------------------------------------------
382 AC_ARG_ENABLE(hc-boot,
383 [AC_HELP_STRING([--enable-hc-boot],
384 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
385 (This option is mostly of interest to porters.) [default=no]])],
386 [ if test x"$enableval" = x"yes"; then
394 AC_SUBST(BootingFromHc)
396 # This uses GHC, so put it after the "GHC is required" check above:
399 dnl ** Enable the construction of Win32 DLLs?
400 dnl --------------------------------------------------------------
402 dnl [ The ability to build the RTS and libraries as separate DLLs used
403 dnl to be supported, but isn't currently (updates to the RTS, compiler
404 dnl and build system would be required to bring it back again.)
405 dnl Hence, exposing it as an option is false advertisement, so better
406 dnl disable it to avoid confusion (but leave it commented-out rather
407 dnl than removed in order to remind ourselves to bring back the
408 dnl feature at some stage.) ]
410 dnl AC_ARG_ENABLE(win32-dlls,
411 dnl [ --enable-win32-dlls
412 dnl If on a Win32 platform running mingw32/cygwin, enable the
413 dnl construction of DLLs containing ghc-compiled code.
416 dnl case $HostOS_CPP in
419 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
423 dnl EnableWin32DLLs=YES
425 dnl [EnableWin32DLLs=NO]
427 dnl AC_SUBST(EnableWin32DLLs)
428 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
429 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
432 dnl ** Mac OS X: explicit deployment target
433 dnl --------------------------------------------------------------
434 AC_ARG_WITH([macosx-deployment-target],
435 [AC_HELP_STRING([--with-macosx-deployment-target=VERSION],
436 [Build for Mac OS VERSION and higher (default= version of build host)])],
437 [FP_MACOSX_DEPLOYMENT_TARGET="$withval"
438 if test "x$TargetOS_CPP-$TargetVendor_CPP" != "xdarwin-apple"; then
439 # ignore everywhere, but on Mac OS
440 AC_MSG_WARN([--macosx-deployment-target is only available on Mac OS X])
441 FP_MACOSX_DEPLOYMENT_TARGET=none
443 [FP_MACOSX_DEPLOYMENT_TARGET=none]
445 FP_CHECK_MACOSX_DEPLOYMENT_TARGET
446 AC_SUBST(MACOSX_DEPLOYMENT_VERSION)
447 AC_SUBST(MACOSX_DEPLOYMENT_SDK)
449 dnl --------------------------------------------------------------
450 dnl End of configure script option section
451 dnl --------------------------------------------------------------
454 dnl --------------------------------------------------------------
455 dnl * General configuration checks
456 dnl --------------------------------------------------------------
458 dnl ** Can the unix package be built?
459 dnl --------------------------------------------------------------
461 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
466 AC_SUBST([GhcLibsWithUnix])
471 dnl ** look for `perl', but only in /bin on Windows
474 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
475 if test -z "$PerlCmd"; then
476 echo "You must install the version of Perl shipped with GHC"
477 echo "(or a compatible one) in /bin."
482 AC_PATH_PROG(PerlCmd,perl)
483 if test -z "$PerlCmd"; then
484 echo "You must install perl before you can continue"
485 echo "Perhaps it is already installed, but not in your PATH?"
488 FPTOOLS_CHECK_PERL_VERSION
493 dnl ** does #! path/to/perl work? (sometimes it's too long...)
496 dnl ** check for Python
497 AC_PATH_PROG(PythonCmd,python)
499 dnl ** look for GCC and find out which version
500 dnl Figure out which C compiler to use. Gcc is preferred.
501 dnl If gcc, make sure it's at least 2.1
507 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
510 dnl ** Without optimization some INLINE trickery fails for GHCi
513 SRC_CC_OPTS="$SRC_CC_OPTS $CFLAGS"
514 SRC_LD_OPTS="$SRC_LD_OPTS $LDFLAGS"
516 AC_SUBST(SRC_CC_OPTS)
517 AC_SUBST(SRC_LD_OPTS)
519 dnl ** figure out how to do context diffs
522 dnl ** Find find command (for Win32's benefit)
525 dnl ** Find sort command (for the benefit of Win32 environs)
528 dnl Let's make sure install-sh is executable here. If we got it from
529 dnl a darcs repo, it might not be (see bug #978).
531 dnl ** figure out how to do a BSD-ish install
534 dnl If you can run configure, you certainly have /bin/sh
535 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
537 dnl ** how to invoke `ar' and `ranlib'
538 FP_PROG_AR_NEEDS_RANLIB
539 FP_PROG_AR_SUPPORTS_INPUT
541 dnl ** Check to see whether ln -s works
545 dnl ** Find the path to sed
546 AC_PATH_PROG(SedCmd,sed)
549 dnl ** check for time command
550 AC_PATH_PROG(TimeCmd,time)
553 dnl if GNU tar is named gtar, look for it first.
554 AC_PATH_PROGS(TarCmd,gtar tar,tar)
556 dnl ** check for patch
557 dnl if GNU patch is named gpatch, look for it first
558 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
560 AC_PATH_PROG(HSCOLOUR,HsColour)
561 # HsColour is passed to Cabal, so we need a native path
562 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
563 test "${OSTYPE}" != "msys" && \
564 test "${HSCOLOUR}" != ""
566 # Canonicalise to <drive>:/path/to/gcc
567 HSCOLOUR=`cygpath -m ${HSCOLOUR}`
570 dnl ** check for DocBook toolchain
572 FP_DIR_DOCBOOK_XSL([/usr/share/xml/docbook/stylesheet/nwalsh/current /usr/share/xml/docbook/stylesheet/nwalsh /usr/share/xml/docbook/xsl-stylesheets* /usr/share/sgml/docbook/docbook-xsl-stylesheets* /usr/share/sgml/docbook/xsl-stylesheets* /opt/kde?/share/apps/ksgmltools2/docbook/xsl /usr/share/docbook-xsl /usr/share/sgml/docbkxsl /usr/local/share/xsl/docbook /sw/share/xml/xsl/docbook-xsl /opt/local/share/xsl/docbook-xsl])
578 dnl ** check for ghc-pkg command
581 dnl ** check for installed happy binary + version
582 dnl (don't do it if we're booting from .hc files though.)
583 if test "$BootingFromHc" = "NO"; then
587 dnl ** check for installed alex binary + version
588 dnl (don't do it if we're booting from .hc files though.)
589 if test "$BootingFromHc" = "NO"; then
593 dnl Check we have an acceptable version of windres
596 dnl --------------------------------------------------
597 dnl ### program checking section ends here ###
598 dnl --------------------------------------------------
600 dnl --------------------------------------------------
601 dnl * Platform header file and syscall feature tests
602 dnl ### checking the state of the local header files and syscalls ###
604 dnl ** check for full ANSI header (.h) files
607 dnl ** Enable large file support. NB. do this before testing the type of
608 dnl off_t, because it will affect the result of that test.
611 dnl ** check for specific header (.h) files that we are interested in
612 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 sched.h])
614 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
617 dnl ** do we have long longs?
618 AC_CHECK_TYPES([long long])
620 dnl ** what are the sizes of various types
621 AC_CHECK_SIZEOF(char, 1)
622 AC_CHECK_SIZEOF(double, 8)
623 AC_CHECK_SIZEOF(float, 4)
624 AC_CHECK_SIZEOF(int, 4)
625 AC_CHECK_SIZEOF(long, 4)
626 if test "$ac_cv_type_long_long" = yes; then
627 AC_CHECK_SIZEOF(long long, 8)
629 AC_CHECK_SIZEOF(short, 2)
630 AC_CHECK_SIZEOF(unsigned char, 1)
631 AC_CHECK_SIZEOF(unsigned int, 4)
632 AC_CHECK_SIZEOF(unsigned long, 4)
633 if test "$ac_cv_type_long_long" = yes; then
634 AC_CHECK_SIZEOF(unsigned long long, 8)
636 AC_CHECK_SIZEOF(unsigned short, 2)
637 AC_CHECK_SIZEOF(void *, 4)
639 dnl ** what are alignment constraints on various types
640 FP_CHECK_ALIGNMENT(char)
641 FP_CHECK_ALIGNMENT(double)
642 FP_CHECK_ALIGNMENT(float)
643 FP_CHECK_ALIGNMENT(int)
644 FP_CHECK_ALIGNMENT(long)
645 if test "$ac_cv_type_long_long" = yes; then
646 FP_CHECK_ALIGNMENT(long long)
648 FP_CHECK_ALIGNMENT(short)
649 FP_CHECK_ALIGNMENT(unsigned char)
650 FP_CHECK_ALIGNMENT(unsigned int)
651 FP_CHECK_ALIGNMENT(unsigned long)
652 if test "$ac_cv_type_long_long" = yes; then
653 FP_CHECK_ALIGNMENT(unsigned long long)
655 FP_CHECK_ALIGNMENT(unsigned short)
656 FP_CHECK_ALIGNMENT(void *)
658 FP_CHECK_FUNC([WinExec],
659 [@%:@include <windows.h>], [WinExec("",0)])
661 FP_CHECK_FUNC([GetModuleFileName],
662 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
664 dnl ** check return type of signal handlers
665 dnl Foo: assumes we can use prototypes.
666 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
667 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
668 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
669 dnl #include <signal.h>
673 dnl void (*signal (int, void (*)(int)))(int);
676 dnl [ac_cv_type_signal_handler=void_int],
677 dnl [ac_cv_type_signal_handler=int_void])])
678 dnl if test "$ac_cv_type_signal_handler" = void_int; then
679 dnl AC_DEFINE(VOID_INT_SIGNALS)
682 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
684 if test "$ac_cv_type_signal" = void; then
685 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).])
688 dnl ** check for more functions
689 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
690 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r, sched_setaffinity])
693 #include <sys/types.h>
694 #include <sys/time.h>
696 struct itimerval tval;
697 tval.it_value.tv_sec = 1;
698 tval.it_value.tv_usec = 0;
699 tval.it_interval = tval.it_value;
700 return setitimer(ITIMER_VIRTUAL, &tval, (void*)0) != 0;
702 ],[AC_DEFINE([HAVE_SETITIMER_VIRTUAL], [1], [Define to 1 if setitimer accepts ITIMER_VIRTUAL, 0 else.])])
704 dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if
705 dnl ** _POSIX_C_SOURCE is defined
706 AC_CHECK_DECLS([ctime_r], , ,
707 [#define _POSIX_SOURCE 1
708 #define _POSIX_C_SOURCE 199506L
711 dnl ** For ghc/rts/gmp:
712 AC_CHECK_FUNCS([getpagesize])
714 dnl ** check whether this machine has gmp3 installed
715 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
716 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
717 HaveLibGmp=NO; LibGmp=not-installed))
718 if test $HaveLibGmp = YES; then
719 AC_DEFINE([HAVE_LIB_GMP], [1], [Define to 1 if GMP library is installed.])
724 dnl ** (Mac OS X only: check for GMP.framework)
726 case $HostPlatform in
728 AC_MSG_CHECKING([for GMP.framework])
730 LIBS="-framework GMP"
731 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
732 if test $HaveFrameworkGMP = YES; then
733 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
736 AC_MSG_RESULT([$HaveFrameworkGMP])
739 AC_SUBST(HaveFrameworkGMP)
741 dnl ** check for mingwex library
742 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
743 AC_SUBST(HaveLibMingwEx)
745 if test $HaveLibMingwEx = YES ; then
746 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
749 if test "$HaveLibGmp" = "NO"; then
750 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
751 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
755 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
756 dnl the order of these tests matters: bfd needs liberty
757 AC_CHECK_LIB(iberty, xmalloc)
758 AC_CHECK_LIB(bfd, bfd_init)
760 dnl ** check for math library
761 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
762 if test x"$fp_libm_not_needed" = xdunno; then
763 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
767 dnl ################################################################
768 dnl Check for libraries
769 dnl ################################################################
771 dnl ** check whether we need -ldl to get dlopen()
773 AC_CHECK_LIB(dl, dlopen,
775 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
780 dnl --------------------------------------------------
781 dnl * Miscellaneous feature tests
782 dnl --------------------------------------------------
784 dnl ** can we get alloca?
787 dnl ** Working vfork?
790 dnl ** determine whether or not const works
793 dnl ** are we big endian?
795 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
797 dnl ** check for leading underscores in symbol names
798 FP_LEADING_UNDERSCORE
800 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
804 dnl ** check for Apple-style dead-stripping support
805 dnl (.subsections-via-symbols assembler directive)
808 AC_MSG_CHECKING(for .subsections_via_symbols)
810 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
812 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
813 [Define to 1 if Apple-style dead-stripping is supported.])
817 dnl *** check for GNU non-executable stack note support (ELF only)
818 dnl (.section .note.GNU-stack,"",@progbits)
820 AC_MSG_CHECKING(for GNU non-executable stack support)
822 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
824 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
825 [Define to 1 if GNU non-executable stack notes are supported.])
829 dnl ** check for librt
830 AC_CHECK_LIB(rt, clock_gettime)
831 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
832 FP_CHECK_TIMER_CREATE
834 dnl ** check for Apple's "interesting" long double compatibility scheme
835 AC_MSG_CHECKING(for printf\$LDBLStub)
836 AC_TRY_LINK_FUNC(printf\$LDBLStub,
839 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
840 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
844 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
845 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
849 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
850 if test -n "$GTK_CONFIG"; then
851 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
852 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
854 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
858 AC_SUBST([GTK_CONFIG])
861 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
862 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
863 AC_SUBST(HavePapiLib)
864 AC_SUBST(HavePapiHeader)
866 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
873 if test "$DIR_DOCBOOK_XSL" = "" ||
874 test "$XsltprocCmd" = ""
876 BUILD_DOCBOOK_HTML=NO
878 BUILD_DOCBOOK_HTML=YES
880 AC_SUBST(BUILD_DOCBOOK_HTML)
882 if test "$DblatexCmd" = ""
888 BUILD_DOCBOOK_PDF=YES
890 AC_SUBST(BUILD_DOCBOOK_PS)
891 AC_SUBST(BUILD_DOCBOOK_PDF)
893 AC_CONFIG_FILES([mk/config.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml])
894 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
898 # http://savannah.gnu.org/bugs/index.php?1516
899 # $(eval ...) inside conditionals causes errors
900 # with make 3.80, so warn the user if it looks like they're about to
902 # We would use "grep -q" here, but Solaris's grep doesn't support it.
904 if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
907 echo "WARNING: It looks like \"$1\" is GNU make 3.80."
908 echo "This version cannot be used to build GHC."
909 echo "Please use GNU make >= 3.81."
917 ----------------------------------------------------------------------
918 Configure completed successfully.
920 Building GHC version : $ProjectVersion
922 Build platform : $BuildPlatform
923 Host platform : $HostPlatform
924 Target platform : $TargetPlatform
927 if test "$BootingFromHc" = "YES"; then
929 Bootstrapping from HC files.
933 Bootstrapping using : $WithGhc
934 which is version : $GhcVersion
939 Using GCC : $WhatGccIsCalled
940 which is version : $GccVersion
948 if test "$HSCOLOUR" = ""; then
950 HsColour was not found; documentation will not contain source links
958 echo "Building DocBook HTML documentation: $BUILD_DOCBOOK_HTML"
959 echo "Building DocBook PS documentation: $BUILD_DOCBOOK_PS"
960 echo "Building DocBook PDF documentation: $BUILD_DOCBOOK_PDF"
962 echo ["Building shared libraries : $BuildSharedLibs"]
964 echo ["----------------------------------------------------------------------
968 For a standard build of GHC (fully optimised with profiling), type (g)make.
970 To make changes to the default build configuration, copy the file
971 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
973 For more information on how to configure your GHC build, see
974 http://hackage.haskell.org/trac/ghc/wiki/Building