Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add gras prop tests to the make check
[simgrid.git] / configure.ac
index 3306fa7..fad588c 100644 (file)
@@ -1,10 +1,15 @@
+dnl Copyright (C) 2004-2007. The SimGrid team. All rights reserved.
+
+dnl This file is part of the SimGrid project. This is free software:
+dnl You can redistribute and/or modify it under the terms of the
+dnl GNU LGPL (v2.1) licence.
 
 ######################
 ## Setup the autotools
 ##
 
 AC_PREREQ(2.59)
-AC_INIT([simgrid],[3.3-cvs],[simgrid-devel@lists.gforge.inria.fr])
+AC_INIT([simgrid],[3.3-svn],[simgrid-devel@lists.gforge.inria.fr])
 AC_CONFIG_SRCDIR([include/gras.h])
 AC_CONFIG_HEADERS([src/gras_config.h])
 # A CI_PREREQ(2003.01.16) # We need a recent ACI when having sub-modules
@@ -26,6 +31,15 @@ dnl We do build a proper DLL when using win32
 AC_LIBTOOL_WIN32_DLL
 AC_PROG_LIBTOOL
 
+###############
+## SVN version check
+##
+if test -e .svn ; then
+  VERSION="$VERSION-r`svnversion`"
+  PACKAGE_VERSION="$PACKAGE_VERSION-r`svnversion`"
+  PACKAGE_STRING="PACKAGE_STRING r`svnversion`"  
+fi
+
 ###############
 ## System checks
 ##
@@ -86,20 +100,62 @@ dnl #
 dnl #  1. determine possibilities
 dnl #
 
-dnl #  check for MCSC method
+dnl #  check for MCSC method (ucontexts)
 AC_CHECK_MCSC(mcsc=yes, mcsc=no) 
 
 dnl #  check for pthread method
 AC_CHECK_HEADERS([pthread.h])
 AC_CHECK_LIB(pthread,pthread_create,pthread=yes, pthread=no)
 
