Staging
v0.8.1
https://github.com/python/cpython
Revision 2051608616178ca6b73d5d59d887ddd67c5835e3 authored by Jeremy Hylton on 01 September 2000, 20:33:26 UTC, committed by Jeremy Hylton on 01 September 2000, 20:33:26 UTC
Fix import support to work with import as variant of Python 2.0.  The
grammar for import changed, requiring changes in transformer and code
generator, even to handle compilation of imports with as.
1 parent 7527e00
Raw File
Tip revision: 2051608616178ca6b73d5d59d887ddd67c5835e3 authored by Jeremy Hylton on 01 September 2000, 20:33:26 UTC
Update magic number.
Tip revision: 2051608
Makefile.in
########################################################################
# Copyright (c) 2000, BeOpen.com.
# Copyright (c) 1995-2000, Corporation for National Research Initiatives.
# Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
# All rights reserved.
# 
# See the file "Misc/COPYRIGHT" for information on usage and
# redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
########################################################################

# Top-level Makefile for Python
# 
# As distributed, this file is called Makefile.in; it is processed
# into the real Makefile by running the script ./configure, which
# replaces things like @spam@ with values appropriate for your system.
# This means that if you edit Makefile, your changes get lost the next
# time you run the configure script.  Ideally, you can do:
# 
#	./configure
#	make
#	make test
#	make install
# 
# The top-level Makefile invokes make recursively in a number of
# subdirectories (see the SUBDIRS variable below).  If you want to,
# you can invoke make in individual subdirectories.  However, the
# sub-Makefiles are also generated by configure, and the quickest way
# to make sure they are up to date is by running make (or "make
# Makefiles") at the top level.  This is particularly important for
# Modules/Makefile, which has to be regenerated every time you edit
# Modules/Setup.  The python executable is built in the Modules
# directory and then moved to the top-level directory.  The recursive
# makes pass three options to subordinate makes: OPT (a quick way to
# change some compiler options; it usually defaults to -O), prefix and
# exec_prefix (the installation paths).
# 
# If you have a previous version of Python installed that you don't
# want to overwrite, you can use "make altinstall" instead of "make
# install".  This changes the install procedure so it installs the
# Python binary as "python<version>".  The libraries and include files
# are always installed in a subdirectory called "python<version>".
# "make altinstall" does not install the manual page.  If you want to
# make this installation the "official" installation but want to keep
# the old binary around "just in case", rename the installed python
# binary to "python<oldversion>" before running "make install".
# (This only works between different versions, e.g. 1.3 and 1.4 --
# different betas of the same version will overwrite each other in
# installation unless you override the VERSION Make variable.)
# 
# In fact, "make install" or "make bininstall" installs the binary
# as python<version> and makes a hard link to python, so when
# installing a new version in the future, nothing of the current
# version will be lost (except for the man page).
# 
# If recursive makes fail, try invoking make as "make MAKE=make".
# 
# See also the section "Build instructions" in the README file.

# Substitutions by configure
VERSION=	@VERSION@
srcdir=		@srcdir@
VPATH=		@srcdir@
CC=		@CC@
AR=		@AR@
RANLIB=		@RANLIB@
DEFS=		@DEFS@

# Machine-dependent subdirectories
MACHDEP=	@MACHDEP@

# Install prefix for architecture-independent files
prefix=		@prefix@

# Install prefix for architecture-dependent files
exec_prefix=	@exec_prefix@

# Expanded directories
BINDIR=		$(exec_prefix)/bin
LIBDIR=		$(exec_prefix)/lib
MANDIR=		$(prefix)/man
INCLUDEDIR=	$(prefix)/include
CONFINCLUDEDIR=	$(exec_prefix)/include
SCRIPTDIR=	$(prefix)/lib

# Detailed destination directories
BINLIBDEST=	$(LIBDIR)/python$(VERSION)
LIBDEST=	$(SCRIPTDIR)/python$(VERSION)
INCLUDEPY=	$(INCLUDEDIR)/python$(VERSION)
CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(VERSION)
LIBP=		$(LIBDIR)/python$(VERSION)

# Symbols used for using shared libraries
SO=		@SO@
LDSHARED=	@LDSHARED@
CCSHARED=	@CCSHARED@
LINKFORSHARED=	@LINKFORSHARED@
DESTSHARED=	$(BINLIBDEST)/lib-dynload

# Shell used by make (some versions default to the login shell, which is bad)
SHELL=		/bin/sh

# Use ``EXE=.exe'' for Unix emulations on DOS/Windows (e.g. GNUWIN32)
EXE=

