*** empty log message ***
[bpt/guile.git] / configure.in
CommitLineData
733943b9 1dnl Process this file with autoconf to produce configure.
0f2d19dd 2AC_INIT(Makefile.in)
2d26def0 3. $srcdir/GUILE-VERSION
3a629497 4AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
15ae1bee 5AM_MAINTAINER_MODE
3a629497 6AM_CONFIG_HEADER(libguile/scmconfig.h)
2d26def0 7
3a629497
JB
8#--------------------------------------------------------------------
9#
10# User options
11#
12#--------------------------------------------------------------------
86789f9b 13
3a629497
JB
14AC_ARG_ENABLE(debug,
15[ --disable-debug Don't include debugging support])
16if test "$enableval" != n && test "$enableval" != no; then
17 AC_DEFINE(DEBUG_EXTENSIONS)
18 AC_DEFINE(READER_EXTENSIONS)
19 LIBOBJS="backtrace.o stacks.o debug.o srcprop.o $LIBOBJS"
20fi
21
22AC_ARG_ENABLE(dynamic-linking,
23 [ --enable-dynamic-linking Include support for dynamic linking])
24
25AC_ARG_ENABLE(guile-debug,
26[ --enable-guile-debug Include internal debugging functions])
27if test "$enableval" = y || test "$enableval" = yes; then
28 AC_DEFINE(GUILE_DEBUG)
29fi
30
31#--------------------------------------------------------------------
32
33AC_PROG_CC
34AC_PROG_CPP
35AM_PROG_LIBTOOL
36
37AC_AIX
38AC_ISC_POSIX
39AC_MINIX
40
41AC_C_CONST
42
43AC_HEADER_STDC
44AC_HEADER_DIRENT
45AC_HEADER_TIME
46AC_HEADER_SYS_WAIT
47AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h sys/ioctl.h sys/select.h sys/time.h sys/timeb.h sys/times.h sys/types.h sys/utime.h time.h unistd.h utime.h)
48GUILE_HEADER_LIBC_WITH_UNISTD
49
50AC_TYPE_GETGROUPS
51AC_TYPE_SIGNAL
52AC_TYPE_MODE_T
53
54AC_CHECK_FUNCS(ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
55
8e1bfcd0
JB
56AC_CHECK_FUNCS(regcomp, [LIBOBJS="regex-posix.o $LIBOBJS"])
57
3a629497
JB
58AC_REPLACE_FUNCS(inet_aton putenv strerror)
59
60AC_FUNC_ALLOCA
61
62AC_STRUCT_ST_RDEV
63AC_STRUCT_ST_BLKSIZE
075edbde
JB
64
65# We could use AC_STRUCT_ST_BLOCKS here, but that adds fileblocks.o to
66# LIBOBJS, which we don't need. This seems more direct.
67AC_CACHE_CHECK([for st_blocks in struct stat], ac_cv_struct_st_blocks,
68[AC_TRY_COMPILE([#include <sys/types.h>
69#include <sys/stat.h>], [struct stat s; s.st_blocks;],
70ac_cv_struct_st_blocks=yes, ac_cv_struct_st_blocks=no)])
71if test $ac_cv_struct_st_blocks = yes; then
72 AC_DEFINE(HAVE_ST_BLOCKS)
73fi
74
3a629497
JB
75AC_STRUCT_TIMEZONE
76GUILE_STRUCT_UTIMBUF
77
78# Checks for dynamic linking
79
80xtra_PLUGIN_guile_libs=""
81AC_SUBST(xtra_PLUGIN_guile_libs)
82
83AC_CHECK_LIB(m, main)
075edbde
JB
84AC_CHECK_FUNC(gethostbyname)
85if test $ac_cv_func_gethostbyname = no; then
86 AC_CHECK_LIB(nsl, gethostbyname)
87fi
88AC_CHECK_FUNC(connect)
89if test $ac_cv_func_connect = no; then
90 AC_CHECK_LIB(socket, connect)
91fi
3a629497
JB
92
93if test "$enable_dynamic_linking" = "yes"; then
94
95AC_CHECK_LIB(dl,dlopen)
96if test "$ac_cv_lib_dl_dlopen" = "yes"; then
97 xtra_PLUGIN_guile_libs="-lguile -ldl"
98 AC_DEFINE(DYNAMIC_LINKING)
99else
100AC_CHECK_LIB(dld,dld_link)
101if test "$ac_cv_lib_dld_dld_link" = "yes"; then
102 xtra_PLUGIN_guile_libs="-lguile -ldld"
103 AC_DEFINE(DYNAMIC_LINKING)
104else
105AC_CHECK_FUNCS(shl_load)
106if test "$ac_cv_func_shl_load" = "yes"; then
107 AC_DEFINE(DYNAMIC_LINKING)
108fi
109fi
110fi
111
112fi
113
114#--------------------------------------------------------------------
115#
116# Which way does the stack grow?
117#
118#--------------------------------------------------------------------
119
120AC_TRY_RUN(aux (l) unsigned long l;
121 { int x; exit (l >= ((unsigned long)&x)); }
122 main () { int q; aux((unsigned long)&q); },
123 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
124
125
126AC_TRY_RUN(main () { exit (sizeof(float) != sizeof(long)); },
127 AC_DEFINE(SCM_SINGLES),,AC_DEFINE(SCM_SINGLES)
128 AC_MSG_WARN(Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in))
129
130AC_MSG_CHECKING(for struct linger)
131AC_CACHE_VAL(scm_cv_struct_linger,
132 AC_TRY_COMPILE([
133#include <sys/types.h>
134#include <sys/socket.h>],
135 [struct linger lgr; lgr.l_linger = 100],
136 scm_cv_struct_linger="yes",
137 scm_cv_struct_linger="no"))
138AC_MSG_RESULT($scm_cv_struct_linger)
139if test $scm_cv_struct_linger = yes; then
140 AC_DEFINE(HAVE_STRUCT_LINGER)
141fi
142
143#--------------------------------------------------------------------
144#
145# How can you violate a stdio abstraction by setting a stream's fd?
146#
147#--------------------------------------------------------------------
148
149AC_MSG_CHECKING(how to set a stream file descriptor)
150AC_CACHE_VAL(scm_cv_fd_setter,
151 AC_TRY_COMPILE([#include <stdio.h>],
152 [stdout->_file = 1],
153 scm_cv_fd_setter="_file",
154 AC_TRY_COMPILE([#include <stdio.h>],
155 [stdout->_fileno = 1],
156 scm_cv_fd_setter="_fileno",
157 scm_cv_fd_setter="")))
158
159if test "$scm_cv_fd_setter"; then
160 AC_MSG_RESULT($scm_cv_fd_setter)
161 AC_DEFINE_UNQUOTED(FD_SETTER, $scm_cv_fd_setter)
162else
163 AC_MSG_RESULT(we couldn't do it!)
164fi
165
166#--------------------------------------------------------------------
167# How to find out whether a FILE structure contains buffered data.
168# From Tk we have the following list:
169# _cnt: Most UNIX systems
170# __cnt: HPUX
171# _r: BSD
172# readCount: Sprite
173# Or, in GNU libc there are two fields, _gptr and _egptr, which
174# have to be compared.
175# These can also be known as _IO_read_ptr and _IO_read_end.
176#--------------------------------------------------------------------
177
178AC_MSG_CHECKING(how to get buffer char count from FILE structure)
179AC_CACHE_VAL(scm_cv_struct_file_count,
180 AC_TRY_COMPILE([#include <stdio.h>],
181 [FILE *f = stdin; f->_cnt = 0],
182 scm_cv_struct_file_count="_cnt",
183 AC_TRY_COMPILE([#include <stdio.h>],
184 [FILE *f = stdin; f->_r = 0],
185 scm_cv_struct_file_count="_r",
186 AC_TRY_COMPILE([#include <stdio.h>],
187 [FILE *f = stdin; f->readCount = 0],
188 scm_cv_struct_file_count="readCount",
189 scm_cv_struct_file_count=""))))
190if test "$scm_cv_struct_file_count"; then
191 AC_MSG_RESULT($scm_cv_struct_file_count)
192 AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
193else
194AC_CACHE_VAL(scm_cv_struct_file_gptr,
195 AC_TRY_COMPILE([#include <stdio.h>],
196 [FILE *f = stdin; f->_gptr = f->egptr;],
197 scm_cv_struct_file_gptr=1,
198 scm_cv_struct_file_gptr=""))
199if test "$scm_cv_struct_gptr"; then
200 AC_MSG_RESULT(gptr)
201 AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
202else
203AC_CACHE_VAL(scm_cv_struct_file_readptr,
204 AC_TRY_COMPILE([#include <stdio.h>],
205 [FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
206 scm_cv_struct_file_readptr=1))
207if test "$scm_cv_struct_file_readptr"; then
208 AC_MSG_RESULT(read_ptr)
209 AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
210else
211 AC_MSG_RESULT(we couldn't do it!)
212fi
213fi
214fi
215
216#--------------------------------------------------------------------
217#
218# Flags for thread support
219#
220#--------------------------------------------------------------------
221
222CY_AC_WITH_THREADS
223CFLAGS="$CFLAGS $cy_cv_threads_cflags"
224THREAD_LIBS="$cy_cv_threads_libs"
225AC_SUBST(THREAD_LIBS)
226
227dnl
228dnl Set the appropriate flags!
229dnl
230if test "$cy_cv_threads_package" = FSU; then
231 AC_DEFINE(USE_FSU_PTHREADS, 1)
232 else if test "$cy_cv_threads_package" = COOP; then
233 AC_DEFINE(USE_COOP_THREADS, 1)
234 else if test "$cy_cv_threads_package" = MIT; then
235 AC_DEFINE(USE_MIT_PTHREADS, 1)
236 else if test "$cy_cv_threads_package" = PCthreads; then
237 AC_DEFINE(USE_PCTHREADS_PTHREADS, 1)
238 else if test "$cy_cv_threads_package" = unknown; then
239 AC_MSG_ERROR("cannot find threads installation")
240 fi
241 fi
242 fi
0f2d19dd 243 fi
3a629497
JB
244fi
245
246if test "$cy_cv_threads_package" != ""; then
247 AC_DEFINE(USE_THREADS)
248 LIBOBJS="$LIBOBJS threads.o"
249fi
250
251## If we're using GCC, ask for aggressive warnings.
252case "$GCC" in
253 yes ) CFLAGS="$CFLAGS -Wall -Wpointer-arith" ;;
254esac
255
256AC_PROG_AWK
257
258## If we're creating a shared library (using libtool!), then we'll
259## need to generate a list of .lo files corresponding to the .o files
260## given in LIBOBJS. We'll call it LIBLOBJS.
261LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
262
263AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, "$GUILE_MAJOR_VERSION")
264AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, "$GUILE_MINOR_VERSION")
265AC_DEFINE_UNQUOTED(GUILE_VERSION, "$GUILE_VERSION")
266
267AC_SUBST(AWK)
268AC_SUBST(LIBLOBJS)
269
270
271dnl ======================================================================
272dnl configuration for the Qt package
273dnl ======================================================================
274
275threads_enabled=false
276if test "$cy_cv_threads_package" = COOP; then
277 threads_enabled=true
278fi
279
280# Determine the host we are working on
281AC_CANONICAL_HOST
282
77c7a433
JB
283# How can we refer to the qt source directory from within the qt build
284# directory? For headers, we can rely on the fact that the qt src
285# directory appears in the #include path.
286
287qtsrcdir="`(cd $srcdir; pwd)`/qt"
288
3a629497
JB
289changequote(,)dnl We use [ and ] in a regexp in the case
290case "$host" in
291i[3456]86-*-*)
77c7a433
JB
292 qtmds_s=$qtsrcdir/md/i386.s
293 qtmd_h=md/i386.h
294 qtmdc_c=$qtsrcdir/md/null.c
3a629497
JB
295 ;;
296mips-sgi-irix5*)
77c7a433
JB
297 qtmds_s=$qtsrcdir/md/mips-irix5.s
298 qtmd_h=md/mips.h
299 qtmdc_c=$qtsrcdir/md/null.c
300 qtdmdb_s=$qtsrcdir/md/mips_b.s
3a629497
JB
301 ;;
302mips-*-*)
77c7a433
JB
303 qtmds_s=$qtsrcdir/md/mips.s
304 qtmd_h=md/mips.h
305 qtmdc_c=$qtsrcdir/md/null.c
306 qtdmdb_s=$qtsrcdir/md/mips_b.s
3a629497 307 ;;
2a18e748 308sparc-*-sunos*)
77c7a433
JB
309 qtmd_h=md/sparc.h
310 qtmdc_c=$qtsrcdir/md/null.c
2a18e748
JB
311 qtmds_s=$qtsrcdir/md/_sparc.s
312 qtdmdb_s=$qtsrcdir/md/_sparc_b.s
3a629497
JB
313 ;;
314sparc-*-*)
77c7a433
JB
315 qtmd_h=md/sparc.h
316 qtmdc_c=$qtsrcdir/md/null.c
2a18e748
JB
317 qtmds_s=$qtsrcdir/md/sparc.s
318 qtdmdb_s=$qtsrcdir/md/sparc_b.s
3a629497
JB
319 ;;
320*)
321 echo "Unknown configuration; threads package disabled"
322 threads_enabled=false
323 ;;
324esac
325changequote([, ])
326
327
328if $threads_enabled; then
329 target_libs=libqt.a
330else
331 target_libs=
332fi
333
334# Give the Makefile the names of the object files that will be
335# generated by compiling $qtmdc_c and $qtmds_s.
336qtmdc_o="`echo ${qtmdc_c} | sed -e 's:^.*/::' | sed -e 's:\.c$:\.o:'`"
337qtmds_o="`echo ${qtmds_s} | sed -e 's:^.*/::' | sed -e 's:\.s$:\.o:'`"
338
339AC_SUBST(target_libs)
340AC_SUBST(qtmd_h)
341AC_SUBST(qtmdc_c)
342AC_SUBST(qtmdc_o)
343AC_SUBST(qtmds_s)
344AC_SUBST(qtmds_o)
345AC_SUBST(qtmdb_s)
0f2d19dd 346
3a629497 347AC_OUTPUT([Makefile libguile/Makefile libguile/guile-snarf ice-9/Makefile qt/Makefile qt/qt.h qt/md/Makefile qt/time/Makefile], [chmod +x libguile/guile-snarf])
0f2d19dd 348
3a629497
JB
349dnl Local Variables:
350dnl comment-start: "dnl "
351dnl comment-end: ""
352dnl comment-start-skip: "\\bdnl\\b\\s *"
353dnl End: