######################################################################## # Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam, # The Netherlands. # # All Rights Reserved # # Permission to use, copy, modify, and distribute this software and its # documentation for any purpose and without fee is hereby granted, # provided that the above copyright notice appear in all copies and that # both that copyright notice and this permission notice appear in # supporting documentation, and that the names of Stichting Mathematisch # Centrum or CWI not be used in advertising or publicity pertaining to # distribution of the software without specific, written prior permission. # # STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO # THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND # FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE # FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT # OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ######################################################################## # Toplevel Makefile for Python # Note -- if recursive makes fail, try adding MAKE=make # Substitutions by configure srcdir= @srcdir@ VPATH= @srcdir@ INSTALL= @INSTALL@ INSTALL_PROGRAM=@INSTALL_PROGRAM@ INSTALL_DATA= @INSTALL_DATA@ RANLIB= @RANLIB@ # 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 MANDIR=$(prefix)/man BINDIR=$(exec_prefix)/bin LIBDIR=$(exec_prefix)/lib INCLUDEDIR=$(prefix)/include SCRIPTDIR=$(prefix)/lib # Symbols used for using shared libraries SO= @SO@ LDSHARED= @LDSHARED@ CCSHARED= @CCSHARED@ LINKFORSHARED= @LINKFORSHARED@ DESTSHARED= $(SCRIPTDIR)/python/$(MACHDEP) # Programs SHELL= /bin/sh # --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 Objects Python Modules # Other subdirectories SUBDIRSTOO= Include Lib Doc Misc Demo readline Grammar # 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) # Default target all: python # Build the interpreter python: Makefiles for i in $(SUBDIRS); do \ (echo $$i; cd $$i; $(MAKE) OPT="$(OPT)" all); \ done # Test the interpreter (twice, once without .pyc files, once with) TESTPATH= $(srcdir)/Lib:$(srcdir)/Lib/test:./Modules test: python -rm -f $(srcdir)/Lib/test/*.pyc PYTHONPATH=$(TESTPATH) ./python -c 'import autotest' PYTHONPATH=$(TESTPATH) ./python -c 'import autotest' # Install the interpreter install: python $(INSTALL_PROGRAM) python $(BINDIR)/python @echo If this is your first time, consider make libinstall... # Install the library. # If your system does not support "cp -r", try "copy -r" or perhaps # something like find Lib -print | cpio -pacvdmu $(LIBDEST) LIBDEST= $(SCRIPTDIR)/python libinstall: -if test ! -d $(LIBDEST); \ then mkdir $(LIBDEST); \ fi cp -r $(srcdir)/Lib/* $(LIBDEST) PYTHONPATH=$(LIBDEST) \ ./python $(LIBDEST)/compileall.py $(LIBDEST) $(MAKE) sharedinstall # install the manual page maninstall: $(INSTALL_DATA) $(srcdir)/Misc/python.man \ $(MANDIR)/man1/python.1 # install the include files INCLUDEPY= $(INCLUDEDIR)/Py inclinstall: -if test ! -d $(INCLUDEPY); \ then mkdir $(INCLUDEPY); \ fi $(INSTALL_DATA) $(srcdir)/Include/*.h $(INCLUDEPY) # install the lib*.a files and miscellaneous stuff needed by extensions LIBP= $(LIBDIR)/python LIBPL= $(LIBP)/lib libainstall: all -if test ! -d $(LIBP); \ then mkdir $(LIBP); \ fi -if test ! -d $(LIBPL); \ then mkdir $(LIBPL); \ fi for i in $(SUBDIRS); do \ echo $$i; $(INSTALL_DATA) $$i/lib$$i.a $(LIBPL)/lib$$i.a; \ $(RANLIB) $(LIBPL)/lib$$i.a; \ done $(INSTALL_DATA) Modules/config.c $(LIBPL)/config.c $(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) $(srcdir)/Modules/makesetup $(LIBPL)/makesetup $(INSTALL_DATA) config.h $(LIBPL)/config.h $(INSTALL_DATA) $(srcdir)/Python/frozenmain.c $(LIBPL)/frozenmain.c # install the dynamically loadable modules sharedinstall: cd Modules; $(MAKE) \ OPT="$(OPT)" \ SO="$(SO)" \ LDSHARED="$(LDSHARED)" \ CCSHARED="$(CCSHARED)" \ LINKFORSHARED="$(LINKFORSHARED)" \ DESTSHARED="$(DESTSHARED)" \ sharedinstall # Build the sub-Makefiles Makefiles: config.status Modules/Makefile.pre (cd Modules; $(MAKE) -f Makefile.pre Makefile) for i in . $(SUBDIRS); do \ (echo $$i; cd $$i; $(MAKE) Makefile); \ done # 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 # 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; autoheader) # Create a tags file for vi tags:: 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:: 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 $$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 \ (echo $$i; cd $$i; \ if test -f Makefile; \ then $(MAKE) clean; \ else $(MAKE) -f Makefile.*in clean; \ fi); \ done localclobber: localclean -rm -f tags TAGS python -rm -f config.log config.cache config.h Makefile clobber: localclobber -for i in $(SUBDIRS); do \ (echo $$i; cd $$i; \ if test -f Makefile; \ then $(MAKE) clobber; \ else $(MAKE) -f Makefile.in clobber; \ fi); \ done # Make things extra clean, before making a distribution distclean: clobber -$(MAKE) SUBDIRS="$(SUBDIRSTOO)" clobber -rm -f config.status config.log config.cache config.h 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 # Find files with funny names find: 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 RCS \ -o -name Repository \ -o -name Entries \ -o -name Tag \ -o -name tags \ -o -name TAGS \ -o -name .cvsignore \ -o -name MANIFEST \ -o -print # Build a distribution tar file (run make distclean first) # (This leaves the RCS and CVS directories in :-( ) tar: tar cf - $(DIST) | gzip --best >dist.tar.gz