[project @ 2001-06-27 06:52:16 by reid]
[ghc-hetmet.git] / aclocal.m4
index 245c48a..46b5550 100644 (file)
@@ -1,5 +1,4 @@
-dnl $Id: aclocal.m4,v 1.63 2001/01/15 22:24:54 lewie Exp $
-dnl do not read me
+dnl $Id: aclocal.m4,v 1.75 2001/06/26 23:12:19 sof Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -82,7 +81,9 @@ AC_DEFUN(FPTOOLS_REGEX_IN_LIBC,
 #include <unistd.h>
 #endif
 #include <regex.h>
-],[ struct re_pattern_buffer patbuf; re_compile_pattern("",0,&patbuf); ],
+],[ struct re_pattern_buffer patbuf; 
+    re_compile_pattern("",0,&patbuf);
+    re_search_2 (&patbuf, "", 0, "",0, 0,0,0,0); ],
 fptools_cv_have_regex=yes, fptools_cv_have_regex=no)])
 if test "$fptools_cv_have_regex" = yes; then
        HaveRegex=YES
@@ -154,36 +155,67 @@ esac
 ])
 
 dnl
+dnl FPTOOLS_PROG_CHECK_VERSION(VERSIONSTR1, TEST, VERSIONSTR2,
+dnl                            ACTION-IF-TRUE [, ACTION-IF-FALSE])
+dnl
+dnl compare versions field-wise (separator is '.')
+dnl TEST is one of {-lt,-le,-eq,-ge,-gt}
+dnl
+dnl quite shell-independant and SUSv2 compliant code
+dnl
+dnl NOTE: the loop could be unrolled within autoconf, but the
+dnl       macro code would be a) longer and b) harder to debug... ;)
+dnl
+AC_DEFUN(FPTOOLS_PROG_CHECK_VERSION,
+[if ( IFS=".";
+      a="[$1]";  b="[$3]";
+      while test -n "$a$b"
+      do
+              set -- [$]a;  h1="[$]1";  shift 2>/dev/null;  a="[$]*"
+              set -- [$]b;  h2="[$]1";  shift 2>/dev/null;  b="[$]*"
+              test -n "[$]h1" || h1=0;  test -n "[$]h2" || h2=0
+              test [$]{h1} -eq [$]{h2} || break
+      done
+      test [$]{h1} [$2] [$]{h2}
+    )
+then ifelse([$4],,[:],[
+  $4])
+ifelse([$5],,,
+[else
+  $5])
+fi
+])])dnl
+
+
+dnl
 dnl Check for Happy and version.  If we're building GHC, then we need
-dnl at least Happy version 1.6.  If there's no installed Happy, we look
+dnl at least Happy version 1.9.  If there's no installed Happy, we look
 dnl for a happy source tree and point the build system at that instead.
 dnl
