mirror of
https://github.com/python/cpython.git
synced 2024-11-25 09:39:56 +01:00
.. | ||
Compat | ||
Include | ||
Lib | ||
Modules | ||
Python | ||
scripts | ||
fopenRF.c | ||
README | ||
Relnotes-1.1 | ||
Relnotes-1.2 | ||
USING |
BUILDING PYTHON 1.1 FOR THE MACINTOSH ************************************* Python can be built on the Mac using either THINK C 6.0 or MPW 3.2. In the past it has been compiled with earlier versions of these compilers, but no guarantees are made that the source is still compatible with those versions. Likewise, new compiler versions may effectively change the language accepted (or the library!) and thus cause problems. [[MPW version and procedure must still be checked]] 1. Using Think C 6.0 ==================== 1.1 The directory structure --------------------------- I duplicate the UNIX directory structure from the distribution. The subdirectories needed to compile are: Mac, Include, Parser, Python, Objects, Modules. (Don't bother with Grammar and the parser generator, nor with the Doc subdirectory.) For running and testing, you also need Lib and its subdirectories test and stdwin. You could also copy some things from the Demo/stdwin directory (unfortunately most other demos are UNIX specific and even many stdwin demos are). Make sure there is no config.c file in the Modules subdirectory (if you copy from a directory where you have done a UNIX build this might occur). Also don't use the config.h generated on UNIX. 1.2 The project file -------------------- I put all source files in one project, which I place in the parent directory of the source directories. 1.2.1 Project type (This is the Set Project Type... dialog in the Project menu.) Set the creator to PYTH; turn on "far data"; leave "far code" and "separate strs" unchecked (they just serve to bloat the application). A partition size of 1000K should be enough to run the standard test suite (which requires a lot of memory because it stress tests the parser quite a bit) and most demos or medium-size applications. The interpreter will do basic things in as little at 500K but this may prevent parsing larger modules. 1.2.2 Compiler options (This is the Options -> THINK C ... dialog in the Edit menu.) - Start with Factory Settings. - In the Prefix, remove #include <MacHeaders> and add #define HAVE_CONFIG_H - Choose any optimizer and debugger settings you like. - You can choose 4-byte ints if you want. This requires that you rebuild the ANSI and unix libraries with 4-bytes ints as well (better make copies with names like ANSI 32 bit). With 4-byte ints the interpreter is marginally bigger and somewhat (~10%) slower, but Python programs can use strings and lists with more than 32000 items (with 2-byte ints these can cause crashes). The range of Python integers is not affected (these are always represented as longs). 1.2.3 Files to add (This is the Add Files... dialog in the Source menu.) The following source files must be added to the project. I use a separate segment for each begin letter -- this avoids segment overflow, except for 'c', where you have to put either ceval.c or compile.c in a separate segment. You could also group them by subdirectory or function, but you may still have to split segments arbitrarily because of the 32000 bytes restriction. - From Mac: all .c files except fopenRF.c [[which shouldn't even be there]]. - From Parser: acceler.c, grammar1.c, intrcheck.c, myreadline.c, node.c, parser.c, parsetok.c, tokenizer.c. - From Python: bltinmodule.c, ceval.c, cgensupport.c, compile.c, errors.c, getopt.c, graminit.c, import.c, marshal.c, modsupport.c, mystrtoul.c, pythonmain.c, pythonrun.c, sigcheck.c, structmember.c, sysmodule.c, traceback.c (i.e. all .c files except dup2.c, fmod.c, frozenmain.c, getcwd.c, getmtime.c, memmove.c, sigcheck.c, strerror.c, strtod.c, thread.c) - From Objects: all .c files except xxobject.c. - From Modules: all the modules listed in config.c (in the Mac subdirectory) in the initializer for inittab[], before "ADDMODULE MARKER 2". Also add md5c.c if you add md5module.c, and regexpr.c if you add regexmodule.c. (You'll find macmodule.c in the Mac subdirectory, so it should already have been added in a previous step.) Note that for most modules, the source file is called <name>module.c, but for a few long module names it is just <module>.c. The following THINK C libraries must be added: from Standard Libraries, ANSI and unix; from Mac Libraries, MacTraps. I put each library in a separate segment. Also see my earlier remark on 4-byte ints. 1.3 Living without STDWIN ------------------------- Although STDWIN is really neat on the Mac, it's easier to begin building Python without it, so you can concentrate on the Python build. To this end, you have to comment out the lines defining the symbol USE_STDWIN in macmain.c and config.c. 1.4 Adding STDWIN ----------------- STDWIN is built in two separate projects: stdwin.pi contains the core STDWIN implementation from Ports/mac, textedit.pi contains the files from Packs/textedit. Use the same compiler options as for Python and the same general source setup (in a sister directory of the toplevel Python directory). Put all sources in the same segment. To stdwin.pi, also add Tools/strdup.c and Gen/wtextbreak.c. The two projects can now be added as libraries to the Python project, and the two lines commented out to live without STDWIN should be reinstated. Note that stdwinmodule.c contains an #include statement that references "stdwin.h" by relative path name -- if the stdwin toplevel directory is not a sibling of the python toplevel directory, you may have to adjust the number of colons in the pathname. 1.5 Resources ------------- Since I created them with ResEdit I have no text source of the resources needed to give the application an icon etc... You can copy the size, bundle, file reference and icon resources from the distributed Python application with ResEdit. THINK C automatically copies resources into the application file from a file <projectname>.rsrc. 2. Using MPW ============ See the subdirectory MPW. I haven't tried this recently. You're supposed to merge the directory tree found here with the UNIX source tree. I think this is intended for use with MPW 3.2. The dynload stuff in not recommended. --Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl> <URL:http://www.cwi.nl/cwi/people/Guido.van.Rossum.html>