* aclocal.m4: New file. For now used for thread support
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Tue, 1 Oct 1996 02:57:50 +0000 (02:57 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Tue, 1 Oct 1996 02:57:50 +0000 (02:57 +0000)
configuration.

aclocal.m4 [new file with mode: 0644]

diff --git a/aclocal.m4 b/aclocal.m4
new file mode 100644 (file)
index 0000000..0466e8c
--- /dev/null
@@ -0,0 +1,102 @@
+dnl
+dnl CY_AC_WITH_THREADS determines which thread library the user intends
+dnl to put underneath guile.  Pass it the path to find the guile top-level
+dnl source directory.  Eg CY_AC_WITH_THREADS(../..) for tcl/unix.
+dnl
+
+AC_DEFUN([CY_AC_WITH_THREADS],[
+AC_CACHE_CHECK("threads package type",cy_cv_threads_package,[
+AC_CACHE_VAL(cy_cv_threads_cflags,[
+AC_CACHE_VAL(cy_cv_threads_libs,[
+use_threads=no;
+AC_ARG_WITH(threads,[  --with-threads          thread interface],
+            use_threads=$withval, use_threads=no)
+test -n "$use_threads" || use_threads=qt
+threads_package=unknown
+if test "$use_threads" != no; then
+dnl
+dnl Test for the qt threads package - used for cooperative threads
+dnl This may not necessarily be built yet - so just check for the
+dnl header files.
+dnl
+  if test "$use_threads" = yes || test "$use_threads" = qt; then
+     # Look for qt in source directory.  This is a hack: we look in
+     # "./qt" because this check might be run at the top level.
+     if test -f $srcdir/../qt/qt.c || test -f $srcdir/qt/qt.c; then
+       threads_package=COOP
+       cy_cv_threads_cflags="-I$srcdir/../qt -I../qt"
+       cy_cv_threads_libs="../threads/libthreads.a ../qt/libqt.a"
+     fi
+  else
+     if test -f $use_threads/qt.c; then
+       # FIXME seems as though we should try to use an installed qt here.
+       threads_package=COOP
+       cy_cv_threads_cflags="-I$use_threads -I../qt"
+       cy_cv_threads_libs="../threads/libthreads.a ../qt/libqt.a"
+     fi
+  fi
+  if test "$use_threads" = pthreads; then
+     # Look for pthreads in srcdir.  See above to understand why
+     # we always set threads_package.
+     if test -f $srcdir/../../pthreads/pthreads/queue.c \
+         || test -f $srcdir/../pthreads/pthreads/queue.c; then
+       threads_package=MIT
+       cy_cv_threads_cflags="-I$srcdir/../../pthreads/include"
+       cy_cv_threads_libs="-L../../pthreads/lib -lpthread"
+     fi
+  fi
+  saved_CPP="$CPPFLAGS"
+  saved_LD="$LDFLAGS"
+  saved_LIBS="$LIBS"
+  if test "$threads_package" = unknown; then
+dnl
+dnl Test for the FSU threads package
+dnl
+    CPPFLAGS="-I$use_threads/include"
+    LDFLAGS="-L$use_threads/lib"
+    LIBS="-lgthreads -lmalloc"
+    AC_TRY_LINK([#include <pthread.h>],[
+pthread_equal(NULL,NULL);
+], threads_package=FSU)
+  fi
+  if test "$threads_package" = unknown; then
+dnl
+dnl Test for the MIT threads package
+dnl
+    LIBS="-lpthread"
+    AC_TRY_LINK([#include <pthread.h>],[
+pthread_equal(NULL,NULL);
+], threads_package=MIT)
+  fi
+  if test "$threads_package" = unknown; then
+dnl
+dnl Test for the PCthreads package
+dnl
+    LIBS="-lpthreads"
+    AC_TRY_LINK([#include <pthread.h>],[
+pthread_equal(NULL,NULL);
+], threads_package=PCthreads)
+  fi
+dnl
+dnl Set the appropriate flags!
+dnl 
+  cy_cv_threads_cflags="$CPPFLAGS $cy_cv_threads_cflags"
+  cy_cv_threads_libs="$LDFLAGS $LIBS $cy_cv_threads_libs"
+  cy_cv_threads_package=$threads_package
+  CPPFLAGS="$saved_CPP"
+  LDFLAGS="$saved_LD"
+  LIBS="$saved_LIBS"
+  if test "$threads_package" = unknown; then
+    AC_MSG_ERROR("cannot find thread library installation")
+  fi
+fi
+])
+])
+],
+dnl
+dnl Set flags according to what is cached.
+dnl
+CPPFLAGS="$cy_cv_threads_cflags"
+LIBS="$cy_cv_threads_libs"
+)
+])