* Added comments from the old config/ directory to configure.ac, and started

changing all the AC_DEFINEs into proper autoconf checks.


git-svn-id: svn://svn.zoy.org/elk/trunk@36 55e467fa-43c5-0310-a8a2-de718669efc6
This commit is contained in:
sam 2003-08-25 14:17:09 +00:00
parent d8cafeeb93
commit 8a5258b0c8
17 changed files with 396 additions and 236 deletions

View File

@ -15,7 +15,325 @@ AC_C_CONST
AC_C_INLINE AC_C_INLINE
AC_TYPE_SIZE_T AC_TYPE_SIZE_T
AC_CHECK_HEADERS(unistd.h pwd.h) # $system should contain the name of this file. It may be used by some
# of the build scripts to do things that are specific to one single
# type of system.
AC_DEFINE(SYSTEMTYPE, "i486-linux-gcc", [FIXME HARD])
# Does the system support the vprintf library function? If not,
# availability of the (non-portable) _doprnt function is assumed.
AC_CHECK_FUNCS(vprintf)
# Does the directory(3) library follow the POSIX conventions (i.e.
# requires the <dirent.h> include file and uses "struct dirent")?
# If not, the (obsolete) BSD-style interface with <sys/dir.h> and
# "struct direct" is assumed.
AC_CHECK_FUNCS(dirent)
# Does the system have the random/srandom library functions? If not,
# rand/srand will be used instead.
AC_CHECK_FUNCS(random)
# Does the system have the index library function? If not, strchr
# will be used.
dnl FIXME
# Does the system have the bcopy, bzero, and bcmp library functions?
# If not, memcpy/memset/memcmp will be used.
dnl FIXME
# Does using the access system call require <unistd.h> to be included?
# (Look into the manual page for access if in doubt.)
AC_CHECK_HEADERS(unistd.h)
# If the FIONREAD ioctl command is defined, which file must be included?
AC_DEFINE(FIONREAD_H, <termios.h>, [FIXME HARD])
# What is the name of the a.out include file?
AC_DEFINE(AOUT_H, <a.out.h>, [FIXME HARD])
# If getdtablesize() is available to determine the maximum number of open
# files per process, set getdtablesize=yes.
# Alternatively, if POSIX-style sysconf() can be called with _SC_OPEN_MAX,
# set sysconf_open_max=yes.
# If neither is set to "yes", an educated guess will be made.
AC_CHECK_FUNCS(getdtablesize)
AC_MSG_CHECKING(for _SC_OPEN_MAX in unistd.h)
AC_EGREP_HEADER(_SC_OPEN_MAX, unistd.h, [
AC_MSG_RESULT(yes) AC_DEFINE(SC_OPEN_MAX_IN_UNISTD_H, 1, Define if <unistd.h> defines _SC_OPEN_MAX)
],[
AC_MSG_RESULT(no)
])
# If POSIX-style pathconf() can be invoked with _PC_PATH_MAX to determine
# the maximum pathname length, set pathconf_path_max=yes.
AC_MSG_CHECKING(for _PC_PATH_MAX in unistd.h)
AC_EGREP_HEADER(_PC_PATH_MAX, unistd.h, [
AC_MSG_RESULT(yes) AC_DEFINE(PC_PATH_MAX_IN_UNISTD_H, 1, Define if <unistd.h> defines _PC_PATH_MAX)
],[
AC_MSG_RESULT(no)
])
# If the system page size can be determined by calling getpagesize()
# set getpagesize=yes.
# Alternatively, if sysconf() can be invoked with _SC_PAGESIZE, set
# sysconf_pagesize=yes.
# These two variables are only required if the generational garbage
# collector is used.
AC_CHECK_FUNCS(getpagesize)
AC_MSG_CHECKING(for _SC_PAGESIZE in unistd.h)
AC_EGREP_HEADER(_SC_PAGESIZE, unistd.h, [
AC_MSG_RESULT(yes) AC_DEFINE(SC_PAGESIZE_IN_UNISTD_H, 1, Define if <unistd.h> defines _SC_PAGESIZE)
],[
AC_MSG_RESULT(no)
])
# Set reliable_signals=bsd if your system supports BSD-style reliable
# signals (has sigblock and related functions); set reliable_signals=posix
# for POSIX-style signals (sigprocmask, sigsets); otherwise old V7/SysV
# signal semantics are assumed.
if false; then
AC_DEFINE(BSD_SIGNALS, 1, [FIXME HARD])
fi
AC_DEFINE(POSIX_SIGNALS, 1, [FIXME HARD])
# To support dynamic loading of object files and "dump", the system's
# a.out format has to be known. Choose one of the following:
#
# coff ecoff xcoff elf macho hp9k convex
#
# Other values of "aout_format" are interpreted as BSD-style a.out format.
if false; then
AC_DEFINE(COFF, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(ECOFF, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(XCOFF, 1, [FIXME HARD])
fi
AC_DEFINE(ELF, 1, [FIXME HARD])
if false; then
AC_DEFINE(MACH_O, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(CONVEX_AOUT, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(HP9K, 1, [FIXME HARD])
fi
# Which mechanism should be used to dynamically load object files?
# Possible values currently are:
#
# ld BSD-style incremental loading based on ld -A
# rld NeXT-style rld_load()
# shl HP-UX shl_load()
# dl SysVR4/SunOS5 dlopen()
#
# Leave load_obj empty if dynamic loading is not supported.
AC_DEFINE(CAN_LOAD_OBJ, 1, [FIXME HARD])
AC_DEFINE(CAN_LOAD_LIB, 1, [FIXME HARD])
if false; then
AC_DEFINE(USE_LD, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(USE_RLD, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(USE_SHL, 1, [FIXME HARD])
fi
AC_DEFINE(USE_DLOPEN, 1, [FIXME HARD])
# Linker options to produce a shared object from a .o file.
# Only used if load_obj=dl.
AC_DEFINE(LDFLAGS_SHARED, "-shared", [FIXME HARD])
# The libraries against which dynamically loaded files are resolved
# at the time they are loaded.
AC_DEFINE(LOAD_LIBRARIES, "", [FIXME HARD])
# Additional flags to be passed to the linker for an incremental
# linker run (ld -A). Ignored unless load_obj=ld.
AC_DEFINE(INC_LDFLAGS, "-x -static", [FIXME HARD])
# Systems with "aout_format=ecoff" may require a call to the cacheflush
# system call after an object file has been loaded. Which include file
# has to be included in this case?
AC_DEFINE(CACHECTL_H, <sys/cachectl.h>, [FIXME HARD])
# Is the ANSI-C atexit function supported to register an exit handler?
# If not, the exit library function will be redefined and will end in
# a call to _exit.
AC_CHECK_FUNCS(atexit)
# Do the names of external functions in the symbol table always begin
# with a special character (such as underline)? If so, syms_begin_with
# should hold this character, otherwise leave it empty.
if false; then
AC_DEFINE(SYMS_BEGIN_WITH, 1, [FIXME HARD])
fi
# The symbol prefixes of extension initialization and finalization
# functions (without the initial $syms_begin_with). Do not change
# these unless the compiler or linker restricts the length of symbols!
AC_DEFINE(INIT_PREFIX, "elk_init_", [FIXME HARD])
AC_DEFINE(FINIT_PREFIX, "elk_finit_", [FIXME HARD])
# Is the "dump" function supported?
AC_DEFINE(CAN_DUMP, 1, [FIXME HARD])
# Is the fchmod system call broken or unavailable?
if false; then
AC_DEFINE(FCHMOD_BROKEN, 1, [FIXME HARD])
fi
# These four variables are only relevant if the system has the BSD-style
# a.out format.
# segment_size is the segment size of the system's memory management
# unit, i.e. the number to a multiple of which the size of an a.out
# segment (e.g. .text) is rounded up.
# file_text_start is the file offset at which the text segment starts
# in an a.out file.
# mem_text_start is the starting address of the text segment in memory.
# text_length_adj must be set to "sizeof (struct exec)" if the length of
# the text segment stored in the a.out header includes the a.out header
# itself.
AC_DEFINE(SEG_SIZ, 1024, [FIXME HARD])
AC_DEFINE(FILE_TEXT_START, N_TXTOFF(hdr), [FIXME HARD])
AC_DEFINE(MEM_TEXT_START, 0, [FIXME HARD])
AC_DEFINE(TEXT_LENGTH_ADJ, 0, [FIXME HARD])
# Only relevant if "aout_format=coff": the system's pagesize.
AC_DEFINE(COFF_PAGESIZE, 4096, [FIXME HARD])
# Only relevant if "aout_format=hp9k" and "load_obj=shl"
AC_DEFINE(HPSHLIB, 1, [FIXME HARD])
# Print debug messages when dumping
AC_DEFINE(DEBUG_DUMP, 1, [FIXME HARD])
# Is the "termio" terminal interface supported by the system? If not,
# BSD-style tty handling will be used.
AC_DEFINE(TERMIO, 1, [FIXME HARD])
# flush_stdio and flush_tty indicate how clear-input/output-port can
# flush (purge) a FILE pointer and a TTY file descriptor.
# Possible values of flush_stdio:
# bsd assume old BSD-style FILE* (with _cnt, _ptr, _base)
# fpurge use 4.4BSD-style fpurge stdio library function
# Possible values of flush_tty:
# tiocflush use TIOCFLUSH ioctl from <sys/ioctl.h>
# tcflsh use TCFLSH ioctl from <termio.h>
# Leave the variable(s) empty if flushing is not supported.
if false; then
AC_DEFINE(FLUSH_BSD, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(FLUSH_FPURGE, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(FLUSH_TIOCFLUSH, 1, [FIXME HARD])
fi
AC_DEFINE(FLUSH_TCFLSH, 1, [FIXME HARD])
# The interpreter uses the getrlimit function to determine the maximum
# stack size of the running program. If this function is not supported,
# set max_stack_size to a (fixed) maximum stack size (in bytes).
if false; then
AC_DEFINE(MAX_STACK_SIZE, 1, [FIXME HARD])
fi
# Is the mprotect system call supported? The generational garbage collector
# requires mprotect to implement incremental GC. $mprotect is ignored if
# generational_gc is set to "no" in the site file. Set mprotect=mmap if
# mprotect is supported, but only for mmap()ed memory.
AC_CHECK_FUNCS(mprotect)
if false; then
AC_DEFINE(MPROTECT_MMAP, 1, [FIXME HARD])
fi
# How can a SIGSEGV or SIGBUS signal handler find out the address of
# the faulting memory reference? This variable is only used if
# $mprotect is "yes" or "mmap". Possible values are:
#
# siginfo handler is called with siginfo_t structure (enabled
# by a call to sigaction)
# sigcontext address is in the sigcontext structure (3rd arg, sc_badvaddr)
# arg4 address is delivered to handler as argument #4
# aix use an AIX-specific hack to get hold of the bad address
# hpux use a HP-UX-specific hack
if false; then
AC_DEFINE(SIGSEGV_SIGINFO, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(SIGSEGV_SIGCONTEXT, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(SIGSEGV_ARG4, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(SIGSEGV_AIX, 1, [FIXME HARD])
fi
if false; then
AC_DEFINE(SIGSEGV_HPUX, 1, [FIXME HARD])
fi
# Does the system support the alloca library function, and does this
# function actually extend the stack? If in doubt, extract alloca.o
# from the C library and check if it contains the symbols malloc and free.
# If this is the case, forget it.
AC_DEFINE(USE_ALLOCA, 1, [FIXME HARD])
# Must <alloca.h> be included to use alloca? Is "#pragma alloca" required?
AC_CHECK_HEADERS(alloca.h)
if false; then
AC_DEFINE(PRAGMA_ALLOCA, 1, [FIXME HARD])
fi
# Does the system (or compiler) require certain objects (e.g. doubles)
# to be aligned at 8-byte boundaries? If not, 4-byte alignment will
# be assumed.
if false; then
AC_DEFINE(ALIGN_8BYTE, 1, [FIXME HARD])
fi
# The name of the linker. This is usually just "ld", or /usr/ccs/bin/ld
# in SVR4-based systems.
AC_DEFINE(LD_NAME, "ld", [FIXME HARD])
# Does your C preprocessor support the ANSI-C ## operator, although
# __STDC__ is not defined?
AC_DEFINE(ANSI_CPP, 1, [FIXME HARD])
# The UNIX extension likes to know which of the following system calls,
# library functions, and include files are supported by the system.
AC_CHECK_HEADERS(utime.h)
AC_CHECK_FUNCS(waitpid wait3 wait4 vfork uname gethostname gettimeofday ftime)
AC_CHECK_FUNCS(mktemp tmpnam tempnam getcwd getwd rename regcomp)
# Element type of the gidset argument of getgroups(); typically int
# or gid_t. Only needed by the UNIX extension.
AC_DEFINE(GETGROUPS_TYPE, gid_t, [FIXME HARD])
# Do you want to use the generational garbage collector? If not, the
# stop-and-copy garbage collector will be used.
AC_DEFINE(GENERATIONAL_GC, 1, [FIXME HARD])
# The default heap size of the Scheme interpreter in KBytes (if the
# stop-and-copy garbage collector is used).
AC_DEFINE(HEAP_SIZE, 1024, [FIXME HARD])
# The directory where all files are installed by running "make install".
# The subdirectories bin, lib, include, and runtime (with various
# subdirectories) are created automatically, but $install_dir isn't.
# Make sure $install_dir doesn't point to the top of the source tree
# (i.e. choose a subdirectory or a directory outside the source tree).
AC_DEFINE(SCM_DIR, "/usr/share/elk", [FIXME HARD])
AC_DEFINE(OBJ_DIR, "/usr/lib/elk", [FIXME HARD])
#define FIND_AOUT defined(USE_LD) || defined(CAN_DUMP) || defined(INIT_OBJECTS)
AC_DEFINE(FIND_AOUT, 1, [FIXME HARD])
dnl dnl
dnl Check for available warning flags dnl Check for available warning flags
@ -41,166 +359,18 @@ fi
CFLAGS="${CFLAGS_save}" CFLAGS="${CFLAGS_save}"
INCLUDES="${INCLUDES} -I\$(top_srcdir)/include" INCLUDES="${INCLUDES} -I\$(top_srcdir)/include"
dnl
dnl Default values
dnl
AC_DEFINE(REGCOMP, 1, [Foo])
AC_DEFINE(WAITPID, 1, [Foo])
AC_DEFINE(WAIT3, 1, [Foo])
AC_DEFINE(WAIT4, 1, [Foo])
AC_DEFINE(MKTEMP, 1, [Foo])
AC_DEFINE(TMPNAM, 1, [Foo])
AC_DEFINE(TEMPNAM, 1, [Foo])
AC_DEFINE(GETCWD, 1, [Foo])
AC_DEFINE(GETWD, 1, [Foo])
AC_DEFINE(RENAME, 1, [Foo])
AC_DEFINE(UNAME, 1, [Foo])
AC_DEFINE(GETHOSTNAME, 1, [Foo])
AC_DEFINE(GETTIMEOFDAY, 1, [Foo])
AC_DEFINE(FTIME, 1, [Foo])
AC_DEFINE(VFORK, 1, [Foo])
AC_DEFINE(VPRINTF, 1, [Foo])
AC_DEFINE(DIRENT, 1, [Foo])
AC_DEFINE(RANDOM, 1, [Foo])
AC_DEFINE(INCLUDE_UNISTD_H, 1, [Foo])
if false; then
AC_DEFINE(SYSCONF_OPEN_MAX, 1, [Bar])
fi
AC_DEFINE(GETDTABLESIZE, 1, [Foo])
AC_DEFINE(PATHCONF_PATH_MAX, 1, [Foo])
AC_DEFINE(GETPAGESIZE, 1, [Foo])
if false; then
AC_DEFINE(SYSCONF_PAGESIZE, 1, [Bar])
fi
if false; then
AC_DEFINE(BSD_SIGNALS, 1, [Bar])
fi
AC_DEFINE(POSIX_SIGNALS, 1, [Foo])
if false; then
AC_DEFINE(ALIGN_8BYTE, 1, [Bar])
fi
if false; then
AC_DEFINE(COFF, 1, [Bar])
fi
if false; then
AC_DEFINE(ECOFF, 1, [Bar])
fi
if false; then
AC_DEFINE(XCOFF, 1, [Bar])
fi
AC_DEFINE(ELF, 1, [Foo])
if false; then
AC_DEFINE(MACH_O, 1, [Bar])
fi
if false; then
AC_DEFINE(CONVEX_AOUT, 1, [Bar])
fi
if false; then
AC_DEFINE(HP9K, 1, [Bar])
fi
AC_DEFINE(HPSHLIB, 1, [Foo])
AC_DEFINE(DEBUG_DUMP, 1, [Foo])
AC_DEFINE(CAN_LOAD_OBJ, 1, [Foo])
AC_DEFINE(CAN_LOAD_LIB, 1, [Foo])
if false; then
AC_DEFINE(USE_LD, 1, [Bar])
fi
if false; then
AC_DEFINE(USE_RLD, 1, [Bar])
fi
if false; then
AC_DEFINE(USE_SHL, 1, [Bar])
fi
AC_DEFINE(USE_DLOPEN, 1, [Foo])
AC_DEFINE(LOAD_LIBRARIES, "", [Foo])
AC_DEFINE(CACHECTL_H, <sys/cachectl.h>, [Foo])
AC_DEFINE(FIONREAD_H, <termios.h>, [Foo])
AC_DEFINE(ATEXIT, 1, [Foo])
if false; then
AC_DEFINE(SYMS_BEGIN_WITH, 1, [Bar])
fi
AC_DEFINE(CAN_DUMP, 1, [Foo])
AC_DEFINE(SEG_SIZ, 1024, [Foo])
AC_DEFINE(FILE_TEXT_START, N_TXTOFF(hdr), [Foo])
AC_DEFINE(MEM_TEXT_START, 0, [Foo])
AC_DEFINE(TEXT_LENGTH_ADJ, 0, [Foo])
AC_DEFINE(COFF_PAGESIZE, 4096, [Foo])
if false; then
AC_DEFINE(FCHMOD_BROKEN, 1, [Bar])
fi
AC_DEFINE(TERMIO, 1, [Foo])
if false; then
AC_DEFINE(FLUSH_BSD, 1, [Bar])
fi
if false; then
AC_DEFINE(FLUSH_FPURGE, 1, [Bar])
fi
if false; then
AC_DEFINE(FLUSH_TIOCFLUSH, 1, [Bar])
fi
AC_DEFINE(FLUSH_TCFLSH, 1, [Foo])
AC_DEFINE(USE_ALLOCA, 1, [Foo])
AC_DEFINE(INCLUDE_ALLOCA_H, 1, [Foo])
if false; then
AC_DEFINE(PRAGMA_ALLOCA, 1, [Bar])
fi
if false; then
AC_DEFINE(MAX_STACK_SIZE, 1, [Bar])
fi
AC_DEFINE(GENERATIONAL_GC, 1, [Foo])
if false; then
AC_DEFINE(HAS_MPROTECT, 1, [Bar])
fi
if false; then
AC_DEFINE(MPROTECT_MMAP, 1, [Bar])
fi
if false; then
AC_DEFINE(SIGSEGV_SIGINFO, 1, [Bar])
fi
if false; then
AC_DEFINE(SIGSEGV_SIGCONTEXT, 1, [Bar])
fi
if false; then
AC_DEFINE(SIGSEGV_ARG4, 1, [Bar])
fi
if false; then
AC_DEFINE(SIGSEGV_AIX, 1, [Bar])
fi
if false; then
AC_DEFINE(SIGSEGV_HPUX, 1, [Bar])
fi
AC_DEFINE(AOUT_H, <a.out.h>, [Foo])
AC_DEFINE(SCM_DIR, "/usr/share/elk", [Foo])
AC_DEFINE(OBJ_DIR, "/usr/lib/elk", [Foo])
AC_DEFINE(HEAP_SIZE, 1024, [Foo])
AC_DEFINE(FIND_AOUT, 1, [Foo])
AC_DEFINE(ANSI_CPP, 1, [Foo])
AC_DEFINE(SYSTEMTYPE, "i486-linux-gcc", [Foo])
AC_DEFINE(GETGROUPS_TYPE, gid_t, [Foo])
AC_DEFINE(LD_NAME, "ld", [Foo])
AC_DEFINE(LDFLAGS_SHARED, "-shared", [Foo])
AC_DEFINE(INC_LDFLAGS, "-x -static", [Foo])
AC_DEFINE(UTIME_H, 1, [Foo])
AC_DEFINE(INIT_PREFIX, "elk_init_", [Foo])
AC_DEFINE(FINIT_PREFIX, "elk_finit_", [Foo])
AC_DEFINE(ELK_MAJOR, 3, [Foo])
AC_DEFINE(ELK_MINOR, 0, [Foo])
dnl Export variables dnl Export variables
AC_SUBST(INCLUDES) AC_SUBST(INCLUDES)
AC_OUTPUT([ AC_OUTPUT([
Makefile Makefile
autotools/Makefile autotools/Makefile
config/Makefile
debian/Makefile debian/Makefile
doc/Makefile doc/Makefile
examples/Makefile examples/Makefile
lib/Makefile lib/Makefile
lib/misc/Makefile lib/misc/Makefile
scm/Makefile scm/Makefile
scripts/Makefile
src/Makefile src/Makefile
util/Makefile util/Makefile
]) ])

View File

@ -94,7 +94,7 @@ extern char *Brk_On_Dump;
extern int Verb_Load, Verb_Init, Case_Insensitive; extern int Verb_Load, Verb_Init, Case_Insensitive;
extern SYMTAB *The_Symbols; extern SYMTAB *The_Symbols;
extern void Exit_Handler P_((void)); extern void Exit_Handler P_((void));
#ifndef ATEXIT #ifndef HAVE_ATEXIT
extern void exit P_((int)); extern void exit P_((int));
#endif #endif

View File

@ -1,6 +1,6 @@
#ifdef USE_ALLOCA #ifdef USE_ALLOCA
#ifdef INCLUDE_ALLOCA_H #ifdef HAVE_ALLOCA_H
# include <alloca.h> # include <alloca.h>
#endif #endif

View File

@ -7,7 +7,7 @@
#include "scheme.h" #include "scheme.h"
#ifdef REGCOMP #ifdef HAVE_REGCOMP
#include <sys/types.h> #include <sys/types.h>
#include <regex.h> #include <regex.h>
@ -199,10 +199,10 @@ static Object P_Match_End(m, n) Object m, n; {
#define Def_Prim Define_Primitive #define Def_Prim Define_Primitive
#endif /* REGCOMP */ #endif /* HAVE_REGCOMP */
elk_init_lib_regexp() { elk_init_lib_regexp() {
#ifdef REGCOMP #ifdef HAVE_REGCOMP
T_Regexp = Define_Type(0, "regexp", 0, sizeof(struct S_Regexp), T_Regexp = Define_Type(0, "regexp", 0, sizeof(struct S_Regexp),
Regexp_Eqv, Regexp_Equal, Regexp_Print, Regexp_Visit); Regexp_Eqv, Regexp_Equal, Regexp_Print, Regexp_Visit);
T_Match = Define_Type(0, "regexp-match", Match_Size, 0, T_Match = Define_Type(0, "regexp-match", Match_Size, 0,

View File

@ -148,27 +148,21 @@ static Object P_Lseek(fd, off, whence) Object fd, off, whence; {
int Num_Filedescriptors() { int Num_Filedescriptors() {
int ret; int ret;
#ifdef OPEN_MAX #if defined(OPEN_MAX)
ret = OPEN_MAX; ret = OPEN_MAX;
#else #elif defined(HAVE_GETDTABLESIZE)
#ifdef GETDTABLESIZE
ret = getdtablesize(); ret = getdtablesize();
#else #elif defined(SC_OPEN_MAX_IN_UNISTD_H)
#ifdef SYSCONF_OPEN_MAX
static r; static r;
if (r == 0) { if (r == 0) {
if ((r = sysconf(_SC_OPEN_MAX)) == -1) if ((r = sysconf(_SC_OPEN_MAX)) == -1)
r = 256; r = 256;
} }
ret = r; ret = r;
#else #elif defined(NOFILE)
#ifdef NOFILE
ret = NOFILE; ret = NOFILE;
#else #else
ret = 256; ret = 256;
#endif
#endif
#endif
#endif #endif
return ret; return ret;
} }

View File

@ -1,6 +1,6 @@
#include "unix.h" #include "unix.h"
#ifdef UTIME_H #ifdef HAVE_UTIME_H
# include <utime.h> # include <utime.h>
#else #else
struct utimbuf { struct utimbuf {
@ -8,7 +8,7 @@ struct utimbuf {
}; };
#endif #endif
#ifdef DIRENT #ifdef HAVE_DIRENT
# include <dirent.h> # include <dirent.h>
#else #else
# include <sys/dir.h> # include <sys/dir.h>
@ -65,7 +65,7 @@ static Object P_Mkdir(fn, mode) Object fn, mode; {
static Object P_Read_Directory(fn) Object fn; { static Object P_Read_Directory(fn) Object fn; {
DIR *d; DIR *d;
#ifdef DIRENT #ifdef HAVE_DIRENT
struct dirent *dp; struct dirent *dp;
#else #else
struct direct *dp; struct direct *dp;
@ -96,7 +96,7 @@ static Object P_Read_Directory(fn) Object fn; {
} }
static Object P_Rename(fromfn, tofn) Object fromfn, tofn; { static Object P_Rename(fromfn, tofn) Object fromfn, tofn; {
#ifdef RENAME #ifdef HAVE_RENAME
if (rename(Get_Strsym(fromfn), Get_Strsym(tofn)) == -1) if (rename(Get_Strsym(fromfn), Get_Strsym(tofn)) == -1)
Raise_System_Error2("(~s ~s): ~E", fromfn, tofn); Raise_System_Error2("(~s ~s): ~E", fromfn, tofn);
#else #else

View File

@ -245,7 +245,7 @@ static Object P_System(cmd) Object cmd; {
int n, pid, status; int n, pid, status;
char *s = Get_String(cmd); char *s = Get_String(cmd);
#ifdef VFORK #ifdef HAVE_VFORK
switch (pid = vfork()) { switch (pid = vfork()) {
#else #else
switch (pid = fork()) { switch (pid = fork()) {
@ -280,7 +280,7 @@ static Object P_Working_Directory() {
char *buf; char *buf;
int max = Path_Max()+2; /* getcwd() needs two extra bytes */ int max = Path_Max()+2; /* getcwd() needs two extra bytes */
Object ret; Object ret;
#if !defined(GETCWD) && !defined(GETWD) #if !defined(HAVE_GETCWD) && !defined(HAVE_GETWD)
FILE *fp; FILE *fp;
char *p; char *p;
#endif #endif
@ -288,7 +288,7 @@ static Object P_Working_Directory() {
Alloca(buf, char*, max); Alloca(buf, char*, max);
Disable_Interrupts; Disable_Interrupts;
#ifdef GETCWD #ifdef HAVE_GETCWD
if (getcwd(buf, max) == 0) { if (getcwd(buf, max) == 0) {
Saved_Errno = errno; Saved_Errno = errno;
Alloca_End; Alloca_End;
@ -296,7 +296,7 @@ static Object P_Working_Directory() {
Raise_System_Error("~E"); Raise_System_Error("~E");
} }
#else #else
#ifdef GETWD #ifdef HAVE_GETWD
if (getwd(buf) == 0) { if (getwd(buf) == 0) {
Alloca_End; Alloca_End;
Enable_Interrupts; Enable_Interrupts;

View File

@ -1,6 +1,6 @@
#include "unix.h" #include "unix.h"
#if defined(UNAME) && !defined(GETHOSTNAME) #if defined(HAVE_UNAME) && !defined(HAVE_GETHOSTNAME)
# include <sys/utsname.h> # include <sys/utsname.h>
#endif #endif
@ -134,11 +134,11 @@ static Object P_Job_Controlp() {
} }
static Object P_System_Info(ret) Object ret; { static Object P_System_Info(ret) Object ret; {
#ifdef GETHOSTNAME #ifdef HAVE_GETHOSTNAME
char hostname[MAXHOSTNAMELEN]; char hostname[MAXHOSTNAMELEN];
char *p = hostname; char *p = hostname;
#else #else
#ifdef UNAME #ifdef HAVE_UNAME
struct utsname uts; struct utsname uts;
char *p = uts.nodename; char *p = uts.nodename;
#else #else
@ -150,10 +150,10 @@ static Object P_System_Info(ret) Object ret; {
GC_Node; GC_Node;
Check_Result_Vector(ret, 3); Check_Result_Vector(ret, 3);
#ifdef GETHOSTNAME #ifdef HAVE_GETHOSTNAME
(void)gethostname(hostname, sizeof(hostname)); (void)gethostname(hostname, sizeof(hostname));
#else #else
#ifdef UNAME #ifdef HAVE_UNAME
(void)uname(&uts); (void)uname(&uts);
#endif #endif
#endif #endif

View File

@ -1,29 +1,29 @@
#include "unix.h" #include "unix.h"
#ifdef TEMPNAM /* Make sure only one of these is defined (if any) */ #ifdef HAVE_TEMPNAM /* Make sure only one of these is defined (if any) */
# undef TMPNAM /* Order of preference: tempnam, mktemp, tmpnam */ # undef HAVE_TMPNAM /* Order of preference: tempnam, mktemp, tmpnam */
# undef MKTEMP # undef HAVE_MKTEMP
#endif #endif
#ifdef MKTEMP #ifdef HAVE_MKTEMP
# undef TMPNAM # undef HAVE_TMPNAM
# undef TEMPNAM # undef HAVE_TEMPNAM
#endif #endif
#ifdef TMPNAM #ifdef HAVE_TMPNAM
# undef TEMPNAM # undef HAVE_TEMPNAM
# undef MKTEMP # undef HAVE_MKTEMP
#endif #endif
static Object P_Tempname(argc, argv) int argc; Object *argv; { static Object P_Tempname(argc, argv) int argc; Object *argv; {
char *name, *dir = 0, *pref = 0; char *name, *dir = 0, *pref = 0;
Object ret; Object ret;
#ifdef TMPNAM #ifdef HAVE_TMPNAM
extern char *tmpnam(); extern char *tmpnam();
#else #else
#ifdef TEMPNAM #ifdef HAVE_TEMPNAM
extern char *tempnam(); extern char *tempnam();
#else #else
char buf[1024]; char buf[1024];
#ifdef MKTEMP #ifdef HAVE_MKTEMP
extern char *mktemp(); extern char *mktemp();
#else #else
char *p, *q; char *p, *q;
@ -36,10 +36,10 @@ static Object P_Tempname(argc, argv) int argc; Object *argv; {
dir = Get_Strsym(argv[0]); dir = Get_Strsym(argv[0]);
if (argc > 1) if (argc > 1)
pref = Get_Strsym(argv[1]); pref = Get_Strsym(argv[1]);
#ifdef TMPNAM #ifdef HAVE_TMPNAM
name = tmpnam((char *)0); name = tmpnam((char *)0);
#else #else
#ifdef TEMPNAM #ifdef HAVE_TEMPNAM
Disable_Interrupts; /* Make sure result gets freed */ Disable_Interrupts; /* Make sure result gets freed */
name = tempnam(dir, pref); name = tempnam(dir, pref);
#else #else
@ -47,7 +47,7 @@ static Object P_Tempname(argc, argv) int argc; Object *argv; {
if (!pref) pref = "elk"; if (!pref) pref = "elk";
if (strlen(dir) + strlen(pref) > 1000) if (strlen(dir) + strlen(pref) > 1000)
Primitive_Error("directory/prefix argument too long"); Primitive_Error("directory/prefix argument too long");
#ifdef MKTEMP #ifdef HAVE_MKTEMP
sprintf(buf, "%s/%sXXXXXX", dir, pref); sprintf(buf, "%s/%sXXXXXX", dir, pref);
name = mktemp(buf); name = mktemp(buf);
#else #else
@ -80,7 +80,7 @@ fail: ;
Raise_Error("cannot create temp file name"); Raise_Error("cannot create temp file name");
} }
ret = Make_String(name, strlen(name)); ret = Make_String(name, strlen(name));
#ifdef TEMPNAM #ifdef HAVE_TEMPNAM
free(name); free(name);
Enable_Interrupts; Enable_Interrupts;
#endif #endif

View File

@ -1,10 +1,10 @@
#include "unix.h" #include "unix.h"
#if !defined(GETTIMEOFDAY) && defined(FTIME) #if !defined(HAVE_GETTIMEOFDAY) && defined(HAVE_FTIME)
# include <sys/timeb.h> # include <sys/timeb.h>
#endif #endif
#ifdef GETTIMEOFDAY #ifdef HAVE_GETTIMEOFDAY
# include <sys/time.h> # include <sys/time.h>
#endif #endif
@ -34,11 +34,11 @@ static Object P_Decode_Time(t, ret, utc) Object t, ret, utc; {
static Object P_Nanotime(ret) Object ret; { static Object P_Nanotime(ret) Object ret; {
Object x, y; Object x, y;
#ifdef GETTIMEOFDAY #ifdef HAVE_GETTIMEOFDAY
struct timeval tv; struct timeval tv;
struct timezone tz; struct timezone tz;
#else #else
#ifdef FTIME #ifdef HAVE_FTIME
struct timeb tb; struct timeb tb;
#else #else
time_t now; time_t now;
@ -50,7 +50,7 @@ static Object P_Nanotime(ret) Object ret; {
x = Null; x = Null;
Check_Result_Vector(ret, 3); Check_Result_Vector(ret, 3);
GC_Link2(ret, x); GC_Link2(ret, x);
#ifdef GETTIMEOFDAY #ifdef HAVE_GETTIMEOFDAY
(void)gettimeofday(&tv, &tz); (void)gettimeofday(&tv, &tz);
x = Cons(Null, Make_Unsigned_Long((unsigned long)tv.tv_usec * 1000)); x = Cons(Null, Make_Unsigned_Long((unsigned long)tv.tv_usec * 1000));
y = Make_Unsigned_Long((unsigned long)tv.tv_sec); y = Make_Unsigned_Long((unsigned long)tv.tv_sec);
@ -59,7 +59,7 @@ static Object P_Nanotime(ret) Object ret; {
VECTOR(ret)->data[1] = Make_Integer(tz.tz_minuteswest); VECTOR(ret)->data[1] = Make_Integer(tz.tz_minuteswest);
VECTOR(ret)->data[2] = Make_Integer(tz.tz_dsttime); VECTOR(ret)->data[2] = Make_Integer(tz.tz_dsttime);
#else #else
#ifdef FTIME #ifdef HAVE_FTIME
(void)ftime(&tb); (void)ftime(&tb);
x = Cons(Null, Make_Unsigned_Long((unsigned long)tb.millitm * 1000000)); x = Cons(Null, Make_Unsigned_Long((unsigned long)tb.millitm * 1000000));
y = Make_Unsigned_Long((unsigned long)tb.time); y = Make_Unsigned_Long((unsigned long)tb.time);

View File

@ -8,7 +8,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <errno.h> #include <errno.h>
#ifdef INCLUDE_UNISTD_H #ifdef HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif

View File

@ -4,15 +4,15 @@
#include "unix.h" #include "unix.h"
#if defined(WAITPID) || defined(WAIT4) #if defined(HAVE_WAITPID) || defined(HAVE_WAIT4)
# define WAIT_PROCESS # define WAIT_PROCESS
#endif #endif
#if defined(WAITPID) || defined(WAIT3) || defined(WAIT4) #if defined(HAVE_WAITPID) || defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
# define WAIT_OPTIONS # define WAIT_OPTIONS
#endif #endif
#if defined(WAIT3) || defined(WAIT4) #if defined(HAVE_WAIT3) || defined(HAVE_WAIT4)
# define WAIT_RUSAGE # define WAIT_RUSAGE
# include <sys/time.h> # include <sys/time.h>
# include <sys/resource.h> # include <sys/resource.h>
@ -58,15 +58,15 @@ static Object General_Wait(ret, ruret, haspid, pid, options)
Check_Result_Vector(ret, 5); Check_Result_Vector(ret, 5);
Check_Result_Vector(ruret, 2); Check_Result_Vector(ruret, 2);
if (haspid) { if (haspid) {
#ifdef WAIT4 #ifdef HAVE_WAIT4
retpid = wait4(pid, &st, options, &ru); retpid = wait4(pid, &st, options, &ru);
#else #else
#ifdef WAITPID #ifdef HAVE_WAITPID
retpid = waitpid(pid, &st, options); retpid = waitpid(pid, &st, options);
#endif #endif
#endif #endif
} else { } else {
#ifdef WAIT3 #ifdef HAVE_WAIT3
retpid = wait3(&st, options, &ru); retpid = wait3(&st, options, &ru);
#else #else
retpid = wait(&st); retpid = wait(&st);

View File

@ -12,13 +12,13 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
# include <sys/mman.h> # include <sys/mman.h>
#endif #endif
#ifdef GETPAGESIZE #ifdef HAVE_GETPAGESIZE
# define SYSCONF_PAGESIZE # define SC_PAGESIZE_IN_UNISTD_H
#endif #endif
#ifdef SYSCONF_PAGESIZE #ifdef SC_PAGESIZE_IN_UNISTD_H
# define link FOO # define link FOO
# include <unistd.h> # include <unistd.h>
# undef link # undef link
@ -191,7 +191,7 @@ static void TerminateGC ();
#define SET_PROTECT(addr) { PMAP (addr) = 1; protected_pages++; } #define SET_PROTECT(addr) { PMAP (addr) = 1; protected_pages++; }
#define SET_UNPROTECT(addr) { PMAP (addr) = 0; protected_pages--; } #define SET_UNPROTECT(addr) { PMAP (addr) = 0; protected_pages--; }
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
# ifndef PROT_RW # ifndef PROT_RW
# define PROT_RW (PROT_READ | PROT_WRITE) # define PROT_RW (PROT_READ | PROT_WRITE)
# endif # endif
@ -463,7 +463,7 @@ void Make_Heap (int size) {
Object heap_obj; Object heap_obj;
pageno_t i; pageno_t i;
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
InstallHandler (); InstallHandler ();
#endif #endif
@ -472,14 +472,14 @@ void Make_Heap (int size) {
* then calculate the resulting number of heap pages. * then calculate the resulting number of heap pages.
*/ */
#ifdef SYSCONF_PAGESIZE #ifdef SC_PAGESIZE_IN_UNISTD_H
if ((bytes_per_pp = sysconf (_SC_PAGESIZE)) == -1) if ((bytes_per_pp = sysconf (_SC_PAGESIZE)) == -1)
Fatal_Error ("sysconf(_SC_PAGESIZE) failed; can't get pagesize"); Fatal_Error ("sysconf(_SC_PAGESIZE) failed; can't get pagesize");
#else #else
#ifdef GETPAGESIZE #ifdef HAVE_GETPAGESIZE
bytes_per_pp = getpagesize (); bytes_per_pp = getpagesize ();
#else #else
# ifdef HAS_MPROTECT # ifdef HAVE_MPROTECT
# include "mprotect requires getpagesize or sysconf_pagesize" # include "mprotect requires getpagesize or sysconf_pagesize"
# else # else
bytes_per_pp = 4096; bytes_per_pp = 4096;
@ -1290,7 +1290,7 @@ static int Scanner (pageno_t npages) {
return (scanned); return (scanned);
} }
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
/* the following function handles a page fault. If the fault was caused /* the following function handles a page fault. If the fault was caused
* by the mutator and incremental collection is enabled, this will result * by the mutator and incremental collection is enabled, this will result
* in scanning the physical page the fault occured on. * in scanning the physical page the fault occured on.
@ -1328,7 +1328,7 @@ static void PagefaultHandler (int sig, int code, struct sigcontext *scp,
static void PagefaultHandler (int sig, int code, struct sigcontext *scp) { static void PagefaultHandler (int sig, int code, struct sigcontext *scp) {
#else #else
# include "HAS_MPROTECT defined, but missing SIGSEGV_xxx" # include "HAVE_MPROTECT defined, but missing SIGSEGV_xxx"
#endif #endif
#endif #endif
#endif #endif
@ -1633,7 +1633,7 @@ void Generational_GC_Finalize () {
} }
void Generational_GC_Reinitialize () { void Generational_GC_Reinitialize () {
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
InstallHandler (); InstallHandler ();
#endif #endif
} }
@ -1641,7 +1641,7 @@ void Generational_GC_Reinitialize () {
Object Internal_GC_Status (int strat, int flags) { Object Internal_GC_Status (int strat, int flags) {
Object list; Object list;
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
Object cell; Object cell;
#endif #endif
GC_Node; GC_Node;
@ -1650,7 +1650,7 @@ Object Internal_GC_Status (int strat, int flags) {
GC_Link (list); GC_Link (list);
switch (strat) { switch (strat) {
default: /* query or stop-and-copy */ default: /* query or stop-and-copy */
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
if (inc_collection) { if (inc_collection) {
cell = Cons (Sym_Incremental_GC, Null); cell = Cons (Sym_Incremental_GC, Null);
(void)P_Set_Cdr (list, cell); (void)P_Set_Cdr (list, cell);
@ -1659,7 +1659,7 @@ Object Internal_GC_Status (int strat, int flags) {
break; break;
case GC_STRAT_GEN: case GC_STRAT_GEN:
if (flags == GC_FLAGS_INCR) { if (flags == GC_FLAGS_INCR) {
#ifdef HAS_MPROTECT #ifdef HAVE_MPROTECT
inc_collection = 1; inc_collection = 1;
cell = Cons (Sym_Incremental_GC, Null); cell = Cons (Sym_Incremental_GC, Null);
(void)P_Set_Cdr (list, cell); (void)P_Set_Cdr (list, cell);

View File

@ -11,7 +11,7 @@
#include <sys/param.h> #include <sys/param.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifdef PATHCONF_PATH_MAX #ifdef PC_PATH_MAX_IN_UNISTD_H
# include <unistd.h> # include <unistd.h>
#endif #endif
@ -87,13 +87,11 @@ Object P_Output_Portp (Object x) {
} }
int Path_Max () { int Path_Max () {
#ifdef PATH_MAX /* POSIX */ #if defined(PATH_MAX) /* POSIX */
return PATH_MAX; return PATH_MAX;
#else #elif defined(MAXPATHLEN) /* 4.3 BSD */
#ifdef MAXPATHLEN /* 4.3 BSD */
return MAXPATHLEN; return MAXPATHLEN;
#else #elif defined(PC_PATH_MAX_IN_UNISTD_H)
#ifdef PATHCONF_PATH_MAX
static int r; static int r;
if (r == 0) { if (r == 0) {
if ((r = pathconf ("/", _PC_PATH_MAX)) == -1) if ((r = pathconf ("/", _PC_PATH_MAX)) == -1)
@ -104,8 +102,6 @@ int Path_Max () {
#else #else
return 1024; return 1024;
#endif #endif
#endif
#endif
} }
Object Get_File_Name (Object name) { Object Get_File_Name (Object name) {

View File

@ -14,7 +14,7 @@
#endif #endif
#ifdef FIND_AOUT #ifdef FIND_AOUT
# ifdef INCLUDE_UNISTD_H # ifdef HAVE_UNISTD_H
# include <unistd.h> # include <unistd.h>
# else # else
# include <sys/file.h> # include <sys/file.h>
@ -87,7 +87,7 @@ void Exit_Handler () {
Free_Heap (); Free_Heap ();
} }
#ifndef ATEXIT #ifndef HAVE_ATEXIT
/* Hack: __GNUC_MINOR__ was introduced together with __attribute__ */ /* Hack: __GNUC_MINOR__ was introduced together with __attribute__ */
#ifdef __GNUC_MINOR__ #ifdef __GNUC_MINOR__
extern void _exit() __attribute__ ((noreturn)); extern void _exit() __attribute__ ((noreturn));
@ -242,7 +242,7 @@ int main (int ac, char **av) {
ALIGN(stkbase); ALIGN(stkbase);
Make_Heap (heap); Make_Heap (heap);
Init_Everything (); Init_Everything ();
#ifdef ATEXIT #ifdef HAVE_ATEXIT
if (atexit (Exit_Handler) != 0) if (atexit (Exit_Handler) != 0)
Fatal_Error ("atexit returned non-zero value"); Fatal_Error ("atexit returned non-zero value");
#endif #endif

View File

@ -16,7 +16,7 @@ extern int Bignum_To_Integer (Object);
Object Generic_Multiply(), Generic_Divide(); Object Generic_Multiply(), Generic_Divide();
void Init_Math () { void Init_Math () {
#ifdef RANDOM #ifdef HAVE_RANDOM
srandom (getpid ()); srandom (getpid ());
#else #else
srand (getpid ()); srand (getpid ());
@ -1104,7 +1104,7 @@ Object P_Max (int argc, Object *argv) {
} }
Object P_Random () { Object P_Random () {
#ifdef RANDOM #ifdef HAVE_RANDOM
extern long int random(); extern long int random();
return Make_Long (random ()); return Make_Long (random ());
#else #else
@ -1113,7 +1113,7 @@ Object P_Random () {
} }
Object P_Srandom (Object x) { Object P_Srandom (Object x) {
#ifdef RANDOM #ifdef HAVE_RANDOM
srandom (Get_Unsigned (x)); srandom (Get_Unsigned (x));
#else #else
srand (Get_Unsigned (x)); srand (Get_Unsigned (x));

View File

@ -91,7 +91,7 @@ void Print_String (Object port, register char *buf, register int len) {
p->ptr += len; p->ptr += len;
} }
#ifndef VPRINTF #ifndef HAVE_VPRINTF
void vfprintf (register FILE *f, register char *fmt, va_list ap) { void vfprintf (register FILE *f, register char *fmt, va_list ap) {
_doprnt (fmt, ap, f); _doprnt (fmt, ap, f);
} }