-dnl ToDo: when we reset HappyCmd to the source tree, autoconf doesn't
-dnl seems to insert it in the cache file.  sigh.
-dnl
 AC_DEFUN(FPTOOLS_HAPPY,
-[AC_PATH_PROG(HappyCmd,happy)
+[
+if test -d $srcdir/happy; then
+   SrcTreeHappyCmd=$hardtop/happy/src/happy-inplace
+fi
+#AC_PATH_PROG(HappyCmd,happy,$SrcTreeHappyCmd)
+HappyCmd=$SrcTreeHappyCmd
+AC_SUBST(HappyCmd)
 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
-[if test x"$HappyCmd" != x; then
-   fptools_cv_happy_version="`$HappyCmd -v |
 changequote(, )dnl
-                         grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
-elif test -d $srcdir/happy; then
-   HappyCmd=$hardtop/happy/src/happy-inplace;
+[if test x"$HappyCmd" = x"$SrcTreeHappyCmd"; then
    fptools_cv_happy_version=`grep '^ProjectVersion[    ]*=' $srcdir/happy/mk/version.mk | sed 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/g'`;
-   echo -n "using happy from the source tree... ";
+elif test x"$HappyCmd" != x; then
+   fptools_cv_happy_version="`$HappyCmd -v |
+                         grep 'Happy Version' | sed -e 's/Happy Version \([^ ]*\).*/\1/g'`" ;
 else
    fptools_cv_happy_version="";
 fi;
 changequote([, ])dnl
-if expr "$fptools_cv_happy_version" "<" 1.6 > /dev/null 2>&1; then
-   if test -d $srcdir/ghc; then
-     echo
-     echo "Happy version 1.6 or later is required to compile GHC."
-     exit 1;
-   fi
-fi;
 ])
+if test -d $srcdir/ghc; then
+  FPTOOLS_PROG_CHECK_VERSION([$fptools_cv_happy_version],-lt,[1.9],
+  [AC_MSG_ERROR([Happy version 1.9 or later is required to compile GHC.])])dnl
+fi
 HappyVersion=$fptools_cv_happy_version;
 AC_SUBST(HappyVersion)
 ])
@@ -544,11 +576,11 @@ main()
 {
   FILE *f=fopen("conftestval", "w");
   if (!f) exit(1);
-  fprintf(f, "(%d)\n", $1);
+  fprintf(f, "%d\n", $1);
   exit(0);
 }], 
 eval "$cv_name=`cat conftestval`",
-eval "$cv_name='(-1)'",
+eval "$cv_name=-1",
 ifelse([$2], , , eval "$cv_name=$2"))])dnl
 eval "fptools_check_cconst_result=`echo '$'{$cv_name}`"
 AC_MSG_RESULT($fptools_check_cconst_result)
@@ -861,7 +893,6 @@ dnl The variable LIBM (which is not an output variable by default) is
 dnl set to a value which is suitable for use in a Makefile (for example,
 dnl in make's LOADLIBES macro) provided you AC_SUBST it first.
 dnl
-dnl @version 0.01 $Id: aclocal.m4,v 1.63 2001/01/15 22:24:54 lewie Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 # FPTOOLS_CHECK_LIBM - check for math library
@@ -869,7 +900,7 @@ AC_DEFUN(FPTOOLS_CHECK_LIBM,
 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
 LIBM=
 case "$host" in
-*-*-beos* | *-*-cygwin*)
+*-*-beos* | *-*-macosx*)
   # These system don't have libm
   ;;
 *-ncr-sysv4.3*)
@@ -949,7 +980,6 @@ dnl Please note that as the ac_opengl macro and the toy example evolves,
 dnl the version number increases, so you may have to adjust the above
 dnl URL accordingly.
 dnl
-dnl @version 0.01 $Id: aclocal.m4,v 1.63 2001/01/15 22:24:54 lewie Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
@@ -1022,3 +1052,35 @@ dnl and we don't want to be global namespace polluters.
 ])
 
 # LocalWords:  fi
+
+dnl 
+dnl acspecific.m4's defn of AC_PROG_LEX is a bit too permissive, as it
+dnl defaults to 'lex' if 'flex' isn't found (without checking whether
+dnl 'lex' is actually present along the user's PATH).
+dnl
+AC_DEFUN(AC_PROG_LEX_STRICT,
+[AC_CHECK_PROG(LEX, flex, flex)
+if test -z "$LEX"
+then
+  AC_CHECK_PROG(LEX,lex,lex)
+  test -z "$LEX" && AC_MSG_ERROR(['lex' or 'flex' is required to compile GHC.])
+fi
+])
+
+dnl
+dnl Check to see whether CC (gcc) supports the -mwin32 option.
+dnl 
+AC_DEFUN(FPTOOLS_CC_MWIN32,
+[AC_CACHE_CHECK([whether $CC accepts -mwin32], ac_cv_cc_supports_mwin32,
+[save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mwin32"
+ AC_LANG_C
+ AC_TRY_COMPILE(,[int main(){return(0);}], ac_cv_cc_supports_mwin32=yes, ac_cv_cc_supports_mwin32=no)
+ CFLAGS="$CFLAGS_save"])
+if test "$ac_cv_cc_supports_mwin32" = yes; then
+  CC_MWIN32_FLAG="-mwin32";
+else
+  CC_MWIN32_FLAG="";
+fi;
+AC_SUBST(CC_MWIN32_FLAG)
+])