2 AM_CONFIG_HEADER(scmconfig.h)
3 AM_INIT_GUILE_MODULE(libguile)
5 #--------------------------------------------------------------------
9 #--------------------------------------------------------------------
12 [ --disable-debug Don't include debugging support])
13 if test "$enableval" != n && test "$enableval" != no; then
14 AC_DEFINE(DEBUG_EXTENSIONS)
15 AC_DEFINE(READER_EXTENSIONS)
16 LIBOBJS="backtrace.o stacks.o debug.o srcprop.o $LIBOBJS"
19 AC_ARG_ENABLE(dynamic-linking,
20 [ --enable-dynamic-linking Include support for dynamic linking])
22 #--------------------------------------------------------------------
40 AC_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)
41 GUILE_HEADER_LIBC_WITH_UNISTD
47 AC_CHECK_FUNCS(ctermid ftime getcwd geteuid lstat mkdir mknod nice putenv readlink rename rmdir select setegid seteuid setlocale setpgid setsid strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
49 AC_REPLACE_FUNCS(inet_aton strerror)
56 # Checks for dynamic linking
58 xtra_PLUGIN_guile_libs=""
59 AC_SUBST(xtra_PLUGIN_guile_libs)
61 if test "$enable_dynamic_linking" = "yes"; then
63 AC_CHECK_LIB(dl,dlopen)
64 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
65 xtra_PLUGIN_guile_libs="-lguile -ldl"
66 AC_DEFINE(DYNAMIC_LINKING)
68 AC_CHECK_LIB(dld,dld_link)
69 if test "$ac_cv_lib_dld_dld_link" = "yes"; then
70 xtra_PLUGIN_guile_libs="-lguile -ldld"
71 AC_DEFINE(DYNAMIC_LINKING)
73 AC_CHECK_FUNCS(shl_load)
74 if test "$ac_cv_func_shl_load" = "yes"; then
75 AC_DEFINE(DYNAMIC_LINKING)
80 #--------------------------------------------------------------------
82 # Which way does the stack grow?
84 #--------------------------------------------------------------------
86 AC_TRY_RUN(aux (l) unsigned long l;
87 { int x; exit (l >= ((unsigned long)&x)); }
88 main () { int q; aux((unsigned long)&q); },
89 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
92 AC_TRY_RUN(main () { exit (sizeof(float) != sizeof(long)); },
93 AC_DEFINE(SCM_SINGLES),,AC_DEFINE(SCM_SINGLES)
94 AC_MSG_WARN(Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in))
96 AC_MSG_CHECKING(for struct linger)
97 AC_CACHE_VAL(scm_cv_struct_linger,
99 #include <sys/types.h>
100 #include <sys/socket.h>],
101 [struct linger lgr; lgr.l_linger = 100],
102 scm_cv_struct_linger="yes",
103 scm_cv_struct_linger="no"))
104 AC_MSG_RESULT($scm_cv_struct_linger)
105 if test $scm_cv_struct_linger = yes; then
106 AC_DEFINE(HAVE_STRUCT_LINGER)
109 #--------------------------------------------------------------------
111 # How can you violate a stdio abstraction by setting a stream's fd?
113 #--------------------------------------------------------------------
117 if test "x$FD_SETTER" = x; then
118 AC_TRY_COMPILE(#include <stdio.h>
120 FD_SETTER="((F)->_file = (D))")
123 if test "x$FD_SETTER" = x; then
124 AC_TRY_COMPILE(#include <stdio.h>
126 FD_SETTER="((F)->_fileno = (D))")
130 dnl Add FD_SETTER tests for other systems here. Your test should
131 dnl try a particular style of assigning to the descriptor
132 dnl field(s) of a FILE* and define FD_SETTER accordingly.
134 dnl The value of FD_SETTER is used as a macro body, as in:
136 dnl #define SET_FILE_FD_FIELD(F,D) @FD_SETTER@
138 dnl F is a FILE* and D a descriptor (int).
141 test "x$FD_SETTER" != x && AC_DEFINE(HAVE_FD_SETTER)
143 #--------------------------------------------------------------------
144 # How to find out whether a FILE structure contains buffered data.
145 # From Tk we have the following list:
146 # _cnt: Most UNIX systems
150 # Or, in GNU libc there are two fields, _gptr and _egptr, which
151 # have to be compared.
152 # These can also be known as _IO_read_ptr and _IO_read_end.
153 #--------------------------------------------------------------------
155 AC_MSG_CHECKING(how to get buffer char count from FILE structure)
156 AC_CACHE_VAL(scm_cv_struct_file_count,
157 AC_TRY_COMPILE([#include <stdio.h>],
158 [FILE *f = stdin; f->_cnt = 0],
159 scm_cv_struct_file_count="_cnt",
160 AC_TRY_COMPILE([#include <stdio.h>],
161 [FILE *f = stdin; f->_r = 0],
162 scm_cv_struct_file_count="_r",
163 AC_TRY_COMPILE([#include <stdio.h>],
164 [FILE *f = stdin; f->readCount = 0],
165 scm_cv_struct_file_count="readCount",
166 scm_cv_struct_file_count=""))))
167 if test "$scm_cv_struct_file_count"; then
168 AC_MSG_RESULT($scm_cv_struct_file_count)
169 AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
171 AC_CACHE_VAL(scm_cv_struct_file_gptr,
172 AC_TRY_COMPILE([#include <stdio.h>],
173 [FILE *f = stdin; f->_gptr = f->egptr;],
174 scm_cv_struct_file_gptr=1,
175 scm_cv_struct_file_gptr=""))
176 if test "$scm_cv_struct_gptr"; then
178 AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
180 AC_CACHE_VAL(scm_cv_struct_file_readptr,
181 AC_TRY_COMPILE([#include <stdio.h>],
182 [FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
183 scm_cv_struct_file_readptr=1))
184 if test "$scm_cv_struct_file_readptr"; then
185 AC_MSG_RESULT(read_ptr)
186 AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
191 #--------------------------------------------------------------------
193 # Flags for thread support
195 #--------------------------------------------------------------------
198 dnl Set the appropriate flags!
200 if test "$cy_cv_threads_package" = FSU; then
201 AC_DEFINE(USE_FSU_PTHREADS, 1)
202 else if test "$cy_cv_threads_package" = COOP; then
203 AC_DEFINE(USE_COOP_THREADS, 1)
204 else if test "$cy_cv_threads_package" = MIT; then
205 AC_DEFINE(USE_MIT_PTHREADS, 1)
206 else if test "$cy_cv_threads_package" = PCthreads; then
207 AC_DEFINE(USE_PCTHREADS_PTHREADS, 1)
208 else if test "$cy_cv_threads_package" = unknown; then
209 AC_MSG_ERROR("cannot find threads installation")
216 if test "$cy_cv_threads_package" != ""; then
217 AC_DEFINE(USE_THREADS)
220 ## If we're using GCC, ask for aggressive warnings.
222 yes ) CFLAGS="$CFLAGS -Wall -Wpointer-arith" ;;
226 AC_MSG_CHECKING(whether errno codes can be extracted from errno.h)
228 if test "$GCC" = yes ; then
229 ${CC-cc} -undef -dM -E $srcdir/errnos_get.c | egrep ' E.+' | cut -f2 -d' ' > errnos.list
230 egrep '^E.+' errnos.list > /dev/null 2>&1 && goterrnos=1
232 if test $goterrnos = 1 ; then
235 cp $srcdir/errnos.default errnos.list
236 AC_MSG_RESULT([no, using default])
239 AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, "$GUILE_MAJOR_VERSION")
240 AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, "$GUILE_MINOR_VERSION")
241 AC_DEFINE_UNQUOTED(GUILE_VERSION, "$GUILE_VERSION")
244 AC_OUTPUT([Makefile fd.h guile-snarf PLUGIN/guile.libs], [chmod +x guile-snarf])
247 dnl comment-start: "dnl "
249 dnl comment-start-skip: "\\bdnl\\b\\s *"