Build system: delete ghc-pwd
[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 FP_FIND_ROOT
30
31 if test ! -f mk/config.h.in; then
32    echo "mk/config.h.in doesn't exist: perhaps you haven't run 'perl boot'?"
33    exit 1
34 fi
35
36 AC_SUBST([CONFIGURE_ARGS], [$ac_configure_args])
37
38 dnl ----------------------------------------------------------
39 dnl ** Find unixy sort and find commands,
40 dnl ** which are needed by FP_SETUP_PROJECT_VERSION
41
42 dnl ** Find find command (for Win32's benefit)
43 FP_PROG_FIND
44 FP_PROG_SORT
45
46 dnl ----------------------------------------------------------
47 FP_SETUP_PROJECT_VERSION
48
49 # Hmmm, we fix the RPM release number to 1 here... Is this convenient?
50 AC_SUBST([release], [1])
51
52 # First off, a distrib sanity check..
53 AC_CONFIG_SRCDIR([mk/config.mk.in])
54
55 dnl * We require autoconf version 2.60
56 dnl We need 2.50 due to the use of AC_SYS_LARGEFILE and AC_MSG_NOTICE.
57 dnl We need 2.52 due to the use of AS_TR_CPP and AS_TR_SH.
58 dnl Using autoconf 2.59 started to give nonsense like this
59 dnl  #define SIZEOF_CHAR 0
60 dnl recently.
61 AC_PREREQ([2.60])
62
63 # -------------------------------------------------------------------------
64 # Prepare to generate the following header files
65 #
66 #
67 AC_CONFIG_HEADER(mk/config.h)
68
69 # No, semi-sadly, we don't do `--srcdir'...
70 if test x"$srcdir" != 'x.' ; then
71     echo "This configuration does not support the \`--srcdir' option.."
72     exit 1
73 fi
74
75 dnl --------------------------------------------------------------
76 dnl * Project specific configuration options
77 dnl --------------------------------------------------------------
78 dnl What follows is a bunch of options that can either be configured
79 dnl through command line options to the configure script or by
80 dnl supplying defns in the build tree's mk/build.mk. Having the option to
81 dnl use either is considered a Feature.
82
83 dnl ** What command to use to compile compiler sources ?
84 dnl --------------------------------------------------------------
85
86 AC_ARG_WITH([ghc],
87 [AC_HELP_STRING([--with-ghc=ARG],
88   [Use ARG as the path to GHC  [default=autodetect]])],
89   [WithGhc="$withval"],
90   [if test "$GHC" = ""; then
91     AC_PATH_PROG([GHC], [ghc])
92   fi
93   WithGhc="$GHC"])
94
95 dnl ** Tell the make system which OS we are using
96 dnl $OSTYPE is set by the operating system to "msys" or "cygwin" or something
97 AC_SUBST(OSTYPE)
98
99 AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
100 [AC_HELP_STRING([--enable-bootstrap-with-devel-snapshot],
101                 [Allow bootstrapping using a development snapshot of GHC.  This is not guaranteed to work.])],
102         EnableBootstrapWithDevelSnaphost=YES,
103         EnableBootstrapWithDevelSnaphost=NO
104 )
105
106 AC_ARG_ENABLE(tarballs-autodownload,
107 [AC_HELP_STRING([--enable-tarballs-autodownload],
108                 [Automatically download Windows distribution binaries if needed.])],
109         TarballsAutodownload=YES,
110         TarballsAutodownload=NO
111 )
112 if test "$WithGhc" != ""; then
113   FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
114
115   if test "$GhcMajVersion" = "unknown" -o "$GhcMinVersion" = "unknown"; then
116      AC_MSG_ERROR([Cannot determine the version of $WithGhc.  Is it really GHC?])
117   fi
118
119   AC_SUBST(GhcVersion)dnl
120   AC_SUBST(GhcMajVersion)dnl
121   AC_SUBST(GhcMinVersion)dnl
122   AC_SUBST(GhcPatchLevel)dnl
123   GhcMinVersion2=`echo "$GhcMinVersion" | sed 's/^\\(.\\)$/0\\1/'`
124   GhcCanonVersion="$GhcMajVersion$GhcMinVersion2"
125
126   BOOTSTRAPPING_GHC_INFO_FIELD([CC_STAGE0],[C compiler command])
127   dnl ToDo, once "ld command" is reliably available.
128   dnl Then, we can remove the LD_STAGE0 hack in mk/build-package-date.mk
129   dnl BOOTSTRAPPING_GHC_INFO_FIELD([LD_STAGE0],[ld command])
130   BOOTSTRAPPING_GHC_INFO_FIELD([AR_STAGE0],[ar command])
131   BOOTSTRAPPING_GHC_INFO_FIELD([AR_OPTS_STAGE0],[ar flags])
132   BOOTSTRAPPING_GHC_INFO_FIELD([ArSupportsAtFile_STAGE0],[ar supports at file])
133 fi
134
135 dnl ** Must have GHC to build GHC
136 if test "$WithGhc" = ""
137 then
138     AC_MSG_ERROR([GHC is required.])
139 fi
140 FP_COMPARE_VERSIONS([$GhcVersion],[-lt],[7.10],
141     [AC_MSG_ERROR([GHC version 7.10 or later is required to compile GHC.])])
142
143 if test `expr $GhcMinVersion % 2` = "1"
144 then
145     if test "$EnableBootstrapWithDevelSnaphost" = "NO"
146     then
147         AC_MSG_ERROR([
148      $WithGhc is a development snapshot of GHC, version $GhcVersion.
149      Bootstrapping using this version of GHC is not supported, and may not
150      work.  Use --enable-bootstrap-with-devel-snapshot to try it anyway,
151      or --with-ghc to specify a different GHC to use.])
152     fi
153 fi
154
155 GHC_PACKAGE_DB_FLAG=package-db
156 AC_SUBST(GHC_PACKAGE_DB_FLAG)
157
158 # GHC is passed to Cabal, so we need a native path
159 if test "${WithGhc}" != ""
160 then
161     ghc_host_os=`"${WithGhc}" +RTS --info | grep 'Host OS' | sed -e 's/.*, "//' -e 's/")//'`
162
163     if test "$ghc_host_os" = "mingw32"
164     then
165         if test "${OSTYPE}" = "msys"
166         then
167             WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
168         else
169             # Canonicalise to <drive>:/path/to/ghc
170             WithGhc=`cygpath -m "${WithGhc}"`
171         fi
172         echo "GHC path canonicalised to: ${WithGhc}"
173     fi
174 fi
175 AC_SUBST([WithGhc])
176
177 dnl ** Without optimization some INLINE trickery fails for GHCi
178 SRC_CC_OPTS="-O"
179
180 dnl--------------------------------------------------------------------
181 dnl * Choose host(/target/build) platform
182 dnl--------------------------------------------------------------------
183 dnl If we aren't explicitly told what values to use with configure flags,
184 dnl we ask the bootstrapping compiler what platform it is for
185
186 if test "${WithGhc}" != ""
187 then
188         bootstrap_host=`"${WithGhc}" +RTS --info | grep '^ ,("Host platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
189         bootstrap_target=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'`
190         if test "$bootstrap_host" != "$bootstrap_target"
191         then
192                 echo "Bootstrapping GHC is a cross compiler. This probably isn't going to work"
193         fi
194 fi
195
196 # We have to run these unconditionally, but we may discard their
197 # results in the following code
198 AC_CANONICAL_BUILD
199 AC_CANONICAL_HOST
200 AC_CANONICAL_TARGET
201
202 FPTOOLS_SET_PLATFORM_VARS
203
204 # Verify that the installed (bootstrap) GHC is capable of generating
205 # code for the requested build platform.
206 if test "$BuildPlatform" != "$bootstrap_target"
207 then
208     echo "This GHC (${WithGhc}) does not generate code for the build platform"
209     echo "   GHC target platform    : $bootstrap_target"
210     echo "   Desired build platform : $BuildPlatform"
211     exit 1
212 fi
213
214 # Testing if we shall enable shared libs support on Solaris.
215 # Anything older than SunOS 5.11 aka Solaris 11 (Express) is broken.
216
217 SOLARIS_BROKEN_SHLD=NO
218
219 case $host in
220      i386-*-solaris2)
221      # here we go with the test
222      MINOR=`uname -r|cut -d '.' -f 2-`
223      if test "$MINOR" -lt "11"; then
224          SOLARIS_BROKEN_SHLD=YES
225      fi
226      ;;
227 esac
228
229 AC_SUBST(SOLARIS_BROKEN_SHLD)
230
231 dnl ** Do an unregisterised build?
232 dnl --------------------------------------------------------------
233 case "$HostArch" in
234     i386|x86_64|powerpc|powerpc64|powerpc64le|arm)
235         UnregisterisedDefault=NO
236         ;;
237     *)
238         UnregisterisedDefault=YES
239         ;;
240 esac
241 AC_ARG_ENABLE(unregisterised,
242 [AC_HELP_STRING([--enable-unregisterised],
243 [Build an unregisterised compiler (enabled by default on platforms without registerised support) [default="$UnregisterisedDefault"]])],
244 [ if test x"$enableval" = x"yes"; then
245         Unregisterised=YES
246   else
247         Unregisterised=NO
248   fi
249 ],
250 [Unregisterised="$UnregisterisedDefault"]
251 )
252 AC_SUBST(Unregisterised)
253
254 AC_ARG_WITH(hc,
255 [AC_HELP_STRING([--with-hc=ARG],
256         [Use ARG as the path to the compiler for compiling ordinary
257          Haskell code  (default= value of --with-ghc)])],
258 [WithHc="$withval"],
259 [WithHc=$WithGhc]
260 )
261 AC_SUBST(WithHc)
262
263 fail() {
264     echo >&2
265     echo "$1" >&2
266     exit 1
267 }
268
269
270 if test "$HostOS" = "mingw32"
271 then
272     # Find the mingw-w64 7z file to extract.
273     # NB. If you update the tarballs to a new version of gcc, don't
274     # forget to tweak the paths in driver/gcc/gcc.c.
275     if test "$HostArch" = "i386"
276     then
277         mingw_arch="i686"
278         tarball_dest_dir="mingw-w64/x86"
279         tarball_mingw_dir="mingw32"
280     else
281         mingw_arch="x86_64"
282         tarball_dest_dir="mingw-w64/x86_64"
283         tarball_mingw_dir="mingw64"
284     fi
285 fi
286
287 set_up_tarballs() {
288     AC_MSG_NOTICE([Checking for Windows toolchain tarballs...])
289     local action
290     if test "$TarballsAutodownload" = "NO"
291     then
292         action="verify"
293     else
294         action="download"
295     fi
296     mk/get-win32-tarballs.sh $action $HostArch > missing-win32-tarballs
297     case $? in
298         0)
299            rm missing-win32-tarballs
300            ;;
301         2)
302            echo
303            echo "Error:"
304            echo "Needed msys2 tarballs are missing. You have a few options to get them,"
305            echo
306            echo "  * run configure with the --enable-tarballs-autodownload option"
307            echo
308            echo "  * run mk/get-win32-tarballs.sh download ${HostArch}"
309            echo
310            echo "  * manually download the files listed in ./missing-win32-tarballs and place"
311            echo "    them in the ghc-tarballs directory."
312            echo
313            exit 1
314            ;;
315         *)
316            echo
317            echo "Error fetching msys2 tarballs; see errors above."
318            exit 1
319            ;;
320     esac
321
322     # Extract all the tarballs in one go
323     if ! test -d inplace/mingw
324     then
325         AC_MSG_NOTICE([Extracting Windows toolchain from archives (may take a while)...])
326         rm -rf inplace/mingw
327         local base_dir="../ghc-tarballs/${tarball_dest_dir}"
328         ( cd inplace &&
329         find "${base_dir}" -name "*.tar.xz" -exec tar xfJ {} \; &&
330         rm ".MTREE" &&
331         rm ".PKGINFO" &&
332         cd .. ) || fail "Error: Could not extract Windows toolchains."
333
334         mv "inplace/${tarball_mingw_dir}" inplace/mingw &&
335         touch inplace/mingw
336
337         # NB. Now since the GCC is hardcoded to use /mingw32 we need to
338         # make a wrapper around it to give it the proper paths
339         mv inplace/mingw/bin/gcc.exe inplace/mingw/bin/realgcc.exe
340         PATH=`pwd`/inplace/mingw/bin:$PATH
341         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
342
343         AC_MSG_NOTICE([In-tree MingW-w64 tree created])
344     fi
345 }
346
347 if test "$HostOS" = "mingw32"
348 then
349     test -d inplace || mkdir inplace
350
351     # NB. Download and extract the MingW-w64 distribution if required
352     set_up_tarballs
353
354     mingwbin="$hardtop/inplace/mingw/bin/"
355     CC="${mingwbin}gcc.exe"
356     LD="${mingwbin}ld.exe"
357     NM="${mingwbin}nm.exe"
358     RANLIB="${mingwbin}ranlib.exe"
359     OBJDUMP="${mingwbin}objdump.exe"
360     fp_prog_ar="${mingwbin}ar.exe"
361
362     # NB. Download the perl binaries if required
363     if ! test -d inplace/perl ||
364          test inplace/perl -ot ghc-tarballs/perl/ghc-perl*.tar.gz
365     then
366         AC_MSG_NOTICE([Making in-tree perl tree])
367         rm -rf inplace/perl
368         mkdir inplace/perl
369         (
370             cd inplace/perl &&
371             tar -zxf ../../ghc-tarballs/perl/ghc-perl*.tar.gz
372         )
373         AC_MSG_NOTICE([In-tree perl tree created])
374     fi
375 fi
376
377 FP_ICONV
378 FP_GMP
379 FP_CURSES
380
381 XCODE_VERSION()
382
383 SplitObjsBroken=NO
384 if test "$TargetOS_CPP" = "darwin"
385 then
386     # Split objects is broken (#4013) with XCode < 3.2
387     if test "$XCodeVersion1" -lt 3
388     then
389         SplitObjsBroken=YES
390     else
391         if test "$XCodeVersion1" -eq 3
392         then
393             if test "$XCodeVersion2" -lt 2
394             then
395                 SplitObjsBroken=YES
396             fi
397         fi
398     fi
399 fi
400 AC_SUBST([SplitObjsBroken])
401
402 dnl ** Building a cross compiler?
403 dnl --------------------------------------------------------------
404 CrossCompiling=NO
405 # If 'host' and 'target' differ, then this means we are building a cross-compiler.
406 if test "$target" != "$host" ; then
407     CrossCompiling=YES
408     cross_compiling=yes   # This tells configure that it can accept just 'target',
409                           # otherwise you get
410                           #   configure: error: cannot run C compiled programs.
411                           #   If you meant to cross compile, use `--host'.
412 fi
413 if test "$build" != "$host" ; then
414    AC_MSG_ERROR([
415 You've selected:
416
417   BUILD:  $build   (the architecture we're building on)
418   HOST:   $host    (the architecture the compiler we're building will execute on)
419   TARGET: $target  (the architecture the compiler we're building will produce code for)
420
421 BUILD must equal HOST; that is, we do not support building GHC itself
422 with a cross-compiler.  To cross-compile GHC itself, set TARGET: stage
423 1 will be a cross-compiler, and stage 2 will be the cross-compiled
424 GHC.
425 ])
426 fi
427 if test "$CrossCompiling" = "YES"
428 then
429   CrossCompilePrefix="${target}-"
430 else
431   CrossCompilePrefix=""
432 fi
433 TargetPlatformFull="${target}"
434 AC_SUBST(CrossCompiling)
435 AC_SUBST(CrossCompilePrefix)
436 AC_SUBST(TargetPlatformFull)
437
438 dnl ** Which gcc to use?
439 dnl --------------------------------------------------------------
440 FIND_GCC([WhatGccIsCalled], [gcc], [gcc])
441 CC="$WhatGccIsCalled"
442 export CC
443
444 # If --with-gcc was used, and we're not cross-compiling, then it also
445 # applies to the stage0 compiler.
446 MAYBE_OVERRIDE_STAGE0([gcc],[CC_STAGE0])
447 MAYBE_OVERRIDE_STAGE0([ar],[AR_STAGE0])
448
449 dnl make extensions visible to allow feature-tests to detect them lateron
450 AC_USE_SYSTEM_EXTENSIONS
451
452 dnl ** figure out how to invoke the C preprocessor (i.e. `gcc -E`)
453 AC_PROG_CPP
454
455 # --with-hs-cpp/--with-hs-cpp-flags
456 FP_CPP_CMD_WITH_ARGS(HaskellCPPCmd, HaskellCPPArgs)
457 AC_SUBST([HaskellCPPCmd])
458 AC_SUBST([HaskellCPPArgs])
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/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
1005 AC_CHECK_FUNCS(__mingw_vfprintf)
1006
1007 dnl large address space support (see includes/rts/storage/MBlock.h)
1008 dnl
1009 dnl Darwin has vm_allocate/vm_protect
1010 dnl Linux has mmap(MAP_NORESERVE)/madv(MADV_DONTNEED)
1011 dnl FreeBSD, Solaris and maybe other have MAP_NORESERVE/MADV_FREE
1012 dnl (They also have MADV_DONTNEED, but it means something else!)
1013 dnl
1014 dnl Windows has VirtualAlloc MEM_RESERVE/MEM_COMMIT, however
1015 dnl it counts page-table space as committed memory, and so quickly
1016 dnl runs out of paging file when we have multiple processes reserving
1017 dnl 1TB of address space, we get the following error:
1018 dnl    VirtualAlloc MEM_RESERVE 1099512676352 bytes failed: The paging file is too small for this operation to complete.
1019 dnl
1020
1021 AC_ARG_ENABLE(large-address-space,
1022     [AC_HELP_STRING([--enable-large-address-space],
1023         [Use a single large address space on 64 bit systems (enabled by default on 64 bit platforms)])],
1024     EnableLargeAddressSpace=$enableval,
1025     EnableLargeAddressSpace=yes
1026 )
1027
1028 use_large_address_space=no
1029 if test "$ac_cv_sizeof_void_p" -eq 8 ; then
1030     if test "x$EnableLargeAddressSpace" = "xyes" ; then
1031         if test "$ghc_host_os" = "darwin" ; then
1032             use_large_address_space=yes
1033         elif test "$ghc_host_os" = "openbsd" ; then
1034             # as of OpenBSD 5.8 (2015), OpenBSD does not support mmap with MAP_NORESERVE.
1035             # The flag MAP_NORESERVE is supported for source compatibility reasons,
1036             # but is completely ignored by OS mmap
1037             use_large_address_space=no
1038         else
1039             AC_CHECK_DECLS([MAP_NORESERVE, MADV_FREE, MADV_DONTNEED],[],[],
1040                 [
1041                 #include <unistd.h>
1042                 #include <sys/types.h>
1043                 #include <sys/mman.h>
1044                 #include <fcntl.h>
1045             ])
1046             if test "$ac_cv_have_decl_MAP_NORESERVE" = "yes" &&
1047                 test "$ac_cv_have_decl_MADV_FREE" = "yes" ||
1048                 test "$ac_cv_have_decl_MADV_DONTNEED" = "yes" ; then
1049                     use_large_address_space=yes
1050             fi
1051         fi
1052     fi
1053 fi
1054 if test "$use_large_address_space" = "yes" ; then
1055    AC_DEFINE([USE_LARGE_ADDRESS_SPACE], [1], [Enable single heap address space support])
1056 fi
1057
1058 AC_CHECK_LIB(dw, dwfl_begin, [HaveLibdw=YES], [HaveLibdw=NO])
1059 AC_SUBST(HaveLibdw)
1060
1061 if test -n "$SPHINXBUILD"; then
1062     BUILD_MAN=YES
1063     BUILD_SPHINX_HTML=YES
1064     if test -n "$XELATEX"; then
1065         BUILD_SPHINX_PDF=YES
1066     else
1067         BUILD_SPHINX_PDF=NO
1068     fi
1069 else
1070     BUILD_MAN=NO
1071     BUILD_SPHINX_HTML=NO
1072     BUILD_SPHINX_PDF=NO
1073 fi
1074 AC_SUBST(BUILD_MAN)
1075 AC_SUBST(BUILD_SPHINX_HTML)
1076 AC_SUBST(BUILD_SPHINX_PDF)
1077
1078 LIBRARY_VERSION(base)
1079 LIBRARY_VERSION(Cabal, Cabal/Cabal)
1080 LIBRARY_VERSION(ghc-prim)
1081 LIBRARY_ghc_VERSION="$ProjectVersion"
1082 AC_SUBST(LIBRARY_ghc_VERSION)
1083
1084 if grep '       ' compiler/ghc.cabal.in 2>&1 >/dev/null; then
1085    AC_MSG_ERROR([compiler/ghc.cabal.in contains tab characters; please remove them])
1086 fi
1087
1088 # Create the configuration for the Shake-based build system if it is present
1089 if test -e shake-build/cfg/system.config.in; then
1090     AC_CONFIG_FILES([shake-build/cfg/system.config])
1091 fi
1092
1093 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])
1094 AC_OUTPUT
1095
1096 # We got caught by
1097 #     http://savannah.gnu.org/bugs/index.php?1516
1098 #     $(eval ...) inside conditionals causes errors
1099 # with make 3.80, so warn the user if it looks like they're about to
1100 # try to use it.
1101 # We would use "grep -q" here, but Solaris's grep doesn't support it.
1102 checkMake380() {
1103     if $1 --version 2>&1 | head -1 | grep 'GNU Make 3\.80' > /dev/null
1104     then
1105         echo
1106         echo "WARNING: It looks like \"$1\" is GNU make 3.80."
1107         echo "This version cannot be used to build GHC."
1108         echo "Please use GNU make >= 3.81."
1109     fi
1110 }
1111
1112 checkMake380 make
1113 checkMake380 gmake
1114
1115 echo ["
1116 ----------------------------------------------------------------------
1117 Configure completed successfully.
1118
1119    Building GHC version  : $ProjectVersion
1120           Git commit id  : $ProjectGitCommitId
1121
1122    Build platform        : $BuildPlatform
1123    Host platform         : $HostPlatform
1124    Target platform       : $TargetPlatform
1125 "]
1126
1127 echo ["\
1128    Bootstrapping using   : $WithGhc
1129       which is version   : $GhcVersion
1130 "]
1131
1132 if test "x$CC_LLVM_BACKEND" = "x1"; then
1133     if test "x$CC_CLANG_BACKEND" = "x1"; then
1134         CompilerName="clang        "
1135     else
1136         CompilerName="llvm-gcc     "
1137     fi
1138 else
1139     CompilerName="gcc          "
1140 fi
1141
1142 echo ["\
1143    Using $CompilerName       : $WhatGccIsCalled
1144       which is version       : $GccVersion
1145    Building a cross compiler : $CrossCompiling
1146    hs-cpp       : $HaskellCPPCmd
1147    hs-cpp-flags : $HaskellCPPArgs
1148    ld           : $LdCmd
1149    nm           : $NmCmd
1150    objdump      : $ObjdumpCmd
1151    Happy        : $HappyCmd ($HappyVersion)
1152    Alex         : $AlexCmd ($AlexVersion)
1153    Perl         : $PerlCmd
1154    sphinx-build : $SPHINXBUILD
1155    xelatex      : $XELATEX
1156
1157    Using LLVM tools
1158       llc   : $LlcCmd
1159       opt   : $OptCmd"]
1160
1161 if test "$HSCOLOUR" = ""; then
1162 echo ["
1163    HsColour was not found; documentation will not contain source links
1164 "]
1165 else
1166 echo ["\
1167    HsColour : $HSCOLOUR
1168 "]
1169 fi
1170
1171 echo ["\
1172    Tools to build Sphinx HTML documentation available: $BUILD_SPHINX_HTML
1173    Tools to build Sphinx PDF documentation available: $BUILD_SPHINX_PDF"]
1174
1175 echo ["----------------------------------------------------------------------
1176 "]
1177
1178 echo "\
1179 For a standard build of GHC (fully optimised with profiling), type (g)make.
1180
1181 To make changes to the default build configuration, copy the file
1182 mk/build.mk.sample to mk/build.mk, and edit the settings in there.
1183
1184 For more information on how to configure your GHC build, see
1185    http://ghc.haskell.org/trac/ghc/wiki/Building
1186 "