diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 00000000000..b898af6d048 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,38 @@ +MAKE= make + +SUBDIRS= Parser Grammar Objects Python + +all: config.status + for i in $(SUBDIRS); do (echo $$i; cd $$i; $(MAKE) all); done + +localclean: + -rm -f core *~ [@,#]* *.old *.orig *.rej + -(cd Py; rm -f core *~ [@,#]* *.old *.orig *.rej) + +clean: localclean + -for i in $(SUBDIRS); do \ + (echo $$i;cd $$i;$(MAKE) clean); \ + done + +clobber: localclean + -for i in $(SUBDIRS); do \ + (echo $$i;cd $$i;$(MAKE) clobber); \ + done + +distclean: clobber + -for i in $(SUBDIRS); do \ + if test -f $$i/Makefile.in; then \ + rm -f $$i/Makefile; \ + fi; \ + done + -rm -f config.status + +Makefiles: config.status + ./config.status + +config.status: configure + ./configure + +configure: configure.in + autoconf + diff --git a/README b/README new file mode 100644 index 00000000000..df74e00c8d6 --- /dev/null +++ b/README @@ -0,0 +1,61 @@ +This is an ALPHA release of Python 1.0 for UNIX. Currently it builds +a rather minimal executable and requires that you already have Python +0.9.9 (or at least its library). + +Instructions for building: + +(1) Run the configure shell script: + + ./configure + +This may take a minute or two -- it does a rather thorough +investigation of your system to find out many compile-time flags. It +prints messages but does not ask questions. When finished, it will +create config.status in the current directory, as well as Makefile in +each of the subdirectories Parser, Objects and Python. Note that +unless you have the CC shell environment variable set to the name of +your C compiler, it will attempt to find the GNU C compiler (gcc) and +use it if it finds it. On some systems a broken gcc may be installed; +put CC=cc in the environment to override it. On some systems it may +be interesting to compare both compilers. (Note: the Makefile has +been rigged in such a way that it will run configure if you haven't +done so.) + +(2) Run Make: + + make + +This will recursively run Make in each of the Parser, Objects and +Python subdirectories. In Parser it builds an executable "pgen" and a +library libParser.a. In Objects it builds a library libObjects.a. In +Python it builds a library libPython.a and an executable "python". + +(3) Test the resulting executable: + + Python/python -c 'import testall' + +For now, this will assume that you have a working version of Python +release 0.9.9 installed in /usr/local (it uses the Python library from +/usr/local/lib/python) or that your PYTHONPATH shell environment +variable points to the 0.9.9 Python library. + +(4) Optionally: read Extensions/README and try to build a Python with +all the extensions that make sense on your system. (Note: some +extensions are not supported yet.) + +(5) Give feedback: + + Mail guido@cwi.nl + +Please tell me whether the build succeeded or not. If you needed to +edit *any* file, tell me which file, why and how (send me a diff or a +copy of the modified file if you can). If you get stuck, please send +me the error output. Don't forget to mention the operating system, +compiler and hardware version that you used, e.g. "Solaris 2.2 with +gcc version cygnus-2.0.2 on a dual processor Sparcstation 10" or "IRIX +5.1 with standard cc on an Indigo XS-24 with R4000 CPU". If you can +build the core interpreter but get stuck building an extended version, +let me know which extensions gave problems and how. + +--Guido van Rossum, CWI, Amsterdam +URL: diff --git a/configure b/configure new file mode 100755 index 00000000000..eb7fb97be45 --- /dev/null +++ b/configure @@ -0,0 +1,1347 @@ + +#!/bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated automatically using autoconf. +# Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Usage: configure [--srcdir=DIR] [--host=HOST] [--gas] [--nfp] +# [--prefix=PREFIX] [--exec-prefix=PREFIX] [--with-PACKAGE[=VALUE]] +# Ignores all args except --srcdir, --prefix, --exec-prefix, and +# --with-PACKAGE[=VALUE] unless this script has special code to handle it. + +for arg +do + # Handle --exec-prefix with a space before the argument. + if test x$next_exec_prefix = xyes; then exec_prefix=$arg; next_exec_prefix= + # Handle --host with a space before the argument. + elif test x$next_host = xyes; then next_host= + # Handle --prefix with a space before the argument. + elif test x$next_prefix = xyes; then prefix=$arg; next_prefix= + # Handle --srcdir with a space before the argument. + elif test x$next_srcdir = xyes; then srcdir=$arg; next_srcdir= + else + case $arg in + # For backward compatibility, recognize -exec-prefix and --exec_prefix. + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* | --exec=* | --exe=* | --ex=* | --e=*) + exec_prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;; + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- | --exec | --exe | --ex | --e) + next_exec_prefix=yes ;; + + -gas | --gas | --ga | --g) ;; + + -host=* | --host=* | --hos=* | --ho=* | --h=*) ;; + -host | --host | --hos | --ho | --h) + next_host=yes ;; + + -nfp | --nfp | --nf) ;; + + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=`echo $arg | sed 's/[-a-z_]*=//'` ;; + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + next_prefix=yes ;; + + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=* | --s=*) + srcdir=`echo $arg | sed 's/[-a-z_]*=//'` ;; + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr | --s) + next_srcdir=yes ;; + + -with-* | --with-*) + package=`echo $arg|sed -e 's/-*with-//' -e 's/=.*//'` + # Reject names that aren't valid shell variable names. + if test -n "`echo $package| sed 's/[-a-zA-Z0-9_]//g'`"; then + echo "configure: $package: invalid package name" >&2; exit 1 + fi + package=`echo $package| sed 's/-/_/g'` + case "$arg" in + *=*) val="`echo $arg|sed 's/[^=]*=//'`" ;; + *) val=1 ;; + esac + eval "with_$package='$val'" ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb | --ver | --ve | --v) + verbose=yes ;; + + *) ;; + esac + fi +done + +trap 'rm -fr conftest* confdefs* core; exit 1' 1 3 15 +trap 'rm -f confdefs*' 0 + +# NLS nuisances. +# These must not be set unconditionally because not all systems understand +# e.g. LANG=C (notably SCO). +if test "${LC_ALL+set}" = 'set' ; then LC_ALL=C; export LC_ALL; fi +if test "${LANG+set}" = 'set' ; then LANG=C; export LANG; fi + +rm -f conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo > confdefs.h +compile='${CC-cc} $CFLAGS conftest.c -o conftest $LIBS >/dev/null 2>&1' + +# A filename unique to this package, relative to the directory that +# configure is in, which we can look for to find out if srcdir is correct. +unique_file=Py/object.h + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + srcdirdefaulted=yes + # Try the directory containing this script, then `..'. + prog=$0 + confdir=`echo $prog|sed 's%/[^/][^/]*$%%'` + test "X$confdir" = "X$prog" && confdir=. + srcdir=$confdir + if test ! -r $srcdir/$unique_file; then + srcdir=.. + fi +fi +if test ! -r $srcdir/$unique_file; then + if test x$srcdirdefaulted = xyes; then + echo "configure: Can not find sources in \`${confdir}' or \`..'." 1>&2 + else + echo "configure: Can not find sources in \`${srcdir}'." 1>&2 + fi + exit 1 +fi +# Preserve a srcdir of `.' to avoid automounter screwups with pwd. +# But we can't avoid them for `..', to make subdirectories work. +case $srcdir in + .|/*|~*) ;; + *) srcdir=`cd $srcdir; pwd` ;; # Make relative path absolute. +esac + + +# Save the original args to write them into config.status later. +configure_args="$*" + + +# checks for alternative programs +if test -z "$CC"; then + # Extract the first word of `gcc', so it can be a program name with args. + set dummy gcc; word=$2 + echo checking for $word + IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/$word; then + CC="gcc" + break + fi + done + IFS="$saveifs" +fi +test -z "$CC" && CC="cc" +test -n "$CC" && test -n "$verbose" && echo " setting CC to $CC" + +# Find out if we are using GNU C, under whatever name. +cat > conftest.c < conftest.out 2>&1 +if egrep yes conftest.out >/dev/null 2>&1; then + GCC=1 # For later tests. +fi +rm -f conftest* + +if test -z "$RANLIB"; then + # Extract the first word of `ranlib', so it can be a program name with args. + set dummy ranlib; word=$2 + echo checking for $word + IFS="${IFS= }"; saveifs="$IFS"; IFS="${IFS}:" + for dir in $PATH; do + test -z "$dir" && dir=. + if test -f $dir/$word; then + RANLIB="ranlib" + break + fi + done + IFS="$saveifs" +fi +test -z "$RANLIB" && RANLIB=":" +test -n "$RANLIB" && test -n "$verbose" && echo " setting RANLIB to $RANLIB" + + +# checks for UNIX variants that set C preprocessor variables +echo checking for AIX +echo checking how to run the C preprocessor +if test -z "$CPP"; then + # This must be in double quotes, not single quotes, because CPP may get + # substituted into the Makefile and ``${CC-cc}'' will simply confuse + # make. It must be expanded now. + CPP="${CC-cc} -E" + cat > conftest.c < +Syntax Error +EOF +err=`eval "($CPP conftest.c >/dev/null) 2>&1"` +if test -z "$err"; then + : +else + rm -rf conftest* + CPP=/lib/cpp +fi +rm -f conftest* +fi +test ".${verbose}" != "." && echo " setting CPP to $CPP" + +cat > conftest.c < conftest.out 2>&1" +if egrep "yes" conftest.out >/dev/null 2>&1; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining _ALL_SOURCE" +echo "#define" _ALL_SOURCE 1 >> confdefs.h +DEFS="$DEFS -D_ALL_SOURCE=1" +} + + +fi +rm -f conftest* + + +echo checking for POSIXized ISC +if test -d /etc/conf/kconfig.d && + grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 +then + ISC=1 # If later tests want to check for ISC. + +{ +test -n "$verbose" && \ +echo " defining _POSIX_SOURCE" +echo "#define" _POSIX_SOURCE 1 >> confdefs.h +DEFS="$DEFS -D_POSIX_SOURCE=1" +} + + if test -n "$GCC"; then + CC="$CC -posix" + else + CC="$CC -Xp" + fi +fi + +echo checking for minix/config.h +cat > conftest.c < +EOF +err=`eval "($CPP conftest.c >/dev/null) 2>&1"` +if test -z "$err"; then + rm -rf conftest* + MINIX=1 + +fi +rm -f conftest* + +# The Minix shell can't assign to the same variable on the same line! +if test -n "$MINIX"; then + +{ +test -n "$verbose" && \ +echo " defining _POSIX_SOURCE" +echo "#define" _POSIX_SOURCE 1 >> confdefs.h +DEFS="$DEFS -D_POSIX_SOURCE=1" +} + + +{ +test -n "$verbose" && \ +echo " defining" _POSIX_1_SOURCE to be 2 +echo "#define" _POSIX_1_SOURCE 2 >> confdefs.h +DEFS="$DEFS -D_POSIX_1_SOURCE=2" +} + + +{ +test -n "$verbose" && \ +echo " defining _MINIX" +echo "#define" _MINIX 1 >> confdefs.h +DEFS="$DEFS -D_MINIX=1" +} + +fi + +LIBS_save="${LIBS}" +LIBS="${LIBS} -lseq" +have_lib="" +echo checking for -lseq +cat > conftest.c < conftest.c < +#include +#include +#include +EOF +err=`eval "($CPP conftest.c >/dev/null) 2>&1"` +if test -z "$err"; then + rm -rf conftest* + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "memchr" conftest.out >/dev/null 2>&1; then + rm -rf conftest* + # SGI's /bin/cc from Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +cat > conftest.c < +#define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#define XOR(e,f) (((e) && !(f)) || (!(e) && (f))) +int main () { int i; for (i = 0; i < 256; i++) +if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2); +exit (0); } + +EOF +eval $compile +if test -s conftest && (./conftest; exit) 2>/dev/null; then + +{ +test -n "$verbose" && \ +echo " defining STDC_HEADERS" +echo "#define" STDC_HEADERS 1 >> confdefs.h +DEFS="$DEFS -DSTDC_HEADERS=1" +} + + +fi +rm -fr conftest* + +fi +rm -f conftest* + + +fi +rm -f conftest* + +for hdr in dlfcn.h signal.h stdarg.h unistd.h utime.h sys/param.h sys/select.h sys/times.h sys/utsname.h +do +trhdr=HAVE_`echo $hdr | tr '[a-z]./' '[A-Z]__'` +echo checking for ${hdr} +cat > conftest.c < +EOF +err=`eval "($CPP conftest.c >/dev/null) 2>&1"` +if test -z "$err"; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining ${trhdr}" +echo "#define" ${trhdr} 1 >> confdefs.h +DEFS="$DEFS -D${trhdr}=1" +} + + +fi +rm -f conftest* +done + +echo checking for directory library header +dirheader= +if test -z "$dirheader"; then + echo checking for dirent.h +cat > conftest.c < +#include +int main() { exit(0); } +int t() { DIR *dirp = 0; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining DIRENT" +echo "#define" DIRENT 1 >> confdefs.h +DEFS="$DEFS -DDIRENT=1" +} + dirheader=dirent.h + +fi +rm -f conftest* +fi +if test -z "$dirheader"; then + echo checking for sys/ndir.h +cat > conftest.c < +#include +int main() { exit(0); } +int t() { DIR *dirp = 0; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining SYSNDIR" +echo "#define" SYSNDIR 1 >> confdefs.h +DEFS="$DEFS -DSYSNDIR=1" +} + dirheader=sys/ndir.h + +fi +rm -f conftest* +fi +if test -z "$dirheader"; then + echo checking for sys/dir.h +cat > conftest.c < +#include +int main() { exit(0); } +int t() { DIR *dirp = 0; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining SYSDIR" +echo "#define" SYSDIR 1 >> confdefs.h +DEFS="$DEFS -DSYSDIR=1" +} + dirheader=sys/dir.h + +fi +rm -f conftest* +fi +if test -z "$dirheader"; then + echo checking for ndir.h +cat > conftest.c < +#include +int main() { exit(0); } +int t() { DIR *dirp = 0; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining NDIR" +echo "#define" NDIR 1 >> confdefs.h +DEFS="$DEFS -DNDIR=1" +} + dirheader=ndir.h + +fi +rm -f conftest* +fi + +echo checking for closedir return value +cat > conftest.c < +#include <$dirheader> +int closedir(); main() { exit(closedir(opendir(".")) != 0); } +EOF +eval $compile +if test -s conftest && (./conftest; exit) 2>/dev/null; then + : +else + +{ +test -n "$verbose" && \ +echo " defining VOID_CLOSEDIR" +echo "#define" VOID_CLOSEDIR 1 >> confdefs.h +DEFS="$DEFS -DVOID_CLOSEDIR=1" +} + +fi +rm -fr conftest* + + +# checks for typedefs +echo checking for uid_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "uid_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" uid_t to be int +echo "#define" uid_t int >> confdefs.h +DEFS="$DEFS -Duid_t=int" +} + +{ +test -n "$verbose" && \ +echo " defining" gid_t to be int +echo "#define" gid_t int >> confdefs.h +DEFS="$DEFS -Dgid_t=int" +} + +fi +rm -f conftest* + +echo checking for type of array argument to getgroups +prog='/* Thanks to Mike Rendell for this test. */ +#include +#define NGID 256 +#undef MAX +#define MAX(x,y) ((x) > (y) ? (x) : (y)) +main() +{ + gid_t gidset[NGID]; + int i, n; + union { gid_t gval; long lval; } val; + + val.lval = -1; + for (i = 0; i < NGID; i++) + gidset[i] = val.gval; + n = getgroups (sizeof (gidset) / MAX (sizeof (int), sizeof (gid_t)) - 1, + gidset); + /* Exit non-zero if getgroups seems to require an array of ints. This + happens when gid_t is short but getgroups modifies an array of ints. */ + exit ((n > 0 && gidset[n] != val.gval) ? 1 : 0); +}' +cat > conftest.c </dev/null; then + +{ +test -n "$verbose" && \ +echo " defining" GETGROUPS_T to be gid_t +echo "#define" GETGROUPS_T gid_t >> confdefs.h +DEFS="$DEFS -DGETGROUPS_T=gid_t" +} + + +else + +{ +test -n "$verbose" && \ +echo " defining" GETGROUPS_T to be int +echo "#define" GETGROUPS_T int >> confdefs.h +DEFS="$DEFS -DGETGROUPS_T=int" +} + +fi +rm -fr conftest* + +echo checking for mode_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "mode_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" mode_t to be int +echo "#define" mode_t int >> confdefs.h +DEFS="$DEFS -Dmode_t=int" +} + +fi +rm -f conftest* + +echo checking for off_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "off_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" off_t to be long +echo "#define" off_t long >> confdefs.h +DEFS="$DEFS -Doff_t=long" +} + +fi +rm -f conftest* + +echo checking for pid_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "pid_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" pid_t to be int +echo "#define" pid_t int >> confdefs.h +DEFS="$DEFS -Dpid_t=int" +} + +fi +rm -f conftest* + +echo checking for return type of signal handlers +cat > conftest.c < +#include +#ifdef signal +#undef signal +#endif +extern void (*signal ()) (); +int main() { exit(0); } +int t() { int i; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" RETSIGTYPE to be void +echo "#define" RETSIGTYPE void >> confdefs.h +DEFS="$DEFS -DRETSIGTYPE=void" +} + + +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" RETSIGTYPE to be int +echo "#define" RETSIGTYPE int >> confdefs.h +DEFS="$DEFS -DRETSIGTYPE=int" +} + +fi +rm -f conftest* + + +echo checking for size_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "size_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" size_t to be unsigned +echo "#define" size_t unsigned >> confdefs.h +DEFS="$DEFS -Dsize_t=unsigned" +} + +fi +rm -f conftest* + +echo checking for uid_t in sys/types.h +echo '#include "confdefs.h" +#include ' > conftest.c +eval "$CPP conftest.c > conftest.out 2>&1" +if egrep "uid_t" conftest.out >/dev/null 2>&1; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining" uid_t to be int +echo "#define" uid_t int >> confdefs.h +DEFS="$DEFS -Duid_t=int" +} + +{ +test -n "$verbose" && \ +echo " defining" gid_t to be int +echo "#define" gid_t int >> confdefs.h +DEFS="$DEFS -Dgid_t=int" +} + +fi +rm -f conftest* + + +# checks for libraries +LIBS_save="${LIBS}" +LIBS="${LIBS} -ldl" +have_lib="" +echo checking for -ldl +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_LIBDL=1" +} + + LIBS="${LIBS} -ldl" +fi + +LIBS="${LIBS} -L${READLINESRC-${PWD-${CWD-`pwd`}}/readline}" +LIBS_save="${LIBS}" +LIBS="${LIBS} -lreadline" +have_lib="" +echo checking for -lreadline +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_LIBREADLINE=1" +} + + LIBS="${LIBS} -lreadline" +fi + +if test -n "${have_lib}"; then +LIBS_save="${LIBS}" +LIBS="${LIBS} -ltermcap" +have_lib="" +echo checking for -ltermcap +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_LIBTERMCAP=1" +} + + LIBS="${LIBS} -ltermcap" +fi + +fi + +# Check for IRIX or SOLARIS thread interface +LIBS_save="${LIBS}" +LIBS="${LIBS} -lmpc" +have_lib="" +echo checking for -lmpc +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_LIBMPC=1" +} + + LIBS="${LIBS} -lmpc" +fi + +if test -n "${have_lib}"; then +DEFS="${DEFS} -DUSE_THREAD" +LIBOBJS="${LIBOBJS} thread.o" +fi + +LIBS_save="${LIBS}" +LIBS="${LIBS} -lthread" +have_lib="" +echo checking for -lthread +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_LIBTHREAD=1" +} + + LIBS="${LIBS} -lthread" +fi + +if test -n "${have_lib}"; then +DEFS="${DEFS} -DUSE_THREAD" +LIBOBJS="${LIBOBJS} thread.o" +fi + +# checks for library functions +for func in clock ftime gettimeofday getpgrp getwd lstat readlink readline select setsid setpgid setpgrp siginterrupt symlink tcgetpgrp tcsetpgrp times uname waitpid +do +trfunc=HAVE_`echo $func | tr '[a-z]' '[A-Z]'` +echo checking for ${func} +cat > conftest.c < +int main() { exit(0); } +int t() { +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_${func}) || defined (__stub___${func}) +choke me +#else +/* Override any gcc2 internal prototype to avoid an error. */ +extern char ${func}(); ${func}(); +#endif + } +EOF +if eval $compile; then + rm -rf conftest* + { +test -n "$verbose" && \ +echo " defining ${trfunc}" +echo "#define" ${trfunc} 1 >> confdefs.h +DEFS="$DEFS -D${trfunc}=1" +} + + +fi +rm -f conftest* +done + +for func in dup2 getcwd strerror strtoul strtod memmove +do +echo checking for ${func} +cat > conftest.c < +int main() { exit(0); } +int t() { +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_${func}) || defined (__stub___${func}) +choke me +#else +/* Override any gcc2 internal prototype to avoid an error. */ +extern char ${func}(); ${func}(); +#endif + } +EOF +if eval $compile; then + : +else + rm -rf conftest* + LIBOBJS="$LIBOBJS ${func}.o" +test -n "$verbose" && echo " using ${func}.o instead" +fi +rm -f conftest* + +done + +echo checking for getpgrp +cat > conftest.c < +int main() { exit(0); } +int t() { +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_getpgrp) || defined (__stub___getpgrp) +choke me +#else +/* Override any gcc2 internal prototype to avoid an error. */ +extern char getpgrp(); getpgrp(); +#endif + } +EOF +if eval $compile; then + rm -rf conftest* + echo checking for argument to getpgrp +cat > conftest.c < +int main() { exit(0); } +int t() { getpgrp(0); } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining GETPGRP_HAVE_ARG" +echo "#define" GETPGRP_HAVE_ARG 1 >> confdefs.h +DEFS="$DEFS -DGETPGRP_HAVE_ARG=1" +} + + +fi +rm -f conftest* + + +fi +rm -f conftest* + + +# checks for structures +echo checking for whether time.h and sys/time.h may both be included +cat > conftest.c < +#include +#include +int main() { exit(0); } +int t() { struct tm *tp; } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining TIME_WITH_SYS_TIME" +echo "#define" TIME_WITH_SYS_TIME 1 >> confdefs.h +DEFS="$DEFS -DTIME_WITH_SYS_TIME=1" +} + + +fi +rm -f conftest* + +echo checking for struct tm in time.h +cat > conftest.c < +#include +int main() { exit(0); } +int t() { struct tm *tp; tp->tm_sec; } +EOF +if eval $compile; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining TM_IN_SYS_TIME" +echo "#define" TM_IN_SYS_TIME 1 >> confdefs.h +DEFS="$DEFS -DTM_IN_SYS_TIME=1" +} + +fi +rm -f conftest* + +decl='#include +' +case "$DEFS" in + *TM_IN_SYS_TIME*) decl="$decl +#include +" ;; + *) decl="$decl +#include +" ;; +esac +echo checking for tm_zone in struct tm +cat > conftest.c <> confdefs.h +DEFS="$DEFS -DHAVE_TM_ZONE=1" +} + + +else + rm -rf conftest* + no_tm_zone=1 +fi +rm -f conftest* + +if test -n "$no_tm_zone"; then +echo checking for tzname +cat > conftest.c < +#ifndef tzname /* For SGI. */ +extern char *tzname[]; /* RS6000 and others want it this way. */ +#endif +int main() { exit(0); } +int t() { atoi(*tzname); } +EOF +if eval $compile; then + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining HAVE_TZNAME" +echo "#define" HAVE_TZNAME 1 >> confdefs.h +DEFS="$DEFS -DHAVE_TZNAME=1" +} + + +fi +rm -f conftest* + +fi + + +# checks for compiler characteristics +prog='/* Ultrix mips cc rejects this. */ +typedef int charset[2]; const charset x; +/* SunOS 4.1.1 cc rejects this. */ +char const *const *ccp; +char **p; +/* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in an arm + of an if-expression whose if-part is not a constant expression */ +const char *g = "string"; +ccp = &g + (g ? g-g : 0); +/* HPUX 7.0 cc rejects these. */ +++ccp; +p = (char**) ccp; +ccp = (char const *const *) p; +{ /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; +} +{ /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25,17}; + const int *foo = &x[0]; + ++foo; +} +{ /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; +} +{ /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; +} +{ /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; +}' +echo checking for lack of working const +cat > conftest.c <> confdefs.h +DEFS="$DEFS -Dconst=" +} + +fi +rm -f conftest* + +echo checking for prototypes +cat > conftest.c </dev/null; then + +{ +test -n "$verbose" && \ +echo " defining HAVE_PROTOTYPES" +echo "#define" HAVE_PROTOTYPES 1 >> confdefs.h +DEFS="$DEFS -DHAVE_PROTOTYPES=1" +} + have_prototypes=1 + +fi +rm -fr conftest* +if test "$have_prototypes"; then +echo checking for "bad exec* prototypes" +cat > conftest.c < +int main() { exit(0); } +int t() { char *const*t;execve("@",t,t); } +EOF +if eval $compile; then + : +else + rm -rf conftest* + +{ +test -n "$verbose" && \ +echo " defining BAD_EXEC_PROTOTYPES" +echo "#define" BAD_EXEC_PROTOTYPES 1 >> confdefs.h +DEFS="$DEFS -DBAD_EXEC_PROTOTYPES=1" +} + +fi +rm -f conftest* + +fi + +# checks for system services +# (none yet) + +# other checks for UNIX variants +LIBS_save="${LIBS}" +LIBS="${LIBS} -lsun" +have_lib="" +echo checking for -lsun +cat > conftest.c < conftest.c < conftest.out 2>&1" +if egrep "yes" conftest.out >/dev/null 2>&1; then + rm -rf conftest* + XENIX=1 + +fi +rm -f conftest* + +if test -n "$XENIX"; then + LIBS="$LIBS -lx" + case "$DEFS" in + *SYSNDIR*) ;; + *) LIBS="-ldir $LIBS" ;; # Make sure -ldir precedes any -lx. + esac +fi + + +# generate output files +# Set default prefixes. +if test -n "$prefix"; then + test -z "$exec_prefix" && exec_prefix='${prefix}' + prsub="s%^prefix\\([ ]*\\)=\\([ ]*\\).*$%prefix\\1=\\2$prefix%" +fi +if test -n "$exec_prefix"; then + prsub="$prsub +s%^exec_prefix\\([ ]*\\)=\\([ ]*\\).*$%exec_prefix\\1=\\2$exec_prefix%" +fi +# Quote sed substitution magic chars in DEFS. +cat >conftest.def < config.status </dev/null | sed 1q`: +# +# $0 $configure_args + +for arg +do + case "\$arg" in + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo running \${CONFIG_SHELL-/bin/sh} $0 $configure_args + exec \${CONFIG_SHELL-/bin/sh} $0 $configure_args ;; + *) echo "Usage: config.status --recheck" 2>&1; exit 1 ;; + esac +done + +trap 'rm -f Objects/Makefile Parser/Makefile Python/Makefile; exit 1' 1 3 15 +CC='$CC' +RANLIB='$RANLIB' +CPP='$CPP' +LIBOBJS='$LIBOBJS' +LIBS='$LIBS' +srcdir='$srcdir' +DEFS='$DEFS' +prefix='$prefix' +exec_prefix='$exec_prefix' +prsub='$prsub' +extrasub='$extrasub' +EOF +cat >> config.status <<\EOF + +top_srcdir=$srcdir + +CONFIG_FILES=${CONFIG_FILES-"Objects/Makefile Parser/Makefile Python/Makefile"} +for file in .. ${CONFIG_FILES}; do if test "x$file" != x..; then + srcdir=$top_srcdir + # Remove last slash and all that follows it. Not all systems have dirname. + dir=`echo $file|sed 's%/[^/][^/]*$%%'` + if test "$dir" != "$file"; then + test "$top_srcdir" != . && srcdir=$top_srcdir/$dir + test ! -d $dir && mkdir $dir + fi + echo creating $file + rm -f $file + echo "# Generated automatically from `echo $file|sed 's|.*/||'`.in by configure." > $file + sed -e " +$prsub +$extrasub +s%@CC@%$CC%g +s%@RANLIB@%$RANLIB%g +s%@CPP@%$CPP%g +s%@LIBOBJS@%$LIBOBJS%g +s%@LIBS@%$LIBS%g +s%@srcdir@%$srcdir%g +s%@DEFS@%$DEFS% +" $top_srcdir/${file}.in >> $file +fi; done + + +exit 0 +EOF +chmod +x config.status +${CONFIG_SHELL-/bin/sh} config.status + diff --git a/configure.in b/configure.in new file mode 100644 index 00000000000..a01f12614d8 --- /dev/null +++ b/configure.in @@ -0,0 +1,77 @@ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(Py/object.h) + +# checks for alternative programs +AC_PROG_CC +AC_PROG_RANLIB + +# checks for UNIX variants that set C preprocessor variables +AC_AIX +AC_ISC_POSIX +AC_MINIX +dnl DYNIX test runs compile so must be last +AC_DYNIX_SEQ + +# checks for header files +AC_STDC_HEADERS +AC_HAVE_HEADERS(dlfcn.h signal.h stdarg.h unistd.h utime.h sys/param.h sys/select.h sys/times.h sys/utsname.h) +AC_DIR_HEADER + +# checks for typedefs +AC_GETGROUPS_T +AC_MODE_T +AC_OFF_T +AC_PID_T +AC_RETSIGTYPE +AC_SIZE_T +AC_UID_T + +# checks for libraries +AC_HAVE_LIBRARY(dl) +LIBS="${LIBS} -L${READLINESRC-${PWD-${CWD-`pwd`}}/readline}" +AC_HAVE_LIBRARY(readline) +if test -n "${have_lib}"; then +AC_HAVE_LIBRARY(termcap) +fi + +# Check for IRIX or SOLARIS thread interface +AC_HAVE_LIBRARY(mpc) +if test -n "${have_lib}"; then +DEFS="${DEFS} -DUSE_THREAD" +LIBOBJS="${LIBOBJS} thread.o" +fi + +AC_HAVE_LIBRARY(thread) +if test -n "${have_lib}"; then +DEFS="${DEFS} -DUSE_THREAD" +LIBOBJS="${LIBOBJS} thread.o" +fi + +# checks for library functions +AC_HAVE_FUNCS(clock ftime gettimeofday getpgrp getwd lstat readlink readline select setsid setpgid setpgrp siginterrupt symlink tcgetpgrp tcsetpgrp times uname waitpid) +AC_REPLACE_FUNCS(dup2 getcwd strerror strtoul strtod memmove) +AC_FUNC_CHECK(getpgrp, AC_COMPILE_CHECK([argument to getpgrp], [#include ], [getpgrp(0);], AC_DEFINE(GETPGRP_HAVE_ARG))) + +# checks for structures +AC_TIME_WITH_SYS_TIME +AC_STRUCT_TM +AC_TIMEZONE + +# checks for compiler characteristics +AC_CONST +echo checking for prototypes +AC_TEST_PROGRAM([int foo(int x){return 0;} int main(){return foo(10);}], AC_DEFINE(HAVE_PROTOTYPES) have_prototypes=1) +if test "$have_prototypes"; then +AC_COMPILE_CHECK(["bad exec* prototypes"], [#include ], [char *const*t;execve("@",t,t);], , AC_DEFINE(BAD_EXEC_PROTOTYPES)) +fi + +# checks for system services +# (none yet) + +# other checks for UNIX variants +AC_IRIX_SUN +AC_XENIX_DIR + +# generate output files +AC_OUTPUT(Objects/Makefile Parser/Makefile Python/Makefile)