1 # Generated automatically from Makefile.pre by makesetup. 2 # Top-level Makefile for Python 3 # 4 # As distributed, this file is called Makefile.pre.in; it is processed 5 # into the real Makefile by running the script ./configure, which 6 # replaces things like @spam@ with values appropriate for your system. 7 # This means that if you edit Makefile, your changes get lost the next 8 # time you run the configure script. Ideally, you can do: 9 # 10 # ./configure 11 # make 12 # make test 13 # make install 14 # 15 # If you have a previous version of Python installed that you don't 16 # want to overwrite, you can use "make altinstall" instead of "make 17 # install". Refer to the "Installing" section in the README file for 18 # additional details. 19 # 20 # See also the section "Build instructions" in the README file. 21 22 # === Variables set by makesetup === 23 24 MODOBJS= Modules/posixmodule.o Modules/threadmodule.o Modules/signalmodule.o Modules/errnomodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/zipimport.o Modules/symtablemodule.o Modules/xxsubtype.o 25 MODLIBS= $(LOCALMODLIBS) $(BASEMODLIBS) 26 27 # === Variables set by configure 28 VERSION= 2.7 29 srcdir= /s/ndk-toolchain/src/python/Python-2.7.5 30 VPATH= /s/ndk-toolchain/src/python/Python-2.7.5 31 MSYSVPATH= /s/ndk-toolchain/src/python/Python-2.7.5 32 abs_srcdir= /s/ndk-toolchain/src/python/Python-2.7.5 33 abs_builddir= /tmp/ndk-andrewhsieh/buildhost/build-python-linux-x86_64-2.7.5 34 build= x86_64-pc-linux-gnu 35 host= x86_64-pc-linux-gnu 36 37 CC= x86_64-linux-gnu-gcc -pthread 38 CXX= x86_64-linux-gnu-g++ -pthread 39 MAINCC= $(CC) 40 LINKCC= $(PURIFY) $(MAINCC) 41 AR= x86_64-linux-gnu-ar 42 RANLIB= x86_64-linux-gnu-ranlib 43 SVNVERSION= svnversion $(srcdir) 44 HGVERSION= hg id -i $(srcdir) 45 HGTAG= hg id -t $(srcdir) 46 HGBRANCH= hg id -b $(srcdir) 47 48 GNULD= yes 49 50 # Shell used by make (some versions default to the login shell, which is bad) 51 SHELL= /bin/sh 52 53 # Use this to make a link between python$(VERSION) and python in $(BINDIR) 54 LN= ln 55 56 # Portable install script (configure doesn't always guess right) 57 INSTALL= /usr/bin/install -c 58 INSTALL_PROGRAM=${INSTALL} 59 INSTALL_SCRIPT= ${INSTALL} 60 INSTALL_DATA= ${INSTALL} -m 644 61 # Shared libraries must be installed with executable mode on some systems; 62 # rather than figuring out exactly which, we always give them executable mode. 63 # Also, making them read-only seems to be a good idea... 64 INSTALL_SHARED= ${INSTALL} -m 555 65 66 MKDIR_P= /bin/mkdir -p 67 68 MAKESETUP= $(srcdir)/Modules/makesetup 69 70 # Compiler options 71 OPT= -DNDEBUG 72 BASECFLAGS= -fno-strict-aliasing 73 CFLAGS= $(BASECFLAGS) -O2 -Os -fomit-frame-pointer -s $(OPT) $(EXTRA_CFLAGS) 74 # Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to 75 # be able to build extension modules using the directories specified in the 76 # environment variables 77 CPPFLAGS= -I. -IInclude -I$(srcdir)/Include 78 LDFLAGS= 79 LDLAST= 80 SGI_ABI= 81 CCSHARED= -fPIC 82 LINKFORSHARED= -Xlinker -export-dynamic 83 ARFLAGS= rc 84 # Extra C flags added for building the interpreter object files. 85 CFLAGSFORSHARED= 86 # C flags used for building the interpreter object files 87 PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE 88 89 # ; on Windows otherwise : 90 DELIM= : 91 # Machine-dependent subdirectories 92 MACHDEP= linux2 93 94 # Multiarch directory (may be empty) 95 MULTIARCH= 96 97 # Install prefix for architecture-independent files 98 prefix= /tmp/ndk-andrewhsieh/buildhost/install/prebuilt/linux-x86_64 99 100 # Install prefix for architecture-dependent files 101 exec_prefix= ${prefix} 102 103 # Install prefix for data files 104 datarootdir= ${prefix}/share 105 106 # Expanded directories 107 BINDIR= ${exec_prefix}/bin 108 LIBDIR= ${exec_prefix}/lib 109 MANDIR= ${datarootdir}/man 110 INCLUDEDIR= ${prefix}/include 111 CONFINCLUDEDIR= $(exec_prefix)/include 112 SCRIPTDIR= $(prefix)/lib 113 114 # Detailed destination directories 115 BINLIBDEST= $(LIBDIR)/python$(VERSION) 116 LIBDEST= $(SCRIPTDIR)/python$(VERSION) 117 INCLUDEPY= $(INCLUDEDIR)/python$(VERSION) 118 CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION) 119 LIBP= $(LIBDIR)/python$(VERSION) 120 121 # Symbols used for using shared libraries 122 SO= .so 123 LDSHARED= x86_64-linux-gnu-gcc -shared $(LDFLAGS) 124 BLDSHARED= x86_64-linux-gnu-gcc -shared $(LDFLAGS) 125 LDCXXSHARED= x86_64-linux-gnu-gcc -shared 126 DESTSHARED= $(BINLIBDEST)/lib-dynload 127 128 # Executable suffix (.exe on Windows and Mac OS X) 129 EXE= 130 BUILDEXE= 131 132 # Short name and location for Mac OS X Python framework 133 UNIVERSALSDK= 134 PYTHONFRAMEWORK= 135 PYTHONFRAMEWORKDIR= no-framework 136 PYTHONFRAMEWORKPREFIX= 137 PYTHONFRAMEWORKINSTALLDIR= 138 # Deployment target selected during configure, to be checked 139 # by distutils. The export statement is needed to ensure that the 140 # deployment target is active during build. 141 MACOSX_DEPLOYMENT_TARGET= 142 #export MACOSX_DEPLOYMENT_TARGET 143 144 # Options to enable prebinding (for fast startup prior to Mac OS X 10.3) 145 OTHER_LIBTOOL_OPT= 146 147 # Environment to run shared python without installed libraries 148 RUNSHARED= 149 150 # Modes for directories, executables and data files created by the 151 # install process. Default to user-only-writable for all file types. 152 DIRMODE= 755 153 EXEMODE= 755 154 FILEMODE= 644 155 156 # configure script arguments 157 CONFIG_ARGS= '--prefix=/tmp/ndk-andrewhsieh/buildhost/install/prebuilt/linux-x86_64' '--build=x86_64-linux-gnu' '--host=x86_64-linux-gnu' '--with-build-sysroot' '--disable-ipv6' 'build_alias=x86_64-linux-gnu' 'host_alias=x86_64-linux-gnu' 'CC=x86_64-linux-gnu-gcc' 'CFLAGS=-O2 -Os -fomit-frame-pointer -s' 'LDFLAGS=' 158 159 160 # Subdirectories with code 161 SRCDIRS= Parser Grammar Objects Python Modules Mac 162 163 # Other subdirectories 164 SUBDIRSTOO= Include Lib Misc Demo 165 166 # Files and directories to be distributed 167 CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in 168 DISTFILES= README ChangeLog $(CONFIGFILES) 169 DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy 170 DIST= $(DISTFILES) $(DISTDIRS) 171 172 173 LIBRARY= libpython$(VERSION).a 174 LDLIBRARY= libpython$(VERSION).a 175 BLDLIBRARY= $(LDLIBRARY) 176 DLLLIBRARY= 177 LDLIBRARYDIR= 178 INSTSONAME= $(LDLIBRARY) 179 180 181 LIBS= -lpthread -ldl -lutil 182 LIBM= -lm 183 LIBC= 184 SYSLIBS= $(LIBM) $(LIBC) 185 SHLIBS= $(LIBS) 186 187 THREADOBJ= Python/thread.o 188 DLINCLDIR= . 189 DYNLOADFILE= dynload_shlib.o 190 MACHDEP_OBJS= 191 LIBOBJDIR= Python/ 192 LIBOBJS= 193 UNICODE_OBJS= Objects/unicodeobject.o Objects/unicodectype.o 194 195 PYTHON= python$(EXE) 196 BUILDPYTHON= python$(BUILDEXE) 197 198 PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E 199 _PYTHON_HOST_PLATFORM= 200 HOST_GNU_TYPE= x86_64-pc-linux-gnu 201 202 # The task to run while instrument when building the profile-opt target 203 PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck 204 #PROFILE_TASK= $(srcdir)/Lib/test/regrtest.py 205 206 # === Definitions added by makesetup === 207 208 LOCALMODLIBS= 209 BASEMODLIBS= 210 GLHACK=-Dclear=__GLclear 211 PYTHONPATH=$(COREPYTHONPATH) 212 COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH)$(MACHDEPPATH)$(EXTRAMACHDEPPATH)$(TKPATH)$(OLDPATH) 213 OLDPATH=$(DELIM)lib-old 214 TKPATH=$(DELIM)lib-tk 215 EXTRAMACHDEPPATH= 216 MACHDEPPATH=$(DELIM)plat-$(MACHDEP) 217 TESTPATH= 218 SITEPATH= 219 DESTPATH= 220 MACHDESTLIB=$(BINLIBDEST) 221 DESTLIB=$(LIBDEST) 222 223 224 225 ########################################################################## 226 # Modules 227 MODULE_OBJS= \ 228 Modules/config.o \ 229 Modules/getpath.o \ 230 Modules/main.o \ 231 Modules/gcmodule.o 232 233 # Used of signalmodule.o is not available 234 SIGNAL_OBJS= 235 236 237 ########################################################################## 238 # Grammar 239 GRAMMAR_H= Include/graminit.h 240 GRAMMAR_C= Python/graminit.c 241 GRAMMAR_INPUT= $(srcdir)/Grammar/Grammar 242 243 244 LIBFFI_INCLUDEDIR= 245 246 ########################################################################## 247 # Parser 248 PGEN= Parser/pgen$(EXE) 249 250 PSRCS= \ 251 Parser/acceler.c \ 252 Parser/grammar1.c \ 253 Parser/listnode.c \ 254 Parser/node.c \ 255 Parser/parser.c \ 256 Parser/parsetok.c \ 257 Parser/bitset.c \ 258 Parser/metagrammar.c \ 259 Parser/firstsets.c \ 260 Parser/grammar.c \ 261 Parser/pgen.c 262 263 POBJS= \ 264 Parser/acceler.o \ 265 Parser/grammar1.o \ 266 Parser/listnode.o \ 267 Parser/node.o \ 268 Parser/parser.o \ 269 Parser/parsetok.o \ 270 Parser/bitset.o \ 271 Parser/metagrammar.o \ 272 Parser/firstsets.o \ 273 Parser/grammar.o \ 274 Parser/pgen.o 275 276 PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.o 277 278 PGSRCS= \ 279 Objects/obmalloc.c \ 280 Python/mysnprintf.c \ 281 Python/pyctype.c \ 282 Parser/tokenizer_pgen.c \ 283 Parser/printgrammar.c \ 284 Parser/pgenmain.c 285 286 PGOBJS= \ 287 Objects/obmalloc.o \ 288 Python/mysnprintf.o \ 289 Python/pyctype.o \ 290 Parser/tokenizer_pgen.o \ 291 Parser/printgrammar.o \ 292 Parser/pgenmain.o 293 294 PARSER_HEADERS= \ 295 Parser/parser.h \ 296 Parser/tokenizer.h 297 298 PGENSRCS= $(PSRCS) $(PGSRCS) 299 PGENOBJS= $(POBJS) $(PGOBJS) 300 301 ########################################################################## 302 # AST 303 AST_H_DIR= Include 304 AST_H= $(AST_H_DIR)/Python-ast.h 305 AST_C_DIR= Python 306 AST_C= $(AST_C_DIR)/Python-ast.c 307 AST_ASDL= $(srcdir)/Parser/Python.asdl 308 309 ASDLGEN_FILES= $(srcdir)/Parser/asdl.py $(srcdir)/Parser/asdl_c.py 310 # XXX Note that a build now requires Python exist before the build starts 311 ASDLGEN= $(srcdir)/Parser/asdl_c.py 312 313 ########################################################################## 314 # Python 315 PYTHON_OBJS= \ 316 Python/_warnings.o \ 317 Python/Python-ast.o \ 318 Python/asdl.o \ 319 Python/ast.o \ 320 Python/bltinmodule.o \ 321 Python/ceval.o \ 322 Python/compile.o \ 323 Python/codecs.o \ 324 Python/errors.o \ 325 Python/frozen.o \ 326 Python/frozenmain.o \ 327 Python/future.o \ 328 Python/getargs.o \ 329 Python/getcompiler.o \ 330 Python/getcopyright.o \ 331 Python/getplatform.o \ 332 Python/getversion.o \ 333 Python/graminit.o \ 334 Python/import.o \ 335 Python/importdl.o \ 336 Python/marshal.o \ 337 Python/modsupport.o \ 338 Python/mystrtoul.o \ 339 Python/mysnprintf.o \ 340 Python/peephole.o \ 341 Python/pyarena.o \ 342 Python/pyctype.o \ 343 Python/pyfpe.o \ 344 Python/pymath.o \ 345 Python/pystate.o \ 346 Python/pythonrun.o \ 347 Python/random.o \ 348 Python/structmember.o \ 349 Python/symtable.o \ 350 Python/sysmodule.o \ 351 Python/traceback.o \ 352 Python/getopt.o \ 353 Python/pystrcmp.o \ 354 Python/pystrtod.o \ 355 Python/dtoa.o \ 356 Python/formatter_unicode.o \ 357 Python/formatter_string.o \ 358 Python/$(DYNLOADFILE) \ 359 $(LIBOBJS) \ 360 $(MACHDEP_OBJS) \ 361 $(THREADOBJ) 362 363 364 ########################################################################## 365 # Objects 366 OBJECT_OBJS= \ 367 Objects/abstract.o \ 368 Objects/boolobject.o \ 369 Objects/bufferobject.o \ 370 Objects/bytes_methods.o \ 371 Objects/bytearrayobject.o \ 372 Objects/capsule.o \ 373 Objects/cellobject.o \ 374 Objects/classobject.o \ 375 Objects/cobject.o \ 376 Objects/codeobject.o \ 377 Objects/complexobject.o \ 378 Objects/descrobject.o \ 379 Objects/enumobject.o \ 380 Objects/exceptions.o \ 381 Objects/genobject.o \ 382 Objects/fileobject.o \ 383 Objects/floatobject.o \ 384 Objects/frameobject.o \ 385 Objects/funcobject.o \ 386 Objects/intobject.o \ 387 Objects/iterobject.o \ 388 Objects/listobject.o \ 389 Objects/longobject.o \ 390 Objects/dictobject.o \ 391 Objects/memoryobject.o \ 392 Objects/methodobject.o \ 393 Objects/moduleobject.o \ 394 Objects/object.o \ 395 Objects/obmalloc.o \ 396 Objects/rangeobject.o \ 397 Objects/setobject.o \ 398 Objects/sliceobject.o \ 399 Objects/stringobject.o \ 400 Objects/structseq.o \ 401 Objects/tupleobject.o \ 402 Objects/typeobject.o \ 403 Objects/weakrefobject.o \ 404 $(UNICODE_OBJS) 405 406 407 ########################################################################## 408 # objects that get linked into the Python library 409 LIBRARY_OBJS= \ 410 Modules/getbuildinfo.o \ 411 $(PARSER_OBJS) \ 412 $(OBJECT_OBJS) \ 413 $(PYTHON_OBJS) \ 414 $(MODULE_OBJS) \ 415 $(SIGNAL_OBJS) \ 416 $(MODOBJS) 417 418 ######################################################################### 419 # Rules 420 421 # Default target 422 all: build_all 423 build_all: $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks 424 425 # Compile a binary with gcc profile guided optimization. 426 profile-opt: 427 @echo "Building with support for profile generation:" 428 $(MAKE) clean 429 $(MAKE) build_all_generate_profile 430 @echo "Running benchmark to generate profile data:" 431 $(MAKE) profile-removal 432 $(MAKE) run_profile_task 433 @echo "Rebuilding with profile guided optimizations:" 434 $(MAKE) clean 435 $(MAKE) build_all_use_profile 436 437 build_all_generate_profile: 438 $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-generate" LIBS="$(LIBS) -lgcov" 439 440 run_profile_task: 441 : # FIXME: can't run for a cross build 442 ./$(BUILDPYTHON) $(PROFILE_TASK) 443 444 build_all_use_profile: 445 $(MAKE) all CFLAGS="$(CFLAGS) -fprofile-use" 446 447 coverage: 448 @echo "Building with support for coverage checking:" 449 $(MAKE) clean 450 $(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov" 451 452 453 # Build the interpreter 454 $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) 455 $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ 456 Modules/python.o \ 457 $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) 458 459 platform: $(BUILDPYTHON) pybuilddir.txt 460 $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform 461 462 # Create build directory and generate the sysconfig build-time data there. 463 # pybuilddir.txt contains the name of the build dir and is used for 464 # sys.path fixup -- see Modules/getpath.c. 465 pybuilddir.txt: $(BUILDPYTHON) 466 $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars 467 468 # Build the shared modules 469 # Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for 470 # -s, --silent or --quiet is always the first char. 471 # Under BSD make, MAKEFLAGS might be " -s -v x=y". 472 sharedmods: $(BUILDPYTHON) pybuilddir.txt 473 @case "$$MAKEFLAGS" in \ 474 *\ -s*|s*) quiet="-q";; \ 475 *) quiet="";; \ 476 esac; \ 477 $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ 478 $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build 479 480 # Build static library 481 # avoid long command lines, same as LIBRARY_OBJS 482 $(LIBRARY): $(LIBRARY_OBJS) 483 -rm -f $@ 484 $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o 485 $(AR) $(ARFLAGS) $@ $(PARSER_OBJS) 486 $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS) 487 $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) 488 $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS) 489 $(AR) $(ARFLAGS) $@ $(MODOBJS) 490 $(RANLIB) $@ 491 492 libpython$(VERSION).so: $(LIBRARY_OBJS) 493 if test $(INSTSONAME) != $(LDLIBRARY); then \ 494 $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \ 495 $(LN) -f $(INSTSONAME) $@; \ 496 else \ 497 $(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \ 498 fi 499 500 libpython$(VERSION).dylib: $(LIBRARY_OBJS) 501 $(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); \ 502 503 504 libpython$(VERSION).sl: $(LIBRARY_OBJS) 505 $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST) 506 507 # Copy up the gdb python hooks into a position where they can be automatically 508 # loaded by gdb during Lib/test/test_gdb.py 509 # 510 # Distributors are likely to want to install this somewhere else e.g. relative 511 # to the stripped DWARF data for the shared library. 512 gdbhooks: $(BUILDPYTHON)-gdb.py 513 514 SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py 515 $(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS) 516 $(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py 517 518 # This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary 519 # minimal framework (not including the Lib directory and such) in the current 520 # directory. 521 RESSRCDIR=Mac/Resources/framework 522 $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ 523 $(LIBRARY) \ 524 $(RESSRCDIR)/Info.plist 525 $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) 526 $(CC) -o $(LDLIBRARY) $(LDFLAGS) -dynamiclib \ 527 -all_load $(LIBRARY) -Wl,-single_module \ 528 -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \ 529 -compatibility_version $(VERSION) \ 530 -current_version $(VERSION); 531 $(INSTALL) -d -m $(DIRMODE) \ 532 $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj 533 $(INSTALL_DATA) $(RESSRCDIR)/Info.plist \ 534 $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist 535 $(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current 536 $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK) 537 $(LN) -fsn Versions/Current/Headers $(PYTHONFRAMEWORKDIR)/Headers 538 $(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources 539 540 # This rule builds the Cygwin Python DLL and import library if configured 541 # for a shared core library; otherwise, this rule is a noop. 542 $(DLLLIBRARY) libpython$(VERSION).dll.a: $(LIBRARY_OBJS) 543 if test -n "$(DLLLIBRARY)"; then \ 544 $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ 545 $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST); \ 546 else true; \ 547 fi 548 549 550 oldsharedmods: $(SHAREDMODS) 551 552 553 Makefile Modules/config.c: Makefile.pre \ 554 $(srcdir)/Modules/config.c.in \ 555 $(MAKESETUP) \ 556 Modules/Setup.config \ 557 Modules/Setup \ 558 Modules/Setup.local 559 $(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \ 560 -s Modules \ 561 Modules/Setup.config \ 562 Modules/Setup.local \ 563 Modules/Setup 564 @mv config.c Modules 565 @echo "The Makefile was updated, you may need to re-run make." 566 567 568 Modules/Setup: $(srcdir)/Modules/Setup.dist 569 @if test -f Modules/Setup; then \ 570 echo "-----------------------------------------------"; \ 571 echo "Modules/Setup.dist is newer than Modules/Setup;"; \ 572 echo "check to make sure you have all the updates you"; \ 573 echo "need in your Modules/Setup file."; \ 574 echo "Usually, copying Modules/Setup.dist to Modules/Setup will work."; \ 575 echo "-----------------------------------------------"; \ 576 fi 577 578 ############################################################################ 579 # Special rules for object files 580 581 Modules/getbuildinfo.o: $(PARSER_OBJS) \ 582 $(OBJECT_OBJS) \ 583 $(PYTHON_OBJS) \ 584 $(MODULE_OBJS) \ 585 $(SIGNAL_OBJS) \ 586 $(MODOBJS) \ 587 $(srcdir)/Modules/getbuildinfo.c 588 $(CC) -c $(PY_CFLAGS) \ 589 -DSVNVERSION="\"`LC_ALL=C $(SVNVERSION)`\"" \ 590 -DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \ 591 -DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \ 592 -DHGBRANCH="\"`LC_ALL=C $(HGBRANCH)`\"" \ 593 -o $@ $(srcdir)/Modules/getbuildinfo.c 594 595 # default sys.path calculations 596 Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile 597 $(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ 598 -DPREFIX='"$(prefix)"' \ 599 -DEXEC_PREFIX='"$(exec_prefix)"' \ 600 -DVERSION='"$(VERSION)"' \ 601 -DVPATH='"$(MSYSVPATH)"' \ 602 -o $@ $(srcdir)/Modules/getpath.c 603 604 # default sys.path calculations for windows platforms 605 PC/getpathp.o: $(srcdir)/PC/getpathp.c 606 $(CC) -c $(PY_CFLAGS) -o $@ $(srcdir)/PC/getpathp.c 607 608 Modules/python.o: $(srcdir)/Modules/python.c 609 $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c 610 611 Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h 612 613 Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h 614 615 Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h 616 617 $(GRAMMAR_H): $(GRAMMAR_INPUT) $(PGENSRCS) 618 @$(MKDIR_P) Include 619 $(MAKE) $(PGEN) 620 $(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) 621 $(GRAMMAR_C): $(GRAMMAR_H) $(GRAMMAR_INPUT) $(PGENSRCS) 622 $(MAKE) $(GRAMMAR_H) 623 touch $(GRAMMAR_C) 624 625 $(PGEN): $(PGENOBJS) 626 $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) 627 628 Parser/grammar.o: $(srcdir)/Parser/grammar.c \ 629 $(srcdir)/Include/token.h \ 630 $(srcdir)/Include/grammar.h 631 Parser/metagrammar.o: $(srcdir)/Parser/metagrammar.c 632 633 Parser/tokenizer_pgen.o: $(srcdir)/Parser/tokenizer.c 634 635 Parser/pgenmain.o: $(srcdir)/Include/parsetok.h 636 637 $(AST_H): $(AST_ASDL) $(ASDLGEN_FILES) 638 $(MKDIR_P) $(AST_H_DIR) 639 $(ASDLGEN) -h $(AST_H_DIR) $(AST_ASDL) 640 641 $(AST_C): $(AST_ASDL) $(ASDLGEN_FILES) 642 $(MKDIR_P) $(AST_C_DIR) 643 $(ASDLGEN) -c $(AST_C_DIR) $(AST_ASDL) 644 645 Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) 646 647 Python/getplatform.o: $(srcdir)/Python/getplatform.c 648 $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c 649 650 Python/importdl.o: $(srcdir)/Python/importdl.c 651 $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c 652 653 Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ 654 $(srcdir)/Objects/unicodetype_db.h 655 656 STRINGLIB_HEADERS= \ 657 $(srcdir)/Include/bytes_methods.h \ 658 $(srcdir)/Objects/stringlib/count.h \ 659 $(srcdir)/Objects/stringlib/ctype.h \ 660 $(srcdir)/Objects/stringlib/fastsearch.h \ 661 $(srcdir)/Objects/stringlib/find.h \ 662 $(srcdir)/Objects/stringlib/formatter.h \ 663 $(srcdir)/Objects/stringlib/partition.h \ 664 $(srcdir)/Objects/stringlib/split.h \ 665 $(srcdir)/Objects/stringlib/stringdefs.h \ 666 $(srcdir)/Objects/stringlib/string_format.h \ 667 $(srcdir)/Objects/stringlib/transmogrify.h \ 668 $(srcdir)/Objects/stringlib/unicodedefs.h \ 669 $(srcdir)/Objects/stringlib/localeutil.h 670 671 Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c \ 672 $(STRINGLIB_HEADERS) 673 674 Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c \ 675 $(STRINGLIB_HEADERS) 676 677 Objects/stringobject.o: $(srcdir)/Objects/stringobject.c \ 678 $(STRINGLIB_HEADERS) 679 680 Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \ 681 $(STRINGLIB_HEADERS) 682 683 Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \ 684 $(STRINGLIB_HEADERS) 685 686 ############################################################################ 687 # Header files 688 689 PYTHON_HEADERS= \ 690 Include/Python-ast.h \ 691 Include/Python.h \ 692 Include/abstract.h \ 693 Include/asdl.h \ 694 Include/ast.h \ 695 Include/bitset.h \ 696 Include/boolobject.h \ 697 Include/bytearrayobject.h \ 698 Include/bytes_methods.h \ 699 Include/bytesobject.h \ 700 Include/bufferobject.h \ 701 Include/cellobject.h \ 702 Include/ceval.h \ 703 Include/classobject.h \ 704 Include/cobject.h \ 705 Include/code.h \ 706 Include/codecs.h \ 707 Include/compile.h \ 708 Include/complexobject.h \ 709 Include/descrobject.h \ 710 Include/dictobject.h \ 711 Include/dtoa.h \ 712 Include/enumobject.h \ 713 Include/errcode.h \ 714 Include/eval.h \ 715 Include/fileobject.h \ 716 Include/floatobject.h \ 717 Include/frameobject.h \ 718 Include/funcobject.h \ 719 Include/genobject.h \ 720 Include/import.h \ 721 Include/intobject.h \ 722 Include/intrcheck.h \ 723 Include/iterobject.h \ 724 Include/listobject.h \ 725 Include/longintrepr.h \ 726 Include/longobject.h \ 727 Include/marshal.h \ 728 Include/memoryobject.h \ 729 Include/metagrammar.h \ 730 Include/methodobject.h \ 731 Include/modsupport.h \ 732 Include/moduleobject.h \ 733 Include/node.h \ 734 Include/object.h \ 735 Include/objimpl.h \ 736 Include/opcode.h \ 737 Include/osdefs.h \ 738 Include/parsetok.h \ 739 Include/patchlevel.h \ 740 Include/pgen.h \ 741 Include/pgenheaders.h \ 742 Include/pyarena.h \ 743 Include/pycapsule.h \ 744 Include/pyctype.h \ 745 Include/pydebug.h \ 746 Include/pyerrors.h \ 747 Include/pyfpe.h \ 748 Include/pymath.h \ 749 Include/pygetopt.h \ 750 Include/pymem.h \ 751 Include/pyport.h \ 752 Include/pystate.h \ 753 Include/pystrcmp.h \ 754 Include/pystrtod.h \ 755 Include/pythonrun.h \ 756 Include/pythread.h \ 757 Include/rangeobject.h \ 758 Include/setobject.h \ 759 Include/sliceobject.h \ 760 Include/stringobject.h \ 761 Include/structmember.h \ 762 Include/structseq.h \ 763 Include/symtable.h \ 764 Include/sysmodule.h \ 765 Include/traceback.h \ 766 Include/tupleobject.h \ 767 Include/ucnhash.h \ 768 Include/unicodeobject.h \ 769 Include/warnings.h \ 770 Include/weakrefobject.h \ 771 pyconfig.h \ 772 $(PARSER_HEADERS) 773 774 $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS) 775 776 777 ###################################################################### 778 779 # Test the interpreter (twice, once without .pyc files, once with) 780 # In the past, we've had problems where bugs in the marshalling or 781 # elsewhere caused bytecode read from .pyc files to behave differently 782 # than bytecode generated directly from a .py source file. Sometimes 783 # the bytecode read from a .pyc file had the bug, sometimes the directly 784 # generated bytecode. This is sometimes a very shy bug needing a lot of 785 # sample data. 786 787 TESTOPTS= -l $(EXTRATESTOPTS) 788 TESTPROG= $(srcdir)/Lib/test/regrtest.py 789 TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -Wd -3 -E -tt $(TESTPYTHONOPTS) 790 test: all platform 791 -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f 792 -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) 793 $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) 794 795 testall: all platform 796 -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f 797 $(TESTPYTHON) $(srcdir)/Lib/compileall.py 798 -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f 799 -$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS) 800 $(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS) 801 802 # Run the unitests for both architectures in a Universal build on OSX 803 # Must be run on an Intel box. 804 testuniversal: all platform 805 if [ `arch` != 'i386' ];then \ 806 echo "This can only be used on OSX/i386" ;\ 807 exit 1 ;\ 808 fi 809 -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f 810 -$(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS) 811 $(TESTPYTHON) $(TESTPROG) -uall $(TESTOPTS) 812 $(RUNSHARED) /usr/libexec/oah/translate ./$(BUILDPYTHON) -E -tt $(TESTPROG) -uall $(TESTOPTS) 813 814 815 # Like testall, but with a single pass only 816 # run an optional script to include some information about the build environment 817 buildbottest: all platform 818 -@if which pybuildbot.identify >/dev/null 2>&1; then \ 819 pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \ 820 fi 821 $(TESTPYTHON) -R $(TESTPROG) -uall -rwW $(TESTOPTS) 822 823 QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \ 824 test_multibytecodec test_urllib2_localnet test_itertools \ 825 test_multiprocessing test_mailbox test_socket test_poll \ 826 test_select test_zipfile 827 quicktest: all platform 828 -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f 829 -$(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS) 830 $(TESTPYTHON) $(TESTPROG) $(QUICKTESTOPTS) 831 832 MEMTESTOPTS= $(QUICKTESTOPTS) -x test_dl test___all__ test_fork1 \ 833 test_longexp 834 memtest: all platform 835 -rm -f $(srcdir)/Lib/test/*.py[co] 836 -$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS) 837 $(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS) 838 839 # Install everything 840 install: altinstall bininstall maninstall 841 842 # Install almost everything without disturbing previous versions 843 altinstall: altbininstall libinstall inclinstall \ 844 libainstall altmaninstall \ 845 sharedinstall oldsharedinstall 846 847 # Install shared libraries enabled by Setup 848 DESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED) 849 850 oldsharedinstall: $(DESTSHARED) $(SHAREDMODS) 851 @for i in X $(SHAREDMODS); do \ 852 if test $$i != X; then \ 853 echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \ 854 $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ 855 fi; \ 856 done 857 858 $(DESTSHARED): 859 @for i in $(DESTDIRS); \ 860 do \ 861 if test ! -d $(DESTDIR)$$i; then \ 862 echo "Creating directory $$i"; \ 863 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 864 else true; \ 865 fi; \ 866 done 867 868 869 # Install the interpreter by creating a symlink chain: 870 # $(PYTHON) -> python2 -> python$(VERSION)) 871 # Also create equivalent chains for other installed files 872 bininstall: altbininstall 873 -if test -f $(DESTDIR)$(BINDIR)/$(PYTHON) -o -h $(DESTDIR)$(BINDIR)/$(PYTHON); \ 874 then rm -f $(DESTDIR)$(BINDIR)/$(PYTHON); \ 875 else true; \ 876 fi 877 -rm -f $(DESTDIR)$(BINDIR)/python2$(EXE) 878 (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python2$(EXE)) 879 (cd $(DESTDIR)$(BINDIR); $(LN) -s python2$(EXE) $(PYTHON)) 880 -rm -f $(DESTDIR)$(BINDIR)/python2-config 881 (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python2-config) 882 -rm -f $(DESTDIR)$(BINDIR)/python-config 883 (cd $(DESTDIR)$(BINDIR); $(LN) -s python2-config python-config) 884 -test -d $(DESTDIR)$(LIBPC) || $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC) 885 -rm -f $(DESTDIR)$(LIBPC)/python2.pc 886 (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python2.pc) 887 -rm -f $(DESTDIR)$(LIBPC)/python.pc 888 (cd $(DESTDIR)$(LIBPC); $(LN) -s python2.pc python.pc) 889 890 # Install the interpreter with $(VERSION) affixed 891 # This goes into $(exec_prefix) 892 altbininstall: $(BUILDPYTHON) 893 @for i in $(BINDIR) $(LIBDIR); \ 894 do \ 895 if test ! -d $(DESTDIR)$$i; then \ 896 echo "Creating directory $$i"; \ 897 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 898 else true; \ 899 fi; \ 900 done 901 $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) 902 if test -f $(LDLIBRARY); then \ 903 if test -n "$(DLLLIBRARY)" ; then \ 904 $(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \ 905 mkdir -p $(DESTDIR)$(LIBPL); $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBPL); \ 906 else \ 907 $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \ 908 if test $(LDLIBRARY) != $(INSTSONAME); then \ 909 (cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \ 910 fi \ 911 fi; \ 912 else true; \ 913 fi 914 915 # Install the versioned manual page 916 altmaninstall: 917 @for i in $(MANDIR) $(MANDIR)/man1; \ 918 do \ 919 if test ! -d $(DESTDIR)$$i; then \ 920 echo "Creating directory $$i"; \ 921 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 922 else true; \ 923 fi; \ 924 done 925 $(INSTALL_DATA) $(srcdir)/Misc/python.man \ 926 $(DESTDIR)$(MANDIR)/man1/python$(VERSION).1 927 928 # Install the unversioned manual pages 929 maninstall: altmaninstall 930 -rm -f $(DESTDIR)$(MANDIR)/man1/python2.1 931 (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python2.1) 932 -rm -f $(DESTDIR)$(MANDIR)/man1/python.1 933 (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python2.1 python.1) 934 935 # Install the library 936 PLATDIR= plat-$(MACHDEP) 937 EXTRAPLATDIR= 938 EXTRAMACHDEPPATH= 939 MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR) 940 XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax 941 PLATMACDIRS= plat-mac plat-mac/Carbon plat-mac/lib-scriptpackages \ 942 plat-mac/lib-scriptpackages/_builtinSuites \ 943 plat-mac/lib-scriptpackages/CodeWarrior \ 944 plat-mac/lib-scriptpackages/Explorer \ 945 plat-mac/lib-scriptpackages/Finder \ 946 plat-mac/lib-scriptpackages/Netscape \ 947 plat-mac/lib-scriptpackages/StdSuites \ 948 plat-mac/lib-scriptpackages/SystemEvents \ 949 plat-mac/lib-scriptpackages/Terminal 950 PLATMACPATH=:plat-mac:plat-mac/lib-scriptpackages 951 LIBSUBDIRS= lib-tk lib-tk/test lib-tk/test/test_tkinter \ 952 lib-tk/test/test_ttk site-packages test test/data \ 953 test/cjkencodings test/decimaltestdata test/xmltestdata test/subprocessdata \ 954 test/tracedmodules \ 955 encodings compiler hotshot \ 956 email email/mime email/test email/test/data \ 957 json json/tests \ 958 sqlite3 sqlite3/test \ 959 logging bsddb bsddb/test csv importlib wsgiref \ 960 lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \ 961 lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \ 962 ctypes ctypes/test ctypes/macholib idlelib idlelib/Icons \ 963 distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ 964 multiprocessing multiprocessing/dummy \ 965 unittest unittest/test \ 966 lib-old \ 967 curses pydoc_data $(MACHDEPS) 968 libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c 969 @for i in $(SCRIPTDIR) $(LIBDEST); \ 970 do \ 971 if test ! -d $(DESTDIR)$$i; then \ 972 echo "Creating directory $$i"; \ 973 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 974 else true; \ 975 fi; \ 976 done 977 @for d in $(LIBSUBDIRS); \ 978 do \ 979 a=$(srcdir)/Lib/$$d; \ 980 if test ! -d $$a; then continue; else true; fi; \ 981 b=$(LIBDEST)/$$d; \ 982 if test ! -d $(DESTDIR)$$b; then \ 983 echo "Creating directory $$b"; \ 984 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \ 985 else true; \ 986 fi; \ 987 done 988 @for i in $(srcdir)/Lib/*.py `cat pybuilddir.txt`/_sysconfigdata.py $(srcdir)/Lib/*.doc $(srcdir)/Lib/*.egg-info ; \ 989 do \ 990 if test -x $$i; then \ 991 $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \ 992 echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \ 993 else \ 994 $(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \ 995 echo $(INSTALL_DATA) $$i $(LIBDEST); \ 996 fi; \ 997 done 998 @for d in $(LIBSUBDIRS); \ 999 do \ 1000 a=$(srcdir)/Lib/$$d; \ 1001 if test ! -d $$a; then continue; else true; fi; \ 1002 if test `ls $$a | wc -l` -lt 1; then continue; fi; \ 1003 b=$(LIBDEST)/$$d; \ 1004 for i in $$a/*; \ 1005 do \ 1006 case $$i in \ 1007 *CVS) ;; \ 1008 *.py[co]) ;; \ 1009 *.orig) ;; \ 1010 *~) ;; \ 1011 *) \ 1012 if test -d $$i; then continue; fi; \ 1013 if test -x $$i; then \ 1014 echo $(INSTALL_SCRIPT) $$i $$b; \ 1015 $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \ 1016 else \ 1017 echo $(INSTALL_DATA) $$i $$b; \ 1018 $(INSTALL_DATA) $$i $(DESTDIR)$$b; \ 1019 fi;; \ 1020 esac; \ 1021 done; \ 1022 done 1023 $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt 1024 if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \ 1025 $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ 1026 $(DESTDIR)$(LIBDEST)/distutils/tests ; \ 1027 fi 1028 PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1029 $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ 1030 -d $(LIBDEST) -f \ 1031 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ 1032 $(DESTDIR)$(LIBDEST) 1033 PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1034 $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ 1035 -d $(LIBDEST) -f \ 1036 -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ 1037 $(DESTDIR)$(LIBDEST) 1038 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1039 $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ 1040 -d $(LIBDEST)/site-packages -f \ 1041 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages 1042 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1043 $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ 1044 -d $(LIBDEST)/site-packages -f \ 1045 -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages 1046 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1047 $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt 1048 -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ 1049 $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt 1050 1051 # Create the PLATDIR source directory, if one wasn't distributed.. 1052 $(srcdir)/Lib/$(PLATDIR): 1053 mkdir $(srcdir)/Lib/$(PLATDIR) 1054 cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen 1055 export PATH; PATH="`pwd`:$$PATH"; \ 1056 export PYTHONPATH; PYTHONPATH="$(srcdir)/Lib:$(abs_builddir)/`cat pybuilddir.txt`"; \ 1057 export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ 1058 export EXE; EXE="$(BUILDEXE)"; \ 1059 if [ -n "$(MULTIARCH)" ]; then export MULTIARCH; MULTIARCH=$(MULTIARCH); fi; \ 1060 export PYTHON_FOR_BUILD; \ 1061 if [ "$(build)" = "$(host)" ]; then \ 1062 PYTHON_FOR_BUILD="$(BUILDPYTHON)"; \ 1063 else \ 1064 PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \ 1065 fi; \ 1066 cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen "$(CC)" 1067 1068 python-config: $(srcdir)/Misc/python-config.in 1069 # Substitution happens here, as the completely-expanded BINDIR 1070 # is not available in configure 1071 sed -e "s,@EXENAME@,$(BINDIR)/python$(VERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config 1072 # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} 1073 sed -e "s,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g" < Misc/python-config.sh >python-config.sh 1074 1075 # Install the include files 1076 INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY) 1077 inclinstall: 1078 @for i in $(INCLDIRSTOMAKE); \ 1079 do \ 1080 if test ! -d $(DESTDIR)$$i; then \ 1081 echo "Creating directory $$i"; \ 1082 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 1083 else true; \ 1084 fi; \ 1085 done 1086 @for i in $(srcdir)/Include/*.h; \ 1087 do \ 1088 echo $(INSTALL_DATA) $$i $(INCLUDEPY); \ 1089 $(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \ 1090 done 1091 $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h 1092 1093 # Install the library and miscellaneous stuff needed for extending/embedding 1094 # This goes into $(exec_prefix) 1095 LIBPL= $(LIBP)/config 1096 1097 # pkgconfig directory 1098 LIBPC= $(LIBDIR)/pkgconfig 1099 1100 libainstall: all python-config 1101 @for i in $(LIBDIR) $(LIBP) $(LIBPL) $(LIBPC); \ 1102 do \ 1103 if test ! -d $(DESTDIR)$$i; then \ 1104 echo "Creating directory $$i"; \ 1105 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 1106 else true; \ 1107 fi; \ 1108 done 1109 @if test -d $(LIBRARY); then :; else \ 1110 if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ 1111 if test "$(SO)" = .dll; then \ 1112 $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ 1113 else \ 1114 $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ 1115 $(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ 1116 fi; \ 1117 else \ 1118 echo Skip install of $(LIBRARY) - use make frameworkinstall; \ 1119 fi; \ 1120 fi 1121 $(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c 1122 $(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o 1123 $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in 1124 $(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile 1125 $(INSTALL_DATA) Modules/Setup $(DESTDIR)$(LIBPL)/Setup 1126 $(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local 1127 $(INSTALL_DATA) Modules/Setup.config $(DESTDIR)$(LIBPL)/Setup.config 1128 $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc 1129 $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup 1130 $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh 1131 $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(VERSION)-config 1132 $(INSTALL_SCRIPT) python-config.sh $(DESTDIR)$(BINDIR)/python-config.sh 1133 rm python-config 1134 @if [ -s Modules/python.exp -a \ 1135 "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ 1136 echo; echo "Installing support files for building shared extension modules on AIX:"; \ 1137 $(INSTALL_DATA) Modules/python.exp \ 1138 $(DESTDIR)$(LIBPL)/python.exp; \ 1139 echo; echo "$(LIBPL)/python.exp"; \ 1140 $(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix \ 1141 $(DESTDIR)$(LIBPL)/makexp_aix; \ 1142 echo "$(LIBPL)/makexp_aix"; \ 1143 $(INSTALL_SCRIPT) $(srcdir)/Modules/ld_so_aix \ 1144 $(DESTDIR)$(LIBPL)/ld_so_aix; \ 1145 echo "$(LIBPL)/ld_so_aix"; \ 1146 echo; echo "See Misc/AIX-NOTES for details."; \ 1147 else true; \ 1148 fi 1149 @case "$(MACHDEP)" in beos*) \ 1150 echo; echo "Installing support files for building shared extension modules on BeOS:"; \ 1151 $(INSTALL_DATA) Misc/BeOS-NOTES $(DESTDIR)$(LIBPL)/README; \ 1152 echo; echo "$(LIBPL)/README"; \ 1153 $(INSTALL_SCRIPT) Modules/ar_beos $(DESTDIR)$(LIBPL)/ar_beos; \ 1154 echo "$(LIBPL)/ar_beos"; \ 1155 $(INSTALL_SCRIPT) Modules/ld_so_beos $(DESTDIR)$(LIBPL)/ld_so_beos; \ 1156 echo "$(LIBPL)/ld_so_beos"; \ 1157 echo; echo "See Misc/BeOS-NOTES for details."; \ 1158 ;; \ 1159 esac 1160 1161 # Install the dynamically loadable modules 1162 # This goes into $(exec_prefix) 1163 sharedinstall: sharedmods 1164 $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ 1165 --prefix=$(prefix) \ 1166 --install-scripts=$(BINDIR) \ 1167 --install-platlib=$(DESTSHARED) \ 1168 --root=$(DESTDIR)/ 1169 -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py* 1170 1171 # Here are a couple of targets for MacOSX again, to install a full 1172 # framework-based Python. frameworkinstall installs everything, the 1173 # subtargets install specific parts. Much of the actual work is offloaded to 1174 # the Makefile in Mac 1175 # 1176 # 1177 # This target is here for backward compatiblity, previous versions of Python 1178 # hadn't integrated framework installation in the normal install process. 1179 frameworkinstall: install 1180 1181 # On install, we re-make the framework 1182 # structure in the install location, /Library/Frameworks/ or the argument to 1183 # --enable-framework. If --enable-framework has been specified then we have 1184 # automatically set prefix to the location deep down in the framework, so we 1185 # only have to cater for the structural bits of the framework. 1186 1187 frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclib 1188 1189 frameworkinstallstructure: $(LDLIBRARY) 1190 @if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ 1191 echo Not configured with --enable-framework; \ 1192 exit 1; \ 1193 else true; \ 1194 fi 1195 @for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\ 1196 if test ! -d $(DESTDIR)$$i; then \ 1197 echo "Creating directory $(DESTDIR)$$i"; \ 1198 $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ 1199 else true; \ 1200 fi; \ 1201 done 1202 $(LN) -fsn include/python$(VERSION) $(DESTDIR)$(prefix)/Headers 1203 sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print platform.python_version()'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist 1204 $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current 1205 $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK) 1206 $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers 1207 $(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources 1208 $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY) 1209 1210 # This installs Mac/Lib into the framework 1211 # Install a number of symlinks to keep software that expects a normal unix 1212 # install (which includes python-config) happy. 1213 frameworkinstallmaclib: 1214 ln -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).a" 1215 ln -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/python$(VERSION)/config/libpython$(VERSION).dylib" 1216 ln -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib" 1217 cd Mac && $(MAKE) installmacsubtree DESTDIR="$(DESTDIR)" 1218 1219 # This installs the IDE, the Launcher and other apps into /Applications 1220 frameworkinstallapps: 1221 cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)" 1222 1223 # This install the unix python and pythonw tools in /usr/local/bin 1224 frameworkinstallunixtools: 1225 cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)" 1226 1227 frameworkaltinstallunixtools: 1228 cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)" 1229 1230 # This installs the Demos and Tools into the applications directory. 1231 # It is not part of a normal frameworkinstall 1232 frameworkinstallextras: 1233 cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)" 1234 1235 # This installs a few of the useful scripts in Tools/scripts 1236 scriptsinstall: 1237 SRCDIR=$(srcdir) $(RUNSHARED) \ 1238 $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \ 1239 --prefix=$(prefix) \ 1240 --install-scripts=$(BINDIR) \ 1241 --root=$(DESTDIR)/ 1242 1243 # Build the toplevel Makefile 1244 Makefile.pre: Makefile.pre.in config.status 1245 CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status 1246 $(MAKE) -f Makefile.pre Makefile 1247 1248 # Run the configure script. 1249 config.status: $(srcdir)/configure 1250 $(SHELL) $(srcdir)/configure $(CONFIG_ARGS) 1251 1252 .PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre 1253 1254 # Some make's put the object file in the current directory 1255 .c.o: 1256 $(CC) -c $(PY_CFLAGS) -o $@ $< 1257 1258 # Run reindent on the library 1259 reindent: 1260 ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib 1261 1262 # Rerun configure with the same options as it was run last time, 1263 # provided the config.status script exists 1264 recheck: 1265 $(SHELL) config.status --recheck 1266 $(SHELL) config.status 1267 1268 # Rebuild the configure script from configure.ac; also rebuild pyconfig.h.in 1269 autoconf: 1270 (cd $(srcdir); autoconf) 1271 (cd $(srcdir); autoheader) 1272 1273 # Create a tags file for vi 1274 tags:: 1275 cd $(srcdir); \ 1276 ctags -w -t Include/*.h; \ 1277 for i in $(SRCDIRS); do ctags -w -t -a $$i/*.[ch]; \ 1278 done; \ 1279 sort -o tags tags 1280 1281 # Create a tags file for GNU Emacs 1282 TAGS:: 1283 cd $(srcdir); \ 1284 etags Include/*.h; \ 1285 for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done 1286 1287 # Touch generated files 1288 touch: 1289 touch Include/Python-ast.h Python/Python-ast.c 1290 1291 # Sanitation targets -- clean leaves libraries, executables and tags 1292 # files, which clobber removes as well 1293 pycremoval: 1294 find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' 1295 1296 clean: pycremoval 1297 find . -name '*.[oa]' -exec rm -f {} ';' 1298 find . -name '*.s[ol]' -exec rm -f {} ';' 1299 find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' 1300 find build -name 'fficonfig.h' -exec rm -f {} ';' || true 1301 find build -name 'fficonfig.py' -exec rm -f {} ';' || true 1302 -rm -f Lib/lib2to3/*Grammar*.pickle 1303 1304 profile-removal: 1305 find . -name '*.gc??' -exec rm -f {} ';' 1306 1307 clobber: clean profile-removal 1308 -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ 1309 tags TAGS \ 1310 config.cache config.log pyconfig.h Modules/config.c 1311 -rm -rf build platform 1312 -rm -rf $(PYTHONFRAMEWORKDIR) 1313 1314 # Make things extra clean, before making a distribution: 1315 # remove all generated files, even Makefile[.pre] 1316 # Keep configure and Python-ast.[ch], it's possible they can't be generated 1317 distclean: clobber 1318 for file in Lib/test/data/* ; do \ 1319 if test "$$file" != "Lib/test/data/README"; then rm "$$file"; fi; \ 1320 done 1321 -rm -f core Makefile Makefile.pre config.status \ 1322 Modules/Setup Modules/Setup.local Modules/Setup.config \ 1323 Modules/ld_so_aix Modules/python.exp Misc/python.pc 1324 -rm -f python*-gdb.py 1325 -rm -f pybuilddir.txt 1326 find $(srcdir) '(' -name '*.fdc' -o -name '*~' \ 1327 -o -name '[@,#]*' -o -name '*.old' \ 1328 -o -name '*.orig' -o -name '*.rej' \ 1329 -o -name '*.bak' ')' \ 1330 -exec rm -f {} ';' 1331 1332 # Check for smelly exported symbols (not starting with Py/_Py) 1333 smelly: all 1334 nm -p $(LIBRARY) | \ 1335 sed -n "/ [TDB] /s/.* //p" | grep -v "^_*Py" | sort -u; \ 1336 1337 # Find files with funny names 1338 funny: 1339 find $(SUBDIRS) $(SUBDIRSTOO) -type d \ 1340 -o -name '*.[chs]' \ 1341 -o -name '*.py' \ 1342 -o -name '*.doc' \ 1343 -o -name '*.sty' \ 1344 -o -name '*.bib' \ 1345 -o -name '*.dat' \ 1346 -o -name '*.el' \ 1347 -o -name '*.fd' \ 1348 -o -name '*.in' \ 1349 -o -name '*.tex' \ 1350 -o -name '*,[vpt]' \ 1351 -o -name 'Setup' \ 1352 -o -name 'Setup.*' \ 1353 -o -name README \ 1354 -o -name Makefile \ 1355 -o -name ChangeLog \ 1356 -o -name Repository \ 1357 -o -name Root \ 1358 -o -name Entries \ 1359 -o -name Tag \ 1360 -o -name tags \ 1361 -o -name TAGS \ 1362 -o -name .cvsignore \ 1363 -o -name MANIFEST \ 1364 -o -print 1365 1366 # Perform some verification checks on any modified files. 1367 patchcheck: 1368 $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py 1369 1370 # Dependencies 1371 1372 Python/thread.o: $(srcdir)/Python/thread_atheos.h $(srcdir)/Python/thread_beos.h $(srcdir)/Python/thread_cthread.h $(srcdir)/Python/thread_foobar.h $(srcdir)/Python/thread_lwp.h $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_os2.h $(srcdir)/Python/thread_pth.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/thread_sgi.h $(srcdir)/Python/thread_solaris.h $(srcdir)/Python/thread_wince.h 1373 1374 # Declare targets that aren't real files 1375 .PHONY: all build_all sharedmods oldsharedmods test quicktest memtest 1376 .PHONY: install altinstall oldsharedinstall bininstall altbininstall 1377 .PHONY: maninstall libinstall inclinstall libainstall sharedinstall 1378 .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure 1379 .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools 1380 .PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean 1381 .PHONY: smelly funny patchcheck touch altmaninstall 1382 .PHONY: gdbhooks 1383 1384 # IF YOU PUT ANYTHING HERE IT WILL GO AWAY 1385 1386 # Rules appended by makedepend 1387 1388 Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/posixmodule.c -o Modules/posixmodule.o 1389 Modules/posixmodule$(SO): Modules/posixmodule.o; $(BLDSHARED) Modules/posixmodule.o -o Modules/posixmodule$(SO) 1390 Modules/threadmodule.o: $(srcdir)/Modules/threadmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/threadmodule.c -o Modules/threadmodule.o 1391 Modules/threadmodule$(SO): Modules/threadmodule.o; $(BLDSHARED) Modules/threadmodule.o -o Modules/threadmodule$(SO) 1392 Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/signalmodule.c -o Modules/signalmodule.o 1393 Modules/signalmodule$(SO): Modules/signalmodule.o; $(BLDSHARED) Modules/signalmodule.o -o Modules/signalmodule$(SO) 1394 Modules/errnomodule.o: $(srcdir)/Modules/errnomodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/errnomodule.c -o Modules/errnomodule.o 1395 Modules/errnomodule$(SO): Modules/errnomodule.o; $(BLDSHARED) Modules/errnomodule.o -o Modules/errnomodule$(SO) 1396 Modules/_sre.o: $(srcdir)/Modules/_sre.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/_sre.c -o Modules/_sre.o 1397 Modules/_sre$(SO): Modules/_sre.o; $(BLDSHARED) Modules/_sre.o -o Modules/_sre$(SO) 1398 Modules/_codecsmodule.o: $(srcdir)/Modules/_codecsmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/_codecsmodule.c -o Modules/_codecsmodule.o 1399 Modules/_codecsmodule$(SO): Modules/_codecsmodule.o; $(BLDSHARED) Modules/_codecsmodule.o -o Modules/_codecsmodule$(SO) 1400 Modules/_weakref.o: $(srcdir)/Modules/_weakref.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/_weakref.c -o Modules/_weakref.o 1401 Modules/_weakref$(SO): Modules/_weakref.o; $(BLDSHARED) Modules/_weakref.o -o Modules/_weakref$(SO) 1402 Modules/zipimport.o: $(srcdir)/Modules/zipimport.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/zipimport.c -o Modules/zipimport.o 1403 Modules/zipimport$(SO): Modules/zipimport.o; $(BLDSHARED) Modules/zipimport.o -o Modules/zipimport$(SO) 1404 Modules/symtablemodule.o: $(srcdir)/Modules/symtablemodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/symtablemodule.c -o Modules/symtablemodule.o 1405 Modules/_symtablemodule$(SO): Modules/symtablemodule.o; $(BLDSHARED) Modules/symtablemodule.o -o Modules/_symtablemodule$(SO) 1406 Modules/xxsubtype.o: $(srcdir)/Modules/xxsubtype.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/Modules/xxsubtype.c -o Modules/xxsubtype.o 1407 Modules/xxsubtype$(SO): Modules/xxsubtype.o; $(BLDSHARED) Modules/xxsubtype.o -o Modules/xxsubtype$(SO) 1408