# Modes for directories, executables and data files created by the
# install process.  Default to user-only-writable for all file types.
DIRMODE=	755
EXEMODE=	755
FILEMODE=	644

# Portable install script (configure doesn't always guess right)
INSTALL=	@srcdir@/install-sh -c
INSTALL_PROGRAM=${INSTALL} -m $(EXEMODE)
INSTALL_DATA=	${INSTALL} -m $(FILEMODE)

# Use this to make a link between python$(VERSION) and python in $(BINDIR)
LN=@LN@

# --with-PACKAGE options for configure script
# e.g. --with-readline --with-svr5 --with-solaris --with-thread
# (see README for an explanation)
WITH=		

# Compiler options passed to subordinate makes
OPT=		@OPT@

# Subdirectories where to run make recursively
SUBDIRS=	Parser Grammar Objects Python Modules

# Other subdirectories
SUBDIRSTOO=	Include Lib Misc Demo

# Files and directories to be distributed
CONFIGFILES=	configure configure.in acconfig.h config.h.in Makefile.in
DISTFILES=	README ChangeLog $(CONFIGFILES)
DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
DIST=		$(DISTFILES) $(DISTDIRS)

# Compilation flags for getbuildinfo.c only
CFLAGS=		$(OPT) -I. $(DEFS)

LIBRARY=	libpython$(VERSION).a
LDLIBRARY=      @LDLIBRARY@

# Default target
all:		$(LIBRARY) python$(EXE) sharedmods

# Build the interpreter
python$(EXE):		$(LIBRARY) buildno Modules/python.o
		expr `cat buildno` + 1 >buildno1
		mv -f buildno1 buildno
		$(CC) -c $(CFLAGS) -DBUILD=`cat buildno` \
		      $(srcdir)/Modules/getbuildinfo.c
		$(AR) cr $(LIBRARY) getbuildinfo.o
		$(RANLIB) $(LIBRARY)
		@MAKE_LDLIBRARY@
		cd Modules;  $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" \
			LIBRARY=../$(LDLIBRARY) link

Modules/python.o: $(srcdir)/Modules/python.c
		cd Modules; $(MAKE) OPT="$(OPT)" python.o

buildno:
		echo 0 >buildno

# Build the shared modules
sharedmods: 	python$(EXE)
		cd Modules;  $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" \
			sharedmods

# Build the library
$(LIBRARY):	$(SUBDIRS)
		if test ! -f $(LIBRARY); \
		then for i in $(SUBDIRS); do rm -f $$i/add2lib; done; true; \
		else true; fi
		for i in $(SUBDIRS); do \
			(cd $$i; $(MAKE) VERSION="$(VERSION)" add2lib); done

# This rule is only here for DG/UX!!!
libpython$(VERSION).so:	$(LIBRARY)
		case `uname -s | tr -d '/ ' | tr '[A-Z]' '[a-z]'` in \
		*dgux*) \
		    test -d dgux || mkdir dgux; \
		    (cd dgux;ar x ../$^;ld -G -o ../$@ * ); \
		    /bin/rm -rf ./dgux \
		    ;; \
		esac

# This rule is here for OPENSTEP/Rhapsody/MacOSX
libpython$(VERSION).dylib: $(LIBRARY)
		libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) -framework System @LIBTOOL_CRUFT@ 

$(SUBDIRS):	Makefiles

Grammar:
		cd Grammar ; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" all

Parser:
		cd Parser ; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" all

Python:
		cd Python ; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" all

Objects:
		cd Objects ; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" all

Modules:	Parser Python Objects
		cd Modules ; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \
			prefix="$(prefix)" exec_prefix="$(exec_prefix)" all

