1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-16 18:50:23 +02:00
guile/libguile/configure.in
Gary Houston 67ec36676e * ioext.c (scm_setfileno): throw a runtime error if SET_FILE_FD_FIELD
wan't defined.  Don't include fd.h.

* Previously fd.h was regenerated whenever configure was run,
forcing a couple of files to be recompiled.

* fd.h.in: deleted, SET_FILE_FD_FIELD moved to ioext.c.
* configure.in: AC_DEFINE FD_SETTER instead of HAVE_FD_SETTER.
Check for _fileno as well as _file.
Don't output fd.h.
* ioext.c: don't fd.h.
* acconfig.h: remove duplicate HAVE_FD_SETTER and change the
other to FD_SETTER.

* Change the stratigy for getting information about errno
(and now signal number) values, e.g., ENOSYS, SIGKILL.  Instead of
generating lists of symbols during the build process, which will
not always work, include comprehensive lists in the distribution.
To help keep the lists up to date, the "check_signals" and
"check_errnos" make targets can be used.

* configure.in: don't check for a command to extract errno codes.
* Makefile.am: update file lists, remove errnos.list and errnos.c
targets, add cpp_err_symbols.c, cpp_sig_symbols.c, check_signals,
check_errnos targets.
(CLEANFILES): remove errnos.c and errnos.list, add
cpp_err_symbols_here cpp_err_symbols_diff cpp_err_symbols_new
cpp_sig_symbols_here cpp_sig_symbols_diff cpp_sig_symbols_new
* errnos.default: deleted.
* cpp_signal.c: new file.
* cpp_errno.c: renamed from errnos_get.c.
* cpp_err_symbols, cpp_sig_symbols: new files.
* cpp_cnvt.awk: renamed from errnos_cnvt_awk.
* error.c (scm_init_error): #include cpp_err_symbols instead of
errnos.c.
* posix.c (scm_init_posix): don't intern signal symbols.  #include
cpp_sig_symbols.c.
* strop.c (scm_i_index): allow the lower bound to be equal to the
length of the string, so a null string doesn't always give an error.

* posix.h: new prototypes.
* posix.c (scm_status_exit_val, scm_status_term_sig,
scm_status_stop_sig): new functions, as in scsh.  They break down
process status values as returned by waitpid.
1997-03-29 18:42:43 +00:00

246 lines
7 KiB
Text

