[project @ 2001-06-30 00:12:52 by sof]
[ghc-hetmet.git] / aclocal.m4
index 9bccc01..bdef3bd 100644 (file)
@@ -1,4 +1,4 @@
-dnl $Id: aclocal.m4,v 1.68 2001/03/13 14:59:56 simonmar Exp $
+dnl $Id: aclocal.m4,v 1.78 2001/06/30 00:12:52 sof Exp $
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
 dnl 
 dnl Extra autoconf macros for the Glasgow fptools
 dnl
@@ -81,7 +81,9 @@ AC_DEFUN(FPTOOLS_REGEX_IN_LIBC,
 #include <unistd.h>
 #endif
 #include <regex.h>
 #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
 fptools_cv_have_regex=yes, fptools_cv_have_regex=no)])
 if test "$fptools_cv_have_regex" = yes; then
        HaveRegex=YES
@@ -153,38 +155,65 @@ esac
 ])
 
 dnl
 ])
 
 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.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 Check for Happy and version.  If we're building GHC, then we need
 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_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)
 AC_CACHE_CHECK([for version of happy], fptools_cv_happy_version,
 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
 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'`;
    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
 else
    fptools_cv_happy_version="";
 fi;
 changequote([, ])dnl
-if test -d $srcdir/ghc; then
-  if ( test "$fptools_cv_happy_version" = "" || (
-       test `echo "$fptools_cv_happy_version" | sed -e "s/\(.*\)\..*/\1/g"` "-eq" "1" &&
-       test `echo "$fptools_cv_happy_version" | sed -e "s/.*\.\(.*\)/\1/g"` "-lt" "9" )); then
-     echo
-     echo "Happy version 1.9 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)
 ])
 HappyVersion=$fptools_cv_happy_version;
 AC_SUBST(HappyVersion)
 ])
@@ -862,7 +891,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 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.68 2001/03/13 14:59:56 simonmar Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 # FPTOOLS_CHECK_LIBM - check for math library
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 # FPTOOLS_CHECK_LIBM - check for math library
@@ -950,7 +978,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 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.68 2001/03/13 14:59:56 simonmar Exp $
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
 dnl @author Matthew D. Langston <langston@SLAC.Stanford.EDU>
 
 AC_DEFUN(FPTOOLS_HAVE_OPENGL,
@@ -1023,3 +1050,38 @@ dnl and we don't want to be global namespace polluters.
 ])
 
 # LocalWords:  fi
 ])
 
 # 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 a particular option.
+dnl 
+AC_DEFUN(FPTOOLS_CC_FLAG,
+[
+AC_CACHE_CHECK([whether $CC accepts $1], [ac_cv_cc_$2],
+[save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_LANG_C
+ AC_TRY_COMPILE(,[int main(){return(0);}],
+                 [ac_cv_cc_$2=yes],
+                [ac_cv_cc_$2=no])
+ CFLAGS="$save_CFLAGS"
+])
+if test "$ac_cv_cc_$2"x = "yesx"; then
+  $2=$extra_flag;
+else
+  $2=$extra_flag;
+fi;
+])