mirror of
https://github.com/python/cpython.git
synced 2024-12-12 03:04:15 +08:00
290 lines
8.2 KiB
Makefile
290 lines
8.2 KiB
Makefile
########################################################################
|
|
# 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
|
|
|
|
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
|