Upgrade to the version of libtool available at Cygnus. See note
[bpt/guile.git] / aclocal.m4
CommitLineData
5798fd97 1dnl aclocal.m4 generated automatically by aclocal 1.3
5aadf8c1 2
5798fd97 3dnl Copyright (C) 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
5aadf8c1
MG
4dnl This Makefile.in is free software; the Free Software Foundation
5dnl gives unlimited permission to copy and/or distribute it,
6dnl with or without modifications, as long as this notice is preserved.
7
8dnl This program is distributed in the hope that it will be useful,
9dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
10dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11dnl PARTICULAR PURPOSE.
ebf50833 12
3a629497
JB
13dnl On the NeXT, #including <utime.h> doesn't give you a definition for
14dnl struct utime, unless you #define _POSIX_SOURCE.
15
16AC_DEFUN(GUILE_STRUCT_UTIMBUF, [
17 AC_CACHE_CHECK([whether we need POSIX to get struct utimbuf],
18 guile_cv_struct_utimbuf_needs_posix,
19 [AC_TRY_CPP([
20#ifdef __EMX__
21#include <sys/utime.h>
22#else
23#include <utime.h>
24#endif
25struct utime blah;
26],
27 guile_cv_struct_utimbuf_needs_posix=no,
28 guile_cv_struct_utimbuf_needs_posix=yes)])
29 if test "$guile_cv_struct_utimbuf_needs_posix" = yes; then
30 AC_DEFINE(UTIMBUF_NEEDS_POSIX)
31 fi])
32
33
34
35
36dnl
37dnl Apparently, at CMU they have a weird version of libc.h that is
38dnl installed in /usr/local/include and conflicts with unistd.h.
39dnl In these situations, we should not #include libc.h.
40dnl This test arranges to #define LIBC_H_WITH_UNISTD_H iff libc.h is
41dnl present on the system, and is safe to #include.
42dnl
43AC_DEFUN([GUILE_HEADER_LIBC_WITH_UNISTD],
44 [
45 AC_CHECK_HEADERS(libc.h unistd.h)
46 AC_CACHE_CHECK(
47 "whether libc.h and unistd.h can be included together",
48 guile_cv_header_libc_with_unistd,
49 [
50 if test "$ac_cv_header_libc_h" = "no"; then
51 guile_cv_header_libc_with_unistd="no"
52 elif test "$ac_cv_header_unistd.h" = "no"; then
53 guile_cv_header_libc_with_unistd="yes"
54 else
55 AC_TRY_COMPILE(
56 [
57# include <libc.h>
58# include <unistd.h>
59 ],
60 [],
61 [guile_cv_header_libc_with_unistd=yes],
62 [guile_cv_header_libc_with_unistd=no]
63 )
64 fi
65 ]
66 )
67 if test "$guile_cv_header_libc_with_unistd" = yes; then
68 AC_DEFINE(LIBC_H_WITH_UNISTD_H)
69 fi
70 ]
71)
72
0b89e78e
MD
73
74
75dnl This is needed when we want to check for the same function repeatedly
76dnl with other parameters, such as libraries, varying.
77dnl
78dnl GUILE_NAMED_CHECK_FUNC(FUNCTION, TESTNAME,
79dnl [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
80AC_DEFUN(GUILE_NAMED_CHECK_FUNC,
81[AC_MSG_CHECKING([for $1])
82AC_CACHE_VAL(ac_cv_func_$1_$2,
83[AC_TRY_LINK(
84dnl Don't include <ctype.h> because on OSF/1 3.0 it includes <sys/types.h>
85dnl which includes <sys/select.h> which contains a prototype for
86dnl select. Similarly for bzero.
87[/* System header to define __stub macros and hopefully few prototypes,
88 which can conflict with char $1(); below. */
89#include <assert.h>
90/* Override any gcc2 internal prototype to avoid an error. */
91]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
92extern "C"
93#endif
94])dnl
95[/* We use char because int might match the return type of a gcc2
96 builtin and then its argument prototype would still apply. */
97char $1();
98], [
99/* The GNU C library defines this for functions which it implements
100 to always fail with ENOSYS. Some functions are actually named
101 something starting with __ and the normal name is an alias. */
102#if defined (__stub_$1) || defined (__stub___$1)
103choke me
104#else
105$1();
106#endif
107], eval "ac_cv_func_$1_$2=yes", eval "ac_cv_func_$1_$2=no")])
108if eval "test \"`echo '$ac_cv_func_'$1'_'$2`\" = yes"; then
109 AC_MSG_RESULT(yes)
110 ifelse([$3], , :, [$3])
111else
112 AC_MSG_RESULT(no)
113ifelse([$4], , , [$4
114])dnl
115fi
116])
117
db1e65d5
TP
118
119
120dnl Check checks whether dlsym (if present) requires a leading underscore.
121dnl Written by Dan Hagerty <hag@ai.mit.edu> for scsh-0.5.0.
122AC_DEFUN(GUILE_DLSYM_USCORE, [
123 AC_MSG_CHECKING(for underscore before symbols)
124 AC_CACHE_VAL(guile_cv_uscore,[
125 echo "main(){int i=1;}
126 fnord(){int i=23; int ltuae=42;}" > conftest.c
127 ${CC} conftest.c > /dev/null
128 if (nm a.out | grep _fnord) > /dev/null; then
129 guile_cv_uscore=yes
130 else
131 guile_cv_uscore=no
132 fi])
133 AC_MSG_RESULT($guile_cv_uscore)
134 rm -f conftest.c a.out
135
136 if test $guile_cv_uscore = yes; then
137 AC_DEFINE(USCORE)
138
139 if test $ac_cv_func_dlopen = yes -o $ac_cv_lib_dl_dlopen = yes ; then
140 AC_MSG_CHECKING(whether dlsym always adds an underscore for us)
141 AC_CACHE_VAL(guile_cv_dlsym_adds_uscore,AC_TRY_RUN( [
142#include <dlfcn.h>
143#include <stdio.h>
144fnord() { int i=42;}
145main() { void *self, *ptr1, *ptr2; self=dlopen(NULL,RTLD_LAZY);
146 if(self) { ptr1=dlsym(self,"fnord"); ptr2=dlsym(self,"_fnord");
147 if(ptr1 && !ptr2) exit(0); } exit(1); }
148], [guile_cv_dlsym_adds_uscore=yes
5aadf8c1
MG
149 AC_DEFINE(DLSYM_ADDS_USCORE) ], guile_cv_dlsym_adds_uscore=no,
150 guile_cv_dlsym_adds_uscore=no))
db1e65d5
TP
151
152 AC_MSG_RESULT($guile_cv_dlsym_adds_uscore)
153 fi
154 fi
155])
156
733943b9
TT
157# Do all the work for Automake. This macro actually does too much --
158# some checks are only needed if your package does certain things.
159# But this isn't really a big deal.
160
161# serial 1
162
163dnl Usage:
1dc9c5b0 164dnl AM_INIT_AUTOMAKE(package,version, [no-define])
733943b9
TT
165
166AC_DEFUN(AM_INIT_AUTOMAKE,
167[AC_REQUIRE([AM_PROG_INSTALL])
168PACKAGE=[$1]
169AC_SUBST(PACKAGE)
733943b9
TT
170VERSION=[$2]
171AC_SUBST(VERSION)
c7b6463e
JB
172dnl test to see if srcdir already configured
173if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
174 AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
175fi
1dc9c5b0
JB
176ifelse([$3],,
177AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
178AC_DEFINE_UNQUOTED(VERSION, "$VERSION"))
341eaef0
GH
179AC_REQUIRE([AM_SANITY_CHECK])
180AC_REQUIRE([AC_ARG_PROGRAM])
1dc9c5b0
JB
181dnl FIXME This is truly gross.
182missing_dir=`cd $ac_aux_dir && pwd`
183AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
184AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
185AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
186AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
187AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
341eaef0 188AC_REQUIRE([AC_PROG_MAKE_SET])])
733943b9
TT
189
190
191# serial 1
192
193AC_DEFUN(AM_PROG_INSTALL,
194[AC_REQUIRE([AC_PROG_INSTALL])
195test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
196AC_SUBST(INSTALL_SCRIPT)dnl
ebf50833 197])
733943b9
TT
198
199#
200# Check to make sure that the build environment is sane.
201#
202
203AC_DEFUN(AM_SANITY_CHECK,
204[AC_MSG_CHECKING([whether build environment is sane])
1dc9c5b0
JB
205# Just in case
206sleep 1
733943b9 207echo timestamp > conftestfile
1dc9c5b0
JB
208# Do `set' in a subshell so we don't clobber the current shell's
209# arguments. Must try -L first in case configure is actually a
210# symlink; some systems play weird games with the mod time of symlinks
211# (eg FreeBSD returns the mod time of the symlink's containing
212# directory).
213if (
214 set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
5aadf8c1 215 if test "[$]*" = "X"; then
1dc9c5b0
JB
216 # -L didn't work.
217 set X `ls -t $srcdir/configure conftestfile`
218 fi
341eaef0
GH
219 if test "[$]*" != "X $srcdir/configure conftestfile" \
220 && test "[$]*" != "X conftestfile $srcdir/configure"; then
221
222 # If neither matched, then we have a broken ls. This can happen
223 # if, for instance, CONFIG_SHELL is bash and it inherits a
224 # broken ls alias from the environment. This has actually
225 # happened. Such a system could not be considered "sane".
226 AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
227alias in your environment])
228 fi
229
1dc9c5b0
JB
230 test "[$]2" = conftestfile
231 )
733943b9
TT
232then
233 # Ok.
234 :
235else
236 AC_MSG_ERROR([newly created file is older than distributed files!
237Check your system clock])
238fi
239rm -f conftest*
240AC_MSG_RESULT(yes)])
241
1dc9c5b0
JB
242dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
243dnl The program must properly implement --version.
244AC_DEFUN(AM_MISSING_PROG,
245[AC_MSG_CHECKING(for working $2)
246# Run test in a subshell; some versions of sh will print an error if
247# an executable is not found, even if stderr is redirected.
c7b6463e
JB
248# Redirect stdin to placate older versions of autoconf. Sigh.
249if ($2 --version) < /dev/null > /dev/null 2>&1; then
1dc9c5b0
JB
250 $1=$2
251 AC_MSG_RESULT(found)
252else
253 $1="$3/missing $2"
254 AC_MSG_RESULT(missing)
255fi
256AC_SUBST($1)])
257
15ae1bee
MD
258# Add --enable-maintainer-mode option to configure.
259# From Jim Meyering
260
261# serial 1
262
263AC_DEFUN(AM_MAINTAINER_MODE,
264[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
265 dnl maintainer-mode is disabled by default
266 AC_ARG_ENABLE(maintainer-mode,
267[ --enable-maintainer-mode enable make rules and dependencies not useful
268 (and sometimes confusing) to the casual installer],
269 USE_MAINTAINER_MODE=$enableval,
270 USE_MAINTAINER_MODE=no)
271 AC_MSG_RESULT($USE_MAINTAINER_MODE)
272 if test $USE_MAINTAINER_MODE = yes; then
273 MAINT=
274 else
275 MAINT='#M#'
276 fi
277 AC_SUBST(MAINT)dnl
278]
279)
280
3a629497
JB
281# Like AC_CONFIG_HEADER, but automatically create stamp file.
282
283AC_DEFUN(AM_CONFIG_HEADER,
284[AC_PREREQ([2.12])
285AC_CONFIG_HEADER([$1])
286dnl When config.status generates a header, we must update the stamp-h file.
287dnl This file resides in the same directory as the config header
288dnl that is generated. We must strip everything past the first ":",
289dnl and everything past the last "/".
290AC_OUTPUT_COMMANDS(changequote(<<,>>)dnl
c7b6463e
JB
291ifelse(patsubst(<<$1>>, <<[^ ]>>, <<>>), <<>>,
292<<test -z "<<$>>CONFIG_HEADERS" || echo timestamp > patsubst(<<$1>>, <<^\([^:]*/\)?.*>>, <<\1>>)stamp-h<<>>dnl>>,
293<<am_indx=1
294for am_file in <<$1>>; do
295 case " <<$>>CONFIG_HEADERS " in
296 *" <<$>>am_file "*<<)>>
297 echo timestamp > `echo <<$>>am_file | sed -e 's%:.*%%' -e 's%[^/]*$%%'`stamp-h$am_indx
298 ;;
299 esac
300 am_indx=`expr "<<$>>am_indx" + 1`
301done<<>>dnl>>)
3a629497
JB
302changequote([,]))])
303
5aadf8c1 304
5798fd97 305# serial 24 AM_PROG_LIBTOOL
5aadf8c1 306AC_DEFUN(AM_PROG_LIBTOOL,
5798fd97
MD
307[AC_REQUIRE([AM_ENABLE_SHARED])dnl
308AC_REQUIRE([AM_ENABLE_STATIC])dnl
309AC_REQUIRE([AC_CANONICAL_HOST])dnl
310AC_REQUIRE([AC_PROG_RANLIB])dnl
311AC_REQUIRE([AC_PROG_CC])dnl
312AC_REQUIRE([AM_PROG_LD])dnl
313AC_REQUIRE([AM_PROG_NM])dnl
314AC_REQUIRE([AC_PROG_LN_S])dnl
315dnl
5aadf8c1
MG
316# Always use our own libtool.
317LIBTOOL='$(SHELL) $(top_builddir)/libtool'
5798fd97 318AC_SUBST(LIBTOOL)dnl
5aadf8c1 319
5798fd97
MD
320# Check for any special flags to pass to ltconfig.
321libtool_flags=
322test "$enable_shared" = no && libtool_flags="$libtool_flags --disable-shared"
323test "$enable_static" = no && libtool_flags="$libtool_flags --disable-static"
5aadf8c1
MG
324test "$silent" = yes && libtool_flags="$libtool_flags --silent"
325test "$ac_cv_prog_gcc" = yes && libtool_flags="$libtool_flags --with-gcc"
326test "$ac_cv_prog_gnu_ld" = yes && libtool_flags="$libtool_flags --with-gnu-ld"
327
328# Some flags need to be propagated to the compiler or linker for good
329# libtool support.
5798fd97 330case "$host" in
5aadf8c1 331*-*-irix6*)
5798fd97
MD
332 # Find out which ABI we are using.
333 echo '[#]line __oline__ "configure"' > conftest.$ac_ext
334 if AC_TRY_EVAL(ac_compile); then
335 case "`/usr/bin/file conftest.o`" in
336 *32-bit*)
337 LD="${LD-ld} -32"
338 ;;
339 *N32*)
340 LD="${LD-ld} -n32"
341 ;;
342 *64-bit*)
343 LD="${LD-ld} -64"
344 ;;
345 esac
346 fi
347 rm -rf conftest*
5aadf8c1
MG
348 ;;
349
350*-*-sco3.2v5*)
351 # On SCO OpenServer 5, we need -belf to get full-featured binaries.
352 CFLAGS="$CFLAGS -belf"
353 ;;
5798fd97 354esac
5aadf8c1
MG
355
356# Actually configure libtool. ac_aux_dir is where install-sh is found.
357CC="$CC" CFLAGS="$CFLAGS" CPPFLAGS="$CPPFLAGS" \
358LD="$LD" NM="$NM" RANLIB="$RANLIB" LN_S="$LN_S" \
359${CONFIG_SHELL-/bin/sh} $ac_aux_dir/ltconfig \
360$libtool_flags --no-verify $ac_aux_dir/ltmain.sh $host \
361|| AC_MSG_ERROR([libtool configure failed])
362])
363
5798fd97
MD
364# AM_ENABLE_SHARED - implement the --enable-shared flag
365# Usage: AM_ENABLE_SHARED[(DEFAULT)]
366# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
367# `yes'.
368AC_DEFUN(AM_ENABLE_SHARED,
369[define([AM_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
370AC_ARG_ENABLE(shared,
371changequote(<<, >>)dnl
372<< --enable-shared build shared libraries [default=>>AM_ENABLE_SHARED_DEFAULT]
373changequote([, ])dnl
374[ --enable-shared=PKGS only build shared libraries if the current package
375 appears as an element in the PKGS list],
376[p=${PACKAGE-default}
377case "$enableval" in
378yes) enable_shared=yes ;;
379no) enable_shared=no ;;
380*)
381 enable_shared=no
382 # Look at the argument we got. We use all the common list separators.
383 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
384 for pkg in $enableval; do
385 if test "X$pkg" = "X$p"; then
386 enable_shared=yes
387 fi
388 done
389 IFS="$ac_save_ifs"
390 ;;
391esac],
392enable_shared=AM_ENABLE_SHARED_DEFAULT)dnl
393])
394
395# AM_DISABLE_SHARED - set the default shared flag to --disable-shared
396AC_DEFUN(AM_DISABLE_SHARED,
397[AM_ENABLE_SHARED(no)])
398
399# AM_DISABLE_STATIC - set the default static flag to --disable-static
400AC_DEFUN(AM_DISABLE_STATIC,
401[AM_ENABLE_STATIC(no)])
402
403# AM_ENABLE_STATIC - implement the --enable-static flag
404# Usage: AM_ENABLE_STATIC[(DEFAULT)]
405# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to
406# `yes'.
407AC_DEFUN(AM_ENABLE_STATIC,
408[define([AM_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
409AC_ARG_ENABLE(static,
410changequote(<<, >>)dnl
411<< --enable-static build static libraries [default=>>AM_ENABLE_STATIC_DEFAULT]
412changequote([, ])dnl
413[ --enable-static=PKGS only build shared libraries if the current package
414 appears as an element in the PKGS list],
415[p=${PACKAGE-default}
416case "$enableval" in
417yes) enable_static=yes ;;
418no) enable_static=no ;;
419*)
420 enable_static=no
421 # Look at the argument we got. We use all the common list separators.
422 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:,"
423 for pkg in $enableval; do
424 if test "X$pkg" = "X$p"; then
425 enable_static=yes
426 fi
427 done
428 IFS="$ac_save_ifs"
429 ;;
430esac],
431enable_static=AM_ENABLE_STATIC_DEFAULT)dnl
432])
433
434
5aadf8c1
MG
435# AM_PROG_LD - find the path to the GNU or non-GNU linker
436AC_DEFUN(AM_PROG_LD,
437[AC_ARG_WITH(gnu-ld,
438[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
439test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
440AC_REQUIRE([AC_PROG_CC])
441ac_prog=ld
442if test "$ac_cv_prog_gcc" = yes; then
443 # Check if gcc -print-prog-name=ld gives a path.
444 AC_MSG_CHECKING([for ld used by GCC])
445 ac_prog=`($CC -print-prog-name=ld) 2>&5`
446 case "$ac_prog" in
447 # Accept absolute paths.
5798fd97 448 /* | [A-Za-z]:\\*)
ef0f106f
TP
449 test -z "$LD" && LD="$ac_prog"
450 ;;
5aadf8c1
MG
451 "")
452 # If it fails, then pretend we aren't using GCC.
453 ac_prog=ld
454 ;;
455 *)
456 # If it is relative, then search for the first ld in PATH.
457 with_gnu_ld=unknown
458 ;;
459 esac
460elif test "$with_gnu_ld" = yes; then
461 AC_MSG_CHECKING([for GNU ld])
462else
463 AC_MSG_CHECKING([for non-GNU ld])
464fi
465AC_CACHE_VAL(ac_cv_path_LD,
466[if test -z "$LD"; then
467 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
468 for ac_dir in $PATH; do
469 test -z "$ac_dir" && ac_dir=.
470 if test -f "$ac_dir/$ac_prog"; then
471 ac_cv_path_LD="$ac_dir/$ac_prog"
472 # Check to see if the program is GNU ld. I'd rather use --version,
473 # but apparently some GNU ld's only accept -v.
474 # Break only if it was the GNU/non-GNU ld that we prefer.
475 if "$ac_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
476 test "$with_gnu_ld" != no && break
477 else
478 test "$with_gnu_ld" != yes && break
479 fi
480 fi
481 done
482 IFS="$ac_save_ifs"
483else
484 ac_cv_path_LD="$LD" # Let the user override the test with a path.
485fi])
486LD="$ac_cv_path_LD"
487if test -n "$LD"; then
488 AC_MSG_RESULT($LD)
489else
490 AC_MSG_RESULT(no)
491fi
492test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
493AC_SUBST(LD)
494AM_PROG_LD_GNU
495])
496
497AC_DEFUN(AM_PROG_LD_GNU,
498[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
499[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
500if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
501 ac_cv_prog_gnu_ld=yes
502else
503 ac_cv_prog_gnu_ld=no
504fi])
505])
506
507# AM_PROG_NM - find the path to a BSD-compatible name lister
508AC_DEFUN(AM_PROG_NM,
509[AC_MSG_CHECKING([for BSD-compatible nm])
510AC_CACHE_VAL(ac_cv_path_NM,
511[case "$NM" in
5798fd97 512/* | [A-Za-z]:\\*)
5aadf8c1
MG
513 ac_cv_path_NM="$NM" # Let the user override the test with a path.
514 ;;
515*)
516 IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
5798fd97
MD
517 for ac_dir in /usr/ucb /usr/ccs/bin $PATH /bin; do
518 test -z "$ac_dir" && ac_dir=.
5aadf8c1
MG
519 if test -f $ac_dir/nm; then
520 # Check to see if the nm accepts a BSD-compat flag.
5798fd97
MD
521 # Adding the `sed 1q' prevents false positives on HP-UX, which says:
522 # nm: unknown option "B" ignored
523 if ($ac_dir/nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
5aadf8c1 524 ac_cv_path_NM="$ac_dir/nm -B"
5798fd97 525 elif ($ac_dir/nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then
5aadf8c1
MG
526 ac_cv_path_NM="$ac_dir/nm -p"
527 else
528 ac_cv_path_NM="$ac_dir/nm"
529 fi
530 break
531 fi
532 done
533 IFS="$ac_save_ifs"
534 test -z "$ac_cv_path_NM" && ac_cv_path_NM=nm
535 ;;
536esac])
537NM="$ac_cv_path_NM"
538AC_MSG_RESULT([$NM])
539AC_SUBST(NM)
540])
541
3a629497
JB
542dnl
543dnl CY_AC_WITH_THREADS determines which thread library the user intends
544dnl to put underneath guile. Pass it the path to find the guile top-level
545dnl source directory. Eg CY_AC_WITH_THREADS(../..) for tcl/unix.
546dnl
547
548AC_DEFUN([CY_AC_WITH_THREADS],[
549AC_CACHE_CHECK("threads package type",cy_cv_threads_package,[
550AC_CACHE_VAL(cy_cv_threads_cflags,[
551AC_CACHE_VAL(cy_cv_threads_libs,[
552use_threads=no;
553AC_ARG_WITH(threads,[ --with-threads thread interface],
554 use_threads=$withval, use_threads=no)
555test -n "$use_threads" || use_threads=qt
556threads_package=unknown
557if test "$use_threads" != no; then
558dnl
559dnl Test for the qt threads package - used for cooperative threads
560dnl This may not necessarily be built yet - so just check for the
561dnl header files.
562dnl
563 if test "$use_threads" = yes || test "$use_threads" = qt; then
ec06dd30
AG
564 # Look for qt in source directory.
565 if test -f $srcdir/qt/qt.c; then
566 qtsrcdir="`(cd $srcdir; pwd)`/qt"
3a629497 567 threads_package=COOP
ec06dd30 568 cy_cv_threads_cflags="-I$qtsrcdir -I../qt"
5aadf8c1 569 cy_cv_threads_libs="../qt/libqthreads.a"
3a629497
JB
570 fi
571 else
572 if test -f $use_threads/qt.c; then
573 # FIXME seems as though we should try to use an installed qt here.
574 threads_package=COOP
575 cy_cv_threads_cflags="-I$use_threads -I../qt"
5aadf8c1 576 cy_cv_threads_libs="../qt/libqthreads.a"
3a629497
JB
577 fi
578 fi
579 if test "$use_threads" = pthreads; then
580 # Look for pthreads in srcdir. See above to understand why
581 # we always set threads_package.
582 if test -f $srcdir/../../pthreads/pthreads/queue.c \
583 || test -f $srcdir/../pthreads/pthreads/queue.c; then
584 threads_package=MIT
585 cy_cv_threads_cflags="-I$srcdir/../../pthreads/include"
586 cy_cv_threads_libs="-L../../pthreads/lib -lpthread"
587 fi
588 fi
589 saved_CPP="$CPPFLAGS"
590 saved_LD="$LDFLAGS"
591 saved_LIBS="$LIBS"
592 if test "$threads_package" = unknown; then
593dnl
594dnl Test for the FSU threads package
595dnl
596 CPPFLAGS="-I$use_threads/include"
597 LDFLAGS="-L$use_threads/lib"
598 LIBS="-lgthreads -lmalloc"
599 AC_TRY_LINK([#include <pthread.h>],[
600pthread_equal(NULL,NULL);
601], threads_package=FSU)
602 fi
603 if test "$threads_package" = unknown; then
604dnl
605dnl Test for the MIT threads package
606dnl
607 LIBS="-lpthread"
608 AC_TRY_LINK([#include <pthread.h>],[
609pthread_equal(NULL,NULL);
610], threads_package=MIT)
611 fi
612 if test "$threads_package" = unknown; then
613dnl
614dnl Test for the PCthreads package
615dnl
616 LIBS="-lpthreads"
617 AC_TRY_LINK([#include <pthread.h>],[
618pthread_equal(NULL,NULL);
619], threads_package=PCthreads)
620 fi
621dnl
622dnl Set the appropriate flags!
623dnl
624 cy_cv_threads_cflags="$CPPFLAGS $cy_cv_threads_cflags"
3a629497
JB
625 cy_cv_threads_package=$threads_package
626 CPPFLAGS="$saved_CPP"
627 LDFLAGS="$saved_LD"
628 LIBS="$saved_LIBS"
629 if test "$threads_package" = unknown; then
630 AC_MSG_ERROR("cannot find thread library installation")
631 fi
632fi
633])
634])
635],
636dnl
637dnl Set flags according to what is cached.
638dnl
639CPPFLAGS="$cy_cv_threads_cflags"
640LIBS="$cy_cv_threads_libs"
641)
642])
643