summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HACKING.md6
-rw-r--r--INSTALL.md5
-rw-r--r--README.md10
-rw-r--r--configure.ac43
4 files changed, 56 insertions, 8 deletions
diff --git a/HACKING.md b/HACKING.md
index b59e747700..6ed39eaf1c 100644
--- a/HACKING.md
+++ b/HACKING.md
@@ -33,11 +33,11 @@ Next, clone the repository and all the associated libraries:
$ git clone --recursive git://git.haskell.org/ghc.git
```
-On Windows, you need an extra repository containing some build tools:
+On Windows, you need an extra repository containing some build tools.
+These can be downloaded for you by configure. This only needs to be done once by running:
```
-$ cd ghc/
-$ git clone git://git.haskell.org/ghc-tarballs.git
+$ ./configure --enable-tarballs-autodownload
```
First copy `mk/build.mk.sample` to `mk/build.mk` and ensure it has
diff --git a/INSTALL.md b/INSTALL.md
index 1db2595736..58930afeb8 100644
--- a/INSTALL.md
+++ b/INSTALL.md
@@ -23,6 +23,11 @@ Quick start: the following gives you a default build:
$ make
$ make install
+ On Windows, you need an extra repository containing some build tools.
+ These can be downloaded for you by configure. This only needs to be done once by running:
+
+ $ ./configure --enable-tarballs-autodownload
+
The "perl boot" step is only necessary if this is a tree checked out
from git. For source distributions downloaded from GHC's web site,
this step has already been performed.
diff --git a/README.md b/README.md
index 5ad1adb6d0..025140c772 100644
--- a/README.md
+++ b/README.md
@@ -28,11 +28,6 @@ There are two ways to get a source tree:
$ git clone --recursive git://git.haskell.org/ghc.git
- On Windows, you need an extra repository containing some build tools:
-
- $ cd ghc/
- $ git clone git://git.haskell.org/ghc-tarballs.git
-
Note: cloning GHC from Github requires a special setup. See [Getting a GHC
repository from Github] [7].
@@ -66,6 +61,11 @@ dblatex.
$ make # can also say 'make -jX' for X number of jobs
$ make install
+ On Windows, you need an extra repository containing some build tools.
+ These can be downloaded for you by configure. This only needs to be done once by running:
+
+ $ ./configure --enable-tarballs-autodownload
+
(NB: **Do you have multiple cores? Be sure to tell that to `make`!** This can
save you hours of build time depending on your system configuration, and is
almost always a win regardless of how many cores you have. As a simple rule,
diff --git a/configure.ac b/configure.ac
index d896c8bf48..d60acb7833 100644
--- a/configure.ac
+++ b/configure.ac
@@ -101,6 +101,12 @@ AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
EnableBootstrapWithDevelSnaphost=NO
)
+AC_ARG_ENABLE(tarballs-autodownload,
+[AC_HELP_STRING([--enable-tarballs-autodownload],
+ [Automatically download Windows distribution binaries if needed.])],
+ TarballsAutodownload=YES,
+ TarballsAutodownload=NO
+)
if test "$WithGhc" != ""; then
FPTOOLS_GHC_VERSION([GhcVersion], [GhcMajVersion], [GhcMinVersion], [GhcPatchLevel])dnl
@@ -274,12 +280,49 @@ AC_SUBST(WithHc)
FP_INTREE_GHC_PWD
FP_FIND_ROOT
+function fail() {
+ echo >&2
+ echo "$1" >&2
+ exit 1
+}
+
+function set_up_tarballs() {
+ local tarball_repo_url="$1"
+ local tarball_dir="$2"
+
+ if ! test -d "${tarball_dir}"
+ then
+ local git_cmd="git clone ${tarball_repo_url} ${tarball_dir}"
+ if test "$TarballsAutodownload" = "NO"
+ then
+ echo >&2
+ echo "ERROR: Windows tarball binary distributions not found." >&2
+ echo "Please rerun configure with --enable-tarballs-autodownload, or clone the repository manually:" >&2
+ echo " $git_cmd" >&2
+ exit 1
+ fi
+ AC_MSG_NOTICE([Downloading Windows tarball distributions to ${tarball_dir}...])
+ $git_cmd || {
+ rm -f "${tarball_dir}"
+ fail "ERROR: Git clone failed."
+ }
+ else
+ AC_MSG_NOTICE([Using Windows tarball distributions found in ${tarball_dir}...])
+ fi
+}
+
if test "$HostOS" = "mingw32"
then
test -d inplace || mkdir inplace
+ # NB. For now just run git clone on the tarball repo
+ ghc_tarball_repo='git://git.haskell.org/ghc-tarballs.git'
+ ghc_tarball_dir='ghc-tarballs'
+ set_up_tarballs "${ghc_tarball_repo}" "${ghc_tarball_dir}"
+
if test "$HostArch" = "i386"
then
+
# NB. If you update the tarballs to a new version of gcc, don't
# forget to tweak the paths in driver/gcc/gcc.c.
if ! test -d inplace/mingw ||