Wrap gcc on Windows, to provide the -B flags
[ghc-hetmet.git] / configure.ac
index a08c269..8d41ac7 100644 (file)
@@ -18,6 +18,8 @@ AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.13], [glasgow-hask
 # Set this to YES for a released version, otherwise NO
 : ${RELEASE=NO}
 
+set -e
+
 # The primary version (e.g. 6.7, 6.6.1) is set in the AC_INIT line
 # above.  If this is not a released version, then we will append the
 # date to the version number (e.g. 6.7.20070204).  The date is
@@ -378,47 +380,58 @@ AC_SUBST(WithHc)
 AC_PATH_PROGS(NHC,nhc nhc98)
 AC_PATH_PROG(HBC,hbc)
 
+# This uses GHC, so put it after the "GHC is required" check above:
+FP_FIND_ROOT
+
+if test "$HostOS" = "mingw32"
+then
+    CC="$hardtop/inplace/mingw/bin/gcc.exe"
+    LD="$hardtop/inplace/mingw/bin/ld.exe"
+    NM="$hardtop/inplace/mingw/bin/nm.exe"
+    if ! test -d inplace/mingw ||
+         test inplace/mingw -ot ghc-tarballs/mingw/binutils*.tar.gz ||
+         test inplace/mingw -ot ghc-tarballs/mingw/gcc-core*.tar.gz ||
+         test inplace/mingw -ot ghc-tarballs/mingw/libcrypt*.tar.bz2 ||
+         test inplace/mingw -ot ghc-tarballs/mingw/mingw-runtime*.tar.gz ||
+         test inplace/mingw -ot ghc-tarballs/mingw/perl*.tar.bz2 ||
+         test inplace/mingw -ot ghc-tarballs/mingw/w32api*.tar.gz
+    then
+        AC_MSG_NOTICE([Making in-tree mingw tree])
+        rm -rf inplace/mingw
+        mkdir inplace
+        mkdir inplace/mingw
+        cd inplace/mingw
+        tar -zxf ../../ghc-tarballs/mingw/binutils*.tar.gz
+        tar -zxf ../../ghc-tarballs/mingw/gcc-core*.tar.gz
+        tar -jxf ../../ghc-tarballs/mingw/libcrypt*.tar.bz2
+        tar -zxf ../../ghc-tarballs/mingw/mingw-runtime*.tar.gz
+        tar -jxf ../../ghc-tarballs/mingw/perl*.tar.bz2
+        tar -zxf ../../ghc-tarballs/mingw/w32api*.tar.gz
+        mv bin/gcc.exe bin/realgcc.exe
+        cd ../..
+        inplace/mingw/bin/realgcc.exe driver/gcc/gcc.c driver/utils/getLocation.c -Idriver/utils -o inplace/mingw/bin/gcc.exe
+        AC_MSG_NOTICE([In-tree mingw tree created])
+    fi
+fi
+
 dnl ** Which gcc to use?
 dnl --------------------------------------------------------------
-AC_ARG_WITH(gcc,
-[AC_HELP_STRING([--with-gcc=ARG],
-        [Use ARG as the path to GCC  [default=autodetect]])],
-[WhatGccIsCalled="$withval"
- if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
-    test "${OSTYPE}"      != "msys"                  && \
-    test "${withval}"     != ""
- then
-     # Canonicalise to <drive>:/path/to/gcc
-     withval=`cygpath -m ${withval}`
- fi;
- CC="$withval"
- export CC
- ],
-[WhatGccIsCalled="gcc"]
-)
+FP_ARG_WITH_PATH_GNU_PROG([CC], [gcc])
+export CC
+WhatGccIsCalled="$CC"
 AC_SUBST(WhatGccIsCalled)
 
 dnl ** Which ld to use?
 dnl --------------------------------------------------------------
-AC_ARG_WITH(ld,
-[AC_HELP_STRING([--with-ld=ARG],
-        [Use ARG as the path to LD  [default=autodetect]])],
-[if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
-    test "${OSTYPE}"      != "msys"                  && \
-    test "${withval}"     != ""
- then
-     # Canonicalise to <drive>:/path/to/ld
-     withval=`cygpath -m ${withval}`
- fi;
- LD=$withval
- FP_PROG_LD([$LD])
- ],
- [FP_PROG_LD()]
-)
-
-# This uses GHC, so put it after the "GHC is required" check above:
-FP_FIND_ROOT
+FP_ARG_WITH_PATH_GNU_PROG([LD], [ld])
+LdCmd="$LD"
+AC_SUBST([LdCmd])
 
+dnl ** Which nm to use?
+dnl --------------------------------------------------------------
+FP_ARG_WITH_PATH_GNU_PROG([NM], [nm])
+NmCmd="$NM"
+AC_SUBST([NmCmd])
 
 dnl ** Mac OS X: explicit deployment target
 dnl --------------------------------------------------------------
@@ -492,7 +505,6 @@ dnl     Figure out which C compiler to use.  Gcc is preferred.
 dnl     If gcc, make sure it's at least 2.1
 dnl
 FP_HAVE_GCC
-FP_MINGW_GCC
 FP_GCC_EXTRA_FLAGS
 
 dnl ** figure out how to invoke cpp directly (gcc -E is no good)