# Top-level Makefile for Python## As distributed, this file is called Makefile.pre.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## 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". Refer to the "Installing" section in the README file for# additional details.## See also the section "Build instructions" in the README file.# === Variables set by makesetup ===MODOBJS= _MODOBJS_MODLIBS= _MODLIBS_# === Variables set by configureVERSION= @VERSION@srcdir= @srcdir@VPATH= @srcdir@abs_srcdir= @abs_srcdir@abs_builddir= @abs_builddir@build= @build@host= @host@CC= @CC@CXX= @CXX@MAINCC= @MAINCC@LINKCC= @LINKCC@AR= @AR@RANLIB= @RANLIB@SVNVERSION= @SVNVERSION@HGVERSION= @HGVERSION@HGTAG= @HGTAG@HGBRANCH= @HGBRANCH@GNULD= @GNULD@# Shell used by make (some versions default to the login shell, which is bad)SHELL= /bin/sh# Use this to make a link between python$(VERSION) and python in $(BINDIR)LN= @LN@# Portable install script (configure doesn't always guess right)INSTALL= @INSTALL@INSTALL_PROGRAM=@INSTALL_PROGRAM@INSTALL_SCRIPT= @INSTALL_SCRIPT@INSTALL_DATA= @INSTALL_DATA@# Shared libraries must be installed with executable mode on some systems;# rather than figuring out exactly which, we always give them executable mode.# Also, making them read-only seems to be a good idea...INSTALL_SHARED= ${INSTALL} -m 555MKDIR_P= @MKDIR_P@MAKESETUP= $(srcdir)/Modules/makesetup# Compiler optionsOPT= @OPT@BASECFLAGS= @BASECFLAGS@CFLAGS= $(BASECFLAGS) @CFLAGS@ $(OPT) $(EXTRA_CFLAGS)# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to# be able to build extension modules using the directories specified in the# environment variablesCPPFLAGS= -I. -IInclude -I$(srcdir)/Include @CPPFLAGS@LDFLAGS= @LDFLAGS@LDLAST= @LDLAST@SGI_ABI= @SGI_ABI@CCSHARED= @CCSHARED@LINKFORSHARED= @LINKFORSHARED@ARFLAGS= @ARFLAGS@# Extra C flags added for building the interpreter object files.CFLAGSFORSHARED=@CFLAGSFORSHARED@# C flags used for building the interpreter object filesPY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE# Machine-dependent subdirectoriesMACHDEP= @MACHDEP@# Multiarch directory (may be empty)MULTIARCH= @MULTIARCH@# Install prefix for architecture-independent filesprefix= @prefix@# Install prefix for architecture-dependent filesexec_prefix= @exec_prefix@# Install prefix for data filesdatarootdir= @datarootdir@# Expanded directoriesBINDIR= @bindir@LIBDIR= @libdir@MANDIR= @mandir@INCLUDEDIR= @includedir@CONFINCLUDEDIR= $(exec_prefix)/includeSCRIPTDIR= $(prefix)/lib# Detailed destination directoriesBINLIBDEST= $(LIBDIR)/python$(VERSION)LIBDEST= $(SCRIPTDIR)/python$(VERSION)INCLUDEPY= $(INCLUDEDIR)/python$(VERSION)CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION)LIBP= $(LIBDIR)/python$(VERSION)# Symbols used for using shared librariesSO= @SO@LDSHARED= @LDSHARED@ $(LDFLAGS)BLDSHARED= @BLDSHARED@ $(LDFLAGS)LDCXXSHARED= @LDCXXSHARED@DESTSHARED= $(BINLIBDEST)/lib-dynload# Executable suffix (.exe on Windows and Mac OS X)EXE= @EXEEXT@BUILDEXE= @BUILDEXEEXT@# Short name and location for Mac OS X Python frameworkUNIVERSALSDK=@UNIVERSALSDK@PYTHONFRAMEWORK= @PYTHONFRAMEWORK@PYTHONFRAMEWORKDIR= @PYTHONFRAMEWORKDIR@PYTHONFRAMEWORKPREFIX= @PYTHONFRAMEWORKPREFIX@PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@# Deployment target selected during configure, to be checked# by distutils. The export statement is needed to ensure that the# deployment target is active during build.MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@@EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET# Options to enable prebinding (for fast startup prior to Mac OS X 10.3)OTHER_LIBTOOL_OPT=@OTHER_LIBTOOL_OPT@# Environment to run shared python without installed librariesRUNSHARED= @RUNSHARED@# ensurepip optionsENSUREPIP= @ENSUREPIP@# Modes for directories, executables and data files created by the# install process. Default to user-only-writable for all file types.DIRMODE= 755EXEMODE= 755FILEMODE= 644# configure script argumentsCONFIG_ARGS= @CONFIG_ARGS@# Subdirectories with codeSRCDIRS= @SRCDIRS@# Other subdirectoriesSUBDIRSTOO= Include Lib Misc Demo# Files and directories to be distributedCONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.inDISTFILES= README ChangeLog $(CONFIGFILES)DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummyDIST= $(DISTFILES) $(DISTDIRS)LIBRARY= @LIBRARY@LDLIBRARY= @LDLIBRARY@BLDLIBRARY= @BLDLIBRARY@DLLLIBRARY= @DLLLIBRARY@LDLIBRARYDIR= @LDLIBRARYDIR@INSTSONAME= @INSTSONAME@LIBS= @LIBS@LIBM= @LIBM@LIBC= @LIBC@SYSLIBS= $(LIBM) $(LIBC)SHLIBS= @SHLIBS@THREADOBJ= @THREADOBJ@DLINCLDIR= @DLINCLDIR@DYNLOADFILE= @DYNLOADFILE@MACHDEP_OBJS= @MACHDEP_OBJS@LIBOBJDIR= Python/LIBOBJS= @LIBOBJS@UNICODE_OBJS= @UNICODE_OBJS@PYTHON= python$(EXE)BUILDPYTHON= python$(BUILDEXE)PYTHON_FOR_BUILD=@PYTHON_FOR_BUILD@_PYTHON_HOST_PLATFORM=@_PYTHON_HOST_PLATFORM@HOST_GNU_TYPE= @host@# Tcl and Tk config info from --with-tcltk-includes and -libs optionsTCLTK_INCLUDES= @TCLTK_INCLUDES@TCLTK_LIBS= @TCLTK_LIBS@# The task to run while instrument when building the profile-opt targetPROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck#PROFILE_TASK= $(srcdir)/Lib/test/regrtest.py# === Definitions added by makesetup ===########################################################################### ModulesMODULE_OBJS= \Modules/config.o \Modules/getpath.o \Modules/main.o \Modules/gcmodule.o# Used of signalmodule.o is not availableSIGNAL_OBJS= @SIGNAL_OBJS@########################################################################### GrammarGRAMMAR_H= Include/graminit.hGRAMMAR_C= Python/graminit.cGRAMMAR_INPUT= $(srcdir)/Grammar/GrammarLIBFFI_INCLUDEDIR= @LIBFFI_INCLUDEDIR@########################################################################### ParserPGEN= Parser/pgen$(EXE)PSRCS= \Parser/acceler.c \Parser/grammar1.c \Parser/listnode.c \Parser/node.c \Parser/parser.c \Parser/parsetok.c \Parser/bitset.c \Parser/metagrammar.c \Parser/firstsets.c \Parser/grammar.c \Parser/pgen.cPOBJS= \Parser/acceler.o \Parser/grammar1.o \Parser/listnode.o \Parser/node.o \Parser/parser.o \Parser/parsetok.o \Parser/bitset.o \Parser/metagrammar.o \Parser/firstsets.o \Parser/grammar.o \Parser/pgen.oPARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.oPGSRCS= \Objects/obmalloc.c \Python/mysnprintf.c \Python/pyctype.c \Parser/tokenizer_pgen.c \Parser/printgrammar.c \Parser/pgenmain.cPGOBJS= \Objects/obmalloc.o \Python/mysnprintf.o \Python/pyctype.o \Parser/tokenizer_pgen.o \Parser/printgrammar.o \Parser/pgenmain.oPARSER_HEADERS= \Parser/parser.h \Parser/tokenizer.hPGENSRCS= $(PSRCS) $(PGSRCS)PGENOBJS= $(POBJS) $(PGOBJS)########################################################################### ASTAST_H_DIR= IncludeAST_H= $(AST_H_DIR)/Python-ast.hAST_C_DIR= PythonAST_C= $(AST_C_DIR)/Python-ast.cAST_ASDL= $(srcdir)/Parser/Python.asdlASDLGEN_FILES= $(srcdir)/Parser/asdl.py $(srcdir)/Parser/asdl_c.py# XXX Note that a build now requires Python exist before the build startsASDLGEN= $(srcdir)/Parser/asdl_c.py########################################################################### PythonPYTHON_OBJS= \Python/_warnings.o \Python/Python-ast.o \Python/asdl.o \Python/ast.o \Python/bltinmodule.o \Python/ceval.o \Python/compile.o \Python/codecs.o \Python/errors.o \Python/frozen.o \Python/frozenmain.o \Python/future.o \Python/getargs.o \Python/getcompiler.o \Python/getcopyright.o \Python/getplatform.o \Python/getversion.o \Python/graminit.o \Python/import.o \Python/importdl.o \Python/marshal.o \Python/modsupport.o \Python/mystrtoul.o \Python/mysnprintf.o \Python/peephole.o \Python/pyarena.o \Python/pyctype.o \Python/pyfpe.o \Python/pymath.o \Python/pystate.o \Python/pythonrun.o \Python/random.o \Python/structmember.o \Python/symtable.o \Python/sysmodule.o \Python/traceback.o \Python/getopt.o \Python/pystrcmp.o \Python/pystrtod.o \Python/dtoa.o \Python/formatter_unicode.o \Python/formatter_string.o \Python/$(DYNLOADFILE) \$(LIBOBJS) \$(MACHDEP_OBJS) \$(THREADOBJ)########################################################################### ObjectsOBJECT_OBJS= \Objects/abstract.o \Objects/boolobject.o \Objects/bufferobject.o \Objects/bytes_methods.o \Objects/bytearrayobject.o \Objects/capsule.o \Objects/cellobject.o \Objects/classobject.o \Objects/cobject.o \Objects/codeobject.o \Objects/complexobject.o \Objects/descrobject.o \Objects/enumobject.o \Objects/exceptions.o \Objects/genobject.o \Objects/fileobject.o \Objects/floatobject.o \Objects/frameobject.o \Objects/funcobject.o \Objects/intobject.o \Objects/iterobject.o \Objects/listobject.o \Objects/longobject.o \Objects/dictobject.o \Objects/memoryobject.o \Objects/methodobject.o \Objects/moduleobject.o \Objects/object.o \Objects/obmalloc.o \Objects/rangeobject.o \Objects/setobject.o \Objects/sliceobject.o \Objects/stringobject.o \Objects/structseq.o \Objects/tupleobject.o \Objects/typeobject.o \Objects/weakrefobject.o \$(UNICODE_OBJS)########################################################################### objects that get linked into the Python libraryLIBRARY_OBJS= \Modules/getbuildinfo.o \$(PARSER_OBJS) \$(OBJECT_OBJS) \$(PYTHON_OBJS) \$(MODULE_OBJS) \$(SIGNAL_OBJS) \$(MODOBJS)########################################################################## Rules# Default targetall: build_allbuild_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks# Compile a binary with gcc profile guided optimization.profile-opt:@echo "Building with support for profile generation:"$(MAKE) clean$(MAKE) build_all_generate_profile@echo "Running benchmark to generate profile data:"$(MAKE) profile-removal$(MAKE) run_profile_task@echo "Rebuilding with profile guided optimizations:"$(MAKE) clean$(MAKE) build_all_use_profilebuild_all_generate_profile:$(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov"run_profile_task:: # FIXME: can't run for a cross build./$(BUILDPYTHON) $(PROFILE_TASK)build_all_use_profile:$(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use"coverage:@echo "Building with support for coverage checking:"$(MAKE) clean$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"# Build the interpreter$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY)$(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \Modules/python.o \$(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)platform: $(BUILDPYTHON) pybuilddir.txt$(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform# Create build directory and generate the sysconfig build-time data there.# pybuilddir.txt contains the name of the build dir and is used for# sys.path fixup -- see Modules/getpath.c.# Since this step runs before shared modules are built, try to avoid bootstrap# problems by creating a dummy pybuilddir.txt just to allow interpreter# initialization to succeed. It will be overwritten by generate-posix-vars# or removed in case of failure.pybuilddir.txt: $(BUILDPYTHON)@echo "none" > ./pybuilddir.txt$(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\if test $$? -ne 0 ; then \echo "generate-posix-vars failed" ; \rm -f ./pybuilddir.txt ; \exit 1 ; \fi# Build the shared modules# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for# -s, --silent or --quiet is always the first char.# Under BSD make, MAKEFLAGS might be " -s -v x=y".sharedmods: $(BUILDPYTHON) pybuilddir.txt@case "$$MAKEFLAGS" in \*\ -s*|s*) quiet="-q";; \*) quiet="";; \esac; \$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build# Build static library# avoid long command lines, same as LIBRARY_OBJS$(LIBRARY): $(LIBRARY_OBJS)-rm -f $@$(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o$(AR) $(ARFLAGS) $@ $(PARSER_OBJS)$(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)$(AR) $(ARFLAGS) $@ $(PYTHON_OBJS)$(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)$(AR) $(ARFLAGS) $@ $(MODOBJS)$(RANLIB) $@libpython$(VERSION).so: $(LIBRARY_OBJS)if test $(INSTSONAME) != $(LDLIBRARY); then \$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \$(LN) -f $(INSTSONAME) $@; \else \$(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \filibpython$(VERSION).dylib: $(LIBRARY_OBJS)$(CC) -dynamiclib -Wl,-single_module $(LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(VERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \libpython$(VERSION).sl: $(LIBRARY_OBJS)$(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST)# Copy up the gdb python hooks into a position where they can be automatically# loaded by gdb during Lib/test/test_gdb.py## Distributors are likely to want to install this somewhere else e.g. relative# to the stripped DWARF data for the shared library.gdbhooks: $(BUILDPYTHON)-gdb.pySRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS)$(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary# minimal framework (not including the Lib directory and such) in the current# directory.RESSRCDIR=Mac/Resources/framework$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \$(LIBRARY) \$(RESSRCDIR)/Info.plist$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)$(CC) -o $(LDLIBRARY) $(LDFLAGS) -dynamiclib \-all_load $(LIBRARY) -Wl,-single_module \-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \-compatibility_version $(VERSION) \-current_version $(VERSION);$(INSTALL) -d -m $(DIRMODE) \$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)$(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources# This rule builds the Cygwin Python DLL and import library if configured# for a shared core library; otherwise, this rule is a noop.$(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS)if test -n "$(DLLLIBRARY)"; then \$(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \$(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \else true; \fioldsharedmods: $(SHAREDMODS)Makefile Modules/config.c: Makefile.pre \$(srcdir)/Modules/config.c.in \$(MAKESETUP) \Modules/Setup.config \Modules/Setup \Modules/Setup.local$(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \-s Modules \Modules/Setup.config \Modules/Setup.local \Modules/Setup@mv config.c Modules@echo "The Makefile was updated, you may need to re-run make."Modules/Setup: $(srcdir)/Modules/Setup.dist@if test -f Modules/Setup; then \echo "-----------------------------------------------"; \echo "Modules/Setup.dist is newer than Modules/Setup;"; \echo "check to make sure you have all the updates you"; \echo "need in your Modules/Setup file."; \echo "Usually, copying Modules/Setup.dist to Modules/Setup will work."; \echo "-----------------------------------------------"; \fi############################################################################# Special rules for object filesModules/getbuildinfo.o: $(PARSER_OBJS) \$(OBJECT_OBJS) \$(PYTHON_OBJS) \$(MODULE_OBJS) \$(SIGNAL_OBJS) \$(MODOBJS) \$(srcdir)/Modules/getbuildinfo.c$(CC) -c $(PY_CFLAGS) \-DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" \-DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \-DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \-DHGBRANCH="\"`LC_ALL=C $(HGBRANCH)`\"" \-o $@ $(srcdir)/Modules/getbuildinfo.cModules/getpath.o: $(srcdir)/Modules/getpath.c Makefile$(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \-DPREFIX='"$(prefix)"' \-DEXEC_PREFIX='"$(exec_prefix)"' \-DVERSION='"$(VERSION)"' \-DVPATH='"$(VPATH)"' \-o $@ $(srcdir)/Modules/getpath.cModules/python.o: $(srcdir)/Modules/python.c$(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.cModules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.hModules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.hModules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h$(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS)@$(MKDIR_P) Include$(MAKE) $(PGEN)$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)$(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS)$(MAKE) $(GRAMMAR_H)touch $(GRAMMAR_C)$(PGEN): $(PGENOBJS)$(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)Parser/grammar.o: $(srcdir)/Parser/grammar.c \$(srcdir)/Include/token.h \$(srcdir)/Include/grammar.hParser/metagrammar.o: $(srcdir)/Parser/metagrammar.cParser/tokenizer_pgen.o: $(srcdir)/Parser/tokenizer.cParser/pgenmain.o: $(srcdir)/Include/parsetok.h$(AST_H): $(AST_ASDL) $(ASDLGEN_FILES)$(MKDIR_P) $(AST_H_DIR)$(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL)$(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)$(MKDIR_P) $(AST_C_DIR)$(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL)Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)Python/getplatform.o: $(srcdir)/Python/getplatform.c$(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.cPython/importdl.o: $(srcdir)/Python/importdl.c$(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.cObjects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \$(srcdir)/Objects/unicodetype_db.hSTRINGLIB_HEADERS= \$(srcdir)/Include/bytes_methods.h \$(srcdir)/Objects/stringlib/count.h \$(srcdir)/Objects/stringlib/ctype.h \$(srcdir)/Objects/stringlib/fastsearch.h \$(srcdir)/Objects/stringlib/find.h \$(srcdir)/Objects/stringlib/formatter.h \$(srcdir)/Objects/stringlib/partition.h \$(srcdir)/Objects/stringlib/split.h \$(srcdir)/Objects/stringlib/stringdefs.h \$(srcdir)/Objects/stringlib/string_format.h \$(srcdir)/Objects/stringlib/transmogrify.h \$(srcdir)/Objects/stringlib/unicodedefs.h \$(srcdir)/Objects/stringlib/localeutil.hObjects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c \$(STRINGLIB_HEADERS)Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c \$(STRINGLIB_HEADERS)Objects/stringobject.o: $(srcdir)/Objects/stringobject.c \$(STRINGLIB_HEADERS)Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \$(STRINGLIB_HEADERS)Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \$(STRINGLIB_HEADERS)############################################################################# Header filesPYTHON_HEADERS= \Include/Python-ast.h \Include/Python.h \Include/abstract.h \Include/asdl.h \Include/ast.h \Include/bitset.h \Include/boolobject.h \Include/bytearrayobject.h \Include/bytes_methods.h \Include/bytesobject.h \Include/bufferobject.h \Include/cellobject.h \Include/ceval.h \Include/classobject.h \Include/cobject.h \Include/code.h \Include/codecs.h \Include/compile.h \Include/complexobject.h \Include/descrobject.h \Include/dictobject.h \Include/dtoa.h \Include/enumobject.h \Include/errcode.h \Include/eval.h \Include/fileobject.h \Include/floatobject.h \Include/frameobject.h \Include/funcobject.h \Include/genobject.h \Include/import.h \Include/intobject.h \Include/intrcheck.h \Include/iterobject.h \Include/listobject.h \Include/longintrepr.h \Include/longobject.h \Include/marshal.h \Include/memoryobject.h \Include/metagrammar.h \Include/methodobject.h \Include/modsupport.h \Include/moduleobject.h \Include/node.h \Include/object.h \Include/objimpl.h \Include/opcode.h \Include/osdefs.h \Include/parsetok.h \Include/patchlevel.h \Include/pgen.h \Include/pgenheaders.h \Include/pyarena.h \Include/pycapsule.h \Include/pyctype.h \Include/pydebug.h \Include/pyerrors.h \Include/pyfpe.h \Include/pymath.h \Include/pygetopt.h \Include/pymem.h \Include/pyport.h \Include/pystate.h \Include/pystrcmp.h \Include/pystrtod.h \Include/pythonrun.h \Include/pythread.h \Include/rangeobject.h \Include/setobject.h \Include/sliceobject.h \Include/stringobject.h \Include/structmember.h \Include/structseq.h \Include/symtable.h \Include/sysmodule.h \Include/traceback.h \Include/tupleobject.h \Include/ucnhash.h \Include/unicodeobject.h \Include/warnings.h \Include/weakrefobject.h \pyconfig.h \$(PARSER_HEADERS) \$(AST_H)$(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)####################################################################### Test the interpreter (twice, once without .pyc files, once with)# In the past, we've had problems where bugs in the marshalling or# elsewhere caused bytecode read from .pyc files to behave differently# than bytecode generated directly from a .py source file. Sometimes# the bytecode read from a .pyc file had the bug, sometimes the directly# generated bytecode. This is sometimes a very shy bug needing a lot of# sample data.TESTOPTS= -l $(EXTRATESTOPTS)TESTPROG= $(srcdir)/Lib/test/regrtest.pyTESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS)test: all platform-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)testall: all platform-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f$(TESTPYTHON) $(srcdir)/Lib/compileall.py-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f-$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS)$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS)# Run the unitests for both architectures in a Universal build on OSX# Must be run on an Intel box.testuniversal: all platformif [ `arch` != 'i386' ];then \echo "This can only be used on OSX/i386" ;\exit 1 ;\fi-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f-$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS)$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS)$(RUNSHARED) /usr/libexec/oah/translate ./$(BUILDPYTHON) -E -tt $(TESTPROG) -uall $(TESTOPTS)# Like testall, but with a single pass only# run an optional script to include some information about the build environmentbuildbottest: all platform-@if which pybuildbot.identify >/dev/null 2>&1; then \pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \fi$(TESTPYTHON) -R $(TESTPROG) -uall -rwW $(TESTOPTS)QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \test_multibytecodec test_urllib2_localnet test_itertools \test_multiprocessing test_mailbox test_socket test_poll \test_select test_zipfilequicktest: all platform-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f-$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)MEMTESTOPTS= $(QUICKTESTOPTS) -x test_dl test___all__ test_fork1 \test_longexpmemtest: all platform-rm -f $(srcdir)/Lib/test/*.py[co]-$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)# Install everythinginstall: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKINSTALLLAST@if test "x$(ENSUREPIP)" != "xno" ; then \case $(ENSUREPIP) in \upgrade) ensurepip="--upgrade" ;; \install|*) ensurepip="" ;; \esac; \$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \$$ensurepip --root=$(DESTDIR)/ ; \fi# Install almost everything without disturbing previous versionsaltinstall: commoninstallif test "x$(ENSUREPIP)" != "xno" ; then \case $(ENSUREPIP) in \upgrade) ensurepip="--altinstall --upgrade --no-default-pip" ;; \install|*) ensurepip="--altinstall --no-default-pip" ;; \esac; \$(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \$$ensurepip --root=$(DESTDIR)/ ; \ficommoninstall: @FRAMEWORKALTINSTALLFIRST@ \altbininstall libinstall inclinstall libainstall \sharedinstall oldsharedinstall altmaninstall \@FRAMEWORKALTINSTALLLAST@# Install shared libraries enabled by SetupDESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)oldsharedinstall: $(DESTSHARED) $(SHAREDMODS)@for i in X $(SHAREDMODS); do \if test $$i != X; then \echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \$(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \fi; \done$(DESTSHARED):@for i in $(DESTDIRS); \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done# Install the interpreter by creating a symlink chain:# $(PYTHON) -> python2 -> python$(VERSION))# Also create equivalent chains for other installed filesbininstall: altbininstall-if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \else true; \fi(cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON))-rm -f $(DESTDIR)$(BINDIR)/python2$(EXE)(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE))-rm -f $(DESTDIR)$(BINDIR)/python2-config(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config)-rm -f $(DESTDIR)$(BINDIR)/python-config(cd $(DESTDIR)$(BINDIR); $(LN) -s python2-config python-config)-test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC)-rm -f $(DESTDIR)$(LIBPC)/python2.pc(cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python2.pc)-rm -f $(DESTDIR)$(LIBPC)/python.pc(cd $(DESTDIR)$(LIBPC); $(LN) -s python2.pc python.pc)# Install the interpreter with $(VERSION) affixed# This goes into $(exec_prefix)altbininstall: $(BUILDPYTHON)@for i in $(BINDIR) $(LIBDIR); \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE)if test -f $(LDLIBRARY); then \if test -n "$(DLLLIBRARY)" ; then \$(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \else \$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \if test $(LDLIBRARY) != $(INSTSONAME); then \(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \fi \fi; \else true; \fi# Install the versioned manual pagealtmaninstall:@for i in $(MANDIR) $(MANDIR)/man1; \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done$(INSTALL_DATA) $(srcdir)/Misc/python.man \$(DESTDIR)$(MANDIR)/man1/python$(VERSION).1# Install the unversioned manual pagesmaninstall: altmaninstall-rm -f $(DESTDIR)$(MANDIR)/man1/python2.1(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python2.1)-rm -f $(DESTDIR)$(MANDIR)/man1/python.1(cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1)# Install the libraryPLATDIR= @PLATDIR@EXTRAPLATDIR= @EXTRAPLATDIR@EXTRAMACHDEPPATH=@EXTRAMACHDEPPATH@MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR)XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/saxPLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \plat-mac/lib-scriptpackages/_builtinSuites \plat-mac/lib-scriptpackages/CodeWarrior \plat-mac/lib-scriptpackages/Explorer \plat-mac/lib-scriptpackages/Finder \plat-mac/lib-scriptpackages/Netscape \plat-mac/lib-scriptpackages/StdSuites \plat-mac/lib-scriptpackages/SystemEvents \plat-mac/lib-scriptpackages/TerminalPLATMACPATH=:plat-mac:plat-mac/lib-scriptpackagesLIBSUBDIRS= lib-tk lib-tk/test lib-tk/test/test_tkinter \lib-tk/test/test_ttk site-packages test test/audiodata test/capath \test/data test/cjkencodings test/decimaltestdata test/xmltestdata \test/imghdrdata \test/subprocessdata \test/tracedmodules \encodings compiler hotshot \email email/mime email/test email/test/data \ensurepip ensurepip/_bundled \json json/tests \sqlite3 sqlite3/test \logging bsddb bsddb/test csv importlib wsgiref \lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \ctypes ctypes/test ctypes/macholib \idlelib idlelib/Icons idlelib/idle_test \distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \multiprocessing multiprocessing/dummy \unittest unittest/test \lib-old \curses pydoc_data $(MACHDEPS)libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c@for i in $(SCRIPTDIR) $(LIBDEST); \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$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 $(DESTDIR)$$b; then \echo "Creating directory $$b"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \else true; \fi; \done@for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \do \if test -x $$i; then \$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \else \$(INSTALL_DATA) $$i $(DESTDIR)$(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; \if test `ls $$a | wc -l` -lt 1; then continue; 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_SCRIPT) $$i $$b; \$(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \else \echo $(INSTALL_DATA) $$i $$b; \$(INSTALL_DATA) $$i $(DESTDIR)$$b; \fi;; \esac; \done; \done$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txtif test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \$(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \$(DESTDIR)$(LIBDEST)/distutils/tests ; \fiPYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \-d $(LIBDEST) -f \-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \$(DESTDIR)$(LIBDEST)PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \-d $(LIBDEST) -f \-x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \$(DESTDIR)$(LIBDEST)-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \-d $(LIBDEST)/site-packages -f \-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \-d $(LIBDEST)/site-packages -f \-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \$(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt# 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)/regenexport PATH; PATH="`pwd`:$$PATH"; \export PYTHONPATH; PYTHONPATH="$(srcdir)/Lib:$(abs_builddir)/`cat pybuilddir.txt`"; \export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \export EXE; EXE="$(BUILDEXE)"; \if [ -n "$(MULTIARCH)" ]; then export MULTIARCH; MULTIARCH=$(MULTIARCH); fi; \export PYTHON_FOR_BUILD; \if [ "$(build)" = "$(host)" ]; then \PYTHON_FOR_BUILD="$(BUILDPYTHON)"; \else \PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \fi; \cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regenpython-config: $(srcdir)/Misc/python-config.in# Substitution happens here, as the completely-expanded BINDIR# is not available in configuresed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config# Install the include filesINCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)inclinstall:@for i in $(INCLDIRSTOMAKE); \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done@for i in $(srcdir)/Include/*.h; \do \echo $(INSTALL_DATA) $$i $(INCLUDEPY); \$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \done$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h# Install the library and miscellaneous stuff needed for extending/embedding# This goes into $(exec_prefix)LIBPL= $(LIBP)/config# pkgconfig directoryLIBPC= $(LIBDIR)/pkgconfiglibainstall: all python-config@for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \do \if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done@if test -d $(LIBRARY); then :; else \if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \if test "$(SO)" = .dll; then \$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \else \$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \$(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \fi; \else \echo Skip install of $(LIBRARY) - use make frameworkinstall; \fi; \fi$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c$(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile$(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local$(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config$(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-configrm python-config@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 \$(DESTDIR)$(LIBPL)/python.exp; \echo; echo "$(LIBPL)/python.exp"; \$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix \$(DESTDIR)$(LIBPL)/makexp_aix; \echo "$(LIBPL)/makexp_aix"; \$(INSTALL_SCRIPT) $(srcdir)/Modules/ld_so_aix \$(DESTDIR)$(LIBPL)/ld_so_aix; \echo "$(LIBPL)/ld_so_aix"; \echo; echo "See Misc/AIX-NOTES for details."; \else true; \fi@case "$(MACHDEP)" in beos*) \echo; echo "Installing support files for building shared extension modules on BeOS:"; \$(INSTALL_DATA) Misc/BeOS-NOTES $(DESTDIR)$(LIBPL)/README; \echo; echo "$(LIBPL)/README"; \$(INSTALL_SCRIPT) Modules/ar_beos $(DESTDIR)$(LIBPL)/ar_beos; \echo "$(LIBPL)/ar_beos"; \$(INSTALL_SCRIPT) Modules/ld_so_beos $(DESTDIR)$(LIBPL)/ld_so_beos; \echo "$(LIBPL)/ld_so_beos"; \echo; echo "See Misc/BeOS-NOTES for details."; \;; \esac# Install the dynamically loadable modules# This goes into $(exec_prefix)sharedinstall: sharedmods$(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \--prefix=$(prefix) \--install-scripts=$(BINDIR) \--install-platlib=$(DESTSHARED) \--root=$(DESTDIR)/-rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py*# Here are a couple of targets for MacOSX again, to install a full# framework-based Python. frameworkinstall installs everything, the# subtargets install specific parts. Much of the actual work is offloaded to# the Makefile in Mac### This target is here for backward compatiblity, previous versions of Python# hadn't integrated framework installation in the normal install process.frameworkinstall: install# On install, we re-make the framework# structure in the install location, /Library/Frameworks/ or the argument to# --enable-framework. If --enable-framework has been specified then we have# automatically set prefix to the location deep down in the framework, so we# only have to cater for the structural bits of the framework.frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclibframeworkinstallstructure: $(LDLIBRARY)@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \echo Not configured with --enable-framework; \exit 1; \else true; \fi@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\if test ! -d $(DESTDIR)$$i; then \echo "Creating directory $(DESTDIR)$$i"; \$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \else true; \fi; \done$(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headerssed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK)$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)# This installs Mac/Lib into the framework# Install a number of symlinks to keep software that expects a normal unix# install (which includes python-config) happy.frameworkinstallmaclib:ln -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).a"ln -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).dylib"ln -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib"cd Mac && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)"# This installs the IDE, the Launcher and other apps into /Applicationsframeworkinstallapps:cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"# This install the unix python and pythonw tools in /usr/local/binframeworkinstallunixtools:cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"frameworkaltinstallunixtools:cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"# This installs the Demos and Tools into the applications directory.# It is not part of a normal frameworkinstallframeworkinstallextras:cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)"# This installs a few of the useful scripts in Tools/scriptsscriptsinstall:SRCDIR=$(srcdir) $(RUNSHARED) \$(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \--prefix=$(prefix) \--install-scripts=$(BINDIR) \--root=$(DESTDIR)/# Build the toplevel MakefileMakefile.pre: Makefile.pre.in config.statusCONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status$(MAKE) -f Makefile.pre Makefile# Run the configure script.config.status: $(srcdir)/configure$(SHELL) $(srcdir)/configure $(CONFIG_ARGS).PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre# Some make's put the object file in the current directory.c.o:$(CC) -c $(PY_CFLAGS) -o $@ $<# Run reindent on the libraryreindent:./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib# Rerun configure with the same options as it was run last time,# provided the config.status script existsrecheck:$(SHELL) config.status --recheck$(SHELL) config.status# Rebuild the configure script from configure.ac; also rebuild pyconfig.h.inautoconf:(cd $(srcdir); autoconf)(cd $(srcdir); autoheader)# Create a tags file for vitags::cd $(srcdir); \ctags -w -t Include/*.h; \for i in $(SRCDIRS); do ctags -w -t -a $$i/*.[ch]; \done; \sort -o tags tags# Create a tags file for GNU EmacsTAGS::cd $(srcdir); \etags Include/*.h; \for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done# Touch generated filestouch:cd $(srcdir); \touch Include/Python-ast.h Python/Python-ast.c# Sanitation targets -- clean leaves libraries, executables and tags# files, which clobber removes as wellpycremoval:find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'clean: pycremovalfind . -name '*.[oa]' -exec rm -f {} ';'find . -name '*.s[ol]' -exec rm -f {} ';'find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';'find build -name 'fficonfig.h' -exec rm -f {} ';' || truefind build -name 'fficonfig.py' -exec rm -f {} ';' || true-rm -f Lib/lib2to3/*Grammar*.pickleprofile-removal:find . -name '*.gc??' -exec rm -f {} ';'clobber: clean profile-removal-rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \tags TAGS \config.cache config.log pyconfig.h Modules/config.c-rm -rf build platform-rm -rf $(PYTHONFRAMEWORKDIR)# Make things extra clean, before making a distribution:# remove all generated files, even Makefile[.pre]# Keep configure and Python-ast.[ch], it's possible they can't be generateddistclean: clobberfor file in Lib/test/data/* ; do \if test "$$file" != "Lib/test/data/README"; then rm "$$file"; fi; \done-rm -f core Makefile Makefile.pre config.status \Modules/Setup Modules/Setup.local Modules/Setup.config \Modules/ld_so_aix Modules/python.exp Misc/python.pc-rm -f python*-gdb.py-rm -f pybuilddir.txtfind $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \-o -name '[@,#]*' -o -name '*.old' \-o -name '*.orig' -o -name '*.rej' \-o -name '*.bak' ')' \-exec rm -f {} ';'# Check for smelly exported symbols (not starting with Py/_Py)smelly: allnm -p $(LIBRARY) | \sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \# Find files with funny namesfunny:find $(SUBDIRS) $(SUBDIRSTOO) -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# Perform some verification checks on any modified files.patchcheck:$(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py# DependenciesPython/thread.o: @THREADHEADERS@# Declare targets that aren't real files.PHONY: all build_all sharedmods oldsharedmods test quicktest memtest.PHONY: install altinstall oldsharedinstall bininstall altbininstall.PHONY: maninstall libinstall inclinstall libainstall sharedinstall.PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure.PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools.PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean.PHONY: smelly funny patchcheck touch altmaninstall commoninstall.PHONY: gdbhooks# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。