1 dnl On the NeXT, #including <utime.h> doesn't give you a definition for
2 dnl struct utime, unless you #define _POSIX_SOURCE.
4 AC_DEFUN(GUILE_STRUCT_UTIMBUF, [
5 AC_CACHE_CHECK([whether we need POSIX to get struct utimbuf],
6 guile_cv_struct_utimbuf_needs_posix,
15 guile_cv_struct_utimbuf_needs_posix=no,
16 guile_cv_struct_utimbuf_needs_posix=yes)])
17 if test "$guile_cv_struct_utimbuf_needs_posix" = yes; then
18 AC_DEFINE(UTIMBUF_NEEDS_POSIX)
25 dnl Apparently, at CMU they have a weird version of libc.h that is
26 dnl installed in /usr/local/include and conflicts with unistd.h.
27 dnl In these situations, we should not #include libc.h.
28 dnl This test arranges to #define LIBC_H_WITH_UNISTD_H iff libc.h is
29 dnl present on the system, and is safe to #include.
31 AC_DEFUN([GUILE_HEADER_LIBC_WITH_UNISTD],
33 AC_CHECK_HEADERS(libc.h unistd.h)
35 "whether libc.h and unistd.h can be included together",
36 guile_cv_header_libc_with_unistd,
38 if test "$ac_cv_header_libc_h" = "no"; then
39 guile_cv_header_libc_with_unistd="no"
40 elif test "$ac_cv_header_unistd_h" = "no"; then
41 guile_cv_header_libc_with_unistd="yes"
49 [guile_cv_header_libc_with_unistd=yes],
50 [guile_cv_header_libc_with_unistd=no]
55 if test "$guile_cv_header_libc_with_unistd" = yes; then
56 AC_DEFINE(LIBC_H_WITH_UNISTD_H)
63 dnl This is needed when we want to check for the same function repeatedly
64 dnl with other parameters, such as libraries, varying.
66 dnl GUILE_NAMED_CHECK_FUNC(FUNCTION, TESTNAME,
67 dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
68 AC_DEFUN(GUILE_NAMED_CHECK_FUNC,
69 [AC_MSG_CHECKING([for $1])
70 AC_CACHE_VAL(ac_cv_func_$1_$2,
72 dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h>
73 dnl which includes <sys/select.h> which contains a prototype for
74 dnl select. Similarly for bzero.
75 [/* System header to define __stub macros and hopefully few prototypes,
76 which can conflict with char $1(); below. */
78 /* Override any gcc2 internal prototype to avoid an error. */
79 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
83 [/* We use char because int might match the return type of a gcc2
84 builtin and then its argument prototype would still apply. */
87 /* The GNU C library defines this for functions which it implements
88 to always fail with ENOSYS. Some functions are actually named
89 something starting with __ and the normal name is an alias. */
90 #if defined (__stub_$1) || defined (__stub___$1)
95 ], eval "ac_cv_func_$1_$2=yes", eval "ac_cv_func_$1_$2=no")])
96 if eval "test \"`echo '$ac_cv_func_'$1'_'$2`\" = yes"; then
98 ifelse([$3], , :, [$3])
108 dnl Check checks whether dlsym (if present) requires a leading underscore.
109 dnl Written by Dan Hagerty <hag@ai.mit.edu> for scsh-0.5.0.
110 AC_DEFUN(GUILE_DLSYM_USCORE, [
111 AC_MSG_CHECKING(for underscore before symbols)
112 AC_CACHE_VAL(guile_cv_uscore,[
113 echo "main(){int i=1;}
114 fnord(){int i=23; int ltuae=42;}" > conftest.c
115 ${CC} conftest.c > /dev/null
116 if (nm a.out | grep _fnord) > /dev/null; then
121 AC_MSG_RESULT($guile_cv_uscore)
122 rm -f conftest.c a.out
124 if test $guile_cv_uscore = yes; then
127 if test $ac_cv_func_dlopen = yes -o $ac_cv_lib_dl_dlopen = yes ; then
128 AC_MSG_CHECKING(whether dlsym always adds an underscore for us)
129 AC_CACHE_VAL(guile_cv_dlsym_adds_uscore,AC_TRY_RUN( [
133 main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
134 if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
135 if(ptr1 && !ptr2) exit(0); } exit(1); }
136 ], [guile_cv_dlsym_adds_uscore=yes
137 AC_DEFINE(DLSYM_ADDS_USCORE) ], guile_cv_dlsym_adds_uscore=no,
138 guile_cv_dlsym_adds_uscore=no))
140 AC_MSG_RESULT($guile_cv_dlsym_adds_uscore)
145 dnl QTHREADS_CONFIGURE configures the QuickThreads package. The QT
146 dnl sources should be in $srcdir/qt. If configuration succeeds, this
147 dnl macro creates the appropriate symlinks in the qt object directory,
148 dnl and sets the following variables, used in building libqthreads.a:
149 dnl QTHREAD_LTLIBS --- set to libqthreads.la if configuration
150 dnl succeeds, or the empty string if configuration fails.
151 dnl qtmd_h, qtmds_s, qtmdc_c, qtdmdb_s --- the names of the machine-
152 dnl dependent source files.
153 dnl qthread_asflags --- flags to pass to the compiler when processing
154 dnl assembly-language files.
156 dnl It also sets the following variables, which describe how clients
157 dnl can link against libqthreads.a:
158 dnl THREAD_PACKAGE --- set to "QT" if configuration succeeds, or
159 dnl the empty string if configuration fails.
160 dnl THREAD_CPPFLAGS --- set to `-I' flags for thread header files
161 dnl THREAD_LIBS_LOCAL --- linker options for use in this source tree
162 dnl THREAD_LIBS_INSTALLED --- linker options for use after this package
164 dnl It would be nice if all thread configuration packages for Guile
165 dnl followed the same conventions.
167 dnl All of the above variables will be substituted into Makefiles in
168 dnl the usual autoconf fashion.
170 dnl We distinguish between THREAD_LIBS_LOCAL and
171 dnl THREAD_LIBS_INSTALLED because the thread library might be in
172 dnl this tree, and be built using libtool. This means that:
173 dnl 1) when building other executables in this tree, one must
174 dnl pass the relative path to the ../libfoo.la file, but
175 dnl 2) once the whole package has been installed, users should
176 dnl link using -lfoo.
177 dnl Normally, we only care about the first case, but since the
178 dnl guile-config script needs to give users all the flags they need
179 dnl to link programs against guile, the GUILE_WITH_THREADS macro
180 dnl needs to supply the second piece of information as well.
182 dnl This whole thing is a little confused about what ought to be
183 dnl done in the top-level configure script, and what ought to be
184 dnl taken care of in the subdirectory. For example, qtmds_s and
185 dnl friends really ought not to be even mentioned in the top-level
186 dnl configure script, but here they are.
188 AC_DEFUN([QTHREADS_CONFIGURE],[
189 AC_REQUIRE([AC_PROG_LN_S])
191 AC_MSG_CHECKING(QuickThreads configuration)
192 # How can we refer to the qt source directory from within the qt build
193 # directory? For headers, we can rely on the fact that the qt src
194 # directory appears in the #include path.
195 qtsrcdir="`(cd $srcdir; pwd)`/qt"
197 changequote(,)dnl We use [ and ] in a regexp in the case
210 ## NetBSD needs to be told to pass the assembly code through
211 ## the C preprocessor. Other GCC installations seem to do
212 ## this by default, but NetBSD's doesn't. We could get the
213 ## same effect by giving the file a name ending with .S
214 ## instead of .s, but I don't see how to tell automake to do
216 qthread_asflags='-x assembler-with-cpp'
223 qtmds_s=md/mips-irix5.s
235 port_name=sparc-sunos
239 qtdmdb_s=md/_sparc_b.s
246 qtdmdb_s=md/sparc_b.s
256 echo "Unknown configuration; threads package disabled"
262 # Did configuration succeed?
263 if test -n "$THREAD_PACKAGE"; then
264 AC_MSG_RESULT($port_name)
265 QTHREAD_LTLIBS=libqthreads.la
266 THREAD_CPPFLAGS="-I$qtsrcdir -I../qt"
267 THREAD_LIBS_LOCAL="../qt/libqthreads.la"
268 THREAD_LIBS_INSTALLED="-lqthreads"
270 AC_MSG_RESULT(none; disabled)
273 AC_SUBST(QTHREAD_LTLIBS)
278 AC_SUBST(qthread_asflags)
279 AC_SUBST(THREAD_PACKAGE)
280 AC_SUBST(THREAD_CPPFLAGS)
281 AC_SUBST(THREAD_LIBS_LOCAL)
282 AC_SUBST(THREAD_LIBS_INSTALLED)