* coop.c (coop_condition_variable_wait): Removed
[bpt/guile.git] / acinclude.m4
index 65b4b11..dfa1a62 100644 (file)
@@ -57,3 +57,87 @@ AC_DEFUN([GUILE_HEADER_LIBC_WITH_UNISTD],
     fi
   ]
 )
+
+
+
+dnl This is needed when we want to check for the same function repeatedly
+dnl with other parameters, such as libraries, varying.
+dnl
+dnl GUILE_NAMED_CHECK_FUNC(FUNCTION, TESTNAME,
+dnl                        [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
+AC_DEFUN(GUILE_NAMED_CHECK_FUNC,
+[AC_MSG_CHECKING([for $1])
+AC_CACHE_VAL(ac_cv_func_$1_$2,
+[AC_TRY_LINK(
+dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h>
+dnl which includes <sys/select.h> which contains a prototype for
+dnl select.  Similarly for bzero.
+[/* System header to define __stub macros and hopefully few prototypes,
+    which can conflict with char $1(); below.  */
+#include <assert.h>
+/* Override any gcc2 internal prototype to avoid an error.  */
+]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
+extern "C"
+#endif
+])dnl
+[/* We use char because int might match the return type of a gcc2
+    builtin and then its argument prototype would still apply.  */
+char $1();
+], [
+/* The GNU C library defines this for functions which it implements
+    to always fail with ENOSYS.  Some functions are actually named
+    something starting with __ and the normal name is an alias.  */
+#if defined (__stub_$1) || defined (__stub___$1)
+choke me
+#else
+$1();
+#endif
+], eval "ac_cv_func_$1_$2=yes", eval "ac_cv_func_$1_$2=no")])
+if eval "test \"`echo '$ac_cv_func_'$1'_'$2`\" = yes"; then
+  AC_MSG_RESULT(yes)
+  ifelse([$3], , :, [$3])
+else
+  AC_MSG_RESULT(no)
+ifelse([$4], , , [$4
+])dnl
+fi
+])
+
+
+
+dnl Check checks whether dlsym (if present) requires a leading underscore.
+dnl Written by Dan Hagerty <hag@ai.mit.edu> for scsh-0.5.0.
+AC_DEFUN(GUILE_DLSYM_USCORE, [
+  AC_MSG_CHECKING(for underscore before symbols)
+  AC_CACHE_VAL(guile_cv_uscore,[
+    echo "main(){int i=1;}
+    fnord(){int i=23; int ltuae=42;}" > conftest.c
+    ${CC} conftest.c > /dev/null
+    if (nm a.out | grep _fnord) > /dev/null; then
+      guile_cv_uscore=yes
+    else
+      guile_cv_uscore=no
+    fi])
+  AC_MSG_RESULT($guile_cv_uscore)
+  rm -f conftest.c a.out
+
+  if test $guile_cv_uscore = yes; then
+    AC_DEFINE(USCORE)
+
+    if test $ac_cv_func_dlopen = yes -o $ac_cv_lib_dl_dlopen = yes ; then
+       AC_MSG_CHECKING(whether dlsym always adds an underscore for us)
+       AC_CACHE_VAL(guile_cv_dlsym_adds_uscore,AC_TRY_RUN( [
+#include <dlfcn.h>
+#include <stdio.h>
+fnord() { int i=42;}
+main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
+    if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
+    if(ptr1 && !ptr2) exit(0); } exit(1); } 
+], [guile_cv_dlsym_adds_uscore=yes
+       AC_DEFINE(DLSYM_ADDS_USCORE) ], guile_cv_dlsym_adds_uscore=no,
+       guile_cv_dlsym_adds_uscore=no))
+
+        AC_MSG_RESULT($guile_cv_dlsym_adds_uscore)
+    fi
+  fi
+])