-# Can we rebuild the parsers?
-# We really want flex and refuse other lex. So, the parser is portable and
-# does not induce extra lib dependency
-AC_PROG_LEX
-if test "$LEX" != flex; then
- LEX="$SHELL $missing_dir/missing flex"
-fi
-
-# Can we rebuild the documentation?
-GTK_DOC_CHECK()
-AC_SUBST([htmldir], ['${datadir}/doc/gras/html'])dnl
-
-dnl ####[ Search libs ]#######################################################
-dnl A CI_PACKAGE([S imGrid],[the SimGrid simulator],[SG_init],[-lsimgrid],[simgrid.h],,:)
-dnl A M_CONDITIONAL(HAVE_SG,test x$HAVE_SimGrid = xyes)
-dnl if test x$HAVE_SimGrid = xyes; then
-dnl SIMGRID_DEP="-lsimgrid"
-dnl else
- SIMGRID_DEP=""
-dnl fi
-AC_SUBST([SIMGRID_DEP])
+SG_CONFIGURE_PART(Checking GRAS architecture signature...)
+# Check architecture signature begin
+GRAS_ARCH
+# Check architecture signature end
+GRAS_CHECK_STRUCT_COMPACTION
+
+
+dnl ##
+dnl ## CONTEXT IMPLEMENTATION
+dnl ##
+
+SG_CONFIGURE_PART([Checking threads, contexts or assimilated...])
+
+dnl #
+dnl # 1. determine possibilities
+dnl #
+
+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