summaryrefslogtreecommitdiffstats
path: root/Mac/README
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/README')
-rw-r--r--Mac/README162
1 files changed, 162 insertions, 0 deletions
diff --git a/Mac/README b/Mac/README
new file mode 100644
index 0000000..ce992c3
--- /dev/null
+++ b/Mac/README
@@ -0,0 +1,162 @@
+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, 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, 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. - If you don't add
+ signalmodule.c, you must add intrcheck.c from Parser and
+ sigcheck.c from Python.
+
+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>