mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-06 15:40:29 +02:00
* Makefile.am (EXTRA_libguile_la_SOURCES): add putenv.c. * configure.in: move putenv from AC_CHECK_FUNCS to AC_REPLACE_FUNCS. * putenv.c: new file, from sh-utils 1.12. * posix.c (scm_environ): use malloc in place of scm_must_malloc since allocation isn't for Scheme objects. (scm_putenv): copy strings before placing in the environment. * stime.c (scm_current_time): throw an error if time returns -1, instead of returning #f. (scm_get_internal_real_time, scm_get_internal_real_time): use scm_long2num for return value instead of SCM_MAKINUM. * stime.h: prototypes updated. * stime.c (scm_time_in_msec): apparently unused, deleted. * configure.in: check for gettimeofday. * stime.c (scm_time_plus_ticks): new procedure, an scsh interface which may be more usefully portable than a gettimeofday interface. * stime.c (filltime): recovered static procedure. (scm_localtime, scm_gmtime, scm_mktime, scm_tzset): recovered from an earlier Guile. * posix.h: add prototype for scm_close_pipe, remove prototypes for scm_open_input_pipe, scm_open_output_pipe, change scm_mknod prototype. * * posix.c (scm_mknod): split the mode argument into type and perms arguments, like the extra fields returned by stat. * fports.c (scm_pipob): set the close, free and print procedures. (scm_close_pipe): new procedure. * posix.c (scm_open_input_pipe, scm_open_output_pipe): deleted, define them in boot-9.scm
246 lines
7 KiB
Text
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 gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
|
|
|
|
AC_REPLACE_FUNCS(inet_aton putenv 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:
|