New files
diff --git a/Makefile.in b/Makefile.in
new file mode 100644
index 0000000..b898af6
--- /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 0000000..df74e00
--- /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 <Guido.van.Rossum@cwi.nl>
+URL:  <http://www.cwi.nl/cwi/people/Guido.van.Rossum.html>
diff --git a/configure b/configure
new file mode 100755
index 0000000..eb7fb97
--- /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 <<EOF
+#ifdef __GNUC__
+  yes
+#endif
+EOF
+${CC-cc} -E 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 <<EOF
+#include "confdefs.h"
+#include <stdio.h>
+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 <<EOF
+#include "confdefs.h"
+#ifdef _AIX
+  yes
+#endif
+
+EOF
+eval "$CPP 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
+#include "confdefs.h"
+#include <minix/config.h>
+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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   :; LIBS="$LIBS -lseq"
+else
+   :; 
+fi
+
+
+
+# checks for header files
+echo checking for ANSI C header files
+cat > conftest.c <<EOF
+#include "confdefs.h"
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+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 <string.h>' > 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 <<EOF
+#include "confdefs.h"
+#include <ctype.h>
+#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
+#include "confdefs.h"
+#include <${hdr}>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <dirent.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/ndir.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/dir.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <ndir.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#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 <sys/types.h>' > 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 <sys/types.h>
+#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 <<EOF
+#include "confdefs.h"
+$prog
+EOF
+eval $compile
+if test -s conftest && (./conftest; exit) 2>/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 <sys/types.h>' > 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 <sys/types.h>' > 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 <sys/types.h>' > 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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <signal.h>
+#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 <sys/types.h>' > 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 <sys/types.h>' > 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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   
+{
+test -n "$verbose" && \
+echo "	defining HAVE_LIBDL"
+echo "#define" HAVE_LIBDL 1 >> 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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   
+{
+test -n "$verbose" && \
+echo "	defining HAVE_LIBREADLINE"
+echo "#define" HAVE_LIBREADLINE 1 >> 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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   
+{
+test -n "$verbose" && \
+echo "	defining HAVE_LIBTERMCAP"
+echo "#define" HAVE_LIBTERMCAP 1 >> 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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   
+{
+test -n "$verbose" && \
+echo "	defining HAVE_LIBMPC"
+echo "#define" HAVE_LIBMPC 1 >> 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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   
+{
+test -n "$verbose" && \
+echo "	defining HAVE_LIBTHREAD"
+echo "#define" HAVE_LIBTHREAD 1 >> 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 <<EOF
+#include "confdefs.h"
+#include <ctype.h>
+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 <<EOF
+#include "confdefs.h"
+#include <ctype.h>
+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 <<EOF
+#include "confdefs.h"
+#include <ctype.h>
+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 <<EOF
+#include "confdefs.h"
+#include <unistd.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <sys/time.h>
+#include <time.h>
+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 <<EOF
+#include "confdefs.h"
+#include <sys/types.h>
+#include <time.h>
+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 <sys/types.h>
+'
+case "$DEFS" in
+  *TM_IN_SYS_TIME*) decl="$decl
+#include <sys/time.h>
+" ;;
+  *) decl="$decl
+#include <time.h>
+" ;;
+esac
+echo checking for tm_zone in struct tm
+cat > conftest.c <<EOF
+#include "confdefs.h"
+$decl
+int main() { exit(0); }
+int t() { struct tm tm; tm.tm_zone; }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  
+{
+test -n "$verbose" && \
+echo "	defining HAVE_TM_ZONE"
+echo "#define" HAVE_TM_ZONE 1 >> 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 <<EOF
+#include "confdefs.h"
+#include <time.h>
+#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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { $prog }
+EOF
+if eval $compile; then
+  :
+else
+  rm -rf conftest*
+  
+{
+test -n "$verbose" && \
+echo "	defining" const to be empty
+echo "#define" const  >> confdefs.h
+DEFS="$DEFS -Dconst="
+}
+
+fi
+rm -f conftest*
+
+echo checking for prototypes
+cat > conftest.c <<EOF
+#include "confdefs.h"
+int foo(int x){return 0;} int main(){return foo(10);}
+EOF
+eval $compile
+if test -s conftest && (./conftest; exit) 2>/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 <<EOF
+#include "confdefs.h"
+#include <unistd.h>
+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 <<EOF
+#include "confdefs.h"
+
+int main() { exit(0); }
+int t() { main(); }
+EOF
+if eval $compile; then
+  rm -rf conftest*
+  have_lib="1"
+
+fi
+rm -f conftest*
+LIBS="${LIBS_save}"
+if test -n "${have_lib}"; then
+   :; LIBS="$LIBS -lsun"
+else
+   :; 
+fi
+
+
+echo checking for Xenix
+cat > conftest.c <<EOF
+#include "confdefs.h"
+#if defined(M_XENIX) && !defined(M_UNIX)
+  yes
+#endif
+
+EOF
+eval "$CPP 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 <<EOF
+$DEFS
+EOF
+escape_ampersand_and_backslash='s%[&\\]%\\&%g'
+DEFS=`sed "$escape_ampersand_and_backslash" <conftest.def`
+rm -f conftest.def
+# Substitute for predefined variables.
+
+trap 'rm -f config.status; exit 1' 1 3 15
+echo creating config.status
+rm -f config.status
+cat > config.status <<EOF
+#!/bin/sh
+# Generated automatically by configure.
+# Run this file to recreate the current configuration.
+# This directory was configured as follows,
+# on host `(hostname || uname -n) 2>/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 0000000..a01f126
--- /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 <unistd.h>], [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 <unistd.h>], [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)