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