mirror of
https://github.com/python/cpython.git
synced 2024-11-25 02:44:06 +08:00
70c7f48b9b
need this any more and apparently it screws up their configuration.
670 lines
18 KiB
Plaintext
670 lines
18 KiB
Plaintext
dnl Process this file with autoconf 2.0 or later to make a configure script.
|
|
AC_REVISION($Revision$)
|
|
AC_PREREQ(2.0)
|
|
AC_INIT(Include/object.h)
|
|
AC_CONFIG_HEADER(config.h)
|
|
|
|
# Set VERSION so we only need to edit in one place (i.e., here)
|
|
AC_SUBST(VERSION)
|
|
VERSION=1.5
|
|
|
|
# NEXTSTEP stuff
|
|
if test -f /usr/lib/NextStep/software_version; then
|
|
|
|
AC_MSG_CHECKING(for --with-next-archs)
|
|
AC_ARG_WITH(next-archs,
|
|
[--with-next-archs='arch1 arch2 ..' build MAB binary], [
|
|
if test -n "$withval"; then
|
|
ac_arch_flags=`/usr/lib/arch_tool -archify_list $withval`
|
|
# GCC does not currently support multi archs on the NeXT
|
|
with_gcc=no
|
|
fi
|
|
AC_MSG_RESULT($with_next_archs)
|
|
], [AC_MSG_RESULT(none: using `arch`)])
|
|
|
|
if test -z "$MACHDEP"
|
|
then
|
|
set X `hostinfo | grep 'NeXT Mach.*:' | \
|
|
sed -e 's/://' -e 's/\./_/'` && \
|
|
ac_sys_system=next && ac_sys_release=$4
|
|
|
|
MACHDEP="$ac_sys_system$ac_sys_release"
|
|
fi
|
|
fi
|
|
|
|
|
|
# Set name for machine-dependent library files
|
|
AC_SUBST(MACHDEP)
|
|
AC_MSG_CHECKING(MACHDEP)
|
|
if test -z "$MACHDEP"
|
|
then
|
|
ac_sys_system=`uname -s`
|
|
if test "$ac_sys_system" = "AIX" ; then
|
|
ac_sys_release=`uname -v`
|
|
else
|
|
ac_sys_release=`uname -r`
|
|
fi
|
|
ac_md_system=`echo $ac_sys_system |
|
|
tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'`
|
|
ac_md_release=`echo $ac_sys_release |
|
|
tr -d '[/ ]' | sed 's/\..*//'`
|
|
MACHDEP="$ac_md_system$ac_md_release"
|
|
|
|
case $MACHDEP in
|
|
'') MACHDEP="unknown";;
|
|
esac
|
|
fi
|
|
|
|
#
|
|
# SGI compilers allow the specification of the both the ABI and the
|
|
# ISA on the command line. Depending on the values of these switches,
|
|
# different and often incompatable code will be generated.
|
|
#
|
|
# The SGI_ABI variable can be used to modify the CC and LDFLAGS and
|
|
# thus supply support for various ABI/ISA combinations. The MACHDEP
|
|
# variable is also adjusted.
|
|
#
|
|
AC_SUBST(SGI_ABI)
|
|
if test ! -z "$SGI_ABI"
|
|
then
|
|
CC="cc $SGI_ABI"
|
|
LDFLAGS="$SGI_ABI $LDFLAGS"
|
|
MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'`
|
|
fi
|
|
AC_MSG_RESULT($MACHDEP)
|
|
|
|
#
|
|
# CCC is the command that compiles C++ programs
|
|
#
|
|
# Not all make programs have this predefined.
|
|
#
|
|
AC_SUBST(SET_CCC)
|
|
AC_MSG_CHECKING(CCC)
|
|
if test -z "$CCC"
|
|
then
|
|
case $ac_sys_system in
|
|
IRIX*) SET_CCC="CCC= CC ${SGI_ABI}";;
|
|
*) SET_CCC=""
|
|
esac
|
|
else
|
|
SET_CCC="CCC= ${CCC}"
|
|
fi
|
|
AC_MSG_RESULT($SET_CCC)
|
|
|
|
|
|
# checks for alternative programs
|
|
AC_MSG_CHECKING(for --without-gcc)
|
|
AC_ARG_WITH(gcc, [--without-gcc never use gcc], [
|
|
case $withval in
|
|
no) CC=cc
|
|
without_gcc=yes;;
|
|
yes) CC=gcc
|
|
without_gcc=no;;
|
|
*) CC=$withval
|
|
without_gcc=$withval;;
|
|
esac], [
|
|
case $ac_sys_system in
|
|
OSF1) CC=cc
|
|
without_gcc=;;
|
|
*) without_gcc=no;;
|
|
esac])
|
|
AC_MSG_RESULT($without_gcc)
|
|
|
|
# If the user switches compilers, we can't believe the cache
|
|
if test ! -z "$ac_cv_prog_CC" -a ! -z "$CC" -a "$CC" != "$ac_cv_prog_CC"
|
|
then
|
|
AC_ERROR(cached CC is different -- throw away $cache_file
|
|
(it is also a good idea to do 'make clean' before compiling))
|
|
fi
|
|
|
|
AC_PROG_CC
|
|
|
|
case $ac_sys_system in
|
|
hp*|HP*)
|
|
case $CC in
|
|
cc|*/cc) CC="$CC -Aa -D_HPUX_SOURCE";;
|
|
esac;;
|
|
esac
|
|
|
|
# LINKCC is the command that links the python executable -- default is $(CC).
|
|
# This is altered for AIX in order to build the export list before linking.
|
|
AC_SUBST(LINKCC)
|
|
AC_MSG_CHECKING(LINKCC)
|
|
if test -z "$LINKCC"
|
|
then
|
|
case $ac_sys_system in
|
|
AIX*)
|
|
LINKCC="\$(srcdir)/makexp_aix python.exp \"\" \$(LIBRARY); \$(PURIFY) \$(CC)";;
|
|
dgux*)
|
|
LINKCC="LD_RUN_PATH=$libdir \$(PURIFY) \$(CC)";;
|
|
*) LINKCC="\$(PURIFY) \$(CC)";;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT($LINKCC)
|
|
|
|
AC_PROG_RANLIB
|
|
AC_SUBST(AR)
|
|
AC_CHECK_PROGS(AR, ar aal, ar)
|
|
AC_SUBST(INSTALL)
|
|
AC_SUBST(INSTALL_PROGRAM)
|
|
AC_SUBST(INSTALL_DATA)
|
|
AC_SUBST(REALLIBRARY)
|
|
# Install just never works :-(
|
|
if test -z "$INSTALL"
|
|
then
|
|
INSTALL=cp
|
|
INSTALL_PROGRAM=cp
|
|
INSTALL_DATA=cp
|
|
else
|
|
INSTALL_PROGRAM="$INSTALL"
|
|
INSTALL_DATA="$INSTALL -m 644"
|
|
fi
|
|
|
|
# Optimizer/debugger flags passed between Makefiles
|
|
AC_SUBST(OPT)
|
|
if test -z "$OPT"
|
|
then
|
|
case $GCC in
|
|
yes)
|
|
case $ac_cv_prog_cc_g in
|
|
yes) OPT="-g -O2";;
|
|
*) OPT="-O2";;
|
|
esac
|
|
;;
|
|
*) OPT="-O";;
|
|
esac
|
|
fi
|
|
|
|
if test "$ac_arch_flags"
|
|
then
|
|
OPT="$OPT $ac_arch_flags"
|
|
fi
|
|
# checks for UNIX variants that set C preprocessor variables
|
|
AC_AIX
|
|
AC_MINIX
|
|
|
|
if test "$MACHDEP" != "dguxR4"
|
|
then
|
|
AC_MSG_CHECKING(whether $CC accepts -Olimit 1500)
|
|
AC_CACHE_VAL(ac_cv_olimit_ok,
|
|
[ac_save_cc="$CC"
|
|
CC="$CC -Olimit 1500"
|
|
AC_TRY_RUN([int main() { return 0; }],
|
|
ac_cv_olimit_ok=yes,
|
|
ac_cv_olimit_ok=no)
|
|
CC="$ac_save_cc"])
|
|
AC_MSG_RESULT($ac_cv_olimit_ok)
|
|
if test $ac_cv_olimit_ok = yes; then
|
|
OPT="$OPT -Olimit 1500"
|
|
fi
|
|
|
|
AC_SUBST(DGUX_IS_BROKEN)
|
|
AC_MSG_CHECKING(whether $CC accepts -OPT:Olimit=0)
|
|
AC_CACHE_VAL(ac_cv_opt_olimit_ok,
|
|
[ac_save_cc="$CC"
|
|
CC="$CC -OPT:Olimit=0"
|
|
AC_TRY_RUN([int main() { return 0; }],
|
|
ac_cv_opt_olimit_ok=yes,
|
|
ac_cv_opt_olimit_ok=no)
|
|
CC="$ac_save_cc"])
|
|
AC_MSG_RESULT($ac_cv_opt_olimit_ok)
|
|
if test $ac_cv_opt_olimit_ok = yes; then
|
|
OPT="$OPT -OPT:Olimit=0"
|
|
fi
|
|
REALLIBRARY='libpython$(VERSION).a'
|
|
DGUX_IS_BROKEN="true"
|
|
else
|
|
REALLIBRARY='libpython$(VERSION).so'
|
|
OPT="$OPT -pic"
|
|
DGUX_IS_BROKEN="make $REALLIBRARY"
|
|
fi
|
|
|
|
# check for ANSI or K&R ("traditional") preprocessor
|
|
AC_MSG_CHECKING(for C preprocessor type)
|
|
AC_TRY_COMPILE([
|
|
#define spam(name, doc) {#name, &name, #name "() -- " doc}
|
|
int foo;
|
|
struct {char *name; int *addr; char *doc;} desc = spam(foo, "something");
|
|
], [;], cpp_type=ansi, AC_DEFINE(HAVE_OLD_CPP) cpp_type=traditional)
|
|
AC_MSG_RESULT($cpp_type)
|
|
|
|
# checks for header files
|
|
AC_HEADER_STDC
|
|
AC_CHECK_HEADERS(dlfcn.h fcntl.h limits.h locale.h ncurses.h pthread.h \
|
|
signal.h stdarg.h stddef.h stdlib.h thread.h unistd.h utime.h \
|
|
sys/audioio.h sys/file.h sys/lock.h \
|
|
sys/param.h sys/select.h sys/time.h sys/times.h \
|
|
sys/un.h sys/utsname.h sys/wait.h)
|
|
AC_HEADER_DIRENT
|
|
|
|
# checks for typedefs
|
|
was_it_defined=no
|
|
AC_MSG_CHECKING(for clock_t in time.h)
|
|
AC_EGREP_HEADER(clock_t, time.h, was_it_defined=yes, AC_DEFINE(clock_t, long))
|
|
AC_MSG_RESULT($was_it_defined)
|
|
|
|
# Add some code to confdefs.h so that the test for off_t works on SCO
|
|
cat >> confdefs.h <<\EOF
|
|
#if defined(SCO_DS)
|
|
#undef _OFF_T
|
|
#endif
|
|
EOF
|
|
|
|
AC_TYPE_MODE_T
|
|
AC_TYPE_OFF_T
|
|
AC_TYPE_PID_T
|
|
AC_TYPE_SIGNAL
|
|
AC_TYPE_SIZE_T
|
|
AC_TYPE_UID_T
|
|
|
|
AC_CHECK_SIZEOF(int)
|
|
AC_CHECK_SIZEOF(long)
|
|
|
|
# Set info about shared libraries.
|
|
AC_SUBST(SO)
|
|
AC_SUBST(LDSHARED)
|
|
AC_SUBST(CCSHARED)
|
|
AC_SUBST(LINKFORSHARED)
|
|
# SO is the extension of shared libraries `(including the dot!)
|
|
# -- usually .so, .sl on HP-UX
|
|
AC_MSG_CHECKING(SO)
|
|
if test -z "$SO"
|
|
then
|
|
case $ac_sys_system in
|
|
hp*|HP*) SO=.sl;;
|
|
*) SO=.so;;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT($SO)
|
|
# LDSHARED is the ld *command* used to create shared library
|
|
# -- "ld" on SunOS 4.x.x, "ld -G" on SunOS 5.x, "ld -shared" on IRIX 5
|
|
AC_MSG_CHECKING(LDSHARED)
|
|
if test -z "$LDSHARED"
|
|
then
|
|
case $ac_sys_system/$ac_sys_release in
|
|
AIX*) LDSHARED="\$(srcdir)/ld_so_aix \$(CC)";;
|
|
IRIX/5*) LDSHARED="ld -shared";;
|
|
IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";;
|
|
SunOS/4*) LDSHARED="ld";;
|
|
SunOS/5*) LDSHARED="ld -G";;
|
|
hp*|HP*) LDSHARED="ld -b";;
|
|
OSF*) LDSHARED="ld -shared -expect_unresolved \"*\"";;
|
|
DYNIX/ptx*) LDSHARED="ld -G";;
|
|
next/*) LDSHARED='$(CC) $(CFLAGS) -nostdlib -r';;
|
|
Linux*) LDSHARED="gcc -shared";;
|
|
dgux*) LDSHARED="ld -G";;
|
|
FreeBSD*|NetBSD*) LDSHARED="ld -Bshareable";;
|
|
SCO_SV*) LDSHARED="cc -G -KPIC -Ki486 -belf -Wl,-Bexport";;
|
|
*) LDSHARED="ld";;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT($LDSHARED)
|
|
# CCSHARED are the C *flags* used to create objects to go into a shared
|
|
# library -- this is only needed for a few systems
|
|
AC_MSG_CHECKING(CCSHARED)
|
|
if test -z "$CCSHARED"
|
|
then
|
|
case $ac_sys_system/$ac_sys_release in
|
|
hp*|HP*) if test "$GCC" = yes;
|
|
then CCSHARED="-fpic";
|
|
else CCSHARED="+z";
|
|
fi;;
|
|
Linux*) CCSHARED="-fpic";;
|
|
FreeBSD*|NetBSD*) CCSHARED="-fpic";;
|
|
SCO_SV*) CCSHARED="-KPIC -dy -Bdynamic";;
|
|
IRIX*/6*) case $CC in
|
|
*gcc*) CCSHARED="-shared";;
|
|
*) CCSHARED="-shared -all";;
|
|
esac;;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT($CCSHARED)
|
|
# LINKFORSHARED are the flags passed to the $(CC) command that links
|
|
# the python executable -- this is only needed for a few systems
|
|
AC_MSG_CHECKING(LINKFORSHARED)
|
|
if test -z "$LINKFORSHARED"
|
|
then
|
|
case $ac_sys_system/$ac_sys_release in
|
|
AIX*) LINKFORSHARED='-Wl,-bE:python.exp -lld';;
|
|
hp*|HP*)
|
|
LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
|
|
Linux*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
|
next/*) LINKFORSHARED="-u libsys_s";;
|
|
SCO_SV*) LINKFORSHARED="-Bdynamic -dy -Wl,-Bexport";;
|
|
SunOS/5*) case $CC in
|
|
*gcc*)
|
|
if $CC -Xlinker -V 2>/dev/null | grep BFD >/dev/null
|
|
then
|
|
LINKFORSHARED="-Xlinker --export-dynamic"
|
|
fi;;
|
|
esac;;
|
|
esac
|
|
fi
|
|
AC_MSG_RESULT($LINKFORSHARED)
|
|
|
|
# checks for libraries
|
|
AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV
|
|
AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX
|
|
AC_CHECK_LIB(sun, getpwnam) # NIS (== YP) interface for IRIX 4
|
|
# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
|
|
# However on SGI IRIX, these exist but are broken.
|
|
if test "$ac_sys_system" != IRIX
|
|
then
|
|
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
|
|
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for --with-libs)
|
|
AC_ARG_WITH(libs, [--with-libs='lib1 ...' link against additional libs], [
|
|
AC_MSG_RESULT($withval)
|
|
LIBS="$withval $LIBS"
|
|
], AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for --with(out)-readline)
|
|
AC_ARG_WITH(readline,
|
|
[--with(out)-readline obsolete, edit Modules/Setup instead],
|
|
[AC_MSG_RESULT($withval)
|
|
AC_ERROR(--with(out)-readline is obsolete, edit Modules/Setup instead)],
|
|
[AC_MSG_RESULT(not specified.)])
|
|
|
|
AC_SUBST(USE_THREAD_MODULE)
|
|
USE_THREAD_MODULE="#"
|
|
|
|
AC_MSG_CHECKING(for --with-dec-threads)
|
|
AC_SUBST(LDLAST)
|
|
AC_ARG_WITH(dec-threads,
|
|
[--with-dec-threads use DEC Alpha/OSF1 thread-safe libraries],
|
|
[AC_MSG_RESULT($withval)
|
|
LDLAST=-threads
|
|
if test "${with_thread+set}" != set; then
|
|
with_thread="$withval";
|
|
fi],
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for --with-threads)
|
|
AC_ARG_WITH(threads, [--with-threads alias for --with-thread],
|
|
[AC_MSG_RESULT($withval)
|
|
if test "${with_thread+set}" != set; then
|
|
with_thread="$withval";
|
|
fi],
|
|
AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for --with-thread)
|
|
AC_ARG_WITH(thread, [--with-thread[=DIRECTORY] make interpreter thread-safe], [
|
|
USE_THREAD_MODULE=
|
|
AC_MSG_RESULT($withval)
|
|
if test -d "$withval"
|
|
then LDFLAGS="$LDFLAGS -L$withval"
|
|
fi
|
|
AC_DEFINE(_REENTRANT)
|
|
AC_CHECK_HEADER(mach/cthreads.h, [AC_DEFINE(WITH_THREAD)
|
|
AC_DEFINE(C_THREADS)
|
|
LIBOBJS="$LIBOBJS thread.o"],[
|
|
AC_CHECK_LIB(pthreads, pthread_create, [AC_DEFINE(WITH_THREAD)
|
|
AC_DEFINE(_POSIX_THREADS)
|
|
LIBS="$LIBS -lpthreads"
|
|
LIBOBJS="$LIBOBJS thread.o"], [
|
|
AC_CHECK_LIB(pthread, pthread_create, [AC_DEFINE(WITH_THREAD)
|
|
AC_DEFINE(_POSIX_THREADS)
|
|
LIBS="$LIBS -lpthread"
|
|
LIBOBJS="$LIBOBJS thread.o"], [
|
|
AC_CHECK_LIB(c_r, pthread_create, [AC_DEFINE(WITH_THREAD)
|
|
AC_DEFINE(_POSIX_THREADS)
|
|
LIBS="$LIBS -lc_r"
|
|
LIBOBJS="$LIBOBJS thread.o"], [
|
|
AC_CHECK_LIB(thread, __d6_pthread_create, [AC_DEFINE(WITH_THREAD)
|
|
AC_DEFINE(_POSIX_THREADS)
|
|
LIBS="$LIBS -lthread"
|
|
LIBOBJS="$LIBOBJS thread.o"])
|
|
])])])])
|
|
|
|
AC_CHECK_LIB(mpc, usconfig, [AC_DEFINE(WITH_THREAD)
|
|
LIBS="$LIBS -lmpc"
|
|
LIBOBJS="$LIBOBJS thread.o"])
|
|
AC_CHECK_LIB(thread, thr_create, [AC_DEFINE(WITH_THREAD)
|
|
LIBS="$LIBS -lthread"
|
|
LIBOBJS="$LIBOBJS thread.o"])
|
|
], AC_MSG_RESULT(no))
|
|
|
|
# -I${DLINCLDIR} is added to the compile rule for importdl.o
|
|
AC_SUBST(DLINCLDIR)
|
|
DLINCLDIR=/
|
|
|
|
AC_MSG_CHECKING(for --with-sgi-dl)
|
|
AC_ARG_WITH(sgi-dl, [--with-sgi-dl=DIRECTORY IRIX 4 dynamic linking], [
|
|
AC_MSG_RESULT($withval)
|
|
AC_DEFINE(WITH_SGI_DL)
|
|
dldir=$withval
|
|
if test -d "$dldir"
|
|
then LDFLAGS="$LDFLAGS -L$dldir"
|
|
else AC_ERROR(proper usage is --with-sgi-dl=DIRECTORY)
|
|
fi
|
|
DLINCLDIR=${dldir}
|
|
LIBS="$LIBS -ldl -lmld"], AC_MSG_RESULT(no))
|
|
|
|
AC_MSG_CHECKING(for --with-dl-dld)
|
|
AC_ARG_WITH(dl-dld, [--with-dl-dld=DL_DIR,DLD_DIR GNU dynamic linking], [
|
|
AC_MSG_RESULT($withval)
|
|
AC_DEFINE(WITH_DL_DLD)
|
|
dldir=`echo "$withval" | sed 's/,.*//'`
|
|
dlddir=`echo "$withval" | sed 's/.*,//'`
|
|
if test -d "$dldir" -a -d "$dlddir"
|
|
then LDFLAGS="$LDFLAGS -L$dldir -L$dlddir"
|
|
else AC_ERROR(proper usage is --with-dl-dld=DL_DIRECTORY,DLD_DIRECTORY)
|
|
fi
|
|
DLINCLDIR=${dldir}
|
|
LIBS="$LIBS -ldl -ldld"], AC_MSG_RESULT(no))
|
|
|
|
# checks for library functions
|
|
AC_CHECK_FUNCS(alarm chown clock dlopen execv flock fork ftime ftruncate \
|
|
gethostname_r getpeername getpgrp getpid getpwent gettimeofday getwd \
|
|
kill link lstat mkfifo mktime nice pause plock putenv readlink \
|
|
select setgid setlocale setuid setsid setpgid setpgrp setvbuf \
|
|
sigaction siginterrupt sigrelse strftime strptime symlink \
|
|
tcgetpgrp tcsetpgrp times truncate uname waitpid)
|
|
AC_REPLACE_FUNCS(dup2 getcwd strdup strerror memmove)
|
|
AC_CHECK_FUNC(getpgrp, AC_TRY_COMPILE([#include <unistd.h>], [getpgrp(0);], AC_DEFINE(GETPGRP_HAVE_ARG)))
|
|
AC_CHECK_FUNC(setpgrp, AC_TRY_COMPILE([#include <unistd.h>], [setpgrp(0,0);], AC_DEFINE(SETPGRP_HAVE_ARG)))
|
|
AC_CHECK_FUNC(gettimeofday, AC_TRY_COMPILE([#include <sys/time.h>], [gettimeofday((struct timeval*)0,(struct timezone*)0);], ,AC_DEFINE(GETTIMEOFDAY_NO_TZ)))
|
|
|
|
# checks for structures
|
|
AC_HEADER_TIME
|
|
AC_STRUCT_TM
|
|
AC_STRUCT_TIMEZONE
|
|
|
|
AC_MSG_CHECKING(for time.h that defines altzone)
|
|
AC_CACHE_VAL(ac_cv_header_time_altzone,
|
|
[AC_TRY_COMPILE([#include <time.h>], [return altzone;],
|
|
ac_cv_header_time_altzone=yes,
|
|
ac_cv_header_time_altzone=no)])
|
|
AC_MSG_RESULT($ac_cv_header_time_altzone)
|
|
if test $ac_cv_header_time_altzone = yes; then
|
|
AC_DEFINE(HAVE_ALTZONE)
|
|
fi
|
|
|
|
was_it_defined=no
|
|
AC_MSG_CHECKING(whether sys/select.h and sys/time.h may both be included)
|
|
AC_TRY_COMPILE([
|
|
#include <sys/types.h>
|
|
#include <sys/select.h>
|
|
#include <sys/time.h>
|
|
], [;], [AC_DEFINE(SYS_SELECT_WITH_SYS_TIME) was_it_defined=yes])
|
|
AC_MSG_RESULT($was_it_defined)
|
|
|
|
# checks for compiler characteristics
|
|
|
|
AC_C_CHAR_UNSIGNED
|
|
|
|
AC_C_CONST
|
|
|
|
works=no
|
|
AC_MSG_CHECKING(for working volatile)
|
|
AC_TRY_COMPILE([],[volatile int x; x = 0;], works=yes, AC_DEFINE(volatile, []))
|
|
AC_MSG_RESULT($works)
|
|
|
|
works=no
|
|
AC_MSG_CHECKING(for working signed char)
|
|
AC_TRY_COMPILE([], [signed char c;], works=yes, AC_DEFINE(signed, []))
|
|
AC_MSG_RESULT($works)
|
|
|
|
have_prototypes=no
|
|
AC_MSG_CHECKING(for prototypes)
|
|
AC_TRY_COMPILE([int foo(int x) { return 0; }], [return foo(10);],
|
|
AC_DEFINE(HAVE_PROTOTYPES) have_prototypes=yes)
|
|
AC_MSG_RESULT($have_prototypes)
|
|
|
|
works=no
|
|
AC_MSG_CHECKING(for variable length prototypes and stdarg.h)
|
|
AC_TRY_COMPILE([
|
|
#include <stdarg.h>
|
|
int foo(int x, ...) {
|
|
va_list va;
|
|
va_start(va, x);
|
|
va_arg(va, int);
|
|
va_arg(va, char *);
|
|
va_arg(va, double);
|
|
return 0;
|
|
}
|
|
], [return foo(10, "", 3.14);],
|
|
AC_DEFINE(HAVE_STDARG_PROTOTYPES) works=yes)
|
|
AC_MSG_RESULT($works)
|
|
|
|
if test "$have_prototypes" = yes; then
|
|
bad_prototypes=no
|
|
AC_MSG_CHECKING(for bad exec* prototypes)
|
|
AC_TRY_COMPILE([#include <unistd.h>], [char **t;execve("@",t,t);], ,
|
|
AC_DEFINE(BAD_EXEC_PROTOTYPES) bad_prototypes=yes)
|
|
AC_MSG_RESULT($bad_prototypes)
|
|
fi
|
|
|
|
bad_forward=no
|
|
AC_MSG_CHECKING(for bad static forward)
|
|
AC_TRY_RUN([
|
|
struct s { int a; int b; };
|
|
static struct s foo;
|
|
int foobar() {
|
|
static int random;
|
|
random = (int) &foo;
|
|
return random;
|
|
}
|
|
static struct s foo = { 1, 2 };
|
|
main() {
|
|
exit(!((int)&foo == foobar()));
|
|
}
|
|
], , AC_DEFINE(BAD_STATIC_FORWARD) bad_forward=yes)
|
|
AC_MSG_RESULT($bad_forward)
|
|
|
|
va_list_is_array=no
|
|
AC_MSG_CHECKING(whether va_list is an array)
|
|
AC_TRY_COMPILE([
|
|
#ifdef HAVE_STDARG_PROTOTYPES
|
|
#include <stdarg.h>
|
|
#else
|
|
#include <varargs.h>
|
|
#endif
|
|
], [va_list list1, list2; list1 = list2;], ,
|
|
AC_DEFINE(VA_LIST_IS_ARRAY) va_list_is_array=yes)
|
|
AC_MSG_RESULT($va_list_is_array)
|
|
|
|
# checks for system services
|
|
# (none yet)
|
|
|
|
# Linux requires this for correct f.p. operations
|
|
AC_CHECK_LIB(ieee, __fpu_control)
|
|
|
|
# Check for --with-fpectl
|
|
AC_MSG_CHECKING(for --with-fpectl)
|
|
AC_ARG_WITH(fpectl, [--with-fpectl enable SIGFPE catching], [
|
|
if test "$withval" != no
|
|
then AC_DEFINE(WANT_SIGFPE_HANDLER) AC_MSG_RESULT(yes)
|
|
else AC_MSG_RESULT(no)
|
|
fi])
|
|
|
|
# check for --with-libm=...
|
|
AC_SUBST(LIBM)
|
|
case $ac_sys_system in
|
|
next) ;;
|
|
*) LIBM=-lm
|
|
esac
|
|
AC_MSG_CHECKING(for --with-libm=STRING)
|
|
AC_ARG_WITH(libm, [--with-libm=STRING math library], [
|
|
if test "$withval" = no
|
|
then LIBM=
|
|
AC_MSG_RESULT(force LIBM empty)
|
|
elif test "$withval" != yes
|
|
then LIBM=$withval
|
|
AC_MSG_RESULT(set LIBM=\"$withval\")
|
|
else AC_ERROR(proper usage is --with-libm=STRING)
|
|
fi],
|
|
[AC_MSG_RESULT(default LIBM=\"$LIBM\")])
|
|
|
|
# check for --with-libc=...
|
|
AC_SUBST(LIBC)
|
|
AC_MSG_CHECKING(for --with-libc=STRING)
|
|
AC_ARG_WITH(libc, [--with-libc=STRING C library], [
|
|
if test "$withval" = no
|
|
then LIBC=
|
|
AC_MSG_RESULT(force LIBC empty)
|
|
elif test "$withval" != yes
|
|
then LIBC=$withval
|
|
AC_MSG_RESULT(set LIBC=\"$withval\")
|
|
else AC_ERROR(proper usage is --with-libc=STRING)
|
|
fi],
|
|
[AC_MSG_RESULT(default LIBC=\"$LIBC\")])
|
|
|
|
# check for hypot() in math library
|
|
LIBS_SAVE=$LIBS
|
|
LIBS="$LIBS $LIBM"
|
|
AC_CHECK_FUNCS(hypot)
|
|
AC_REPLACE_FUNCS(hypot)
|
|
LIBS=$LIBS_SAVE
|
|
|
|
# check for getopt
|
|
AC_MSG_CHECKING(for genuine getopt)
|
|
AC_CACHE_VAL(ac_cv_func_getopt,
|
|
[AC_TRY_RUN([#include <stdio.h>
|
|
extern int optind, opterr, getopt();
|
|
extern char* optarg;
|
|
int main() {
|
|
char* av[] = { "testprog", "parameter", "-fFlag", NULL };
|
|
opterr = 0;
|
|
if (getopt(3, av, "f:") == 'f') { exit(1); }
|
|
exit(0);
|
|
}], ac_cv_func_getopt=yes, ac_cv_func_getopt=no, ac_cv_func_getopt=no)])dnl
|
|
AC_MSG_RESULT($ac_cv_func_getopt)
|
|
test $ac_cv_func_getopt = no && LIBOBJS="$LIBOBJS getopt.o"
|
|
AC_SUBST(LIBOBJS)dnl
|
|
|
|
# check whether malloc(0) returns NULL or not
|
|
AC_MSG_CHECKING(what malloc(0) returns)
|
|
AC_CACHE_VAL(ac_cv_malloc_zero,
|
|
[AC_TRY_RUN([#include <stdio.h>
|
|
#ifdef HAVE_STDLIB
|
|
#include <stdlib.h>
|
|
#else
|
|
char *malloc(), *realloc();
|
|
int *free();
|
|
#endif
|
|
main() {
|
|
char *p;
|
|
p = malloc(0);
|
|
if (p == NULL) exit(1);
|
|
p = realloc(p, 0);
|
|
if (p == NULL) exit(1);
|
|
free(p);
|
|
exit(0);
|
|
}], ac_cv_malloc_zero=nonnull, ac_cv_malloc_zero=null)])
|
|
AC_MSG_RESULT($ac_cv_malloc_zero)
|
|
if test "$ac_cv_malloc_zero" = null
|
|
then
|
|
AC_DEFINE(MALLOC_ZERO_RETURNS_NULL)
|
|
fi
|
|
|
|
# generate output files
|
|
AC_OUTPUT(Makefile \
|
|
Objects/Makefile \
|
|
Parser/Makefile \
|
|
Python/Makefile \
|
|
Modules/Makefile.pre \
|
|
Modules/Setup.thread)
|