# Test the interpreter (twice, once without .pyc files, once with)
TESTOPTS=	-l
TESTPROG=	$(srcdir)/Lib/test/regrtest.py
TESTPYTHON=	./python$(EXE) -tt
test:		all
		-rm -f $(srcdir)/Lib/test/*.py[co]
		-PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
		PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS)

# Install everything
install:	altinstall bininstall maninstall

# Install almost everything without disturbing previous versions
altinstall:	altbininstall libinstall inclinstall libainstall sharedinstall

# Install the interpreter (by creating a hard link to python$(VERSION))
bininstall:	altbininstall
		-if test -f $(BINDIR)/python$(EXE); \
		then rm -f $(BINDIR)/python$(EXE); \
		else true; \
		fi
		(cd $(BINDIR); $(LN) python$(VERSION)$(EXE) python$(EXE))

# Install the interpreter with $(VERSION) affixed
# This goes into $(exec_prefix)
altbininstall:	python$(EXE)
		@for i in $(BINDIR); \
		do \
			if test ! -d $$i; then \
				echo "Creating directory $$i"; \
				mkdir $$i; \
				chmod $(DIRMODE) $$i; \
			else	true; \
			fi; \
		done
		$(INSTALL_PROGRAM) python$(EXE) $(BINDIR)/python$(VERSION)$(EXE)
		if test -f libpython$(VERSION).so; then \
			$(INSTALL_DATA) libpython$(VERSION).so $(LIBDIR); \
		else	true; \
		fi

# Install the manual page
maninstall:
		@for i in $(MANDIR) $(MANDIR)/man1; \
		do \
			if test ! -d $$i; then \
				echo "Creating directory $$i"; \
				mkdir $$i; \
				chmod $(DIRMODE) $$i; \
			else	true; \
			fi; \
		done
		$(INSTALL_DATA) $(srcdir)/Misc/python.man \
			$(MANDIR)/man1/python.1

# Install the library
PLATDIR=	plat-$(MACHDEP)
MACHDEPS=	$(PLATDIR)
XMLLIBSUBDIRS=  xml xml/dom xml/parser xml/sax
LIBSUBDIRS=	lib-old lib-tk site-packages test test/output encodings \
		distutils distutils/command $(XMLLIBSUBDIRS) curses $(MACHDEPS)
libinstall:	python $(srcdir)/Lib/$(PLATDIR)
		@for i in $(SCRIPTDIR) $(LIBDEST); \
		do \
			if test ! -d $$i; then \
				echo "Creating directory $$i"; \
				mkdir $$i; \
				chmod $(DIRMODE) $$i; \
			else	true; \
			fi; \
		done
		@for d in $(LIBSUBDIRS); \
		do \
			a=$(srcdir)/Lib/$$d; \
			if test ! -d $$a; then continue; else true; fi; \
			b=$(LIBDEST)/$$d; \
			if test ! -d $$b; then \
				echo "Creating directory $$b"; \
				mkdir $$b; \
				chmod $(DIRMODE) $$b; \
			else	true; \
			fi; \
		done
		@for i in $(srcdir)/Lib/*.py $(srcdir)/Lib/*.doc; \
		do \
			if test -x $$i; then \
				$(INSTALL_PROGRAM) $$i $(LIBDEST); \
				echo $(INSTALL_PROGRAM) $$i $(LIBDEST); \
			else \
				$(INSTALL_DATA) $$i $(LIBDEST); \
				echo $(INSTALL_DATA) $$i $(LIBDEST); \
			fi; \
		done
		@for d in $(LIBSUBDIRS); \
		do \
			a=$(srcdir)/Lib/$$d; \
			if test ! -d $$a; then continue; else true; fi; \
			b=$(LIBDEST)/$$d; \
			for i in $$a/*; \
			do \
				case $$i in \
				*CVS) ;; \
				*.py[co]) ;; \
				*.orig) ;; \
				*~) ;; \
				*) \
					if test -d $$i; then continue; fi; \
					if test -x $$i; then \
					    echo $(INSTALL_PROGRAM) $$i $$b; \
					    $(INSTALL_PROGRAM) $$i $$b; \
					else \
					    echo $(INSTALL_DATA) $$i $$b; \
					    $(INSTALL_DATA) $$i $$b; \
					fi;; \
				esac; \
			done; \
		done
		PYTHONPATH=$(LIBDEST) \
			./python$(EXE) -tt $(LIBDEST)/compileall.py $(LIBDEST)
		PYTHONPATH=$(LIBDEST) \
			./python$(EXE) -O $(LIBDEST)/compileall.py $(LIBDEST)

# Create the PLATDIR source directory, if one wasn't distributed..
$(srcdir)/Lib/$(PLATDIR):
		mkdir $(srcdir)/Lib/$(PLATDIR)
		cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen
		export PATH; PATH="`pwd`:$$PATH"; \
		export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
		cd $(srcdir)/Lib/$(PLATDIR); ./regen

# Install the include files
INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
inclinstall:
		@for i in $(INCLDIRSTOMAKE); \
		do \
			if test ! -d $$i; then \
				echo "Creating directory $$i"; \
				mkdir $$i; \
				chmod $(DIRMODE) $$i; \
			else	true; \
			fi; \
		done
		@for i in $(srcdir)/Include/*.h; \
		do \
			echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
			$(INSTALL_DATA) $$i $(INCLUDEPY); \
		done
		$(INSTALL_DATA) config.h $(CONFINCLUDEPY)/config.h

# Install the library and miscellaneous stuff needed for extending/embedding
# This goes into $(exec_prefix)
LIBPL=		$(LIBP)/config
libainstall:	all
		@for i in $(LIBDIR) $(LIBP) $(LIBPL); \
		do \
			if test ! -d $$i; then \
				echo "Creating directory $$i"; \
				mkdir $$i; \
				chmod $(DIRMODE) $$i; \
			else	true; \
			fi; \
		done
		@if [ "$(MACHDEP)" != "beos" ] ; then \
			$(INSTALL_DATA) $(LIBRARY) $(LIBPL)/$(LIBRARY) ; \
			$(RANLIB) $(LIBPL)/$(LIBRARY) ; \
		fi
		$(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c
		$(INSTALL_DATA) Modules/python.o $(LIBPL)/python.o
		$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(LIBPL)/config.c.in
		$(INSTALL_DATA) Modules/Makefile $(LIBPL)/Makefile
		$(INSTALL_DATA) Modules/Setup $(LIBPL)/Setup
		$(INSTALL_DATA) Modules/Setup.local $(LIBPL)/Setup.local
		$(INSTALL_DATA) Modules/Setup.config $(LIBPL)/Setup.config
		$(INSTALL_PROGRAM) $(srcdir)/Modules/makesetup $(LIBPL)/makesetup
		$(INSTALL_PROGRAM) $(srcdir)/install-sh $(LIBPL)/install-sh
		$(INSTALL_DATA) $(srcdir)/Misc/Makefile.pre.in $(LIBPL)/Makefile.pre.in
		@if [ -s Modules/python.exp -a \
			"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
			echo; echo "Installing support files for building shared extension modules on AIX:"; \
			$(INSTALL_DATA) Modules/python.exp		\
					$(LIBPL)/python.exp;		\
			echo; echo "$(LIBPL)/python.exp";		\
			$(INSTALL_PROGRAM) $(srcdir)/Modules/makexp_aix	\
					$(LIBPL)/makexp_aix;		\
			echo "$(LIBPL)/makexp_aix";			\
			$(INSTALL_PROGRAM) $(srcdir)/Modules/ld_so_aix	\
					$(LIBPL)/ld_so_aix;		\
			echo "$(LIBPL)/ld_so_aix";			\
			echo; echo "See Misc/AIX-NOTES for details.";	\
		else true; \
		fi
		@if [ "$(MACHDEP)" = "beos" ] ; then \
			echo; echo "Installing support files for building shared extension modules on BeOS:"; \
			$(INSTALL_DATA) BeOS/README $(LIBPL)/README;	\
			echo; echo "$(LIBPL)/README";			\
			$(INSTALL_DATA) BeOS/README.readline-2.2 $(LIBPL)/README.readline-2.2; \
			echo "$(LIBPL)/README.readline-2.2";		\
			$(INSTALL_DATA) BeOS/dl_export.h $(LIBPL)/dl_export.h; \
			echo "$(LIBPL)/dl_export.h";			\
			$(INSTALL_PROGRAM) BeOS/ar-fake $(LIBPL)/ar-fake; \
			echo "$(LIBPL)/ar-fake";			\
			$(INSTALL_PROGRAM) BeOS/linkcc $(LIBPL)/linkcc; \
			echo "$(LIBPL)/linkcc";				\
			$(INSTALL_PROGRAM) BeOS/linkmodule $(LIBPL)/linkmodule; \
			echo "$(LIBPL)/linkmodule";			\
			echo; echo "See BeOS/README for details.";	\
		else true; \
		fi

# Install the dynamically loadable modules
# This goes into $(exec_prefix)
sharedinstall:
		cd Modules; $(MAKE) \
			OPT="$(OPT)" \
			VERSION="$(VERSION)" \
			SO="$(SO)" \
			LDSHARED="$(LDSHARED)" \
			CCSHARED="$(CCSHARED)" \
			LINKFORSHARED="$(LINKFORSHARED)" \
			DESTSHARED="$(DESTSHARED)" \
			prefix="$(prefix)" \
			exec_prefix="$(exec_prefix)" \
			sharedinstall

# Build the sub-Makefiles
Makefiles:	config.status Modules/Makefile.pre
		(cd Modules; $(MAKE) -f Makefile.pre Makefile)
		@for i in . $(SUBDIRS); do \
			(echo making Makefile in subdirectory $$i; cd $$i; \
			 $(MAKE) Makefile); \
		done
		-(rm -f Modules/hassignal; cd Modules; $(MAKE) hassignal)

# Build the intermediate Makefile in Modules
Modules/Makefile.pre: config.status
		$(SHELL) config.status

# Build the toplevel Makefile
Makefile:	Makefile.in config.status
		CONFIG_FILES=Makefile CONFIG_HEADERS= $(SHELL) config.status

# Run the configure script.  If config.status already exists,
# call it with the --recheck argument, which reruns configure with the
# same options as it was run last time; otherwise run the configure
# script with options taken from the $(WITH) variable
config.status:	$(srcdir)/configure
		if test -f config.status; \
		then $(SHELL) config.status --recheck; \
		     $(SHELL) config.status; \
		else $(SHELL) $(srcdir)/configure $(WITH); \
		fi

.PRECIOUS:	config.status python$(EXE)

# Rerun configure with the same options as it was run last time,
# provided the config.status script exists
recheck:
		$(SHELL) config.status --recheck
		$(SHELL) config.status

# Rebuild the configure script from configure.in; also rebuild config.h.in
autoconf:
		(cd $(srcdir); autoconf)
		(cd $(srcdir); autoheader)

# Create a tags file for vi
tags::
		cd $(srcdir); \
		ctags -w -t Include/*.h; \
		for i in $(SUBDIRS); do ctags -w -t -a $$i/*.[ch]; \
		done; \
		sort tags -o tags

# Create a tags file for GNU Emacs
TAGS::
		cd $(srcdir); \
		etags Include/*.h; \
		for i in $(SUBDIRS); do etags -a $$i/*.[ch]; done

# Add dependencies to sub-Makefiles
depend:
		@for i in $(SUBDIRS); do \
			(echo making depend in subdirectory $$i; cd $$i; \
			 $(MAKE) depend); \
		done

# Sanitation targets -- clean leaves libraries, executables and tags
# files, which clobber removes those as well

localclean:
		-rm -f core *~ [@,#]* *.old *.orig *.rej

clean:		localclean
		-for i in $(SUBDIRS); do \
		    if test -d $$i; then \
			(echo making clean in subdirectory $$i; cd $$i; \
			 if test -f Makefile; \
			 then $(MAKE) clean; \
			 else $(MAKE) -f Makefile.*in clean; \
			 fi); \
		    else true; fi; \
		done

localclobber:	localclean
		-rm -f tags TAGS python$(EXE) $(LIBRARY) $(LDLIBRARY) *.o
		-rm -f config.log config.cache config.h

clobber:	localclobber
		-for i in $(SUBDIRS); do \
		    if test -d $$i; then \
			(echo clobbering subdirectory $$i; cd $$i; \
			 if test -f Makefile; \
			 then $(MAKE) clobber; \
			 else $(MAKE) -f $(srcdir)/Makefile*.in clobber; \
			 fi); \
		    else true; fi; \
		done

# Make things extra clean, before making a distribution:
# remove all generated files, even Makefile[.pre]
distclean:	clobber
		-$(MAKE) -f $(srcdir)/Makefile.in \
			SUBDIRS="$(SUBDIRSTOO)" clobber
		-rm -f config.status config.log config.cache config.h Makefile
		-rm -f buildno
		-rm -f Modules/Makefile
		-for i in $(SUBDIRS) $(SUBDIRSTOO); do \
			 for f in $$i/*.in; do \
				f=`basename "$$f" .in`; \
			 	if test "$$f" != "*"; then \
					echo rm -f "$$i/$$f"; \
				 	rm -f "$$i/$$f"; \
				fi; \
			 done; \
		done

# Check for smelly exported symbols (not starting with Py/_Py)
smelly: all
	for i in $(SUBDIRS); do \
		echo --- $$i ---; \
		nm -p $$i/lib$$i.a | \
		sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \
	done

# Find files with funny names
funny:
		find $(DISTDIRS) -type d \
			-o -name '*.[chs]' \
			-o -name '*.py' \
			-o -name '*.doc' \
			-o -name '*.sty' \
			-o -name '*.bib' \
			-o -name '*.dat' \
			-o -name '*.el' \
			-o -name '*.fd' \
			-o -name '*.in' \
			-o -name '*.tex' \
			-o -name '*,[vpt]' \
			-o -name 'Setup' \
			-o -name 'Setup.*' \
			-o -name README \
			-o -name Makefile \
			-o -name ChangeLog \
			-o -name Repository \
			-o -name Root \
			-o -name Entries \
			-o -name Tag \
			-o -name tags \
			-o -name TAGS \
			-o -name .cvsignore \
			-o -name MANIFEST \
			-o -print
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
back to top