src/newcore/Makefile.pre.in
changeset 0 ca70ae20a155
equal deleted inserted replaced
-1:000000000000 0:ca70ae20a155
       
     1 # Top-level Makefile for Python
       
     2 #
       
     3 # As distributed, this file is called Makefile.pre.in; it is processed
       
     4 # into the real Makefile by running the script ./configure, which
       
     5 # replaces things like @spam@ with values appropriate for your system.
       
     6 # This means that if you edit Makefile, your changes get lost the next
       
     7 # time you run the configure script.  Ideally, you can do:
       
     8 #
       
     9 #	./configure
       
    10 #	make
       
    11 #	make test
       
    12 #	make install
       
    13 #
       
    14 # If you have a previous version of Python installed that you don't
       
    15 # want to overwrite, you can use "make altinstall" instead of "make
       
    16 # install".  Refer to the "Installing" section in the README file for
       
    17 # additional details.
       
    18 #
       
    19 # See also the section "Build instructions" in the README file.
       
    20 
       
    21 # === Variables set by makesetup ===
       
    22 
       
    23 MODOBJS=        _MODOBJS_
       
    24 MODLIBS=        _MODLIBS_
       
    25 
       
    26 # === Variables set by configure
       
    27 VERSION=	@VERSION@
       
    28 srcdir=		@srcdir@
       
    29 VPATH=		@srcdir@
       
    30 
       
    31 CC=		@CC@
       
    32 CXX=		@CXX@
       
    33 MAINCC=		@MAINCC@
       
    34 LINKCC=		@LINKCC@
       
    35 AR=		@AR@
       
    36 RANLIB=		@RANLIB@
       
    37 SVNVERSION=	@SVNVERSION@
       
    38 
       
    39 # Shell used by make (some versions default to the login shell, which is bad)
       
    40 SHELL=		/bin/sh
       
    41 
       
    42 # Use this to make a link between python$(VERSION) and python in $(BINDIR)
       
    43 LN=		@LN@
       
    44 
       
    45 # Portable install script (configure doesn't always guess right)
       
    46 INSTALL=	@INSTALL@
       
    47 INSTALL_PROGRAM=@INSTALL_PROGRAM@
       
    48 INSTALL_SCRIPT= @INSTALL_SCRIPT@
       
    49 INSTALL_DATA=	@INSTALL_DATA@
       
    50 # Shared libraries must be installed with executable mode on some systems;
       
    51 # rather than figuring out exactly which, we always give them executable mode.
       
    52 # Also, making them read-only seems to be a good idea...
       
    53 INSTALL_SHARED= ${INSTALL} -m 555
       
    54 
       
    55 MAKESETUP=      $(srcdir)/Modules/makesetup
       
    56 
       
    57 # Compiler options
       
    58 OPT=		@OPT@
       
    59 BASECFLAGS=	@BASECFLAGS@
       
    60 CFLAGS=		$(BASECFLAGS) $(OPT) $(EXTRA_CFLAGS)
       
    61 # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to
       
    62 # be able to build extension modules using the directories specified in the
       
    63 # environment variables
       
    64 CPPFLAGS=	-I. -IInclude -I$(srcdir)/Include @CPPFLAGS@
       
    65 LDFLAGS=	@LDFLAGS@
       
    66 LDLAST=		@LDLAST@
       
    67 SGI_ABI=	@SGI_ABI@
       
    68 CCSHARED=	@CCSHARED@
       
    69 LINKFORSHARED=	@LINKFORSHARED@
       
    70 # Extra C flags added for building the interpreter object files.
       
    71 CFLAGSFORSHARED=@CFLAGSFORSHARED@
       
    72 # C flags used for building the interpreter object files
       
    73 PY_CFLAGS=	$(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE
       
    74 
       
    75 
       
    76 # Machine-dependent subdirectories
       
    77 MACHDEP=	@MACHDEP@
       
    78 
       
    79 # Install prefix for architecture-independent files
       
    80 prefix=		@prefix@
       
    81 
       
    82 # Install prefix for architecture-dependent files
       
    83 exec_prefix=	@exec_prefix@
       
    84 
       
    85 # Install prefix for data files
       
    86 datarootdir=    @datarootdir@
       
    87 
       
    88 # Expanded directories
       
    89 BINDIR=		$(exec_prefix)/bin
       
    90 LIBDIR=		$(exec_prefix)/lib
       
    91 MANDIR=		@mandir@
       
    92 INCLUDEDIR=	@includedir@
       
    93 CONFINCLUDEDIR=	$(exec_prefix)/include
       
    94 SCRIPTDIR=	$(prefix)/lib
       
    95 
       
    96 # Detailed destination directories
       
    97 BINLIBDEST=	$(LIBDIR)/python$(VERSION)
       
    98 LIBDEST=	$(SCRIPTDIR)/python$(VERSION)
       
    99 INCLUDEPY=	$(INCLUDEDIR)/python$(VERSION)
       
   100 CONFINCLUDEPY=	$(CONFINCLUDEDIR)/python$(VERSION)
       
   101 LIBP=		$(LIBDIR)/python$(VERSION)
       
   102 
       
   103 # Symbols used for using shared libraries
       
   104 SO=		@SO@
       
   105 LDSHARED=	@LDSHARED@
       
   106 BLDSHARED=	@BLDSHARED@
       
   107 DESTSHARED=	$(BINLIBDEST)/lib-dynload
       
   108 
       
   109 # Executable suffix (.exe on Windows and Mac OS X)
       
   110 EXE=		@EXEEXT@
       
   111 BUILDEXE=	@BUILDEXEEXT@
       
   112 
       
   113 # Short name and location for Mac OS X Python framework
       
   114 UNIVERSALSDK=@UNIVERSALSDK@
       
   115 PYTHONFRAMEWORK=	@PYTHONFRAMEWORK@
       
   116 PYTHONFRAMEWORKDIR=	@PYTHONFRAMEWORKDIR@
       
   117 PYTHONFRAMEWORKPREFIX=	@PYTHONFRAMEWORKPREFIX@
       
   118 PYTHONFRAMEWORKINSTALLDIR= @PYTHONFRAMEWORKINSTALLDIR@
       
   119 # Deployment target selected during configure, to be checked
       
   120 # by distutils. The export statement is needed to ensure that the
       
   121 # deployment target is active during build.
       
   122 MACOSX_DEPLOYMENT_TARGET=@CONFIGURE_MACOSX_DEPLOYMENT_TARGET@
       
   123 @EXPORT_MACOSX_DEPLOYMENT_TARGET@export MACOSX_DEPLOYMENT_TARGET
       
   124 
       
   125 # Options to enable prebinding (for fast startup prior to Mac OS X 10.3)
       
   126 OTHER_LIBTOOL_OPT=@OTHER_LIBTOOL_OPT@
       
   127 
       
   128 # Environment to run shared python without installed libraries
       
   129 RUNSHARED=       @RUNSHARED@
       
   130 
       
   131 # Modes for directories, executables and data files created by the
       
   132 # install process.  Default to user-only-writable for all file types.
       
   133 DIRMODE=	755
       
   134 EXEMODE=	755
       
   135 FILEMODE=	644
       
   136 
       
   137 # configure script arguments
       
   138 CONFIG_ARGS=	@CONFIG_ARGS@
       
   139 
       
   140 
       
   141 # Subdirectories with code
       
   142 SRCDIRS= 	@SRCDIRS@
       
   143 
       
   144 # Other subdirectories
       
   145 SUBDIRSTOO=	Include Lib Misc Demo
       
   146 
       
   147 # Files and directories to be distributed
       
   148 CONFIGFILES=	configure configure.in acconfig.h pyconfig.h.in Makefile.pre.in
       
   149 DISTFILES=	README ChangeLog $(CONFIGFILES)
       
   150 DISTDIRS=	$(SUBDIRS) $(SUBDIRSTOO) Ext-dummy
       
   151 DIST=		$(DISTFILES) $(DISTDIRS)
       
   152 
       
   153 
       
   154 LIBRARY=	@LIBRARY@
       
   155 LDLIBRARY=      @LDLIBRARY@
       
   156 BLDLIBRARY=     @BLDLIBRARY@
       
   157 DLLLIBRARY=	@DLLLIBRARY@
       
   158 LDLIBRARYDIR=   @LDLIBRARYDIR@
       
   159 INSTSONAME=	@INSTSONAME@
       
   160 
       
   161 
       
   162 LIBS=		@LIBS@
       
   163 LIBM=		@LIBM@
       
   164 LIBC=		@LIBC@
       
   165 SYSLIBS=	$(LIBM) $(LIBC)
       
   166 SHLIBS=		@SHLIBS@
       
   167 
       
   168 THREADOBJ=	@THREADOBJ@
       
   169 DLINCLDIR=	@DLINCLDIR@
       
   170 DYNLOADFILE=	@DYNLOADFILE@
       
   171 MACHDEP_OBJS=	@MACHDEP_OBJS@
       
   172 UNICODE_OBJS=   @UNICODE_OBJS@
       
   173 
       
   174 PYTHON=		python$(EXE)
       
   175 BUILDPYTHON=	python$(BUILDEXE)
       
   176 
       
   177 # === Definitions added by makesetup ===
       
   178 
       
   179 
       
   180 ##########################################################################
       
   181 # Modules
       
   182 MODULE_OBJS=	\
       
   183 		Modules/config.o \
       
   184 		Modules/getpath.o \
       
   185 		Modules/main.o \
       
   186 		Modules/gcmodule.o
       
   187 
       
   188 # Used of signalmodule.o is not available
       
   189 SIGNAL_OBJS=	@SIGNAL_OBJS@
       
   190 
       
   191 
       
   192 ##########################################################################
       
   193 # Grammar
       
   194 GRAMMAR_H=	$(srcdir)/Include/graminit.h
       
   195 GRAMMAR_C=	$(srcdir)/Python/graminit.c
       
   196 GRAMMAR_INPUT=	$(srcdir)/Grammar/Grammar
       
   197 
       
   198 
       
   199 ##########################################################################
       
   200 # Parser
       
   201 PGEN=		Parser/pgen$(EXE)
       
   202 
       
   203 POBJS=		\
       
   204 		Parser/acceler.o \
       
   205 		Parser/grammar1.o \
       
   206 		Parser/listnode.o \
       
   207 		Parser/node.o \
       
   208 		Parser/parser.o \
       
   209 		Parser/parsetok.o \
       
   210 		Parser/bitset.o \
       
   211 		Parser/metagrammar.o \
       
   212 		Parser/firstsets.o \
       
   213 		Parser/grammar.o \
       
   214 		Parser/pgen.o
       
   215 
       
   216 PARSER_OBJS=	$(POBJS) Parser/myreadline.o Parser/tokenizer.o
       
   217 
       
   218 PGOBJS=		\
       
   219 		Objects/obmalloc.o \
       
   220 		Python/mysnprintf.o \
       
   221 		Parser/tokenizer_pgen.o \
       
   222 		Parser/printgrammar.o \
       
   223 		Parser/pgenmain.o
       
   224 
       
   225 PGENOBJS=	$(PGENMAIN) $(POBJS) $(PGOBJS)
       
   226 
       
   227 ##########################################################################
       
   228 # AST
       
   229 AST_H_DIR=	$(srcdir)/Include
       
   230 AST_H=		$(AST_H_DIR)/Python-ast.h
       
   231 AST_C_DIR=	$(srcdir)/Python
       
   232 AST_C=		$(AST_C_DIR)/Python-ast.c
       
   233 AST_ASDL=	$(srcdir)/Parser/Python.asdl
       
   234 
       
   235 ASDLGEN_FILES=	$(srcdir)/Parser/asdl.py $(srcdir)/Parser/asdl_c.py
       
   236 # XXX Note that a build now requires Python exist before the build starts
       
   237 ASDLGEN=	$(srcdir)/Parser/asdl_c.py
       
   238 
       
   239 ##########################################################################
       
   240 # Python
       
   241 PYTHON_OBJS=	\
       
   242 		Python/Python-ast.o \
       
   243 		Python/asdl.o \
       
   244 		Python/ast.o \
       
   245 		Python/bltinmodule.o \
       
   246 		Python/ceval.o \
       
   247 		Python/compile.o \
       
   248 		Python/codecs.o \
       
   249 		Python/errors.o \
       
   250 		Python/frozen.o \
       
   251 		Python/frozenmain.o \
       
   252 		Python/future.o \
       
   253 		Python/getargs.o \
       
   254 		Python/getcompiler.o \
       
   255 		Python/getcopyright.o \
       
   256 		Python/getmtime.o \
       
   257 		Python/getplatform.o \
       
   258 		Python/getversion.o \
       
   259 		Python/graminit.o \
       
   260 		Python/import.o \
       
   261 		Python/importdl.o \
       
   262 		Python/marshal.o \
       
   263 		Python/modsupport.o \
       
   264 		Python/mystrtoul.o \
       
   265 		Python/mysnprintf.o \
       
   266 		Python/pyarena.o \
       
   267 		Python/pyfpe.o \
       
   268 		Python/pystate.o \
       
   269 		Python/pythonrun.o \
       
   270 		Python/structmember.o \
       
   271 		Python/symtable.o \
       
   272 		Python/sysmodule.o \
       
   273 		Python/traceback.o \
       
   274 		Python/getopt.o \
       
   275 		Python/pystrtod.o \
       
   276 		Python/$(DYNLOADFILE) \
       
   277 		$(MACHDEP_OBJS) \
       
   278 		$(THREADOBJ)
       
   279 
       
   280 
       
   281 ##########################################################################
       
   282 # Objects
       
   283 OBJECT_OBJS=	\
       
   284 		Objects/abstract.o \
       
   285 		Objects/boolobject.o \
       
   286 		Objects/bufferobject.o \
       
   287 		Objects/cellobject.o \
       
   288 		Objects/classobject.o \
       
   289 		Objects/cobject.o \
       
   290 		Objects/codeobject.o \
       
   291 		Objects/complexobject.o \
       
   292 		Objects/descrobject.o \
       
   293 		Objects/enumobject.o \
       
   294 		Objects/exceptions.o \
       
   295 		Objects/genobject.o \
       
   296 		Objects/fileobject.o \
       
   297 		Objects/floatobject.o \
       
   298 		Objects/frameobject.o \
       
   299 		Objects/funcobject.o \
       
   300 		Objects/intobject.o \
       
   301 		Objects/iterobject.o \
       
   302 		Objects/listobject.o \
       
   303 		Objects/longobject.o \
       
   304 		Objects/dictobject.o \
       
   305 		Objects/methodobject.o \
       
   306 		Objects/moduleobject.o \
       
   307 		Objects/object.o \
       
   308 		Objects/obmalloc.o \
       
   309 		Objects/rangeobject.o \
       
   310                 Objects/setobject.o \
       
   311 		Objects/sliceobject.o \
       
   312 		Objects/stringobject.o \
       
   313 		Objects/structseq.o \
       
   314 		Objects/tupleobject.o \
       
   315 		Objects/typeobject.o \
       
   316 		Objects/weakrefobject.o \
       
   317 		$(UNICODE_OBJS)
       
   318 
       
   319 
       
   320 ##########################################################################
       
   321 # objects that get linked into the Python library
       
   322 LIBRARY_OBJS=	\
       
   323 		Modules/_typesmodule.o \
       
   324 		Modules/getbuildinfo.o \
       
   325 		$(PARSER_OBJS) \
       
   326 		$(OBJECT_OBJS) \
       
   327 		$(PYTHON_OBJS) \
       
   328 		$(MODULE_OBJS) \
       
   329 		$(SIGNAL_OBJS) \
       
   330 		$(MODOBJS)
       
   331 
       
   332 #########################################################################
       
   333 # Rules
       
   334 
       
   335 # Default target
       
   336 all:		$(BUILDPYTHON) oldsharedmods sharedmods
       
   337 
       
   338 # Build the interpreter
       
   339 $(BUILDPYTHON):	Modules/python.o $(LIBRARY) $(LDLIBRARY)
       
   340 		$(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \
       
   341 			Modules/python.o \
       
   342 			$(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
       
   343 
       
   344 platform: $(BUILDPYTHON)
       
   345 	$(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform
       
   346 
       
   347 
       
   348 # Build the shared modules
       
   349 sharedmods: $(BUILDPYTHON)
       
   350 	case $$MAKEFLAGS in \
       
   351 	*-s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
       
   352 	*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
       
   353 	esac
       
   354 
       
   355 # Build static library
       
   356 # avoid long command lines, same as LIBRARY_OBJS
       
   357 $(LIBRARY): $(LIBRARY_OBJS)
       
   358 	-rm -f $@
       
   359 	$(AR) cr $@ Modules/getbuildinfo.o
       
   360 	$(AR) cr $@ Modules/_typesmodule.o
       
   361 	$(AR) cr $@ $(PARSER_OBJS)
       
   362 	$(AR) cr $@ $(OBJECT_OBJS)
       
   363 	$(AR) cr $@ $(PYTHON_OBJS)
       
   364 	$(AR) cr $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
       
   365 	$(AR) cr $@ $(MODOBJS)
       
   366 	$(RANLIB) $@
       
   367 
       
   368 libpython$(VERSION).so: $(LIBRARY_OBJS)
       
   369 	if test $(INSTSONAME) != $(LDLIBRARY); then \
       
   370 		$(LDSHARED) $(LDFLAGS) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
       
   371 		$(LN) -f $(INSTSONAME) $@; \
       
   372 	else\
       
   373 		$(LDSHARED) $(LDFLAGS) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
       
   374 	fi
       
   375 
       
   376 libpython$(VERSION).sl: $(LIBRARY_OBJS)
       
   377 	$(LDSHARED) $(LDFLAGS) -o $@ $(LIBRARY_OBJS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST)
       
   378 
       
   379 # This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary
       
   380 # minimal framework (not including the Lib directory and such) in the current
       
   381 # directory.
       
   382 RESSRCDIR=$(srcdir)/Mac/Resources/framework
       
   383 $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \
       
   384 		$(LIBRARY) \
       
   385 		$(RESSRCDIR)/Info.plist \
       
   386                 $(RESSRCDIR)/version.plist \
       
   387                 $(RESSRCDIR)/English.lproj/InfoPlist.strings
       
   388 	$(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)
       
   389 	if test "${UNIVERSALSDK}"; then \
       
   390 		$(CC) -o $(LDLIBRARY) -arch i386 -arch ppc -dynamiclib \
       
   391 			-isysroot "${UNIVERSALSDK}" \
       
   392 			-all_load $(LIBRARY) -Wl,-single_module \
       
   393 			-install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/Python \
       
   394 			-compatibility_version $(VERSION) \
       
   395 			-current_version $(VERSION); \
       
   396         else \
       
   397 		/usr/bin/libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) \
       
   398 			@LIBTOOL_CRUFT@ ;\
       
   399 	fi
       
   400 	$(INSTALL) -d -m $(DIRMODE)  \
       
   401 		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj
       
   402 	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist \
       
   403 		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist
       
   404 	$(INSTALL_DATA) $(RESSRCDIR)/version.plist \
       
   405 		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/version.plist
       
   406 	$(INSTALL_DATA) $(RESSRCDIR)/English.lproj/InfoPlist.strings \
       
   407 		$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj/InfoPlist.strings
       
   408 	$(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current
       
   409 	$(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)
       
   410 	$(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers
       
   411 	$(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources
       
   412 
       
   413 # This rule builds the Cygwin Python DLL and import library if configured
       
   414 # for a shared core library; otherwise, this rule is a noop.
       
   415 $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS)
       
   416 	if test -n "$(DLLLIBRARY)"; then \
       
   417 		$(LDSHARED) $(LDFLAGS) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \
       
   418 			$(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \
       
   419 	else true; \
       
   420 	fi
       
   421 
       
   422 
       
   423 oldsharedmods: $(SHAREDMODS)
       
   424 
       
   425 
       
   426 Makefile Modules/config.c: Makefile.pre \
       
   427 				$(srcdir)/Modules/config.c.in \
       
   428 				$(MAKESETUP) \
       
   429 				Modules/Setup.config \
       
   430 				Modules/Setup \
       
   431 				Modules/Setup.local
       
   432 	$(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \
       
   433 				-s Modules \
       
   434 				Modules/Setup.config \
       
   435 				Modules/Setup.local \
       
   436 				Modules/Setup
       
   437 	@mv config.c Modules
       
   438 	@echo "The Makefile was updated, you may need to re-run make."
       
   439 
       
   440 
       
   441 Modules/Setup: $(srcdir)/Modules/Setup.dist
       
   442 	@if test -f Modules/Setup; then \
       
   443 		echo "-----------------------------------------------"; \
       
   444 		echo "Modules/Setup.dist is newer than Modules/Setup;"; \
       
   445 		echo "check to make sure you have all the updates you"; \
       
   446 		echo "need in your Modules/Setup file."; \
       
   447 		echo "Usually, copying Setup.dist to Setup will work."; \
       
   448 		echo "-----------------------------------------------"; \
       
   449 	fi
       
   450 
       
   451 ############################################################################
       
   452 # Special rules for object files
       
   453 
       
   454 Modules/getbuildinfo.o: $(PARSER_OBJS) \
       
   455 		$(OBJECT_OBJS) \
       
   456 		$(PYTHON_OBJS) \
       
   457 		$(MODULE_OBJS) \
       
   458 		$(SIGNAL_OBJS) \
       
   459 		$(MODOBJS) \
       
   460 		$(srcdir)/Modules/getbuildinfo.c
       
   461 	$(CC) -c $(PY_CFLAGS) -DSVNVERSION=\"`LC_ALL=C $(SVNVERSION)`\" -o $@ $(srcdir)/Modules/getbuildinfo.c
       
   462 
       
   463 Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile
       
   464 	$(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \
       
   465 		-DPREFIX='"$(prefix)"' \
       
   466 		-DEXEC_PREFIX='"$(exec_prefix)"' \
       
   467 		-DVERSION='"$(VERSION)"' \
       
   468 		-DVPATH='"$(VPATH)"' \
       
   469 		-o $@ $(srcdir)/Modules/getpath.c
       
   470 
       
   471 Modules/python.o: $(srcdir)/Modules/python.c
       
   472 	$(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c
       
   473 
       
   474 
       
   475 $(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT)
       
   476 		-@ mkdir Include
       
   477 		-$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C)
       
   478 
       
   479 $(PGEN):	$(PGENOBJS)
       
   480 		$(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN)
       
   481 
       
   482 Parser/grammar.o:	$(srcdir)/Parser/grammar.c \
       
   483 				$(srcdir)/Include/token.h \
       
   484 				$(srcdir)/Include/grammar.h
       
   485 Parser/metagrammar.o:	$(srcdir)/Parser/metagrammar.c
       
   486 
       
   487 Parser/tokenizer_pgen.o:	$(srcdir)/Parser/tokenizer.c
       
   488 
       
   489 $(AST_H): $(AST_ASDL) $(ASDLGEN_FILES)
       
   490 	$(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL)
       
   491 
       
   492 $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES)
       
   493 	$(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL)
       
   494 
       
   495 Python/compile.o Python/symtable.o: $(GRAMMAR_H) $(AST_H)
       
   496 
       
   497 Python/getplatform.o: $(srcdir)/Python/getplatform.c
       
   498 		$(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
       
   499 
       
   500 Python/importdl.o: $(srcdir)/Python/importdl.c
       
   501 		$(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
       
   502 
       
   503 Objects/unicodectype.o:	$(srcdir)/Objects/unicodectype.c \
       
   504 				$(srcdir)/Objects/unicodetype_db.h
       
   505 
       
   506 ############################################################################
       
   507 # Header files
       
   508 
       
   509 PYTHON_HEADERS= \
       
   510 		Include/Python.h \
       
   511 		Include/Python-ast.h \
       
   512 		Include/asdl.h \
       
   513 		Include/abstract.h \
       
   514 		Include/boolobject.h \
       
   515 		Include/bufferobject.h \
       
   516 		Include/ceval.h \
       
   517 		Include/classobject.h \
       
   518 		Include/cobject.h \
       
   519 		Include/code.h \
       
   520 		Include/codecs.h \
       
   521 		Include/compile.h \
       
   522 		Include/complexobject.h \
       
   523 		Include/descrobject.h \
       
   524 		Include/dictobject.h \
       
   525 		Include/enumobject.h \
       
   526 		Include/genobject.h \
       
   527 		Include/fileobject.h \
       
   528 		Include/floatobject.h \
       
   529 		Include/funcobject.h \
       
   530 		Include/import.h \
       
   531 		Include/intobject.h \
       
   532 		Include/intrcheck.h \
       
   533 		Include/iterobject.h \
       
   534 		Include/listobject.h \
       
   535 		Include/longobject.h \
       
   536 		Include/methodobject.h \
       
   537 		Include/modsupport.h \
       
   538 		Include/moduleobject.h \
       
   539 		Include/object.h \
       
   540 		Include/objimpl.h \
       
   541 		Include/patchlevel.h \
       
   542 		Include/pyarena.h \
       
   543 		Include/pydebug.h \
       
   544 		Include/pyerrors.h \
       
   545 		Include/pyfpe.h \
       
   546 		Include/pymem.h \
       
   547 		Include/pyport.h \
       
   548 		Include/pystate.h \
       
   549 		Include/pythonrun.h \
       
   550 		Include/rangeobject.h \
       
   551                 Include/setobject.h \
       
   552 		Include/sliceobject.h \
       
   553 		Include/stringobject.h \
       
   554 		Include/structseq.h \
       
   555 		Include/structmember.h \
       
   556 		Include/symtable.h \
       
   557 		Include/sysmodule.h \
       
   558 		Include/traceback.h \
       
   559 		Include/tupleobject.h \
       
   560 		Include/unicodeobject.h \
       
   561 		Include/weakrefobject.h \
       
   562 		pyconfig.h
       
   563 
       
   564 $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
       
   565 
       
   566 
       
   567 ######################################################################
       
   568 
       
   569 # Test the interpreter (twice, once without .pyc files, once with)
       
   570 # In the past, we've had problems where bugs in the marshalling or
       
   571 # elsewhere caused bytecode read from .pyc files to behave differently
       
   572 # than bytecode generated directly from a .py source file.  Sometimes
       
   573 # the bytecode read from a .pyc file had the bug, somtimes the directly
       
   574 # generated bytecode.  This is sometimes a very shy bug needing a lot of
       
   575 # sample data.
       
   576 
       
   577 TESTOPTS=	-l $(EXTRATESTOPTS)
       
   578 TESTPROG=	$(srcdir)/Lib/test/regrtest.py
       
   579 TESTPYTHON=	$(RUNSHARED) ./$(BUILDPYTHON) -E -tt
       
   580 test:		all platform
       
   581 		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
       
   582 		-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
       
   583 		$(TESTPYTHON) $(TESTPROG) $(TESTOPTS)
       
   584 
       
   585 testall:	all platform
       
   586 		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
       
   587 		-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
       
   588 		$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
       
   589 
       
   590 #  Run the unitests for both architectures in a Universal build on OSX
       
   591 #  Must be run on an Intel box.
       
   592 testuniversal:	all platform
       
   593 		if [ `arch` != 'i386' ];then \
       
   594 			echo "This can only be used on OSX/i386" ;\
       
   595 			exit 1 ;\
       
   596 		fi
       
   597 		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
       
   598 		-$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
       
   599 		$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall
       
   600 		$(RUNSHARED) /usr/libexec/oah/translate ./$(BUILDPYTHON) -E -tt $(TESTPROG) $(TESTOPTS) -uall
       
   601 
       
   602 
       
   603 # Like testall, but with a single pass only
       
   604 # run an optional script to include some information about the build environment
       
   605 buildbottest:	all platform
       
   606 		-@if which pybuildbot.identify >/dev/null 2>&1; then \
       
   607 			pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \
       
   608 		fi
       
   609 		$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -uall -rw
       
   610 
       
   611 QUICKTESTOPTS=	$(TESTOPTS) -x test_thread test_signal test_strftime \
       
   612 		test_unicodedata test_re test_sre test_select test_poll \
       
   613 		test_linuxaudiodev test_struct test_sunaudiodev test_zlib
       
   614 quicktest:	all platform
       
   615 		-find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f
       
   616 		-$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
       
   617 		$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS)
       
   618 
       
   619 MEMTESTOPTS=    $(QUICKTESTOPTS) -x test_dl test___all__ test_fork1 \
       
   620 		test_longexp
       
   621 memtest:	all platform
       
   622 		-rm -f $(srcdir)/Lib/test/*.py[co]
       
   623 		-$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
       
   624 		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
       
   625 
       
   626 # Install everything
       
   627 install:	@FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@
       
   628 
       
   629 # Install almost everything without disturbing previous versions
       
   630 altinstall:	@FRAMEWORKALTINSTALLFIRST@ altbininstall libinstall inclinstall libainstall \
       
   631                 sharedinstall oldsharedinstall @FRAMEWORKALTINSTALLLAST@
       
   632 
       
   633 # Install shared libraries enabled by Setup
       
   634 DESTDIRS=	$(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED)
       
   635 
       
   636 oldsharedinstall: $(DESTSHARED) $(SHAREDMODS)
       
   637 		@for i in X $(SHAREDMODS); do \
       
   638 		  if test $$i != X; then \
       
   639 		    echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \
       
   640 		    $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \
       
   641 		  fi; \
       
   642 		done
       
   643 
       
   644 $(DESTSHARED):
       
   645 		@for i in $(DESTDIRS); \
       
   646 		do \
       
   647 			if test ! -d $(DESTDIR)$$i; then \
       
   648 				echo "Creating directory $$i"; \
       
   649 				$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   650 			else    true; \
       
   651 			fi; \
       
   652 		done
       
   653 
       
   654 
       
   655 # Install the interpreter (by creating a hard link to python$(VERSION))
       
   656 bininstall:	altbininstall
       
   657 	-if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \
       
   658 	then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \
       
   659 	else true; \
       
   660 	fi
       
   661 	(cd $(DESTDIR)$(BINDIR); $(LN) python$(VERSION)$(EXE) $(PYTHON))
       
   662 	-rm -f $(DESTDIR)$(BINDIR)/python-config
       
   663 	(cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python-config)
       
   664 
       
   665 # Install the interpreter with $(VERSION) affixed
       
   666 # This goes into $(exec_prefix)
       
   667 altbininstall:	$(BUILDPYTHON)
       
   668 	@for i in $(BINDIR) $(LIBDIR); \
       
   669 	do \
       
   670 		if test ! -d $(DESTDIR)$$i; then \
       
   671 			echo "Creating directory $$i"; \
       
   672 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   673 		else	true; \
       
   674 		fi; \
       
   675 	done
       
   676 	$(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE)
       
   677 	if test -f libpython$(VERSION)$(SO); then \
       
   678 		if test "$(SO)" = .dll; then \
       
   679 			$(INSTALL_SHARED) libpython$(VERSION)$(SO) $(DESTDIR)$(BINDIR); \
       
   680 		else \
       
   681 			$(INSTALL_SHARED) libpython$(VERSION)$(SO) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \
       
   682 			if test libpython$(VERSION)$(SO) != $(INSTSONAME); then \
       
   683 				(cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) libpython$(VERSION)$(SO)); \
       
   684 			fi \
       
   685 		fi; \
       
   686 	else	true; \
       
   687 	fi
       
   688 
       
   689 # Install the manual page
       
   690 maninstall:
       
   691 	@for i in $(MANDIR) $(MANDIR)/man1; \
       
   692 	do \
       
   693 		if test ! -d $(DESTDIR)$$i; then \
       
   694 			echo "Creating directory $$i"; \
       
   695 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   696 		else	true; \
       
   697 		fi; \
       
   698 	done
       
   699 	$(INSTALL_DATA) $(srcdir)/Misc/python.man \
       
   700 		$(DESTDIR)$(MANDIR)/man1/python.1
       
   701 
       
   702 # Install the library
       
   703 PLATDIR=	plat-$(MACHDEP)
       
   704 EXTRAPLATDIR= @EXTRAPLATDIR@
       
   705 EXTRAMACHDEPPATH=@EXTRAMACHDEPPATH@
       
   706 MACHDEPS=	$(PLATDIR) $(EXTRAPLATDIR)
       
   707 XMLLIBSUBDIRS=  xml xml/dom xml/etree xml/parsers xml/sax
       
   708 PLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \
       
   709 	plat-mac/lib-scriptpackages/_builtinSuites \
       
   710 	plat-mac/lib-scriptpackages/CodeWarrior \
       
   711 	plat-mac/lib-scriptpackages/Explorer \
       
   712 	plat-mac/lib-scriptpackages/Finder \
       
   713 	plat-mac/lib-scriptpackages/Netscape \
       
   714 	plat-mac/lib-scriptpackages/StdSuites \
       
   715 	plat-mac/lib-scriptpackages/SystemEvents \
       
   716 	plat-mac/lib-scriptpackages/Terminal 
       
   717 PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages
       
   718 LIBSUBDIRS=	lib-tk site-packages test test/output test/data \
       
   719 		test/decimaltestdata \
       
   720 		encodings compiler hotshot \
       
   721 		email email/mime email/test email/test/data \
       
   722 		sqlite3 sqlite3/test \
       
   723 		logging bsddb bsddb/test csv wsgiref \
       
   724 		ctypes ctypes/test ctypes/macholib idlelib idlelib/Icons \
       
   725 		distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \
       
   726 		setuptools setuptools/command setuptools/tests setuptools.egg-info \
       
   727 		curses $(MACHDEPS)
       
   728 libinstall:	$(BUILDPYTHON) $(srcdir)/Lib/$(PLATDIR)
       
   729 	@for i in $(SCRIPTDIR) $(LIBDEST); \
       
   730 	do \
       
   731 		if test ! -d $(DESTDIR)$$i; then \
       
   732 			echo "Creating directory $$i"; \
       
   733 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   734 		else	true; \
       
   735 		fi; \
       
   736 	done
       
   737 	@for d in $(LIBSUBDIRS); \
       
   738 	do \
       
   739 		a=$(srcdir)/Lib/$$d; \
       
   740 		if test ! -d $$a; then continue; else true; fi; \
       
   741 		b=$(LIBDEST)/$$d; \
       
   742 		if test ! -d $(DESTDIR)$$b; then \
       
   743 			echo "Creating directory $$b"; \
       
   744 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \
       
   745 		else	true; \
       
   746 		fi; \
       
   747 	done
       
   748 	@for i in $(srcdir)/Lib/*.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \
       
   749 	do \
       
   750 		if test -x $$i; then \
       
   751 			$(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \
       
   752 			echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \
       
   753 		else \
       
   754 			$(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \
       
   755 			echo $(INSTALL_DATA) $$i $(LIBDEST); \
       
   756 		fi; \
       
   757 	done
       
   758 	@for d in $(LIBSUBDIRS); \
       
   759 	do \
       
   760 		a=$(srcdir)/Lib/$$d; \
       
   761 		if test ! -d $$a; then continue; else true; fi; \
       
   762 		if test `ls $$a | wc -l` -lt 1; then continue; fi; \
       
   763 		b=$(LIBDEST)/$$d; \
       
   764 		for i in $$a/*; \
       
   765 		do \
       
   766 			case $$i in \
       
   767 			*CVS) ;; \
       
   768 			*.py[co]) ;; \
       
   769 			*.orig) ;; \
       
   770 			*~) ;; \
       
   771 			*) \
       
   772 				if test -d $$i; then continue; fi; \
       
   773 				if test -x $$i; then \
       
   774 				    echo $(INSTALL_SCRIPT) $$i $$b; \
       
   775 				    $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \
       
   776 				else \
       
   777 				    echo $(INSTALL_DATA) $$i $$b; \
       
   778 				    $(INSTALL_DATA) $$i $(DESTDIR)$$b; \
       
   779 				fi;; \
       
   780 			esac; \
       
   781 		done; \
       
   782 	done
       
   783 	$(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt
       
   784 	PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
       
   785 		./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
       
   786 		-d $(LIBDEST) -f \
       
   787 		-x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
       
   788 	PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
       
   789 		./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \
       
   790 		-d $(LIBDEST) -f \
       
   791 		-x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST)
       
   792 	-PYTHONPATH=$(DESTDIR)$(LIBDEST)  $(RUNSHARED) \
       
   793 		./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \
       
   794 		-d $(LIBDEST)/site-packages -f \
       
   795 		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
       
   796 	-PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \
       
   797 		./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \
       
   798 		-d $(LIBDEST)/site-packages -f \
       
   799 		-x badsyntax $(DESTDIR)$(LIBDEST)/site-packages
       
   800 
       
   801 # Create the PLATDIR source directory, if one wasn't distributed..
       
   802 $(srcdir)/Lib/$(PLATDIR):
       
   803 	mkdir $(srcdir)/Lib/$(PLATDIR)
       
   804 	cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen
       
   805 	export PATH; PATH="`pwd`:$$PATH"; \
       
   806 	export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \
       
   807 	export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \
       
   808 	export EXE; EXE="$(BUILDEXE)"; \
       
   809 	cd $(srcdir)/Lib/$(PLATDIR); ./regen
       
   810 
       
   811 # Install the include files
       
   812 INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY)
       
   813 inclinstall:
       
   814 	@for i in $(INCLDIRSTOMAKE); \
       
   815 	do \
       
   816 		if test ! -d $(DESTDIR)$$i; then \
       
   817 			echo "Creating directory $$i"; \
       
   818 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   819 		else	true; \
       
   820 		fi; \
       
   821 	done
       
   822 	@for i in $(srcdir)/Include/*.h; \
       
   823 	do \
       
   824 		echo $(INSTALL_DATA) $$i $(INCLUDEPY); \
       
   825 		$(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \
       
   826 	done
       
   827 	$(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h
       
   828 
       
   829 # Install the library and miscellaneous stuff needed for extending/embedding
       
   830 # This goes into $(exec_prefix)
       
   831 LIBPL=		$(LIBP)/config
       
   832 libainstall:	all
       
   833 	@for i in $(LIBDIR) $(LIBP) $(LIBPL); \
       
   834 	do \
       
   835 		if test ! -d $(DESTDIR)$$i; then \
       
   836 			echo "Creating directory $$i"; \
       
   837 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   838 		else	true; \
       
   839 		fi; \
       
   840 	done
       
   841 	@if test -d $(LIBRARY); then :; else \
       
   842 		if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
       
   843 			if test "$(SO)" = .dll; then \
       
   844 				$(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
       
   845 			else \
       
   846 				$(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
       
   847 				$(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
       
   848 			fi; \
       
   849 		else \
       
   850 			echo Skip install of $(LIBRARY) - use make frameworkinstall; \
       
   851 		fi; \
       
   852 	fi
       
   853 	$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
       
   854 	$(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o
       
   855 	$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
       
   856 	$(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile
       
   857 	$(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup
       
   858 	$(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local
       
   859 	$(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config
       
   860 	$(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup
       
   861 	$(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh
       
   862 	# Substitution happens here, as the completely-expanded BINDIR
       
   863 	# is not available in configure
       
   864 	sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config
       
   865 	$(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config
       
   866 	rm python-config
       
   867 	@if [ -s Modules/python.exp -a \
       
   868 		"`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \
       
   869 		echo; echo "Installing support files for building shared extension modules on AIX:"; \
       
   870 		$(INSTALL_DATA) Modules/python.exp		\
       
   871 				$(DESTDIR)$(LIBPL)/python.exp;		\
       
   872 		echo; echo "$(LIBPL)/python.exp";		\
       
   873 		$(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix	\
       
   874 				$(DESTDIR)$(LIBPL)/makexp_aix;		\
       
   875 		echo "$(LIBPL)/makexp_aix";			\
       
   876 		$(INSTALL_SCRIPT) $(srcdir)/Modules/ld_so_aix	\
       
   877 				$(DESTDIR)$(LIBPL)/ld_so_aix;		\
       
   878 		echo "$(LIBPL)/ld_so_aix";			\
       
   879 		echo; echo "See Misc/AIX-NOTES for details.";	\
       
   880 	else true; \
       
   881 	fi
       
   882 	@case "$(MACHDEP)" in beos*) \
       
   883 		echo; echo "Installing support files for building shared extension modules on BeOS:"; \
       
   884 		$(INSTALL_DATA) Misc/BeOS-NOTES $(DESTDIR)$(LIBPL)/README;	\
       
   885 		echo; echo "$(LIBPL)/README";			\
       
   886 		$(INSTALL_SCRIPT) Modules/ar_beos $(DESTDIR)$(LIBPL)/ar_beos; \
       
   887 		echo "$(LIBPL)/ar_beos";			\
       
   888 		$(INSTALL_SCRIPT) Modules/ld_so_beos $(DESTDIR)$(LIBPL)/ld_so_beos; \
       
   889 		echo "$(LIBPL)/ld_so_beos";			\
       
   890 		echo; echo "See Misc/BeOS-NOTES for details.";	\
       
   891 		;; \
       
   892 	esac
       
   893 
       
   894 # Install the dynamically loadable modules
       
   895 # This goes into $(exec_prefix)
       
   896 sharedinstall:
       
   897 	$(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \
       
   898 	   	--prefix=$(prefix) \
       
   899 		--install-scripts=$(BINDIR) \
       
   900 		--install-platlib=$(DESTSHARED) \
       
   901 		--root=/$(DESTDIR)
       
   902 
       
   903 # Here are a couple of targets for MacOSX again, to install a full
       
   904 # framework-based Python. frameworkinstall installs everything, the
       
   905 # subtargets install specific parts. Much of the actual work is offloaded to
       
   906 # the Makefile in Mac
       
   907 #
       
   908 #
       
   909 # This target is here for backward compatiblity, previous versions of Python
       
   910 # hadn't integrated framework installation in the normal install process.
       
   911 frameworkinstall: install
       
   912 
       
   913 # On install, we re-make the framework
       
   914 # structure in the install location, /Library/Frameworks/ or the argument to
       
   915 # --enable-framework. If --enable-framework has been specified then we have
       
   916 # automatically set prefix to the location deep down in the framework, so we
       
   917 # only have to cater for the structural bits of the framework.
       
   918 
       
   919 frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclib
       
   920 
       
   921 frameworkinstallstructure:	$(LDLIBRARY)
       
   922 	@if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
       
   923 		echo Not configured with --enable-framework; \
       
   924 		exit 1; \
       
   925 	else true; \
       
   926 	fi
       
   927 	@for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\
       
   928 		if test ! -d $(DESTDIR)$$i; then \
       
   929 			echo "Creating directory $(DESTDIR)$$i"; \
       
   930 			$(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \
       
   931 		else	true; \
       
   932 		fi; \
       
   933 	done
       
   934 	$(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headers
       
   935 	$(INSTALL_DATA) $(RESSRCDIR)/Info.plist $(DESTDIR)$(prefix)/Resources/Info.plist
       
   936 	$(INSTALL_DATA) $(RESSRCDIR)/version.plist $(DESTDIR)$(prefix)/Resources/version.plist
       
   937 	$(INSTALL_DATA) $(RESSRCDIR)/English.lproj/InfoPlist.strings \
       
   938 		$(DESTDIR)$(prefix)/Resources/English.lproj/InfoPlist.strings
       
   939 	$(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current
       
   940 	$(LN) -fsn Versions/Current/Python $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Python
       
   941 	$(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers
       
   942 	$(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources
       
   943 	$(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY)
       
   944 
       
   945 # This installs Mac/Lib into the framework
       
   946 # Install a number of symlinks to keep software that expects a normal unix
       
   947 # install (which includes python-config) happy.
       
   948 frameworkinstallmaclib:
       
   949 	ln -fs "../../../Python" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).a"
       
   950 	cd Mac && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)"
       
   951 
       
   952 # This installs the IDE, the Launcher and other apps into /Applications
       
   953 frameworkinstallapps:
       
   954 	cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)"
       
   955 
       
   956 # This install the unix python and pythonw tools in /usr/local/bin
       
   957 frameworkinstallunixtools:
       
   958 	cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)"
       
   959 
       
   960 frameworkaltinstallunixtools:
       
   961 	cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)"
       
   962 
       
   963 # This installs the Demos and Tools into the applications directory.
       
   964 # It is not part of a normal frameworkinstall
       
   965 frameworkinstallextras:
       
   966 	cd Mac && Make installextras DESTDIR="$(DESTDIR)"
       
   967 
       
   968 # This installs a few of the useful scripts in Tools/scripts
       
   969 scriptsinstall:
       
   970 	SRCDIR=$(srcdir) $(RUNSHARED) \
       
   971 	./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \
       
   972 	--prefix=$(prefix) \
       
   973 	--install-scripts=$(BINDIR) \
       
   974 	--root=/$(DESTDIR)
       
   975 
       
   976 # Build the toplevel Makefile
       
   977 Makefile.pre: Makefile.pre.in config.status
       
   978 	CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status
       
   979 	$(MAKE) -f Makefile.pre Makefile
       
   980 
       
   981 # Run the configure script.
       
   982 config.status:	$(srcdir)/configure
       
   983 	$(SHELL) $(srcdir)/configure $(CONFIG_ARGS)
       
   984 
       
   985 .PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre
       
   986 
       
   987 # Some make's put the object file in the current directory
       
   988 .c.o:
       
   989 	$(CC) -c $(PY_CFLAGS) -o $@ $<
       
   990 
       
   991 # Run reindent on the library
       
   992 reindent:
       
   993 	./python$(EXEEXT) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib
       
   994 
       
   995 # Rerun configure with the same options as it was run last time,
       
   996 # provided the config.status script exists
       
   997 recheck:
       
   998 	$(SHELL) config.status --recheck
       
   999 	$(SHELL) config.status
       
  1000 
       
  1001 # Rebuild the configure script from configure.in; also rebuild pyconfig.h.in
       
  1002 autoconf:
       
  1003 	(cd $(srcdir); autoconf)
       
  1004 	(cd $(srcdir); autoheader)
       
  1005 
       
  1006 # Create a tags file for vi
       
  1007 tags::
       
  1008 	cd $(srcdir); \
       
  1009 	ctags -w -t Include/*.h; \
       
  1010 	for i in $(SRCDIRS); do ctags -w -t -a $$i/*.[ch]; \
       
  1011 	done; \
       
  1012 	sort -o tags tags
       
  1013 
       
  1014 # Create a tags file for GNU Emacs
       
  1015 TAGS::
       
  1016 	cd $(srcdir); \
       
  1017 	etags Include/*.h; \
       
  1018 	for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done
       
  1019 
       
  1020 # Sanitation targets -- clean leaves libraries, executables and tags
       
  1021 # files, which clobber removes those as well
       
  1022 pycremoval:
       
  1023 	find $(srcdir) -name '*.py[co]' -exec rm -f {} ';'
       
  1024 
       
  1025 clean: pycremoval
       
  1026 	find . -name '*.o' -exec rm -f {} ';'
       
  1027 	find . -name '*.s[ol]' -exec rm -f {} ';'
       
  1028 	find $(srcdir)/build -name 'fficonfig.h' -exec rm -f {} ';' || true
       
  1029 	find $(srcdir)/build -name 'fficonfig.py' -exec rm -f {} ';' || true
       
  1030 
       
  1031 clobber: clean
       
  1032 	-rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \
       
  1033 		tags TAGS \
       
  1034 		config.cache config.log pyconfig.h Modules/config.c
       
  1035 	-rm -rf build platform
       
  1036 	-rm -rf $(PYTHONFRAMEWORKDIR)
       
  1037 
       
  1038 # Make things extra clean, before making a distribution:
       
  1039 # remove all generated files, even Makefile[.pre]
       
  1040 # Keep configure and Python-ast.[ch], it's possible they can't be generated
       
  1041 distclean: clobber
       
  1042 	-rm -f core Makefile Makefile.pre config.status \
       
  1043 		Modules/Setup Modules/Setup.local Modules/Setup.config
       
  1044 	find $(srcdir) '(' -name '*.fdc' -o -name '*~' \
       
  1045 			   -o -name '[@,#]*' -o -name '*.old' \
       
  1046 			   -o -name '*.orig' -o -name '*.rej' \
       
  1047 			   -o -name '*.bak' ')' \
       
  1048 			   -exec rm -f {} ';'
       
  1049 
       
  1050 # Check for smelly exported symbols (not starting with Py/_Py)
       
  1051 smelly: all
       
  1052 	nm -p $(LIBRARY) | \
       
  1053 		sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \
       
  1054 
       
  1055 # Find files with funny names
       
  1056 funny:
       
  1057 	find $(DISTDIRS) -type d \
       
  1058 		-o -name '*.[chs]' \
       
  1059 		-o -name '*.py' \
       
  1060 		-o -name '*.doc' \
       
  1061 		-o -name '*.sty' \
       
  1062 		-o -name '*.bib' \
       
  1063 		-o -name '*.dat' \
       
  1064 		-o -name '*.el' \
       
  1065 		-o -name '*.fd' \
       
  1066 		-o -name '*.in' \
       
  1067 		-o -name '*.tex' \
       
  1068 		-o -name '*,[vpt]' \
       
  1069 		-o -name 'Setup' \
       
  1070 		-o -name 'Setup.*' \
       
  1071 		-o -name README \
       
  1072 		-o -name Makefile \
       
  1073 		-o -name ChangeLog \
       
  1074 		-o -name Repository \
       
  1075 		-o -name Root \
       
  1076 		-o -name Entries \
       
  1077 		-o -name Tag \
       
  1078 		-o -name tags \
       
  1079 		-o -name TAGS \
       
  1080 		-o -name .cvsignore \
       
  1081 		-o -name MANIFEST \
       
  1082 		-o -print
       
  1083 
       
  1084 # Dependencies
       
  1085 
       
  1086 Python/thread.o: @THREADHEADERS@
       
  1087 
       
  1088 # Declare targets that aren't real files
       
  1089 .PHONY: all sharedmods oldsharedmods test quicktest memtest
       
  1090 .PHONY: install altinstall oldsharedinstall bininstall altbininstall
       
  1091 .PHONY: maninstall libinstall inclinstall libainstall sharedinstall
       
  1092 .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
       
  1093 .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
       
  1094 .PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean 
       
  1095 .PHONY: smelly funny
       
  1096 
       
  1097 # IF YOU PUT ANYTHING HERE IT WILL GO AWAY