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