Clarify error message (Trac #3805)
[ghc-hetmet.git] / configure.ac
index 8d41ac7..bc5c62b 100644 (file)
@@ -18,8 +18,6 @@ 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
@@ -158,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
@@ -167,7 +165,7 @@ then
             WithGhc=`echo "${WithGhc}" | sed "s#^/\([a-zA-Z]\)/#\1:/#"`
         else
             # Canonicalise to <drive>:/path/to/ghc
-            WithGhc=`cygpath -m ${WithGhc}`
+            WithGhc=`cygpath -m "${WithGhc}"`
         fi
         echo "GHC path canonicalised to: ${WithGhc}"
     fi
@@ -214,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"
@@ -226,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"
@@ -238,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"
@@ -298,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|haiku)
         ;;
     *)
         echo "Unknown OS '$1'"
@@ -393,25 +391,37 @@ then
          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 ../..
+        (
+            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/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
+    if ! test -d inplace/perl ||
+         test inplace/perl -ot ghc-tarballs/perl/ghc-perl*.tar.gz
+    then
+        AC_MSG_NOTICE([Making in-tree perl tree])
+        rm -rf inplace/perl
+        mkdir inplace
+        mkdir inplace/perl
+        (
+            cd inplace/perl &&
+            tar -zxf ../../ghc-tarballs/perl/ghc-perl*.tar.gz
+        )
+        AC_MSG_NOTICE([In-tree perl tree created])
+    fi
 fi
 
 dnl ** Which gcc to use?
@@ -534,7 +544,7 @@ AC_PROG_LN_S
 
 
 dnl ** Find the path to sed
-AC_PATH_PROG(SedCmd,sed)
+AC_PATH_PROGS(SedCmd,gsed sed,sed)
 
 
 dnl ** check for time command
@@ -542,12 +552,22 @@ 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
 AC_PATH_PROGS(PatchCmd,gpatch patch, patch)
 
+dnl ** check for dtrace (currently only implemented for Mac OS X)
+HaveDtrace=NO
+AC_PATH_PROG(DtraceCmd,dtrace)
+if test -n "$DtraceCmd"; then
+  if test "x$TargetOS_CPP-$TargetVendor_CPP" == "xdarwin-apple"; then
+    HaveDtrace=YES
+  fi
+fi
+AC_SUBST(HaveDtrace)
+
 AC_PATH_PROG(HSCOLOUR,HsColour)
 # HsColour is passed to Cabal, so we need a native path
 if test "x$HostPlatform"  = "xi386-unknown-mingw32" && \
@@ -596,7 +616,7 @@ dnl    off_t, because it will affect the result of that test.
 AC_SYS_LARGEFILE
 
 dnl ** check for specific header (.h) files that we are interested in
-AC_CHECK_HEADERS([bfd.h 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/mman.h sys/resource.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])
+AC_CHECK_HEADERS([bfd.h 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/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])
 
 dnl ** check if it is safe to include both <time.h> and <sys/time.h>
 AC_HEADER_TIME
@@ -703,18 +723,19 @@ if test $HaveLibMingwEx = YES ; then
   AC_DEFINE([HAVE_MINGWEX], [1], [Define to 1 if you have the mingwex library.])
 fi
 
+dnl ** check for math library
+dnl    Keep that check as early as possible.
+dnl    as we need to know whether we need libm
+dnl    for math functions or not
+dnl    (see http://hackage.haskell.org/trac/ghc/ticket/3730)
+AC_SEARCH_LIBS(atan, m, 
+  [AC_DEFINE([HAVE_LIBM], [1], [Define to 1 if you need to link with libm])])
+
 dnl ** check whether this machine has BFD and liberty installed (used for debugging)
 dnl    the order of these tests matters: bfd needs liberty
 AC_CHECK_LIB(iberty, xmalloc)
 AC_CHECK_LIB(bfd,    bfd_init)
 
-dnl ** check for math library
-AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes;LIBM=],[fp_libm_not_needed=dunno])
-if test x"$fp_libm_not_needed" = xdunno; then
-   AC_CHECK_LIB([m], [atan], [LIBS="-lm $LIBS"; LIBM="-lm"],[LIBM=])
-fi
-AC_SUBST([LIBM])
-
 dnl ################################################################
 dnl Check for libraries
 dnl ################################################################
@@ -847,7 +868,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 distrib/configure-bin.ac])
+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.ac])
 AC_CONFIG_COMMANDS([mk/stamp-h],[echo timestamp > mk/stamp-h])
 AC_OUTPUT