forkProcess: startTimer() in the child, because the timer will be reset
[ghc-hetmet.git] / aclocal.m4
index 87149a7..d7bed9a 100644 (file)
@@ -974,15 +974,18 @@ if test "$RELEASE" = "NO"; then
     AC_MSG_CHECKING([for GHC version date])
     if test -d _darcs; then
         changequote(, )dnl
-        ver_date=`darcs changes --last=100 --xml | grep 'date=' | sed "s/^.*date='\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*$/\1/g" | sort -n | tail -1`
+        ver_date=`darcs changes --quiet --no-summary --xml | head -500 | grep 'date=' | sed "s/^.*date='\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*$/\1/g" | sort -n | tail -1`
+        if echo $ver_date | grep '^[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$' 2>&1 >/dev/null; then true; else
         changequote([, ])dnl
+                AC_MSG_ERROR([failed to detect version date: check that darcs is in your path])
+        fi
         PACKAGE_VERSION=${PACKAGE_VERSION}.$ver_date
         AC_MSG_RESULT($PACKAGE_VERSION)
     elif test -f VERSION; then
-        PACKAGE_VERSION=`cat VERSION`        
+        PACKAGE_VERSION=`cat VERSION`
         AC_MSG_RESULT($PACKAGE_VERSION)
     else
-        AC_MSG_ERROR([no version found])                
+        AC_MSG_WARN([cannot determine snapshot version: no _darcs directory and no VERSION file])
     fi
 fi
 
@@ -1013,4 +1016,42 @@ ProjectPatchLevel=`echo $ProjectPatchLevel | sed 's/\.//'`
 AC_SUBST([ProjectPatchLevel])
 ])# FP_SETUP_PROJECT_VERSION
 
+AC_DEFUN([FP_CHECK_TIMER_CREATE],
+  [AC_CACHE_CHECK([for a working timer_create(CLOCK_REALTIME)], 
+    [fptools_cv_timer_create_works],
+    [AC_TRY_RUN([
+#ifdef HAVE_TIME_H
+#include <time.h>
+#endif
+#ifdef HAVE_SIGNAL_H
+#include <signal.h>
+#endif
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+int main(int argc, char *argv[])
+{
+#if HAVE_TIMER_CREATE && HAVE_TIMER_SETTIME
+    struct sigevent ev;
+    timer_t timer;
+    ev.sigev_notify = SIGEV_SIGNAL;
+    ev.sigev_signo  = SIGVTALRM;
+    if (timer_create(CLOCK_REALTIME, &ev, &timer) != 0) {
+       exit(1);
+    }
+#else
+    exit(1)
+#endif
+    exit(0);
+}
+     ],
+     [fptools_cv_timer_create_works=yes],
+     [fptools_cv_timer_create_works=no])
+  ])
+case $fptools_cv_timer_create_works in
+    yes) AC_DEFINE([USE_TIMER_CREATE], 1, 
+                   [Define to 1 if we can use timer_create(CLOCK_REALTIMER,...)]);;
+esac
+])
+
 # LocalWords:  fi