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"
262 alpha|arm|hppa|hppa1_1|i386|ia64|m68k|mips|mipseb|mipsel|powerpc|powerpc64|rs6000|s390|sparc|sparc64|vax|x86_64)
265 echo "Unknown arch $1"
273 dec|unknown|hp|apple|next|sun|sgi|ibm)
276 echo "Unknown vendor $1"
284 linux|freebsd|netbsd|openbsd|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix)
294 BuildArch=`echo "$build" | sed 's/-.*//'`
295 BuildVendor=`echo "$build" | sed -e 's/.*-\(.*\)-.*/\1/'`
296 BuildOS=`echo "$build" | sed 's/.*-//'`
297 BuildPlatform_CPP=`echo "$BuildPlatform" | sed 's/\.\|-/_/g'`
298 BuildArch_CPP=`echo "$BuildArch" | sed 's/\.\|-/_/g'`
299 BuildVendor_CPP=`echo "$BuildVendor" | sed 's/\.\|-/_/g'`
300 BuildOS_CPP=`echo "$BuildOS" | sed 's/\.\|-/_/g'`
302 checkArch "$BuildArch"
303 checkVendor "$BuildVendor"
307 HostArch=`echo "$host" | sed 's/-.*//'`
308 HostVendor=`echo "$host" | sed -e 's/.*-\(.*\)-.*/\1/'`
309 HostOS=`echo "$host" | sed 's/.*-//'`
310 HostPlatform_CPP=`echo "$HostPlatform" | sed 's/\.\|-/_/g'`
311 HostArch_CPP=`echo "$HostArch" | sed 's/\.\|-/_/g'`
312 HostVendor_CPP=`echo "$HostVendor" | sed 's/\.\|-/_/g'`
313 HostOS_CPP=`echo "$HostOS" | sed 's/\.\|-/_/g'`
315 checkArch "$HostArch"
316 checkVendor "$HostVendor"
319 TargetPlatform=$target
320 TargetArch=`echo "$target" | sed 's/-.*//'`
321 TargetVendor=`echo "$target" | sed -e 's/.*-\(.*\)-.*/\1/'`
322 TargetOS=`echo "$target" | sed 's/.*-//'`
323 TargetPlatform_CPP=`echo "$TargetPlatform" | sed 's/\.\|-/_/g'`
324 TargetArch_CPP=`echo "$TargetArch" | sed 's/\.\|-/_/g'`
325 TargetVendor_CPP=`echo "$TargetVendor" | sed 's/\.\|-/_/g'`
326 TargetOS_CPP=`echo "$TargetOS" | sed 's/\.\|-/_/g'`
328 checkArch "$TargetArch"
329 checkVendor "$TargetVendor"
332 AC_SUBST(BuildPlatform)
333 AC_SUBST(HostPlatform)
334 AC_SUBST(TargetPlatform)
335 AC_SUBST(HostPlatform_CPP)
336 AC_SUBST(BuildPlatform_CPP)
337 AC_SUBST(TargetPlatform_CPP)
339 AC_SUBST(HostArch_CPP)
340 AC_SUBST(BuildArch_CPP)
341 AC_SUBST(TargetArch_CPP)
344 AC_SUBST(BuildOS_CPP)
345 AC_SUBST(TargetOS_CPP)
347 AC_SUBST(HostVendor_CPP)
348 AC_SUBST(BuildVendor_CPP)
349 AC_SUBST(TargetVendor_CPP)
355 [AC_HELP_STRING([--with-hc=ARG],
356 [Use ARG as the path to the compiler for compiling ordinary
357 Haskell code (default= value of --with-ghc)])],
363 AC_PATH_PROGS(NHC,nhc nhc98)
364 AC_PATH_PROG(HBC,hbc)
366 dnl ** Which gcc to use?
367 dnl --------------------------------------------------------------
369 [AC_HELP_STRING([--with-gcc=ARG],
370 [Use ARG as the path to GCC [default=autodetect]])],
371 [WhatGccIsCalled="$withval"
372 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
373 test "${OSTYPE}" != "msys" && \
374 test "${withval}" != ""
376 # Canonicalise to <drive>:/path/to/gcc
377 withval=`cygpath -m ${withval}`
382 [WhatGccIsCalled="gcc"]
384 AC_SUBST(WhatGccIsCalled)
386 dnl ** Which ld to use?
387 dnl --------------------------------------------------------------
389 [AC_HELP_STRING([--with-ld=ARG],
390 [Use ARG as the path to LD [default=autodetect]])],
391 [if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
392 test "${OSTYPE}" != "msys" && \
393 test "${withval}" != ""
395 # Canonicalise to <drive>:/path/to/ld
396 withval=`cygpath -m ${withval}`
404 dnl ** Build shared and/or static libs?
405 dnl --------------------------------------------------------------
406 AC_ARG_ENABLE(shared,
407 [AC_HELP_STRING([--enable-shared],
408 [Build shared libraries, if available (EXPERIMENTAL, non-working). [default=no]])],
409 [ if test x"$enableval" = x"yes"; then
410 AC_MSG_WARN([--enable-shared is experimental and not fully supported at this time])
418 AC_SUBST(BuildSharedLibs)
421 # AC_ARG_ENABLE(static,
422 # [AC_HELP_STRING([--enable-static],
423 # [Build static libraries. [default=yes]])],
424 # [ if test x"$enableval" = x"yes"; then
425 # BuildStaticLibs=YES
430 # [BuildStaticLibs=YES]
432 # AC_SUBST(BuildStaticLibs)
434 dnl ** Booting from .hc files?
435 dnl --------------------------------------------------------------
436 AC_ARG_ENABLE(hc-boot,
437 [AC_HELP_STRING([--enable-hc-boot],
438 [Boot the Glasgow Haskell Compiler from intermediate .hc files.
439 (This option is mostly of interest to porters.) [default=no]])],
440 [ if test x"$enableval" = x"yes"; then
448 AC_SUBST(BootingFromHc)
450 # This uses GHC, so put it after the "GHC is required" check above:
453 dnl ** Enable the construction of Win32 DLLs?
454 dnl --------------------------------------------------------------
456 dnl [ The ability to build the RTS and libraries as separate DLLs used
457 dnl to be supported, but isn't currently (updates to the RTS, compiler
458 dnl and build system would be required to bring it back again.)
459 dnl Hence, exposing it as an option is false advertisement, so better
460 dnl disable it to avoid confusion (but leave it commented-out rather
461 dnl than removed in order to remind ourselves to bring back the
462 dnl feature at some stage.) ]
464 dnl AC_ARG_ENABLE(win32-dlls,
465 dnl [ --enable-win32-dlls
466 dnl If on a Win32 platform running mingw32/cygwin, enable the
467 dnl construction of DLLs containing ghc-compiled code.
470 dnl case $HostOS_CPP in
473 dnl *) echo "Unrecognised win32 platform: $HostPlatform"
477 dnl EnableWin32DLLs=YES
479 dnl [EnableWin32DLLs=NO]
481 dnl AC_SUBST(EnableWin32DLLs)
482 dnl if test x"$EnableWin32DLLs" = "xYES" ; then
483 dnl AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
486 dnl ** Mac OS X: explicit deployment target
487 dnl --------------------------------------------------------------
488 AC_ARG_WITH([macosx-deployment-target],
489 [AC_HELP_STRING([--with-macosx-deployment-target=VERSION],
490 [Build for Mac OS VERSION and higher (default= version of build host)])],
491 [FP_MACOSX_DEPLOYMENT_TARGET="$withval"
492 if test "x$TargetOS_CPP-$TargetVendor_CPP" != "xdarwin-apple"; then
493 # ignore everywhere, but on Mac OS
494 AC_MSG_WARN([--macosx-deployment-target is only available on Mac OS X])
495 FP_MACOSX_DEPLOYMENT_TARGET=none
497 [FP_MACOSX_DEPLOYMENT_TARGET=none]
499 FP_CHECK_MACOSX_DEPLOYMENT_TARGET
500 AC_SUBST(MACOSX_DEPLOYMENT_VERSION)
501 AC_SUBST(MACOSX_DEPLOYMENT_SDK)
503 dnl --------------------------------------------------------------
504 dnl End of configure script option section
505 dnl --------------------------------------------------------------
508 dnl --------------------------------------------------------------
509 dnl * General configuration checks
510 dnl --------------------------------------------------------------
512 dnl ** Can the unix package be built?
513 dnl --------------------------------------------------------------
515 if test x"$TargetPlatform" = x"i386-unknown-mingw32"; then
520 AC_SUBST([GhcLibsWithUnix])
525 dnl ** look for `perl', but only in /bin on Windows
528 AC_CHECK_PROG(PerlCmd,perl,/bin/perl,,/bin)
529 if test -z "$PerlCmd"; then
530 echo "You must install the version of Perl shipped with GHC"
531 echo "(or a compatible one) in /bin."
536 AC_PATH_PROG(PerlCmd,perl)
537 if test -z "$PerlCmd"; then
538 echo "You must install perl before you can continue"
539 echo "Perhaps it is already installed, but not in your PATH?"
542 FPTOOLS_CHECK_PERL_VERSION
547 dnl ** does #! path/to/perl work? (sometimes it's too long...)
550 dnl ** check for Python
551 AC_PATH_PROG(PythonCmd,python)
553 dnl ** look for GCC and find out which version
554 dnl Figure out which C compiler to use. Gcc is preferred.
555 dnl If gcc, make sure it's at least 2.1
561 dnl ** figure out how to invoke cpp directly (gcc -E is no good)
564 dnl ** Without optimization some INLINE trickery fails for GHCi
567 SRC_CC_OPTS="$SRC_CC_OPTS $CFLAGS"
568 SRC_LD_OPTS="$SRC_LD_OPTS $LDFLAGS"
570 AC_SUBST(SRC_CC_OPTS)
571 AC_SUBST(SRC_LD_OPTS)
573 dnl ** figure out how to do context diffs
576 dnl ** Find find command (for Win32's benefit)
579 dnl ** Find sort command (for the benefit of Win32 environs)
582 dnl Let's make sure install-sh is executable here. If we got it from
583 dnl a darcs repo, it might not be (see bug #978).
585 dnl ** figure out how to do a BSD-ish install
588 dnl If you can run configure, you certainly have /bin/sh
589 AC_DEFINE([HAVE_BIN_SH], [1], [Define to 1 if you have /bin/sh.])
591 dnl ** how to invoke `ar' and `ranlib'
592 FP_PROG_AR_NEEDS_RANLIB
593 FP_PROG_AR_SUPPORTS_INPUT
595 dnl ** Check to see whether ln -s works
599 dnl ** Find the path to sed
600 AC_PATH_PROG(SedCmd,sed)
603 dnl ** check for time command
604 AC_PATH_PROG(TimeCmd,time)
607 dnl if GNU tar is named gtar, look for it first.
608 AC_PATH_PROGS(TarCmd,gtar tar,tar)
610 dnl ** check for patch
611 dnl if GNU patch is named gpatch, look for it first
612 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
614 AC_PATH_PROG(HSCOLOUR,HsColour)
615 # HsColour is passed to Cabal, so we need a native path
616 if test "x$HostPlatform" = "xi386-unknown-mingw32" && \
617 test "${OSTYPE}" != "msys" && \
618 test "${HSCOLOUR}" != ""
620 # Canonicalise to <drive>:/path/to/gcc
621 HSCOLOUR=`cygpath -m ${HSCOLOUR}`
624 dnl ** check for DocBook toolchain
626 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])
632 dnl ** check for ghc-pkg command
635 dnl ** check for installed happy binary + version
636 dnl (don't do it if we're booting from .hc files though.)
637 if test "$BootingFromHc" = "NO"; then
641 dnl ** check for installed alex binary + version
642 dnl (don't do it if we're booting from .hc files though.)
643 if test "$BootingFromHc" = "NO"; then
647 dnl Check we have an acceptable version of windres
650 dnl --------------------------------------------------
651 dnl ### program checking section ends here ###
652 dnl --------------------------------------------------
654 dnl --------------------------------------------------
655 dnl * Platform header file and syscall feature tests
656 dnl ### checking the state of the local header files and syscalls ###
658 dnl ** check for full ANSI header (.h) files
661 dnl ** Enable large file support. NB. do this before testing the type of
662 dnl off_t, because it will affect the result of that test.
665 dnl ** check for specific header (.h) files that we are interested in
666 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])
668 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
671 dnl ** do we have long longs?
672 AC_CHECK_TYPES([long long])
674 dnl ** what are the sizes of various types
675 AC_CHECK_SIZEOF(char, 1)
676 AC_CHECK_SIZEOF(double, 8)
677 AC_CHECK_SIZEOF(float, 4)
678 AC_CHECK_SIZEOF(int, 4)
679 AC_CHECK_SIZEOF(long, 4)
680 if test "$ac_cv_type_long_long" = yes; then
681 AC_CHECK_SIZEOF(long long, 8)
683 AC_CHECK_SIZEOF(short, 2)
684 AC_CHECK_SIZEOF(unsigned char, 1)
685 AC_CHECK_SIZEOF(unsigned int, 4)
686 AC_CHECK_SIZEOF(unsigned long, 4)
687 if test "$ac_cv_type_long_long" = yes; then
688 AC_CHECK_SIZEOF(unsigned long long, 8)
690 AC_CHECK_SIZEOF(unsigned short, 2)
691 AC_CHECK_SIZEOF(void *, 4)
693 dnl ** what are alignment constraints on various types
694 FP_CHECK_ALIGNMENT(char)
695 FP_CHECK_ALIGNMENT(double)
696 FP_CHECK_ALIGNMENT(float)
697 FP_CHECK_ALIGNMENT(int)
698 FP_CHECK_ALIGNMENT(long)
699 if test "$ac_cv_type_long_long" = yes; then
700 FP_CHECK_ALIGNMENT(long long)
702 FP_CHECK_ALIGNMENT(short)
703 FP_CHECK_ALIGNMENT(unsigned char)
704 FP_CHECK_ALIGNMENT(unsigned int)
705 FP_CHECK_ALIGNMENT(unsigned long)
706 if test "$ac_cv_type_long_long" = yes; then
707 FP_CHECK_ALIGNMENT(unsigned long long)
709 FP_CHECK_ALIGNMENT(unsigned short)
710 FP_CHECK_ALIGNMENT(void *)
712 FP_CHECK_FUNC([WinExec],
713 [@%:@include <windows.h>], [WinExec("",0)])
715 FP_CHECK_FUNC([GetModuleFileName],
716 [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
718 dnl ** check return type of signal handlers
719 dnl Foo: assumes we can use prototypes.
720 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
721 dnl AC_CACHE_CHECK([type of signal handlers], ac_cv_type_signal_handler,
722 dnl [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
723 dnl #include <signal.h>
727 dnl void (*signal (int, void (*)(int)))(int);
730 dnl [ac_cv_type_signal_handler=void_int],
731 dnl [ac_cv_type_signal_handler=int_void])])
732 dnl if test "$ac_cv_type_signal_handler" = void_int; then
733 dnl AC_DEFINE(VOID_INT_SIGNALS)
736 dnl On BCC, signal handlers have type "int(void)", elsewhere its "void(int)".
738 if test "$ac_cv_type_signal" = void; then
739 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).])
742 dnl ** check for more functions
743 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
744 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r, sched_setaffinity])
747 #include <sys/types.h>
748 #include <sys/time.h>
750 struct itimerval tval;
751 tval.it_value.tv_sec = 1;
752 tval.it_value.tv_usec = 0;
753 tval.it_interval = tval.it_value;
754 return setitimer(ITIMER_VIRTUAL, &tval, (void*)0) != 0;
756 ],[AC_DEFINE([HAVE_SETITIMER_VIRTUAL], [1], [Define to 1 if setitimer accepts ITIMER_VIRTUAL, 0 else.])])
758 dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if
759 dnl ** _POSIX_C_SOURCE is defined
760 AC_CHECK_DECLS([ctime_r], , ,
761 [#define _POSIX_SOURCE 1
762 #define _POSIX_C_SOURCE 199506L
765 dnl ** For ghc/rts/gmp:
766 AC_CHECK_FUNCS([getpagesize])
768 dnl ** check whether this machine has gmp3 installed
769 AC_CHECK_LIB(gmp, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp,
770 AC_CHECK_LIB(gmp3, __gmpz_fdiv_qr, HaveLibGmp=YES; LibGmp=gmp3,
771 HaveLibGmp=NO; LibGmp=not-installed))
772 if test $HaveLibGmp = YES; then
773 AC_DEFINE([HAVE_LIB_GMP], [1], [Define to 1 if GMP library is installed.])
778 dnl ** (Mac OS X only: check for GMP.framework)
780 case $HostPlatform in
782 AC_MSG_CHECKING([for GMP.framework])
784 LIBS="-framework GMP"
785 AC_TRY_LINK_FUNC(__gmpz_fdiv_qr, HaveFrameworkGMP=YES,)
786 if test $HaveFrameworkGMP = YES; then
787 AC_DEFINE([HAVE_FRAMEWORK_GMP], [1], [Define to 1 if GMP.framework is installed (Mac OS X only).])
790 AC_MSG_RESULT([$HaveFrameworkGMP])
793 AC_SUBST(HaveFrameworkGMP)
795 dnl ** check for mingwex library
796 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
797 AC_SUBST(HaveLibMingwEx)
799 if test $HaveLibMingwEx = YES ; then
800 AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
803 if test "$HaveLibGmp" = "NO"; then
804 if test "$HostArch_CPP" = "ia64" -o "$HostArch_CPP" = "mipseb" ; then
805 AC_MSG_ERROR([You need to install libgmp (the in-tree version does not work on IA64 or mips64).])
809 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
810 dnl the order of these tests matters: bfd needs liberty
811 AC_CHECK_LIB(iberty, xmalloc)
812 AC_CHECK_LIB(bfd, bfd_init)
814 dnl ** check for math library
815 AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
816 if test x"$fp_libm_not_needed" = xdunno; then
817 AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
821 dnl ################################################################
822 dnl Check for libraries
823 dnl ################################################################
825 dnl ** check whether we need -ldl to get dlopen()
827 AC_CHECK_LIB(dl, dlopen,
829 AC_DEFINE([HAVE_LIBDL], [1], [Define to 1 if you need -ldl to get dlopen().])
834 dnl --------------------------------------------------
835 dnl * Miscellaneous feature tests
836 dnl --------------------------------------------------
838 dnl ** can we get alloca?
841 dnl ** Working vfork?
844 dnl ** determine whether or not const works
847 dnl ** are we big endian?
849 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
851 dnl ** check for leading underscores in symbol names
852 FP_LEADING_UNDERSCORE
854 dnl ** check for ld, whether it has an -x option, and if it is GNU ld
858 dnl ** check for Apple-style dead-stripping support
859 dnl (.subsections-via-symbols assembler directive)
862 AC_MSG_CHECKING(for .subsections_via_symbols)
864 [AC_LANG_PROGRAM([], [__asm__ (".subsections_via_symbols");])],
866 AC_DEFINE([HAVE_SUBSECTIONS_VIA_SYMBOLS],[1],
867 [Define to 1 if Apple-style dead-stripping is supported.])
871 dnl *** check for GNU non-executable stack note support (ELF only)
872 dnl (.section .note.GNU-stack,"",@progbits)
874 AC_MSG_CHECKING(for GNU non-executable stack support)
876 [AC_LANG_PROGRAM([__asm__ (".section .note.GNU-stack,\"\",@progbits");], [0])],
878 AC_DEFINE([HAVE_GNU_NONEXEC_STACK],[1],
879 [Define to 1 if GNU non-executable stack notes are supported.])
883 dnl ** check for librt
884 AC_CHECK_LIB(rt, clock_gettime)
885 AC_CHECK_FUNCS(clock_gettime timer_create timer_settime)
886 FP_CHECK_TIMER_CREATE
888 dnl ** check for Apple's "interesting" long double compatibility scheme
889 AC_MSG_CHECKING(for printf\$LDBLStub)
890 AC_TRY_LINK_FUNC(printf\$LDBLStub,
893 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
894 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
898 AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
899 [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
903 AC_PATH_PROGS([GTK_CONFIG], [pkg-config])
904 if test -n "$GTK_CONFIG"; then
905 if $GTK_CONFIG gtk+-2.0 --atleast-version=2.0; then
906 GTK_CONFIG="$GTK_CONFIG gtk+-2.0"
908 AC_MSG_WARN([GTK+ not usable, need at least version 2.0])
912 AC_SUBST([GTK_CONFIG])
915 AC_CHECK_LIB(papi, PAPI_library_init, HavePapiLib=YES, HavePapiLib=NO)
916 AC_CHECK_HEADER([papi.h], [HavePapiHeader=YES], [HavePapiHeader=NO])
917 AC_SUBST(HavePapiLib)
918 AC_SUBST(HavePapiHeader)
920 if test "$HavePapiLib" = "YES" -a "$HavePapiHeader" = "YES"; then
927 if test "$DIR_DOCBOOK_XSL" = "" ||
928 test "$XsltprocCmd" = ""
930 BUILD_DOCBOOK_HTML=NO
932 BUILD_DOCBOOK_HTML=YES
934 AC_SUBST(BUILD_DOCBOOK_HTML)
936 if test "$DblatexCmd" = ""
942 BUILD_DOCBOOK_PDF=YES
944 AC_SUBST(BUILD_DOCBOOK_PS)
945 AC_SUBST(BUILD_DOCBOOK_PDF)
947 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])
948 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
952 # http://savannah.gnu.org/bugs/index.php?1516
953 # $(eval ...) inside conditionals causes errors
954 # with make 3.80, so warn the user if it looks like they're about to
956 # We would use "grep -q" here, but Solaris's grep doesn't support it.
958 if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
961 echo "WARNING: It looks like \"$1\" is GNU make 3.80."
962 echo "This version cannot be used to build GHC."
963 echo "Please use GNU make >= 3.81."
971 ----------------------------------------------------------------------
972 Configure completed successfully.
974 Building GHC version : $ProjectVersion
976 Build platform : $BuildPlatform
977 Host platform : $HostPlatform
978 Target platform : $TargetPlatform
981 if test "$BootingFromHc" = "YES"; then
983 Bootstrapping from HC files.
987 Bootstrapping using : $WithGhc
988 which is version : $GhcVersion
993 Using GCC : $WhatGccIsCalled
994 which is version : $GccVersion
1002 if test "$HSCOLOUR" = ""; then
1004 HsColour was not found; documentation will not contain source links
1008 HsColour : $HSCOLOUR
1012 echo "Building DocBook HTML documentation: $BUILD_DOCBOOK_HTML"
1013 echo "Building DocBook PS documentation: $BUILD_DOCBOOK_PS"
1014 echo "Building DocBook PDF documentation: $BUILD_DOCBOOK_PDF"
1016 echo ["Building shared libraries : $BuildSharedLibs"]
1018 echo ["----------------------------------------------------------------------
1022 For a standard build of GHC (fully optimised with profiling), type (g)make.
1024 To make changes to the default build configuration, copy the file
1025 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
1027 For more information on how to configure your GHC build, see
1028 http://hackage.haskell.org/trac/ghc/wiki/Building