+if test x$pthread = xyes ; then
+  AC_CHECK_LIB(pthread, sem_init, HAVE_SEM_INIT=yes, HAVE_SEM_INIT=no)
+  if test ${HAVE_SEM_INIT} = yes ; then
+     AC_MSG_CHECKING(if sem_init is compilable)
+     AC_TRY_COMPILE([#include <semaphore.h>],
+                   [sem_t s; sem_init(&s);], HAVE_SEM_INIT=yes, HAVE_SEM_INIT=no)
+     if test ${HAVE_SEM_INIT} = yes ; then
+        AC_DEFINE([HAVE_SEM_INIT],1,[Define if sem_init() is avaible or not (part of XPG6 standard only)])
+        AC_MSG_RESULT(yes)
+     else
+       AC_MSG_RESULT(no)
+     fi
+  fi
+  AC_CHECK_LIB(pthread, sem_timedwait, HAVE_SEM_TIMEDWAIT=yes, HAVE_SEM_TIMEDWAIT=no)
+  if test ${HAVE_SEM_TIMEDWAIT} = yes ; then
+     AC_MSG_CHECKING(if sem_timedwait is compilable)
+     AC_TRY_COMPILE([#include <semaphore.h>],
+                   [sem_t *s; const struct timespec * t; sem_timedwait(s, t);], HAVE_SEM_TIMEDWAIT=yes, HAVE_SEM_TIMEDWAIT=no)
+     if test ${HAVE_SEM_TIMEDWAIT} = yes ; then
+        AC_DEFINE([HAVE_SEM_TIMEDWAIT],1,[Define if sem_timedwait() is avaible or not (part of XPG6 standard only)])
+        AC_MSG_RESULT(yes)
+     else
+       AC_MSG_RESULT(no)
+     fi
+  fi
+
+  AC_CHECK_LIB(pthread, pthread_mutex_timedlock, HAVE_MUTEX_TIMEDLOCK=yes, HAVE_MUTEX_TIMEDLOCK=no)
+  if test ${HAVE_MUTEX_TIMEDLOCK} = yes ; then
+     AC_MSG_CHECKING(if pthread_mutex_timedlock is compilable)
+     AC_TRY_COMPILE([#include <pthread.h>],
+                   [pthread_mutex_t s; const struct timespec t; sem_timedlock(&s, &t);], HAVE_MUTEX_TIMEDLOCK=yes, HAVE_MUTEX_TIMEDLOCK=no)
+     if test ${HAVE_MUTEX_TIMEDLOCK} = yes ; then
+        AC_DEFINE([HAVE_MUTEX_TIMEDLOCK],1,[Define if pthread_mutex_timedlock() is avaible or not (part of XPG6 standard only?)])
+        AC_MSG_RESULT(yes)
+     else
+       AC_MSG_RESULT(no)
+     fi
+  fi
+fi
+
 dnl #
 dnl #  2. make a general decision
 dnl #
 
 if test ".$mcsc" = .yes; then
+   # ucontext found
    mcsc=yes
 elif test ".$pthread" = .yes; then
+   # ucontext not found, but pthread found
    pthread=yes
 else
     ac_header=windows.h
@@ -154,13 +210,10 @@ if test "x$with_context" = "xucontext" ; then
   fi
 fi
 
-if test "x$with_context" = "xpthreads"; then
-  with_context=pthread
-fi
 if test "x$with_context" = "xpthread"; then
-  AC_CHECK_HEADERS([pthread.h])
-  AC_CHECK_LIB(pthread,pthread_create,,
-    [AC_MSG_ERROR([[Cannot find pthreads (try --with-context=ucontext if you haven't already tried).]])])
+  if test x$pthread != xyes ; then # reuse previous checks
+    AC_MSG_ERROR([[Cannot find pthreads (try --with-context=ucontext if you haven't already tried).]])
+  fi
   AC_DEFINE([CONTEXT_THREADS],1,[Define if xbt contexts are based on our threads implementation or not])
   AC_MSG_RESULT(You have pthreads and requested for them. Fine.)
 fi
@@ -358,17 +411,14 @@ SG_CONFIGURE_PART(Check for Java bindings...)
 # Java cruft
 AC_ARG_ENABLE(java,
              AS_HELP_STRING([--disable-java], [To not compile the Java bindings even if the tools are found]),
-             want_java=$enableval,want_java=yes)
-if test "x$want_java" != "xyes" ; then
-   AC_MSG_CHECKING(whether to compile java bindings)
-   AC_MSG_RESULT(disabled by user)
+             disable_java=$enableval,disable_java=yes)
+if test "x$disable_java" != "xyes" ; then
    use_java="disabled by user"
 else
   AC_PATH_PROG([JAVAC], [javac], `which javac`)
   AC_PATH_PROG([JAVA],  [java] , `which java`)
   AC_PATH_PROG([JAR],   [jar]  , `which jar`)
   AC_CHECK_HEADERS(jni.h)
-  AC_MSG_CHECKING(whether to compile java bindings)
   if test -n "$JAVAC"   \
      && test -n "$JAVA" \
      && test -n "$JAR"  \
@@ -378,8 +428,8 @@ else
   else   
      use_java="no"
   fi
-  AC_MSG_RESULT($use_java)
 fi
+AC_MSG_RESULT(decide whether to compile java bindings... $use_java)
 AM_CONDITIONAL(HAVE_JAVA,test "x$use_java" = "xyes")
 
 #####################
@@ -423,7 +473,7 @@ AC_SUBST(ac_configure_args)
 # Can we make status line about the compilation result?
 AC_CHECK_PROG(MD5SUM,md5sum,`which md5sum`)
 if test x$MD5SUM != xno ; then
-  build_version=`find -name '*.[ch]' |grep -v src/ucontext_stack.h | grep -v src/gras_config.h |\ 
+  build_version=`find -name '*.[ch]' |grep -v src/ucontext_stack.h | grep -v src/gras_config.h |\ 
                  xargs cat| $MD5SUM | sed 's/ .*$//'`
 else 
   build_version="no_md5sum_binary"
@@ -520,22 +570,13 @@ AC_CONFIG_FILES([
       examples/gras/spawn/Makefile
       examples/gras/synchro/Makefile
       examples/gras/timer/Makefile
+      examples/gras/properties/Makefile
       examples/gras/chrono/Makefile
       examples/gras/mutual_exclusion/simple_token/Makefile
       examples/gras/mmrpc/Makefile
       examples/gras/pmm/Makefile
       examples/gras/all2all/Makefile
     examples/amok/Makefile       
-      examples/amok/bandwidth/Makefile examples/amok/bandwidth/test_sg examples/amok/bandwidth/test_rl
-      examples/amok/saturate/Makefile  examples/amok/saturate/test_sg  examples/amok/saturate/test_rl
-],[
-    for file in                                                 \
-     \
-     examples/amok/bandwidth/test_sg examples/amok/bandwidth/test_rl \
-     examples/amok/saturate/test_sg  examples/amok/saturate/test_rl \
-    ; do                                                        \
-      test -e $file && chmod +x $file;                          \
-    done
 ])
 
 AC_CONFIG_FILES([