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
+])