*** 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,
af8865f7
JB
23 [ --enable-dynamic-linking Include support for dynamic linking],,
24 enable_dynamic_linking=yes)
3a629497
JB
25
26AC_ARG_ENABLE(guile-debug,
27[ --enable-guile-debug Include internal debugging functions])
28if test "$enableval" = y || test "$enableval" = yes; then
29 AC_DEFINE(GUILE_DEBUG)
30fi
31
32#--------------------------------------------------------------------
33
34AC_PROG_CC
35AC_PROG_CPP
36AM_PROG_LIBTOOL
37
38AC_AIX
39AC_ISC_POSIX
40AC_MINIX
41
42AC_C_CONST
43
44AC_HEADER_STDC
45AC_HEADER_DIRENT
46AC_HEADER_TIME
47AC_HEADER_SYS_WAIT
e9cd5d2f 48AC_CHECK_HEADERS(libc.h limits.h malloc.h memory.h string.h regex.h rxposix.h rx/rxposix.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)
3a629497
JB
49GUILE_HEADER_LIBC_WITH_UNISTD
50
51AC_TYPE_GETGROUPS
52AC_TYPE_SIGNAL
53AC_TYPE_MODE_T
54
5852c051
JB
55AC_CHECK_LIB(m, main)
56AC_CHECK_FUNC(gethostbyname)
57if test $ac_cv_func_gethostbyname = no; then
58 AC_CHECK_LIB(nsl, gethostbyname)
59fi
60AC_CHECK_FUNC(connect)
61if test $ac_cv_func_connect = no; then
62 AC_CHECK_LIB(socket, connect)
63fi
64
90fcac06
JB
65# Checks for dynamic linking
66
5852c051
JB
67if test "$enable_dynamic_linking" = "yes"; then
68
69AC_CHECK_LIB(dl,dlopen)
70if test "$ac_cv_lib_dl_dlopen" = "yes"; then
5852c051
JB
71 AC_DEFINE(DYNAMIC_LINKING)
72else
73AC_CHECK_LIB(dld,dld_link)
74if test "$ac_cv_lib_dld_dld_link" = "yes"; then
5852c051
JB
75 AC_DEFINE(DYNAMIC_LINKING)
76else
77AC_CHECK_FUNCS(shl_load)
78if test "$ac_cv_func_shl_load" = "yes"; then
79 AC_DEFINE(DYNAMIC_LINKING)
a4995389
MV
80else
81AC_CHECK_FUNCS(dlopen)
82if test "$ac_cv_func_dlopen" = "yes"; then
83 AC_DEFINE(DYNAMIC_LINKING)
84fi
5852c051
JB
85fi
86fi
87fi
88
89fi
90
91
e1a191a8
GH
92AC_CHECK_FUNCS(ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
93
da88f0cb
JB
94dnl <GNU-WIN32 hacks>
95
96AC_CHECK_HEADER(sys/un.h, have_sys_un_h=1)
97if test -n "$have_sys_un_h" ; then
98AC_DEFINE(HAVE_UNIX_DOMAIN_SOCKETS)
99fi
100
101AC_CHECK_FUNCS(socketpair getgroups setpwent pause tzset)
102
f4e5b810
GH
103dnl I don't know what this prefixing of cygwin32_ is for.
104dnl scmconfig.h wasn't updated with the test results.
105dnl so use AC_CHECK_FUNCS for now.
106
107dnl how about:
108dnl save confdefs.h
109dnl if test $ac_cv_cigwin = yes; then
110dnl modify confdefs.h
111dnl fi
112dnl AC_CHECK_FUNCS...
113dnl restore confdefs.h
114
115dnl cp confdefs.h confdefs.h.bak
116dnl for func in sethostent endhostent getnetent setnetent endnetent getprotoent endprotoent getservent endservent getnetbyaddr getnetbyname inet_lnaof inet_makeaddr inet_netof ; do
117dnl cp confdefs.h.bak confdefs.h
118dnl cat >> confdefs.h << EOF
119dnl #ifdef __CYGWIN32__
120dnl #define $func cygwin32_$func
121dnl #endif
122dnl EOF
123dnl AC_CHECK_FUNC($func)
124dnl done
125dnl cp confdefs.h.bak confdefs.h
126
127AC_CHECK_FUNCS(sethostent endhostent getnetent setnetent endnetent getprotoent endprotoent getservent endservent getnetbyaddr getnetbyname inet_lnaof inet_makeaddr inet_netof)
da88f0cb
JB
128
129dnl </GNU-WIN32 hacks>
130
e1a191a8
GH
131AC_CACHE_CHECK([for restartable system calls], scm_cv_restarts,
132 if test $ac_cv_func_sigaction = yes; then
133 [AC_TRY_COMPILE([#include <signal.h>],
134 [int a = SA_RESTART],
135 scm_cv_restarts=yes,
136 scm_cv_restarts=no)]
137 else
138 scm_cv_restarts=no
139 fi)
140if test $scm_cv_restarts = yes; then
141 AC_DEFINE(HAVE_RESTARTS)
142fi
143
e9cd5d2f
MD
144if test "$ac_cv_header_regex_h" = yes ||
145 test "$ac_cv_header_rxposix_h" = yes ||
146 test "$ac_cv_header_rx_rxposix_h" = yes; then
0b89e78e
MD
147 GUILE_NAMED_CHECK_FUNC(regcomp, norx, [LIBOBJS="regex-posix.o $LIBOBJS"],
148 [AC_CHECK_LIB(rx, main)
149 GUILE_NAMED_CHECK_FUNC(regcomp, rx, [LIBOBJS="regex-posix.o $LIBOBJS"])]
150 )
e9cd5d2f
MD
151 dnl The following should not be necessary, but for some reason
152 dnl autoheader misses it if we don't include it!
0b89e78e
MD
153 if test "$ac_cv_func_regcomp_norx" = yes ||
154 test "$ac_cv_func_regcomp_rx" = yes; then
e9cd5d2f
MD
155 AC_DEFINE(HAVE_REGCOMP)
156 fi
da88f0cb 157fi
8e1bfcd0 158
3a629497
JB
159AC_REPLACE_FUNCS(inet_aton putenv strerror)
160
4a5fa91c
TP
161# When testing for the presence of alloca, we need to add alloca.o
162# explicitly to LIBOBJS to make sure that it is translated to
163# `alloca.lo' for libtool later on. This can and should be done more cleanly.
3a629497 164AC_FUNC_ALLOCA
4a5fa91c 165if test "$ALLOCA" = "alloca.o"; then LIBOBJS="alloca.o $LIBOBJS"; fi
3a629497
JB
166
167AC_STRUCT_ST_RDEV
168AC_STRUCT_ST_BLKSIZE
075edbde
JB
169
170# We could use AC_STRUCT_ST_BLOCKS here, but that adds fileblocks.o to
171# LIBOBJS, which we don't need. This seems more direct.
172AC_CACHE_CHECK([for st_blocks in struct stat], ac_cv_struct_st_blocks,
173[AC_TRY_COMPILE([#include <sys/types.h>
174#include <sys/stat.h>], [struct stat s; s.st_blocks;],
175ac_cv_struct_st_blocks=yes, ac_cv_struct_st_blocks=no)])
176if test $ac_cv_struct_st_blocks = yes; then
177 AC_DEFINE(HAVE_ST_BLOCKS)
178fi
179
3a629497
JB
180AC_STRUCT_TIMEZONE
181GUILE_STRUCT_UTIMBUF
182
3a629497
JB
183#--------------------------------------------------------------------
184#
185# Which way does the stack grow?
186#
187#--------------------------------------------------------------------
188
189AC_TRY_RUN(aux (l) unsigned long l;
190 { int x; exit (l >= ((unsigned long)&x)); }
191 main () { int q; aux((unsigned long)&q); },
192 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
193
194
195AC_TRY_RUN(main () { exit (sizeof(float) != sizeof(long)); },
196 AC_DEFINE(SCM_SINGLES),,AC_DEFINE(SCM_SINGLES)
197 AC_MSG_WARN(Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in))
198
199AC_MSG_CHECKING(for struct linger)
200AC_CACHE_VAL(scm_cv_struct_linger,
201 AC_TRY_COMPILE([
202#include <sys/types.h>
203#include <sys/socket.h>],
204 [struct linger lgr; lgr.l_linger = 100],
205 scm_cv_struct_linger="yes",
206 scm_cv_struct_linger="no"))
207AC_MSG_RESULT($scm_cv_struct_linger)
208if test $scm_cv_struct_linger = yes; then
209 AC_DEFINE(HAVE_STRUCT_LINGER)
210fi
211
212#--------------------------------------------------------------------
213#
214# How can you violate a stdio abstraction by setting a stream's fd?
215#
216#--------------------------------------------------------------------
217
218AC_MSG_CHECKING(how to set a stream file descriptor)
219AC_CACHE_VAL(scm_cv_fd_setter,
220 AC_TRY_COMPILE([#include <stdio.h>],
221 [stdout->_file = 1],
222 scm_cv_fd_setter="_file",
223 AC_TRY_COMPILE([#include <stdio.h>],
224 [stdout->_fileno = 1],
225 scm_cv_fd_setter="_fileno",
226 scm_cv_fd_setter="")))
227
228if test "$scm_cv_fd_setter"; then
229 AC_MSG_RESULT($scm_cv_fd_setter)
230 AC_DEFINE_UNQUOTED(FD_SETTER, $scm_cv_fd_setter)
231else
232 AC_MSG_RESULT(we couldn't do it!)
233fi
234
235#--------------------------------------------------------------------
236# How to find out whether a FILE structure contains buffered data.
237# From Tk we have the following list:
238# _cnt: Most UNIX systems
239# __cnt: HPUX
240# _r: BSD
241# readCount: Sprite
242# Or, in GNU libc there are two fields, _gptr and _egptr, which
243# have to be compared.
244# These can also be known as _IO_read_ptr and _IO_read_end.
245#--------------------------------------------------------------------
246
247AC_MSG_CHECKING(how to get buffer char count from FILE structure)
248AC_CACHE_VAL(scm_cv_struct_file_count,
249 AC_TRY_COMPILE([#include <stdio.h>],
250 [FILE *f = stdin; f->_cnt = 0],
251 scm_cv_struct_file_count="_cnt",
252 AC_TRY_COMPILE([#include <stdio.h>],
253 [FILE *f = stdin; f->_r = 0],
254 scm_cv_struct_file_count="_r",
255 AC_TRY_COMPILE([#include <stdio.h>],
256 [FILE *f = stdin; f->readCount = 0],
257 scm_cv_struct_file_count="readCount",
258 scm_cv_struct_file_count=""))))
259if test "$scm_cv_struct_file_count"; then
260 AC_MSG_RESULT($scm_cv_struct_file_count)
261 AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
262else
263AC_CACHE_VAL(scm_cv_struct_file_gptr,
264 AC_TRY_COMPILE([#include <stdio.h>],
265 [FILE *f = stdin; f->_gptr = f->egptr;],
266 scm_cv_struct_file_gptr=1,
267 scm_cv_struct_file_gptr=""))
268if test "$scm_cv_struct_gptr"; then
269 AC_MSG_RESULT(gptr)
270 AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
271else
272AC_CACHE_VAL(scm_cv_struct_file_readptr,
273 AC_TRY_COMPILE([#include <stdio.h>],
274 [FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
275 scm_cv_struct_file_readptr=1))
276if test "$scm_cv_struct_file_readptr"; then
277 AC_MSG_RESULT(read_ptr)
278 AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
279else
280 AC_MSG_RESULT(we couldn't do it!)
281fi
282fi
283fi
284
285#--------------------------------------------------------------------
286#
287# Flags for thread support
288#
289#--------------------------------------------------------------------
290
291CY_AC_WITH_THREADS
292CFLAGS="$CFLAGS $cy_cv_threads_cflags"
293THREAD_LIBS="$cy_cv_threads_libs"
294AC_SUBST(THREAD_LIBS)
295
296dnl
297dnl Set the appropriate flags!
298dnl
299if test "$cy_cv_threads_package" = FSU; then
300 AC_DEFINE(USE_FSU_PTHREADS, 1)
301 else if test "$cy_cv_threads_package" = COOP; then
302 AC_DEFINE(USE_COOP_THREADS, 1)
303 else if test "$cy_cv_threads_package" = MIT; then
304 AC_DEFINE(USE_MIT_PTHREADS, 1)
305 else if test "$cy_cv_threads_package" = PCthreads; then
306 AC_DEFINE(USE_PCTHREADS_PTHREADS, 1)
307 else if test "$cy_cv_threads_package" = unknown; then
308 AC_MSG_ERROR("cannot find threads installation")
309 fi
310 fi
311 fi
0f2d19dd 312 fi
3a629497
JB
313fi
314
315if test "$cy_cv_threads_package" != ""; then
316 AC_DEFINE(USE_THREADS)
317 LIBOBJS="$LIBOBJS threads.o"
318fi
319
320## If we're using GCC, ask for aggressive warnings.
321case "$GCC" in
322 yes ) CFLAGS="$CFLAGS -Wall -Wpointer-arith" ;;
323esac
324
325AC_PROG_AWK
326
327## If we're creating a shared library (using libtool!), then we'll
328## need to generate a list of .lo files corresponding to the .o files
329## given in LIBOBJS. We'll call it LIBLOBJS.
330LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
331
7c86ae05
JB
332AC_SUBST(GUILE_MAJOR_VERSION)
333AC_SUBST(GUILE_MINOR_VERSION)
334AC_SUBST(GUILE_VERSION)
335
336dnl timestamping the interpreter and scheme libraries:
337dnl
338dnl Help us notice when we're running one version of the Guile
339dnl interpreter against a different version of the ice-9 Scheme code.
340dnl This will definitely detect version skew due to differing
341dnl snapshots and releases, but may not catch skew for the developers.
342dnl Hopefully it will not detect skew when there is none; if that
343dnl happens, the warnings will be useless, and we should remove this.
344GUILE_STAMP="`date`"
345AC_SUBST(GUILE_STAMP)
3a629497
JB
346
347AC_SUBST(AWK)
348AC_SUBST(LIBLOBJS)
349
350
351dnl ======================================================================
352dnl configuration for the Qt package
353dnl ======================================================================
354
355threads_enabled=false
356if test "$cy_cv_threads_package" = COOP; then
357 threads_enabled=true
358fi
359
360# Determine the host we are working on
361AC_CANONICAL_HOST
362
77c7a433
JB
363# How can we refer to the qt source directory from within the qt build
364# directory? For headers, we can rely on the fact that the qt src
365# directory appears in the #include path.
366
367qtsrcdir="`(cd $srcdir; pwd)`/qt"
368
3a629497
JB
369changequote(,)dnl We use [ and ] in a regexp in the case
370case "$host" in
371i[3456]86-*-*)
77c7a433
JB
372 qtmds_s=$qtsrcdir/md/i386.s
373 qtmd_h=md/i386.h
374 qtmdc_c=$qtsrcdir/md/null.c
3a629497 375 ;;
894e484e 376mips-sgi-irix[56]*)
77c7a433
JB
377 qtmds_s=$qtsrcdir/md/mips-irix5.s
378 qtmd_h=md/mips.h
379 qtmdc_c=$qtsrcdir/md/null.c
380 qtdmdb_s=$qtsrcdir/md/mips_b.s
3a629497
JB
381 ;;
382mips-*-*)
77c7a433
JB
383 qtmds_s=$qtsrcdir/md/mips.s
384 qtmd_h=md/mips.h
385 qtmdc_c=$qtsrcdir/md/null.c
386 qtdmdb_s=$qtsrcdir/md/mips_b.s
3a629497 387 ;;
2a18e748 388sparc-*-sunos*)
77c7a433
JB
389 qtmd_h=md/sparc.h
390 qtmdc_c=$qtsrcdir/md/null.c
2a18e748
JB
391 qtmds_s=$qtsrcdir/md/_sparc.s
392 qtdmdb_s=$qtsrcdir/md/_sparc_b.s
3a629497
JB
393 ;;
394sparc-*-*)
77c7a433
JB
395 qtmd_h=md/sparc.h
396 qtmdc_c=$qtsrcdir/md/null.c
2a18e748
JB
397 qtmds_s=$qtsrcdir/md/sparc.s
398 qtdmdb_s=$qtsrcdir/md/sparc_b.s
3a629497 399 ;;
757cfb94
MD
400alpha-*-*)
401 qtmd_h=md/axp.h
402 qtmdc_c=$qtsrcdir/md/null.c
403 qtmds_s=$qtsrcdir/md/axp.s
404 qtdmdb_s=$qtsrcdir/md/axp_b.s
405 ;;
3a629497
JB
406*)
407 echo "Unknown configuration; threads package disabled"
408 threads_enabled=false
409 ;;
410esac
411changequote([, ])
412
413
414if $threads_enabled; then
415 target_libs=libqt.a
416else
417 target_libs=
418fi
419
420# Give the Makefile the names of the object files that will be
421# generated by compiling $qtmdc_c and $qtmds_s.
422qtmdc_o="`echo ${qtmdc_c} | sed -e 's:^.*/::' | sed -e 's:\.c$:\.o:'`"
423qtmds_o="`echo ${qtmds_s} | sed -e 's:^.*/::' | sed -e 's:\.s$:\.o:'`"
424
425AC_SUBST(target_libs)
426AC_SUBST(qtmd_h)
427AC_SUBST(qtmdc_c)
428AC_SUBST(qtmdc_o)
429AC_SUBST(qtmds_s)
430AC_SUBST(qtmds_o)
431AC_SUBST(qtmdb_s)
0f2d19dd 432
9ba3d403 433AC_OUTPUT([Makefile libguile/Makefile libguile/guile-snarf ice-9/Makefile ice-9/version.scm qt/Makefile qt/qt.h qt/md/Makefile qt/time/Makefile build/Makefile], [chmod +x libguile/guile-snarf])
0f2d19dd 434
3a629497
JB
435dnl Local Variables:
436dnl comment-start: "dnl "
437dnl comment-end: ""
438dnl comment-start-skip: "\\bdnl\\b\\s *"
439dnl End: