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