Wrap gcc on Windows, to provide the -B flags
[ghc-hetmet.git] / configure.ac
index 5387c83..8d41ac7 100644 (file)
@@ -13,11 +13,13 @@ dnl
 # see what flags are available. (Better yet, read the documentation!)
 #
 
-AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.11], [glasgow-haskell-bugs@haskell.org], [ghc])
+AC_INIT([The Glorious Glasgow Haskell Compilation System], [6.13], [glasgow-haskell-bugs@haskell.org], [ghc])
 
 # 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,79 +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 ** Enable the construction of Win32 DLLs?
+dnl ** Which nm to use?
 dnl --------------------------------------------------------------
-dnl
-dnl [ The ability to build the RTS and libraries as separate DLLs used
-dnl   to be supported, but isn't currently (updates to the RTS, compiler
-dnl   and build system would be required to bring it back again.)
-dnl   Hence, exposing it as an option is false advertisement, so better
-dnl   disable it to avoid confusion (but leave it commented-out rather
-dnl   than removed in order to remind ourselves to bring back the
-dnl   feature at some stage.) ]
-dnl
-dnl AC_ARG_ENABLE(win32-dlls,
-dnl [  --enable-win32-dlls
-dnl         If on a Win32 platform running mingw32/cygwin, enable the
-dnl         construction of DLLs containing ghc-compiled code.
-dnl ],
-dnl [
-dnl case $HostOS_CPP in
-dnl cygwin32) ;;
-dnl mingw32)  ;;
-dnl *)    echo "Unrecognised win32 platform: $HostPlatform"
-dnl       exit 1
-dnl       ;;
-dnl esac
-dnl EnableWin32DLLs=YES
-dnl ],
-dnl [EnableWin32DLLs=NO]
-dnl )
-dnl AC_SUBST(EnableWin32DLLs)
-dnl if test x"$EnableWin32DLLs" = "xYES" ; then
-dnl  AC_DEFINE(HAVE_WIN32_DLL_SUPPORT)
-dnl fi
+FP_ARG_WITH_PATH_GNU_PROG([NM], [nm])
+NmCmd="$NM"
+AC_SUBST([NmCmd])
 
 dnl ** Mac OS X: explicit deployment target
 dnl --------------------------------------------------------------
@@ -524,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)
@@ -600,9 +580,6 @@ if test "$BootingFromHc" = "NO"; then
 FPTOOLS_ALEX
 fi;
 
-dnl Check we have an acceptable version of windres
-FPTOOLS_WINDRES
-
 dnl --------------------------------------------------
 dnl ### program checking section ends here ###
 dnl --------------------------------------------------
@@ -870,7 +847,7 @@ if grep '   ' compiler/ghc.cabal.in 2>&1 >/dev/null; then
    AC_MSG_ERROR([compiler/ghc.cabal.in contains tab characters; please remove them])
 fi
 
-AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss])
+AC_CONFIG_FILES([mk/config.mk mk/install.mk mk/project.mk compiler/ghc.cabal ghc/ghc-bin.cabal ghc.spec extra-gcc-opts docs/users_guide/ug-book.xml distrib/ghc.iss distrib/configure-bin.ac])
 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
 AC_OUTPUT