mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 19:34:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			169 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
BUILDING PYTHON 1.2 FOR THE MACINTOSH
 | 
						|
*************************************
 | 
						|
 | 
						|
Python can be built on the Mac using either THINK C 6.0 (or 7.0), or
 | 
						|
CodeWarrior 5.0 (for 68K and PPC).  In the past it has also been compiled
 | 
						|
with earlier versions of Think, but no guarantees are made that the
 | 
						|
source is still compatible with those versions.  (Think C 5.0 appears
 | 
						|
to be OK.)  Likewise, new compiler versions may effectively change the
 | 
						|
language accepted (or the library provided!)  and thus cause problems.
 | 
						|
 | 
						|
MPW is a special case -- it used to be possible to build Python as
 | 
						|
an MPW tool using MPW 3.2, and this may still work, but I haven't
 | 
						|
tried this lately.  What I have tried, however, is building Python
 | 
						|
as a shared library for CFM-68K, using the Symantec C compiler for MPW.
 | 
						|
See subdirectory MPW and the README file there for more info.
 | 
						|
 | 
						|
 | 
						|
1. Using Think C 6.0 (or 7.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).  In fact, nowadays I always
 | 
						|
	use 4-byte integers, since it is actually rather annoying that
 | 
						|
	strings >= 64K cause crashes.
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
	- 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, getargs.c getopt.c, graminit.c, import.c,
 | 
						|
	importdl.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.  Don't add stdwinmodule.c
 | 
						|
	yet,
 | 
						|
 | 
						|
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.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.
 | 
						|
You must also add stdwinmodule.c and add "#define USE_STDWIN" to the
 | 
						|
Prefix in the compiler options dialog (this only affects macmain.c and
 | 
						|
config.c).
 | 
						|
 | 
						|
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.
 | 
						|
 | 
						|
1.6 Think C 5.0
 | 
						|
---------------
 | 
						|
 | 
						|
Tim Gilbert adds one note that will be helpful to future Think C 5.0
 | 
						|
users: When you have a really big project like python, and you want to
 | 
						|
compile and run it, if you just hit Command-R, often Think C will
 | 
						|
compile the remaining files, think for a moment, and then give you a
 | 
						|
warning "internal error(ZREF)--please remove objects."  Don't listen
 | 
						|
to it.  It is lying.  What you should do instead is "Check Link..."
 | 
						|
and _then_ hit Run.  Why?  Ask Symantec.
 | 
						|
 | 
						|
 | 
						|
2. Using MicroWerks CodeWarrior 5.0
 | 
						|
===================================
 | 
						|
 | 
						|
Essentially, follow the instructions for Think C.
 | 
						|
 | 
						|
XXX Should at least list the project options.
 | 
						|
 | 
						|
 | 
						|
--Guido van Rossum, CWI, Amsterdam <Guido.van.Rossum@cwi.nl>
 | 
						|
<URL:http://www.cwi.nl/cwi/people/Guido.van.Rossum.html>
 |