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])
21 if test "$enableval" != n && test "$enableval" != no && test "$enableval" != ""; then
22 AC_DEFINE(DYNAMIC_LINKING)
25 #--------------------------------------------------------------------
43 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)
44 GUILE_HEADER_LIBC_WITH_UNISTD
50 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)
52 AC_REPLACE_FUNCS(inet_aton strerror)
59 # Checks for dynamic linking
61 xtra_PLUGIN_guile_libs=""
62 AC_SUBST(xtra_PLUGIN_guile_libs)
64 if test "$enable_dynamic_linking" = "yes"; then
66 AC_CHECK_LIB(dl,dlopen)
67 AC_CHECK_LIB(dld,dld_link)
68 AC_CHECK_FUNCS(shl_load)
70 if test "$ac_cv_lib_dl_dlopen" = "yes"; then
71 xtra_PLUGIN_guile_libs="-lguile -ldl"
73 if test "$ac_cv_lib_dld_dld_link" = "yes"; then
74 xtra_PLUGIN_guile_libs="-lguile -ldld"
79 #--------------------------------------------------------------------
81 # Which way does the stack grow?
83 #--------------------------------------------------------------------
85 AC_TRY_RUN(aux (l) unsigned long l;
86 { int x; exit (l >= ((unsigned long)&x)); }
87 main () { int q; aux((unsigned long)&q); },
88 AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
91 AC_TRY_RUN(main () { exit (sizeof(float) != sizeof(long)); },
92 AC_DEFINE(SCM_SINGLES),,AC_DEFINE(SCM_SINGLES)
93 AC_MSG_WARN(Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in))
95 AC_MSG_CHECKING(for struct linger)
96 AC_CACHE_VAL(scm_cv_struct_linger,
98 #include <sys/types.h>
99 #include <sys/socket.h>],
100 [struct linger lgr; lgr.l_linger = 100],
101 scm_cv_struct_linger="yes",
102 scm_cv_struct_linger="no"))
103 AC_MSG_RESULT($scm_cv_struct_linger)
104 if test $scm_cv_struct_linger = yes; then
105 AC_DEFINE(HAVE_STRUCT_LINGER)
108 #--------------------------------------------------------------------
110 # How can you violate a stdio abstraction by setting a stream's fd?
112 #--------------------------------------------------------------------
116 if test "x$FD_SETTER" = x; then
117 AC_TRY_COMPILE(#include <stdio.h>
119 FD_SETTER="((F)->_file = (D))")
122 if test "x$FD_SETTER" = x; then
123 AC_TRY_COMPILE(#include <stdio.h>
125 FD_SETTER="((F)->_fileno = (D))")
129 dnl Add FD_SETTER tests for other systems here. Your test should
130 dnl try a particular style of assigning to the descriptor
131 dnl field(s) of a FILE* and define FD_SETTER accordingly.
133 dnl The value of FD_SETTER is used as a macro body, as in:
135 dnl #define SET_FILE_FD_FIELD(F,D) @FD_SETTER@
137 dnl F is a FILE* and D a descriptor (int).
140 test "x$FD_SETTER" != x && AC_DEFINE(HAVE_FD_SETTER)
142 #--------------------------------------------------------------------
143 # How to find out whether a FILE structure contains buffered data.
144 # From Tk we have the following list:
145 # _cnt: Most UNIX systems
149 # Or, in GNU libc there are two fields, _gptr and _egptr, which
150 # have to be compared.
151 # These can also be known as _IO_read_ptr and _IO_read_end.
152 #--------------------------------------------------------------------
154 AC_MSG_CHECKING(how to get buffer char count from FILE structure)
155 AC_CACHE_VAL(scm_cv_struct_file_count,
156 AC_TRY_COMPILE([#include <stdio.h>],
157 [FILE *f = stdin; f->_cnt = 0],
158 scm_cv_struct_file_count="_cnt",
159 AC_TRY_COMPILE([#include <stdio.h>],
160 [FILE *f = stdin; f->_r = 0],
161 scm_cv_struct_file_count="_r",
162 AC_TRY_COMPILE([#include <stdio.h>],
163 [FILE *f = stdin; f->readCount = 0],
164 scm_cv_struct_file_count="readCount",
165 scm_cv_struct_file_count=""))))
166 if test "$scm_cv_struct_file_count"; then
167 AC_MSG_RESULT($scm_cv_struct_file_count)
168 AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
170 AC_CACHE_VAL(scm_cv_struct_file_gptr,
171 AC_TRY_COMPILE([#include <stdio.h>],
172 [FILE *f = stdin; f->_gptr = f->egptr;],
173 scm_cv_struct_file_gptr=1,
174 scm_cv_struct_file_gptr=""))
175 if test "$scm_cv_struct_gptr"; then
177 AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
179 AC_CACHE_VAL(scm_cv_struct_file_readptr,
180 AC_TRY_COMPILE([#include <stdio.h>],
181 [FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
182 scm_cv_struct_file_readptr=1))
183 if test "$scm_cv_struct_file_readptr"; then
184 AC_MSG_RESULT(read_ptr)
185 AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
190 #--------------------------------------------------------------------
192 # Flags for thread support
194 #--------------------------------------------------------------------
197 dnl Set the appropriate flags!
199 if test "$cy_cv_threads_package" = FSU; then
200 AC_DEFINE(USE_FSU_PTHREADS, 1)
201 else if test "$cy_cv_threads_package" = COOP; then
202 AC_DEFINE(USE_COOP_THREADS, 1)
203 else if test "$cy_cv_threads_package" = MIT; then
204 AC_DEFINE(USE_MIT_PTHREADS, 1)
205 else if test "$cy_cv_threads_package" = PCthreads; then
206 AC_DEFINE(USE_PCTHREADS_PTHREADS, 1)
207 else if test "$cy_cv_threads_package" = unknown; then
208 AC_MSG_ERROR("cannot find threads installation")
215 if test "$cy_cv_threads_package" != ""; then
216 AC_DEFINE(USE_THREADS)
219 ## If we're using GCC, ask for aggressive warnings.
221 yes ) CFLAGS="$CFLAGS -Wall -Wpointer-arith" ;;
225 AC_MSG_CHECKING(whether errno codes can be extracted from errno.h)
227 if test "$GCC" = yes ; then
228 ${CC-cc} -undef -dM -E $srcdir/errnos_get.c | egrep ' E.+' | cut -f2 -d' ' > errnos.list
229 egrep '^E.+' errnos.list > /dev/null 2>&1 && goterrnos=1
231 if test $goterrnos = 1 ; then
234 cp $srcdir/errnos.default errnos.list
235 AC_MSG_RESULT([no, using default])
238 AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, "$GUILE_MAJOR_VERSION")
239 AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, "$GUILE_MINOR_VERSION")
240 AC_DEFINE_UNQUOTED(GUILE_VERSION, "$GUILE_VERSION")
243 AC_OUTPUT([Makefile fd.h guile-snarf PLUGIN/guile.libs], [chmod +x guile-snarf])
246 dnl comment-start: "dnl "
248 dnl comment-start-skip: "\\bdnl\\b\\s *"