AC_INIT(eval.c)
AM_CONFIG_HEADER(scmconfig.h)
AM_INIT_GUILE_MODULE(libguile)
AM_MAINTAINER_MODE
#--------------------------------------------------------------------
#
# User options
#
#--------------------------------------------------------------------
AC_ARG_ENABLE(debug,
[ --disable-debug Don't include debugging support])
if test "$enableval" != n && test "$enableval" != no; then
AC_DEFINE(DEBUG_EXTENSIONS)
AC_DEFINE(READER_EXTENSIONS)
LIBOBJS="backtrace.o stacks.o debug.o srcprop.o $LIBOBJS"
fi
AC_ARG_ENABLE(dynamic-linking,
[ --enable-dynamic-linking Include support for dynamic linking])
AC_ARG_ENABLE(guile-debug,
[ --enable-guile-debug Include internal debugging functions])
if test "$enableval" = y || test "$enableval" = yes; then
AC_DEFINE(GUILE_DEBUG)
fi
#--------------------------------------------------------------------
AC_PROG_CC
AC_PROG_CPP
AM_PROG_LIBTOOL
AC_AIX
AC_ISC_POSIX
AC_MINIX
CY_AC_WITH_THREADS
AC_C_CONST
AC_HEADER_STDC
AC_HEADER_DIRENT
AC_HEADER_TIME
AC_HEADER_SYS_WAIT
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)
GUILE_HEADER_LIBC_WITH_UNISTD
AC_TYPE_GETGROUPS
AC_TYPE_SIGNAL
AC_TYPE_MODE_T
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)
AC_REPLACE_FUNCS(inet_aton strerror)
AC_FUNC_ALLOCA
AC_STRUCT_ST_RDEV
AC_STRUCT_ST_BLKSIZE
AC_STRUCT_ST_BLOCKS
GUILE_STRUCT_UTIMBUF
# Checks for dynamic linking
xtra_PLUGIN_guile_libs=""
AC_SUBST(xtra_PLUGIN_guile_libs)
if test "$enable_dynamic_linking" = "yes"; then
AC_CHECK_LIB(dl,dlopen)
if test "$ac_cv_lib_dl_dlopen" = "yes"; then
xtra_PLUGIN_guile_libs="-lguile -ldl"
AC_DEFINE(DYNAMIC_LINKING)
else
AC_CHECK_LIB(dld,dld_link)
if test "$ac_cv_lib_dld_dld_link" = "yes"; then
xtra_PLUGIN_guile_libs="-lguile -ldld"
AC_DEFINE(DYNAMIC_LINKING)
else
AC_CHECK_FUNCS(shl_load)
if test "$ac_cv_func_shl_load" = "yes"; then
AC_DEFINE(DYNAMIC_LINKING)
fi
fi
fi
fi
#--------------------------------------------------------------------
#
# Which way does the stack grow?
#
#--------------------------------------------------------------------
AC_TRY_RUN(aux (l) unsigned long l;
{ int x; exit (l >= ((unsigned long)&x)); }
main () { int q; aux((unsigned long)&q); },
AC_DEFINE(SCM_STACK_GROWS_UP),,AC_MSG_WARN(Guessing that stack grows down -- see scmconfig.h.in))
AC_TRY_RUN(main () { exit (sizeof(float) != sizeof(long)); },
AC_DEFINE(SCM_SINGLES),,AC_DEFINE(SCM_SINGLES)
AC_MSG_WARN(Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in))
AC_MSG_CHECKING(for struct linger)
AC_CACHE_VAL(scm_cv_struct_linger,
AC_TRY_COMPILE([
#include <sys/types.h>
#include <sys/socket.h>],
[struct linger lgr; lgr.l_linger = 100],
scm_cv_struct_linger="yes",
scm_cv_struct_linger="no"))
AC_MSG_RESULT($scm_cv_struct_linger)
if test $scm_cv_struct_linger = yes; then
AC_DEFINE(HAVE_STRUCT_LINGER)
fi
#--------------------------------------------------------------------
#
# How can you violate a stdio abstraction by setting a stream's fd?
#
#--------------------------------------------------------------------
AC_MSG_CHECKING(how to set a stream file descriptor)
AC_CACHE_VAL(scm_cv_fd_setter,
AC_TRY_COMPILE([#include <stdio.h>],
[stdout->_file = 1],
scm_cv_fd_setter="_file",
AC_TRY_COMPILE([#include <stdio.h>],
[stdout->_fileno = 1],
scm_cv_fd_setter="_fileno",
scm_cv_fd_setter="")))
if test "$scm_cv_fd_setter"; then
AC_MSG_RESULT($scm_cv_fd_setter)
AC_DEFINE_UNQUOTED(FD_SETTER, $scm_cv_fd_setter)
else
AC_MSG_RESULT(we couldn't do it!)
fi
#--------------------------------------------------------------------
# How to find out whether a FILE structure contains buffered data.
# From Tk we have the following list:
# _cnt: Most UNIX systems
# __cnt: HPUX
# _r: BSD
# readCount: Sprite
# Or, in GNU libc there are two fields, _gptr and _egptr, which
# have to be compared.
# These can also be known as _IO_read_ptr and _IO_read_end.
#--------------------------------------------------------------------
AC_MSG_CHECKING(how to get buffer char count from FILE structure)
AC_CACHE_VAL(scm_cv_struct_file_count,
AC_TRY_COMPILE([#include <stdio.h>],
[FILE *f = stdin; f->_cnt = 0],
scm_cv_struct_file_count="_cnt",
AC_TRY_COMPILE([#include <stdio.h>],
[FILE *f = stdin; f->_r = 0],
scm_cv_struct_file_count="_r",
AC_TRY_COMPILE([#include <stdio.h>],
[FILE *f = stdin; f->readCount = 0],
scm_cv_struct_file_count="readCount",
scm_cv_struct_file_count=""))))
if test "$scm_cv_struct_file_count"; then
AC_MSG_RESULT($scm_cv_struct_file_count)
AC_DEFINE_UNQUOTED(FILE_CNT_FIELD, $scm_cv_struct_file_count)
else
AC_CACHE_VAL(scm_cv_struct_file_gptr,
AC_TRY_COMPILE([#include <stdio.h>],
[FILE *f = stdin; f->_gptr = f->egptr;],
scm_cv_struct_file_gptr=1,
scm_cv_struct_file_gptr=""))
if test "$scm_cv_struct_gptr"; then
AC_MSG_RESULT(gptr)
AC_DEFINE_UNQUOTED(FILE_CNT_GPTR, $scm_cv_struct_file_gptr)
else
AC_CACHE_VAL(scm_cv_struct_file_readptr,
AC_TRY_COMPILE([#include <stdio.h>],
[FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;],
scm_cv_struct_file_readptr=1))
if test "$scm_cv_struct_file_readptr"; then
AC_MSG_RESULT(read_ptr)
AC_DEFINE_UNQUOTED(FILE_CNT_READPTR, $scm_cv_struct_file_readptr)
else
AC_MSG_RESULT(we couldn't do it!)
fi
fi
fi
#--------------------------------------------------------------------
#
# Flags for thread support
#
#--------------------------------------------------------------------
dnl
dnl Set the appropriate flags!
dnl
if test "$cy_cv_threads_package" = FSU; then
AC_DEFINE(USE_FSU_PTHREADS, 1)
else if test "$cy_cv_threads_package" = COOP; then
AC_DEFINE(USE_COOP_THREADS, 1)
else if test "$cy_cv_threads_package" = MIT; then
AC_DEFINE(USE_MIT_PTHREADS, 1)
else if test "$cy_cv_threads_package" = PCthreads; then
AC_DEFINE(USE_PCTHREADS_PTHREADS, 1)
else if test "$cy_cv_threads_package" = unknown; then
AC_MSG_ERROR("cannot find threads installation")
fi
fi
fi
fi
fi
if test "$cy_cv_threads_package" != ""; then
AC_DEFINE(USE_THREADS)
fi
## If we're using GCC, ask for aggressive warnings.
case "$GCC" in
yes ) CFLAGS="$CFLAGS -Wall -Wpointer-arith" ;;
esac
AC_PROG_AWK
## If we're creating a shared library (using libtool!), then we'll
## need to generate a list of .lo files corresponding to the .o files
## given in LIBOBJS. We'll call it LIBLOBJS.
LIBLOBJS="`echo ${LIBOBJS} | sed 's/\.o/.lo/g'`"
AC_DEFINE_UNQUOTED(GUILE_MAJOR_VERSION, "$GUILE_MAJOR_VERSION")
AC_DEFINE_UNQUOTED(GUILE_MINOR_VERSION, "$GUILE_MINOR_VERSION")
AC_DEFINE_UNQUOTED(GUILE_VERSION, "$GUILE_VERSION")
AC_SUBST(AWK)
AC_SUBST(LIBLOBJS)
AC_OUTPUT([Makefile guile-snarf PLUGIN/guile.libs], [chmod +x guile-snarf])
dnl Local Variables:
dnl comment-start: "dnl "
dnl comment-end: ""
dnl comment-start-skip: "\\bdnl\\b\\s *"
dnl End: