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