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