Add tests for #11391
[ghc.git] / configure.ac
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)
4 dnl
5 #
6 # (c) The University of Glasgow 1994-2012
7 #
8 # Configure script template for GHC
9 #
10 # Process with 'autoreconf' to get a working configure script.
11 #
12 # For the generated configure script, do "./configure --help" to
13 # see what flags are available. (Better yet, read the documentation!)
14 #
15
16 AC_INIT([The Glorious Glasgow Haskell Compilation System], [8.1], [glasgow-haskell-bugs@haskell.org], [ghc])
17
18 # Set this to YES for a released version, otherwise NO
19 : ${RELEASE=NO}
20
21 # The primary version (e.g. 7.5, 7.4.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. 7.4.20111220).  The date is
24 # constructed by finding the date of the most recent patch in the
25 # git repository.  If this is a source distribution (not a git
26 # checkout), then we ship a file 'VERSION' containing the full version
27 # when the source distribution was created.
28
29 if test ! -f mk/config.h.in; then
30    echo "mk/config.h.in doesn't exist: perhaps you haven't run 'perl boot'?"
31    exit 1
32 fi
33
34 AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args])
35
36 dnl ----------------------------------------------------------
37 dnl ** Find unixy sort and find commands,
38 dnl ** which are needed by FP_SETUP_PROJECT_VERSION
39
40 dnl ** Find find command (for Win32's benefit)
41 FP_PROG_FIND
42 FP_PROG_SORT
43
44 dnl ----------------------------------------------------------
45 FP_SETUP_PROJECT_VERSION
46
47 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
48 AC_SUBST([release], [1])
49
50 # First off, a distrib sanity check..
51 AC_CONFIG_SRCDIR([mk/config.mk.in])
52
53 dnl * We require autoconf version 2.60
54 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
55 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
56 dnl Using autoconf 2.59 started to give nonsense like this
57 dnl  #define SIZEOF_CHAR 0
58 dnl recently.
59 AC_PREREQ([2.60])
60
61 # -------------------------------------------------------------------------
62 # Prepare to generate the following header files
63 #
64 #
65 AC_CONFIG_HEADER(mk/config.h)
66
67 # No, semi-sadly, we don't do `--srcdir'...
68 if test x"$srcdir" != 'x.' ; then
69     echo "This configuration does not support the \`--srcdir' option.."
70     exit 1
71 fi
72
73 dnl --------------------------------------------------------------
74 dnl * Project specific configuration options
75 dnl --------------------------------------------------------------
76 dnl What follows is a bunch of options that can either be configured
77 dnl through command line options to the configure script or by
78 dnl supplying defns in the build tree's mk/build.mk. Having the option to
79 dnl use either is considered a Feature.
80
81 dnl ** What command to use to compile compiler sources ?
82 dnl --------------------------------------------------------------
83
84 AC_ARG_WITH([ghc],
85 [AC_HELP_STRING([--with-ghc=ARG],
86   [Use ARG as the path to GHC  [default=autodetect]])],
87   [WithGhc="$withval"],
88   [if test "$GHC" = ""; then
89     AC_PATH_PROG([GHC], [ghc])
90   fi
91   WithGhc="$GHC"])
92
93 dnl ** Tell the make system which OS we are using
94 dnl $OSTYPE is set by the operating system to "msys" or "cygwin" or something
95 AC_SUBST(OSTYPE)
96
97 AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
98 [AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot],
99                 [Allow bootstrapping using a development snapshot of GHC.  This is not guaranteed to work.])],
100         EnableBootstrapWithDevelSnaphost=YES,
101         EnableBootstrapWithDevelSnaphost=NO
102 )
103
104 AC_ARG_ENABLE(tarballs-autodownload,
105 [AC_HELP_STRING([--enable-tarballs-autodownload],
106                 [Automatically download Windows distribution binaries if needed.])],
107         TarballsAutodownload=YES,
108         TarballsAutodownload=NO
109 )
110 if test "$WithGhc" != ""; then
111   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
112
113   if test "$GhcMajVersion" = "unknown" -o "$GhcMinVersion" = "unknown"; then
114      AC_MSG_ERROR([Cannot determine the version of $WithGhc.  Is it really GHC?])
115   fi
116
117   AC_SUBST(GhcVersion)dnl
118   AC_SUBST(GhcMajVersion)dnl
119   AC_SUBST(GhcMinVersion)dnl
120   AC_SUBST(GhcPatchLevel)dnl
121   GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
122   GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
123
124   BOOTSTRAPPING_GHC_INFO_FIELD([CC_STAGE0],[C compiler command])
125   dnl ToDo, once "ld command" is reliably available.
126   dnl Then, we can remove the LD_STAGE0 hack in mk/build-package-date.mk
127   dnl BOOTSTRAPPING_GHC_INFO_FIELD([LD_STAGE0],[ld command])
128   BOOTSTRAPPING_GHC_INFO_FIELD([AR_STAGE0],[ar command])
129   BOOTSTRAPPING_GHC_INFO_FIELD([AR_OPTS_STAGE0],[ar flags])
130   BOOTSTRAPPING_GHC_INFO_FIELD([ArSupportsAtFile_STAGE0],[ar supports at file])
131 fi
132
133 dnl ** Must have GHC to build GHC
134 if test "$WithGhc" = ""
135 then
136     AC_MSG_ERROR([GHC is required.])
137 fi
138 FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[7.10],
139     [AC_MSG_ERROR([GHC version 7.10 or later is required to compile GHC.])])
140
141 if test `expr $GhcMinVersion % 2` = "1"
142 then
143     if test "$EnableBootstrapWithDevelSnaphost" = "NO"
144     then
145         AC_MSG_ERROR([
146      $WithGhc is a development snapshot of GHC, version $GhcVersion.
147      Bootstrapping using this version of GHC is not supported, and may not
148      work.  Use --enable-bootstrap-with-devel-snapshot to try it anyway,
149      or --with-ghc to specify a different GHC to use.])
150     fi
151 fi
152
153 GHC_PACKAGE_DB_FLAG=package-db
154 AC_SUBST(GHC_PACKAGE_DB_FLAG)
155
156 # GHC is passed to Cabal, so we need a native path
157 if test "${WithGhc}" != ""
158 then
159     ghc_host_os=`"${WithGhc}" +RTS --info | grep 'Host OS' | sed -e 's/.*, "//' -e 's/")//'`
160
161     if test "$ghc_host_os" = "mingw32"
162     then
163         if test "${OSTYPE}" = "msys"
164         then
165             WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
166         else
167             # Canonicalise to <drive>:/path/to/ghc
168             WithGhc=`cygpath -m "${WithGhc}"`
169         fi
170         echo "GHC path canonicalised to: ${WithGhc}"
171     fi
172 fi
173 AC_SUBST([WithGhc])
174
175 dnl ** Without optimization some INLINE trickery fails for GHCi
176 SRC_CC_OPTS="-O"
177
178 dnl--------------------------------------------------------------------
179 dnl * Choose host(/target/build) platform
180 dnl--------------------------------------------------------------------
181 dnl If we aren't explicitly told what values to use with configure flags,
182 dnl we ask the bootstrapping compiler what platform it is for
183
184 if test "${WithGhc}" != ""
185 then
186         bootstrap_host=`"${WithGhc}" +RTS --info | grep '^ ,("Host platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
187         bootstrap_target=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
188         if test "$bootstrap_host" != "$bootstrap_target"
189         then
190                 echo "Bootstrapping GHC is a cross compiler. This probably isn't going to work"
191         fi
192 fi
193
194 # We have to run these unconditionally, but we may discard their
195 # results in the following code
196 AC_CANONICAL_BUILD
197 AC_CANONICAL_HOST
198 AC_CANONICAL_TARGET
199
200 FPTOOLS_SET_PLATFORM_VARS
201
202 # Verify that the installed (bootstrap) GHC is capable of generating
203 # code for the requested build platform.
204 if test "$BuildPlatform" != "$bootstrap_target"
205 then
206     echo "This GHC (${WithGhc}) does not generate code for the build platform"
207     echo "   GHC target platform    : $bootstrap_target"
208     echo "   Desired build platform : $BuildPlatform"
209     exit 1
210 fi
211
212 # Testing if we shall enable shared libs support on Solaris.
213 # Anything older than SunOS 5.11 aka Solaris 11 (Express) is broken.
214
215 SOLARIS_BROKEN_SHLD=NO
216
217 case $host in
218      i386-*-solaris2)
219      # here we go with the test
220      MINOR=`uname -r|cut -d '.' -f 2-`
221      if test "$MINOR" -lt "11"; then
222          SOLARIS_BROKEN_SHLD=YES
223      fi
224      ;;
225 esac
226
227 AC_SUBST(SOLARIS_BROKEN_SHLD)
228
229 dnl ** Do an unregisterised build?
230 dnl --------------------------------------------------------------
231 case "$HostArch" in
232     i386|x86_64|powerpc|powerpc64|powerpc64le|arm)
233         UnregisterisedDefault=NO
234         ;;
235     *)
236         UnregisterisedDefault=YES
237         ;;
238 esac
239 AC_ARG_ENABLE(unregisterised,
240 [AC_HELP_STRING([--enable-unregisterised],
241 [Build an unregisterised compiler (enabled by default on platforms without registerised support) [default="$UnregisterisedDefault"]])],
242 [ if test x"$enableval" = x"yes"; then
243         Unregisterised=YES
244   else
245         Unregisterised=NO
246   fi
247 ],
248 [Unregisterised="$UnregisterisedDefault"]
249 )
250 AC_SUBST(Unregisterised)
251
252 AC_ARG_WITH(hc,
253 [AC_HELP_STRING([--with-hc=ARG],
254         [Use ARG as the path to the compiler for compiling ordinary
255          Haskell code  (default= value of --with-ghc)])],
256 [WithHc="$withval"],
257 [WithHc=$WithGhc]
258 )
259 AC_SUBST(WithHc)
260
261 # Requires FPTOOLS_SET_PLATFORM_VARS to be run first.
262 FP_FIND_ROOT
263
264 fail() {
265     echo >&2
266     echo "$1" >&2
267     exit 1
268 }
269
270
271 if test "$HostOS" = "mingw32"
272 then
273     # Find the mingw-w64 7z file to extract.
274     # NB. If you update the tarballs to a new version of gcc, don't
275     # forget to tweak the paths in driver/gcc/gcc.c.
276     if test "$HostArch" = "i386"
277     then
278         mingw_arch="i686"
279         tarball_dest_dir="mingw-w64/x86"
280         tarball_mingw_dir="mingw32"
281     else
282         mingw_arch="x86_64"
283         tarball_dest_dir="mingw-w64/x86_64"
284         tarball_mingw_dir="mingw64"
285     fi
286 fi
287
288 set_up_tarballs() {
289     AC_MSG_NOTICE([Checking for Windows toolchain tarballs...])
290     local action
291     if test "$TarballsAutodownload" = "NO"
292     then
293         action="verify"
294     else
295         action="download"
296     fi
297     mk/get-win32-tarballs.sh $action $HostArch > missing-win32-tarballs
298     case $? in
299         0)
300            rm missing-win32-tarballs
301            ;;
302         2)
303            echo
304            echo "Error:"
305            echo "Needed msys2 tarballs are missing. You have a few options to get them,"
306            echo
307            echo "  * run configure with the --enable-tarballs-autodownload option"
308            echo
309            echo "  * run mk/get-win32-tarballs.sh download ${HostArch}"
310            echo
311            echo "  * manually download the files listed in ./missing-win32-tarballs and place"
312            echo "    them in the ghc-tarballs directory."
313            echo
314            exit 1
315            ;;
316         *)
317            echo
318            echo "Error fetching msys2 tarballs; see errors above."
319            exit 1
320            ;;
321     esac
322
323     # Extract all the tarballs in one go
324     if ! test -d inplace/mingw
325     then
326         AC_MSG_NOTICE([Extracting Windows toolchain from archives (may take a while)...])
327         rm -rf inplace/mingw
328         local base_dir="../ghc-tarballs/${tarball_dest_dir}"
329         ( cd inplace &&
330         find "${base_dir}" -name "*.tar.xz" -exec tar xfJ {} \; &&
331         rm ".MTREE" &&
332         rm ".PKGINFO" &&
333         cd .. ) || fail "Error: Could not extract Windows toolchains."
334
335         mv "inplace/${tarball_mingw_dir}" inplace/mingw &&
336         touch inplace/mingw
337
338         # NB. Now since the GCC is hardcoded to use /mingw32 we need to
339         # make a wrapper around it to give it the proper paths
340         mv inplace/mingw/bin/gcc.exe inplace/mingw/bin/realgcc.exe
341         PATH=`pwd`/inplace/mingw/bin:$PATH
342         inplace/mingw/bin/realgcc.exe driver/gcc/gcc.c driver/utils/cwrapper.c driver/utils/getLocation.c -Idriver/utils -o inplace/mingw/bin/gcc.exe
343
344         AC_MSG_NOTICE([In-tree MingW-w64 tree created])
345     fi
346 }
347
348 if test "$HostOS" = "mingw32"
349 then
350     test -d inplace || mkdir inplace
351
352     # NB. Download and extract the MingW-w64 distribution if required
353     set_up_tarballs
354
355     mingwbin="$hardtop/inplace/mingw/bin/"
356     CC="${mingwbin}gcc.exe"
357     LD="${mingwbin}ld.exe"
358     NM="${mingwbin}nm.exe"
359     RANLIB="${mingwbin}ranlib.exe"
360     OBJDUMP="${mingwbin}objdump.exe"
361     fp_prog_ar="${mingwbin}ar.exe"
362
363     # NB. Download the perl binaries if required
364     if ! test -d inplace/perl ||
365          test inplace/perl -ot ghc-tarballs/perl/ghc-perl*.tar.gz
366     then
367         AC_MSG_NOTICE([Making in-tree perl tree])
368         rm -rf inplace/perl
369         mkdir inplace/perl
370         (
371             cd inplace/perl &&
372             tar -zxf ../../ghc-tarballs/perl/ghc-perl*.tar.gz
373         )
374         AC_MSG_NOTICE([In-tree perl tree created])
375     fi
376 fi
377
378 FP_ICONV
379 FP_GMP
380 FP_CURSES
381
382 XCODE_VERSION()
383
384 SplitObjsBroken=NO
385 if test "$TargetOS_CPP" = "darwin"
386 then
387     # Split objects is broken (#4013) with XCode < 3.2
388     if test "$XCodeVersion1" -lt 3
389     then
390         SplitObjsBroken=YES
391     else
392         if test "$XCodeVersion1" -eq 3
393         then
394             if test "$XCodeVersion2" -lt 2
395             then
396                 SplitObjsBroken=YES
397             fi
398         fi
399     fi
400 fi
401 AC_SUBST([SplitObjsBroken])
402
403 dnl ** Building a cross compiler?
404 dnl --------------------------------------------------------------
405 CrossCompiling=NO
406 # If 'host' and 'target' differ, then this means we are building a cross-compiler.
407 if test "$target" != "$host" ; then
408     CrossCompiling=YES
409     cross_compiling=yes   # This tells configure that it can accept just 'target',
410                           # otherwise you get
411                           #   configure: error: cannot run C compiled programs.
412                           #   If you meant to cross compile, use `--host'.
413 fi
414 if test "$build" != "$host" ; then
415    AC_MSG_ERROR([
416 You've selected:
417
418   BUILD:  $build   (the architecture we're building on)
419   HOST:   $host    (the architecture the compiler we're building will execute on)
420   TARGET: $target  (the architecture the compiler we're building will produce code for)
421
422 BUILD must equal HOST; that is, we do not support building GHC itself
423 with a cross-compiler.  To cross-compile GHC itself, set TARGET: stage
424 1 will be a cross-compiler, and stage 2 will be the cross-compiled
425 GHC.
426 ])
427 fi
428 if test "$CrossCompiling" = "YES"
429 then
430   CrossCompilePrefix="${target}-"
431 else
432   CrossCompilePrefix=""
433 fi
434 TargetPlatformFull="${target}"
435 AC_SUBST(CrossCompiling)
436 AC_SUBST(CrossCompilePrefix)
437 AC_SUBST(TargetPlatformFull)
438
439 dnl ** Which gcc to use?
440 dnl --------------------------------------------------------------
441 FIND_GCC([WhatGccIsCalled], [gcc], [gcc])
442 CC="$WhatGccIsCalled"
443 export CC
444
445 # If --with-gcc was used, and we're not cross-compiling, then it also
446 # applies to the stage0 compiler.
447 MAYBE_OVERRIDE_STAGE0([gcc],[CC_STAGE0])
448 MAYBE_OVERRIDE_STAGE0([ar],[AR_STAGE0])
449
450 dnl make extensions visible to allow feature-tests to detect them lateron
451 AC_USE_SYSTEM_EXTENSIONS
452
453 dnl ** figure out how to invoke the C preprocessor (i.e. `gcc -E`)
454 AC_PROG_CPP
455
456 # --with-hs-cpp/--with-hs-cpp-flags
457 FP_CPP_CMD_WITH_ARGS(HaskellCPPCmd, HaskellCPPArgs)
458 AC_SUBST([HaskellCPPCmd])
459 AC_SUBST([HaskellCPPArgs])
460
461 dnl ** Which ld to use?
462 dnl --------------------------------------------------------------
463 FIND_LD([LdCmd])
464 AC_SUBST([LdCmd])
465
466 dnl ** Which nm to use?
467 dnl --------------------------------------------------------------
468 FP_ARG_WITH_PATH_GNU_PROG([NM], [nm], [nm])
469 NmCmd="$NM"
470 AC_SUBST([NmCmd])
471
472 dnl ** Which objdump to use?
473 dnl --------------------------------------------------------------
474 FP_ARG_WITH_PATH_GNU_PROG_OPTIONAL([OBJDUMP], [objdump], [objdump])
475 ObjdumpCmd="$OBJDUMP"
476 AC_SUBST([ObjdumpCmd])
477
478 dnl ** Which ar to use?
479 dnl --------------------------------------------------------------
480 FP_ARG_WITH_PATH_GNU_PROG([AR], [ar], [ar])
481 ArCmd="$AR"
482 fp_prog_ar="$AR"
483 AC_SUBST([ArCmd])
484
485 dnl ** Which ranlib to use?
486 dnl --------------------------------------------------------------
487 FP_ARG_WITH_PATH_GNU_PROG([RANLIB], [ranlib], [ranlib])
488 RanlibCmd="$RANLIB"
489 RANLIB="$RanlibCmd"
490
491
492 # Note: we may not have objdump on OS X, and we only need it on Windows (for DLL checks)
493 case $HostOS_CPP in
494 cygwin32|mingw32)
495     dnl ** Which objdump to use?
496     dnl --------------------------------------------------------------
497     FP_ARG_WITH_PATH_GNU_PROG([OBJDUMP], [objdump], [objdump])
498     ObjdumpCmd="$OBJDUMP"
499     AC_SUBST([ObjdumpCmd])
500     ;;
501 esac
502
503 # Here is where we re-target which specific version of the LLVM
504 # tools we are looking for. In the past, GHC supported a number of
505 # versions of LLVM simultaneously, but that stopped working around
506 # 3.5/3.6 release of LLVM.
507 LlvmVersion=3.7
508 AC_SUBST([LlvmVersion])
509 sUPPORTED_LLVM_VERSION=$(echo \($LlvmVersion\) | sed 's/\./,/')
510 AC_DEFINE_UNQUOTED([sUPPORTED_LLVM_VERSION], ${sUPPORTED_LLVM_VERSION}, [The supported LLVM version number])
511
512 dnl ** Which LLVM llc to use?
513 dnl --------------------------------------------------------------
514 FIND_LLVM_PROG([LLC], [llc], [llc], [$LlvmVersion])
515 LlcCmd="$LLC"
516 AC_SUBST([LlcCmd])
517
518 dnl ** Which LLVM opt to use?
519 dnl --------------------------------------------------------------
520 FIND_LLVM_PROG([OPT], [opt], [opt], [$LlvmVersion])
521 OptCmd="$OPT"
522 AC_SUBST([OptCmd])
523
524 dnl --------------------------------------------------------------
525 dnl End of configure script option section
526 dnl --------------------------------------------------------------
527
528
529 dnl --------------------------------------------------------------
530 dnl * General configuration checks
531 dnl --------------------------------------------------------------
532
533 dnl ** Bug 9439: Some GHC 7.8 releases had broken LLVM code generator.
534 dnl Unfortunately we don't know whether the user is going to request a
535 dnl build with the LLVM backend as this is only given in build.mk.
536 dnl
537 dnl Instead, we try to do as much work as possible here, checking
538 dnl whether -fllvm is the stage 0 compiler's default. If so we
539 dnl fail. If not, we check whether -fllvm is affected explicitly and
540 dnl if so set a flag. The build system will later check this flag
541 dnl after the desired build flags are known.
542
543 dnl This problem is further complicated by the fact that the llvm
544 dnl version used by the bootstrap compiler may be different from the
545 dnl version we arre trying to compile GHC against. Therefore, we need
546 dnl to find the boostrap compiler's `settings` file then check to see
547 dnl if the `opt` and `llc` command strings are non-empty and if these
548 dnl programs exist. Only if they exist to we test for bug #9439.
549
550 FIND_GHC_BOOTSTRAP_PROG([BootstrapLlcCmd], [${WithGhc}], "LLVM llc command")
551 FIND_GHC_BOOTSTRAP_PROG([BootstrapOptCmd], [${WithGhc}], "LLVM opt command")
552
553 if test -n "$BootstrapLlcCmd" && test -n "$BootstrapOptCmd"
554 then
555     AC_MSG_CHECKING(whether bootstrap compiler is affected by bug 9439)
556     echo "main = putStrLn \"%function\"" > conftestghc.hs
557
558     # Check whether LLVM backend is default for this platform
559     "${WithGhc}" -pgmlc="${BootstrapLlcCmd}" -pgmlo="${BootstrapOptCmd}" conftestghc.hs 2>&1 >/dev/null
560     res=`./conftestghc`
561     if test "x$res" = "x%object"
562     then
563         AC_MSG_RESULT(yes)
564         echo "Buggy bootstrap compiler"
565         echo ""
566         echo "The stage 0 compiler $WithGhc is affected by GHC Bug \#9439"
567         echo "and therefore will miscompile the LLVM backend if -fllvm is"
568         echo "used."
569         echo
570         echo "Please use another bootstrap compiler"
571         exit 1
572     fi
573
574     # -fllvm is not the default, but set a flag so the Makefile can check
575     # -for it in the build flags later on
576     "${WithGhc}" -fforce-recomp -pgmlc="${BootstrapLlcCmd}" -pgmlo="${BootstrapOptCmd}" -fllvm conftestghc.hs 2>&1 >/dev/null
577     if test $? = 0
578     then
579         res=`./conftestghc`
580         if test "x$res" = "x%object"
581         then
582             AC_MSG_RESULT(yes)
583             GHC_LLVM_AFFECTED_BY_9439=1
584         elif test "x$res" = "x%function"
585         then
586             AC_MSG_RESULT(no)
587             GHC_LLVM_AFFECTED_BY_9439=0
588         else
589             AC_MSG_WARN(unexpected output $res)
590         fi
591     else
592         AC_MSG_RESULT(failed to compile, assuming no)
593     fi
594 fi
595 AC_SUBST([GHC_LLVM_AFFECTED_BY_9439])
596
597 dnl ** Can the unix package be built?
598 dnl --------------------------------------------------------------
599
600 if test "$TargetOS" = "mingw32"
601 then
602     GhcLibsWithUnix=NO
603 else
604     GhcLibsWithUnix=YES
605 fi
606 AC_SUBST([GhcLibsWithUnix])
607
608 dnl ** does #! work?
609 AC_SYS_INTERPRETER()
610
611 dnl ** look for `perl'
612 case $HostOS_CPP in
613 cygwin32|mingw32)
614     PerlCmd=$hardtop/inplace/perl/perl
615     ;;
616 *)
617     AC_PATH_PROG(PerlCmd,perl)
618     if test -z "$PerlCmd"
619     then
620         echo "You must install perl before you can continue"
621         echo "Perhaps it is already installed, but not in your PATH?"
622         exit 1
623     else
624         FPTOOLS_CHECK_PERL_VERSION
625     fi
626     ;;
627 esac
628
629 dnl ** look for GCC and find out which version
630 dnl     Figure out which C compiler to use.  Gcc is preferred.
631 dnl     If gcc, make sure it's at least 3.0
632 dnl
633 FP_GCC_VERSION
634
635 dnl ** look to see if we have a C compiler using an llvm back end.
636 dnl
637 FP_CC_LLVM_BACKEND
638
639 FP_PROG_LD_IS_GNU
640 FP_PROG_LD_BUILD_ID
641 FP_PROG_LD_NO_COMPACT_UNWIND
642 FP_PROG_LD_FILELIST
643
644
645 FPTOOLS_SET_C_LD_FLAGS([target],[CFLAGS],[LDFLAGS],[IGNORE_LINKER_LD_FLAGS],[CPPFLAGS])
646 FPTOOLS_SET_C_LD_FLAGS([build],[CONF_CC_OPTS_STAGE0],[CONF_GCC_LINKER_OPTS_STAGE0],[CONF_LD_LINKER_OPTS_STAGE0],[CONF_CPP_OPTS_STAGE0])
647 FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE1],[CONF_GCC_LINKER_OPTS_STAGE1],[CONF_LD_LINKER_OPTS_STAGE1],[CONF_CPP_OPTS_STAGE1])
648 FPTOOLS_SET_C_LD_FLAGS([target],[CONF_CC_OPTS_STAGE2],[CONF_GCC_LINKER_OPTS_STAGE2],[CONF_LD_LINKER_OPTS_STAGE2],[CONF_CPP_OPTS_STAGE2])
649 # Stage 3 won't be supported by cross-compilation
650
651 FP_GCC_EXTRA_FLAGS
652
653 AC_SUBST(CONF_CC_OPTS_STAGE0)
654 AC_SUBST(CONF_CC_OPTS_STAGE1)
655 AC_SUBST(CONF_CC_OPTS_STAGE2)
656 AC_SUBST(CONF_GCC_LINKER_OPTS_STAGE0)
657 AC_SUBST(CONF_GCC_LINKER_OPTS_STAGE1)
658 AC_SUBST(CONF_GCC_LINKER_OPTS_STAGE2)
659 AC_SUBST(CONF_LD_LINKER_OPTS_STAGE0)
660 AC_SUBST(CONF_LD_LINKER_OPTS_STAGE1)
661 AC_SUBST(CONF_LD_LINKER_OPTS_STAGE2)
662 AC_SUBST(CONF_CPP_OPTS_STAGE0)
663 AC_SUBST(CONF_CPP_OPTS_STAGE1)
664 AC_SUBST(CONF_CPP_OPTS_STAGE2)
665
666 dnl ** Set up the variables for the platform in the settings file.
667 dnl May need to use gcc to find platform details.
668 dnl --------------------------------------------------------------
669 FPTOOLS_SET_HASKELL_PLATFORM_VARS
670
671 dnl ** figure out how to do context diffs
672 FP_PROG_CONTEXT_DIFF
673
674 dnl Let's make sure install-sh is executable here.  If we got it from
675 dnl a darcs repo, it might not be (see bug #978).
676 chmod +x install-sh
677 dnl ** figure out how to do a BSD-ish install
678 AC_PROG_INSTALL
679
680 dnl ** how to invoke `ar' and `ranlib'
681 FP_PROG_AR_SUPPORTS_ATFILE
682 FP_PROG_AR_NEEDS_RANLIB
683
684 dnl ** Check to see whether ln -s works
685 AC_PROG_LN_S
686
687 FP_SETTINGS
688
689 dnl ** Find the path to sed
690 AC_PATH_PROGS(SedCmd,gsed sed,sed)
691
692
693 dnl ** check for time command
694 AC_PATH_PROG(TimeCmd,time)
695
696 dnl ** check for tar
697 dnl   if GNU tar is named gtar, look for it first.
698 AC_PATH_PROGS(TarCmd,gnutar gtar tar,tar)
699
700 dnl ** check for patch
701 dnl if GNU patch is named gpatch, look for it first
702 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
703
704 dnl ** check for dtrace (currently only implemented for Mac OS X)
705 HaveDtrace=NO
706 AC_PATH_PROG(DtraceCmd,dtrace)
707 if test -n "$DtraceCmd"; then
708   if test "x$TargetOS_CPP-$TargetVendor_CPP" = "xdarwin-apple" -o "x$TargetOS_CPP-$TargetVendor_CPP" = "xsolaris2-unknown"; then
709     HaveDtrace=YES
710   fi
711 fi
712 AC_SUBST(HaveDtrace)
713
714 AC_PATH_PROG(HSCOLOUR,HsColour)
715 # HsColour is passed to Cabal, so we need a native path
716 if test "$HostOS"      = "mingw32" && \
717    test "${OSTYPE}"   != "msys"    && \
718    test "${HSCOLOUR}" != ""
719 then
720     # Canonicalise to <drive>:/path/to/gcc
721     HSCOLOUR=`cygpath -m ${HSCOLOUR}`
722 fi
723
724 dnl ** check for Sphinx toolchain
725 AC_PATH_PROG(SPHINXBUILD,sphinx-build)
726 AC_CACHE_CHECK([for version of sphinx-build], fp_cv_sphinx_version,
727 changequote(, )dnl
728 [if test -n "$SPHINXBUILD"; then
729   fp_cv_sphinx_version=`"$SPHINXBUILD" --version 2>&1 | sed 's/Sphinx\( (sphinx-build)\)\? v\?\([0-9]\.[0-9]\.[0-9]\)/\2/' | head -n1`;
730 fi;
731 changequote([, ])dnl
732 ])
733 FP_COMPARE_VERSIONS([$fp_cv_sphinx_version],-lt,1.0.0,
734     [AC_MSG_WARN([Sphinx version 1.0.0 or later is required to build documentation]); SPHINXBUILD=;])
735
736 dnl ** check for xelatex
737 AC_PATH_PROG(XELATEX,xelatex)
738
739 dnl ** check for ghc-pkg command
740 FP_PROG_GHC_PKG
741
742 dnl ** check for installed happy binary + version
743 FPTOOLS_HAPPY
744
745 dnl ** check for installed alex binary + version
746 FPTOOLS_ALEX
747
748 dnl --------------------------------------------------
749 dnl ### program checking section ends here ###
750 dnl --------------------------------------------------
751
752 dnl --------------------------------------------------
753 dnl * Platform header file and syscall feature tests
754 dnl ### checking the state of the local header files and syscalls ###
755
756 dnl ** check for full ANSI header (.h) files
757 AC_HEADER_STDC
758
759 dnl ** Enable large file support.  NB. do this before testing the type of
760 dnl    off_t, because it will affect the result of that test.
761 AC_SYS_LARGEFILE
762
763 dnl ** check for specific header (.h) files that we are interested in
764 AC_CHECK_HEADERS([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/param.h sys/mman.h sys/resource.h sys/select.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])
765
766 dnl sys/cpuset.h needs sys/param.h to be included first on FreeBSD 9.1; #7708
767 AC_CHECK_HEADERS([sys/cpuset.h], [], [],
768 [[#if HAVE_SYS_PARAM_H
769 # include <sys/param.h>
770 #endif
771 ]])
772
773 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
774 AC_HEADER_TIME
775
776 dnl ** do we have long longs?
777 AC_CHECK_TYPES([long long])
778
779 dnl ** what are the sizes of various types
780 AC_CHECK_SIZEOF(char,               1)
781 AC_CHECK_SIZEOF(double,             8)
782 AC_CHECK_SIZEOF(float,              4)
783 AC_CHECK_SIZEOF(int,                4)
784 AC_CHECK_SIZEOF(long,               4)
785 if test "$ac_cv_type_long_long" = yes; then
786 AC_CHECK_SIZEOF(long long,          8)
787 fi
788 AC_CHECK_SIZEOF(short,              2)
789 AC_CHECK_SIZEOF(unsigned char,      1)
790 AC_CHECK_SIZEOF(unsigned int,       4)
791 AC_CHECK_SIZEOF(unsigned long,      4)
792 if test "$ac_cv_type_long_long" = yes; then
793 AC_CHECK_SIZEOF(unsigned long long, 8)
794 fi
795 AC_CHECK_SIZEOF(unsigned short,     2)
796 AC_CHECK_SIZEOF(void *,             4)
797
798 dnl for use in settings.in
799 WordSize=$ac_cv_sizeof_void_p
800 AC_SUBST(WordSize)
801
802 dnl ** what are alignment constraints on various types
803 FP_CHECK_ALIGNMENT(char)
804 FP_CHECK_ALIGNMENT(double)
805 FP_CHECK_ALIGNMENT(float)
806 FP_CHECK_ALIGNMENT(int)
807 FP_CHECK_ALIGNMENT(long)
808 if test "$ac_cv_type_long_long" = yes; then
809 FP_CHECK_ALIGNMENT(long long)
810 fi
811 FP_CHECK_ALIGNMENT(short)
812 FP_CHECK_ALIGNMENT(unsigned char)
813 FP_CHECK_ALIGNMENT(unsigned int)
814 FP_CHECK_ALIGNMENT(unsigned long)
815 if test "$ac_cv_type_long_long" = yes; then
816 FP_CHECK_ALIGNMENT(unsigned long long)
817 fi
818 FP_CHECK_ALIGNMENT(unsigned short)
819 FP_CHECK_ALIGNMENT(void *)
820
821 FP_CHECK_FUNC([WinExec],
822   [@%:@include <windows.h>], [WinExec("",0)])
823
824 FP_CHECK_FUNC([GetModuleFileName],
825   [@%:@include <windows.h>], [GetModuleFileName((HMODULE)0,(LPTSTR)0,0)])
826
827 dnl ** check for more functions
828 dnl ** The following have been verified to be used in ghc/, but might be used somewhere else, too.
829 AC_CHECK_FUNCS([getclock getrusage gettimeofday setitimer siginterrupt sysconf times ctime_r sched_setaffinity setlocale])
830
831 dnl ** On OS X 10.4 (at least), time.h doesn't declare ctime_r if
832 dnl ** _POSIX_C_SOURCE is defined
833 AC_CHECK_DECLS([ctime_r], , ,
834 [#define _POSIX_SOURCE 1
835 #define _POSIX_C_SOURCE 199506L
836 #include <time.h>])
837
838 dnl ** check for mingwex library
839 AC_CHECK_LIB(mingwex, closedir, HaveLibMingwEx=YES, HaveLibMingwEx=NO)
840 AC_SUBST(HaveLibMingwEx)
841
842 if test $HaveLibMingwEx = YES ; then
843   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
844 fi
845
846 dnl ** check for math library
847 dnl    Keep that check as early as possible.
848 dnl    as we need to know whether we need libm
849 dnl    for math functions or not
850 dnl    (see http://ghc.haskell.org/trac/ghc/ticket/3730)
851 AC_CHECK_LIB(m, atan, HaveLibM=YES, HaveLibM=NO)
852 if test $HaveLibM = YES
853 then
854   AC_DEFINE([HAVE_LIBM], [1], [Define to 1 if you need to link with libm])
855 fi
856
857 FP_BFD_SUPPORT
858
859 dnl ################################################################
860 dnl Check for libraries
861 dnl ################################################################
862
863 # system libffi
864
865 AC_ARG_WITH([system-libffi],
866 [AC_HELP_STRING([--with-system-libffi],
867   [Use system provided libffi for RTS [default=no]])
868 ])
869
870 AS_IF([test "x$with_system_libffi" = "xyes"],
871   [UseSystemLibFFI="YES"], [UseSystemLibFFI="NO"]
872 )
873
874
875 AC_SUBST(UseSystemLibFFI)
876
877 AC_ARG_WITH([ffi-includes],
878 [AC_HELP_STRING([--with-ffi-includes=ARG],
879   [Find includes for libffi in ARG [default=system default]])
880 ],
881 [
882  if test "x$UseSystemLibFFI" != "xYES"; then
883     AC_MSG_WARN([--with-ffi-includes will be ignored, --with-system-libffi not set])
884  else
885     FFIIncludeDir="$withval"
886     LIBFFI_CFLAGS="-I$withval"
887  fi
888 ])
889
890 AC_SUBST(FFIIncludeDir)
891
892 AC_ARG_WITH([ffi-libraries],
893 [AC_HELP_STRING([--with-ffi-libraries=ARG],
894   [Find libffi in ARG [default=system default]])
895 ],
896 [
897  if test "x$UseSystemLibFFI" != "xYES"; then
898     AC_MSG_WARN([--with-ffi-libraries will be ignored, --with-system-libffi not set])
899  else
900     FFILibDir="$withval" LIBFFI_LDFLAGS="-L$withval"
901  fi
902 ])
903
904 AC_SUBST(FFILibDir)
905
906 AS_IF([test "$UseSystemLibFFI" = "YES"], [
907  CFLAGS2="$CFLAGS"
908  CFLAGS="$LIBFFI_CFLAGS $CFLAGS"
909  LDFLAGS2="$LDFLAGS"
910  LDFLAGS="$LIBFFI_LDFLAGS $LDFLAGS"
911  if test "$HostOS" = "openbsd";
912  then
913    # OpenBSD's libffi is not directly linked to the libpthread but
914    # still requires pthread functionality. This means that any client
915    # binary which links with libffi also needs to link with
916    # libpthread. If it does not, then linking fails with unresolved
917    # symbols.
918    LDFLAGS="$LDFLAGS -lpthread"
919  fi
920  AC_CHECK_LIB(ffi, ffi_call,
921   [AC_CHECK_HEADERS([ffi.h], [break], [])
922    AC_DEFINE([HAVE_LIBFFI], [1], [Define to 1 if you have libffi.])],
923   [AC_MSG_ERROR([Cannot find system libffi])])
924  CFLAGS="$CFLAGS2"
925  LDFLAGS="$LDFLAGS2"
926 ])
927
928 dnl ** check whether we need -ldl to get dlopen()
929 AC_CHECK_LIB(dl, dlopen)
930
931 dnl --------------------------------------------------
932 dnl * Miscellaneous feature tests
933 dnl --------------------------------------------------
934
935 dnl ** can we get alloca?
936 AC_FUNC_ALLOCA
937
938 dnl ** working vfork?
939 AC_FUNC_FORK
940
941 dnl ** determine whether or not const works
942 AC_C_CONST
943
944 dnl ** are we big endian?
945 AC_C_BIGENDIAN
946 FPTOOLS_FLOAT_WORD_ORDER_BIGENDIAN
947
948 dnl ** check for leading underscores in symbol names
949 FP_LEADING_UNDERSCORE
950
951 FP_VISIBILITY_HIDDEN
952
953 dnl ** check for librt
954 AC_CHECK_LIB(rt, clock_gettime)
955 AC_CHECK_FUNCS(clock_gettime timer_settime)
956 FP_CHECK_TIMER_CREATE
957
958 dnl ** check for Apple's "interesting" long double compatibility scheme
959 AC_MSG_CHECKING(for printf\$LDBLStub)
960 AC_TRY_LINK_FUNC(printf\$LDBLStub,
961     [
962         AC_MSG_RESULT(yes)
963         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[1],
964             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
965     ],
966     [
967         AC_MSG_RESULT(no)
968         AC_DEFINE([HAVE_PRINTF_LDBLSTUB],[0],
969             [Define to 1 if we have printf$LDBLStub (Apple Mac OS >= 10.4, PPC).])
970     ])
971
972 dnl ** pthread_setname_np is a recent addition to glibc, and OS X has
973 dnl    a different single-argument version.
974 AC_CHECK_LIB(pthread, pthread_setname_np)
975 AC_MSG_CHECKING(for pthread_setname_np)
976 AC_TRY_LINK(
977 [
978 #define _GNU_SOURCE
979 #include <pthread.h>
980 ],
981 [pthread_setname_np(pthread_self(), "name");],
982     AC_MSG_RESULT(yes)
983     AC_DEFINE([HAVE_PTHREAD_SETNAME_NP], [1],
984       [Define to 1 if you have the glibc version of pthread_setname_np]),
985     AC_MSG_RESULT(no)
986 )
987
988 dnl ** check for eventfd which is needed by the I/O manager
989 AC_CHECK_HEADERS([sys/eventfd.h])
990 AC_CHECK_FUNCS([eventfd])
991
992 dnl ** Check for __thread support in the compiler
993 AC_MSG_CHECKING(for __thread support)
994 AC_COMPILE_IFELSE(
995   [ AC_LANG_SOURCE([[__thread int tester = 0;]]) ],
996   [
997    AC_MSG_RESULT(yes)
998    AC_DEFINE([CC_SUPPORTS_TLS],[1],[Define to 1 if __thread is supported])
999   ],
1000   [
1001    AC_MSG_RESULT(no)
1002    AC_DEFINE([CC_SUPPORTS_TLS],[0],[Define to 1 if __thread is supported])
1003   ])
1004
1005
1006 AC_CHECK_FUNCS(__mingw_vfprintf)
1007
1008 dnl large address space support (see includes/rts/storage/MBlock.h)
1009 dnl
1010 dnl Darwin has vm_allocate/vm_protect
1011 dnl Linux has mmap(MAP_NORESERVE)/madv(MADV_DONTNEED)
1012 dnl FreeBSD, Solaris and maybe other have MAP_NORESERVE/MADV_FREE
1013 dnl (They also have MADV_DONTNEED, but it means something else!)
1014 dnl
1015 dnl Windows has VirtualAlloc MEM_RESERVE/MEM_COMMIT, however
1016 dnl it counts page-table space as committed memory, and so quickly
1017 dnl runs out of paging file when we have multiple processes reserving
1018 dnl 1TB of address space, we get the following error:
1019 dnl    VirtualAlloc MEM_RESERVE 1099512676352 bytes failed: The paging file is too small for this operation to complete.
1020 dnl
1021
1022 AC_ARG_ENABLE(large-address-space,
1023     [AC_HELP_STRING([--enable-large-address-space],
1024         [Use a single large address space on 64 bit systems (enabled by default on 64 bit platforms)])],
1025     EnableLargeAddressSpace=$enableval,
1026     EnableLargeAddressSpace=yes
1027 )
1028
1029 use_large_address_space=no
1030 if test "$ac_cv_sizeof_void_p" -eq 8 ; then
1031     if test "x$EnableLargeAddressSpace" = "xyes" ; then
1032         if test "$ghc_host_os" = "darwin" ; then
1033             use_large_address_space=yes
1034         elif test "$ghc_host_os" = "openbsd" ; then
1035             # as of OpenBSD 5.8 (2015), OpenBSD does not support mmap with MAP_NORESERVE.
1036             # The flag MAP_NORESERVE is supported for source compatibility reasons,
1037             # but is completely ignored by OS mmap
1038             use_large_address_space=no
1039         else
1040             AC_CHECK_DECLS([MAP_NORESERVE, MADV_FREE, MADV_DONTNEED],[],[],
1041                 [
1042                 #include <unistd.h>
1043                 #include <sys/types.h>
1044                 #include <sys/mman.h>
1045                 #include <fcntl.h>
1046             ])
1047             if test "$ac_cv_have_decl_MAP_NORESERVE" = "yes" &&
1048                 test "$ac_cv_have_decl_MADV_FREE" = "yes" ||
1049                 test "$ac_cv_have_decl_MADV_DONTNEED" = "yes" ; then
1050                     use_large_address_space=yes
1051             fi
1052         fi
1053     fi
1054 fi
1055 if test "$use_large_address_space" = "yes" ; then
1056    AC_DEFINE([USE_LARGE_ADDRESS_SPACE], [1], [Enable single heap address space support])
1057 fi
1058
1059 AC_CHECK_LIB(dw, dwfl_begin, [HaveLibdw=YES], [HaveLibdw=NO])
1060 AC_SUBST(HaveLibdw)
1061
1062 if test -n "$SPHINXBUILD"; then
1063     BUILD_MAN=YES
1064     BUILD_SPHINX_HTML=YES
1065     if test -n "$XELATEX"; then
1066         BUILD_SPHINX_PDF=YES
1067     else
1068         BUILD_SPHINX_PDF=NO
1069     fi
1070 else
1071     BUILD_MAN=NO
1072     BUILD_SPHINX_HTML=NO
1073     BUILD_SPHINX_PDF=NO
1074 fi
1075 AC_SUBST(BUILD_MAN)
1076 AC_SUBST(BUILD_SPHINX_HTML)
1077 AC_SUBST(BUILD_SPHINX_PDF)
1078
1079 LIBRARY_VERSION(base)
1080 LIBRARY_VERSION(Cabal, Cabal/Cabal)
1081 LIBRARY_VERSION(ghc-prim)
1082 LIBRARY_ghc_VERSION="$ProjectVersion"
1083 AC_SUBST(LIBRARY_ghc_VERSION)
1084
1085 if grep '       ' compiler/ghc.cabal.in 2>&1 >/dev/null; then
1086    AC_MSG_ERROR([compiler/ghc.cabal.in contains tab characters; please remove them])
1087 fi
1088
1089 # Create the configuration for the Shake-based build system if it is present
1090 if test -e shake-build/cfg/system.config.in; then
1091     AC_CONFIG_FILES([shake-build/cfg/system.config])
1092 fi
1093
1094 AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal utils/runghc/runghc.cabal libraries/ghc-boot/ghc-boot.cabal libraries/ghci/ghci.cabal settings docs/users_guide/ghc_config.py docs/index.html libraries/prologue.txt distrib/configure.ac])
1095 AC_OUTPUT
1096
1097 # We got caught by
1098 #     http://savannah.gnu.org/bugs/index.php?1516
1099 #     $(eval ...) inside conditionals causes errors
1100 # with make 3.80, so warn the user if it looks like they're about to
1101 # try to use it.
1102 # We would use "grep -q" here, but Solaris's grep doesn't support it.
1103 checkMake380() {
1104     if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
1105     then
1106         echo
1107         echo "WARNING: It looks like \"$1\" is GNU make 3.80."
1108         echo "This version cannot be used to build GHC."
1109         echo "Please use GNU make >= 3.81."
1110     fi
1111 }
1112
1113 checkMake380 make
1114 checkMake380 gmake
1115
1116 echo ["
1117 ----------------------------------------------------------------------
1118 Configure completed successfully.
1119
1120    Building GHC version  : $ProjectVersion
1121           Git commit id  : $ProjectGitCommitId
1122
1123    Build platform        : $BuildPlatform
1124    Host platform         : $HostPlatform
1125    Target platform       : $TargetPlatform
1126 "]
1127
1128 echo ["\
1129    Bootstrapping using   : $WithGhc
1130       which is version   : $GhcVersion
1131 "]
1132
1133 if test "x$CC_LLVM_BACKEND" = "x1"; then
1134     if test "x$CC_CLANG_BACKEND" = "x1"; then
1135         CompilerName="clang        "
1136     else
1137         CompilerName="llvm-gcc     "
1138     fi
1139 else
1140     CompilerName="gcc          "
1141 fi
1142
1143 echo ["\
1144    Using $CompilerName       : $WhatGccIsCalled
1145       which is version       : $GccVersion
1146    Building a cross compiler : $CrossCompiling
1147    hs-cpp       : $HaskellCPPCmd
1148    hs-cpp-flags : $HaskellCPPArgs
1149    ld           : $LdCmd
1150    nm           : $NmCmd
1151    objdump      : $ObjdumpCmd
1152    Happy        : $HappyCmd ($HappyVersion)
1153    Alex         : $AlexCmd ($AlexVersion)
1154    Perl         : $PerlCmd
1155    sphinx-build : $SPHINXBUILD
1156    xelatex      : $XELATEX
1157
1158    Using LLVM tools
1159       llc   : $LlcCmd
1160       opt   : $OptCmd"]
1161
1162 if test "$HSCOLOUR" = ""; then
1163 echo ["
1164    HsColour was not found; documentation will not contain source links
1165 "]
1166 else
1167 echo ["\
1168    HsColour : $HSCOLOUR
1169 "]
1170 fi
1171
1172 echo ["\
1173    Tools to build Sphinx HTML documentation available: $BUILD_SPHINX_HTML
1174    Tools to build Sphinx PDF documentation available: $BUILD_SPHINX_PDF"]
1175
1176 echo ["----------------------------------------------------------------------
1177 "]
1178
1179 echo "\
1180 For a standard build of GHC (fully optimised with profiling), type (g)make.
1181
1182 To make changes to the default build configuration, copy the file
1183 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
1184
1185 For more information on how to configure your GHC build, see
1186    http://ghc.haskell.org/trac/ghc/wiki/Building
1187 "