X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=configure.ac;h=aa333f60732caacc05e289b807637388b247280f;hp=fb186ca3d40c372fa277eceff07e461ec329ca32;hb=2662dbc5b2c30fc11ccb99e7f9b2dba794d680ba;hpb=f872c90f3bedbc3b909cfc4c37cda0455dee917e diff --git a/configure.ac b/configure.ac index fb186ca..aa333f6 100644 --- a/configure.ac +++ b/configure.ac @@ -156,7 +156,7 @@ fi; # GHC is passed to Cabal, so we need a native path if test "${WithGhc}" != "" then - ghc_host=`${WithGhc} +RTS --info | grep 'Host platform' | sed -e 's/.*, "//' -e 's/")//'` + ghc_host=`"${WithGhc}" +RTS --info | grep 'Host platform' | sed -e 's/.*, "//' -e 's/")//'` if test "$ghc_host" = "i386-unknown-mingw32" then @@ -165,7 +165,7 @@ then WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"` else # Canonicalise to :/path/to/ghc - WithGhc=`cygpath -m ${WithGhc}` + WithGhc=`cygpath -m "${WithGhc}"` fi echo "GHC path canonicalised to: ${WithGhc}" fi @@ -212,7 +212,7 @@ if test "$build" = "" then if test "${WithGhc}" != "" then - build=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` + build=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` echo "Build platform inferred as: $build" else echo "Can't work out build platform" @@ -224,7 +224,7 @@ if test "$host" = "" then if test "${WithGhc}" != "" then - host=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` + host=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` echo "Host platform inferred as: $host" else echo "Can't work out host platform" @@ -236,7 +236,7 @@ if test "$target" = "" then if test "${WithGhc}" != "" then - target=`${WithGhc} +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` + target=`"${WithGhc}" +RTS --info | grep '^ ,("Target platform"' | sed -e 's/.*, "//' -e 's/")//' | tr -d '\r'` echo "Target platform inferred as: $target" else echo "Can't work out target platform" @@ -296,7 +296,7 @@ checkVendor() { checkOS() { case $1 in - linux|freebsd|netbsd|openbsd|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix) + linux|freebsd|netbsd|openbsd|dragonfly|osf1|osf3|hpux|linuxaout|kfreebsdgnu|freebsd2|solaris2|cygwin32|mingw32|darwin|gnu|nextstep2|nextstep3|sunos4|ultrix|irix|aix) ;; *) echo "Unknown OS '$1'" @@ -378,47 +378,76 @@ 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/msysCORE*.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 -zxf ../../ghc-tarballs/mingw/msysCORE*.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 + ) + 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 :/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 :/path/to/ld - withval=`cygpath -m ${withval}` - fi; - LD=$withval - FP_PROG_LD([$LD]) - ], - [FP_PROG_LD()] -) +FP_ARG_WITH_PATH_GNU_PROG([LD], [ld]) +LdCmd="$LD" +AC_SUBST([LdCmd]) -# This uses GHC, so put it after the "GHC is required" check above: -FP_FIND_ROOT +dnl ** Check for dlltool on Windows +dnl -------------------------------------------------------------- +case $HostOS_CPP in +cygwin32|mingw32) + AC_PATH_PROG(DlltoolCmd,dlltool) + if test -z "$DlltoolCmd"; then + echo "Can't find dlltool in your path, can't make DLLs." + exit 1 + fi + ;; +*) + AC_SUBST(DlltoolCmd,"") + ;; +esac +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 +521,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) @@ -530,7 +558,7 @@ AC_PATH_PROG(TimeCmd,time) dnl ** check for tar dnl if GNU tar is named gtar, look for it first. -AC_PATH_PROGS(TarCmd,gtar tar,tar) +AC_PATH_PROGS(TarCmd,gnutar gtar tar,tar) dnl ** check for patch dnl if GNU patch is named gpatch, look for it first @@ -568,9 +596,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 -------------------------------------------------- @@ -838,7 +863,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