diff --git a/Mac/Demo/building.html b/Mac/Demo/building.html new file mode 100644 index 00000000000..36932431686 --- /dev/null +++ b/Mac/Demo/building.html @@ -0,0 +1,351 @@ + +
++ +The information density in this file is high, so you should probably print it and +read it at your leasure. Most things are explained only once (and probably in the +wrong place:-).
+ +I am very interested in feedback on this document, contact me at +<jack@cwi.nl> or send your comments to the +Mac Python Special Interest Group. + +
Mac/mwerks/projects for the project files and related
+stuff.
+
++Top-level-folder: + CWGUSI 1.6.4 + imglibs + libjpeg + pbmplus + libtiff + MoreFiles 1.4.1 (not needed by Python, only by tcl/tk) + Python + Tcl 7.5 + Tk 4.1 ++ +Now build all the libraries. In
CWGUSI you build the projects
+GUSI.68K.µ and GUSI.PPC.µ, in MoreFiles,
+libjpeg, pbmplus andlibtiff you build all
+projects. Tcl/tk is a special case, see below. Of course, if you are only
+interested in 68K you can skip building the PPC libraries and vice versa.
+
+tcl7.5 and tk4.1 distribution:
+compat folders to (compat) in both the Tcl and Tk folders.
+
+strncasecmp.c from (compat) to the
+main Tcl folder.
+
+MoreFiles 1.4.2, change this to MoreFiles 1.4.1.
+Alternatively you could get the real MoreFiles 1.4.2, but there seem to be problems with
+this too (undefined references).
+
+MacHeaders.h but should be set to MW_TkHeader.h
+and MW_TclHeader.h respectively.
+
+tcl.h. As distributed,
+tcl and tk assume that malloc calls always succeed and use the resulting pointer without
+checking for NULL values. Needless to say, this wreaks havoc on a Macintosh.
+Fortunately a checking malloc is included and easy to enable: look for the
+#define's for ckalloc, ckfree and ckrealloc and replace them by the
+following code:
+
+# define ckalloc(x) Tcl_Ckalloc(x)
+# define ckfree(x) Tcl_Ckfree(x)
+# define ckrealloc(x,y) Tcl_Ckrealloc(x,y)
+
+With this fix, out-of-memory situations will still cause a hard abort of the python
+interpreter, but at least they will not crash your system.
+
+SimpleTcl and SimpleTk
+to make sure that the distributions are working you should make the previous
+changes in those projects too. Moreover, you have to replace the MoreFiles
+library reference by the correct one MoreFiles 1.4.1:Libraries:MoreFiles.PPC
+(or 68K).
+ls -l in the window you get) then the Tk library, then SimpleTk
+(which can again be tested with ls -l). If this all worked you are all set to try
+building Python.
+
+README-Mac has some details.
+
+img
+extension in this distribution. Extensions are not built here, as they are on Unix,
+but incorporated in the core interpreter or built as plugin modules.
+
+modulator which builds skeleton
+C extension modules and bgen which generates complete interface modules from
+information in C header files. There are some readme files, but more documentation is
+sorely needed.
+Mac folder:
+toolbox folder contains modules
+specifically needed with various MacOS toolbox interface modules.
+
+macmodule). A lot of these modules are generated
+with bgen, in which case the bgen input files are included so you can attempt to
+regenerate them or extend them.
+
+malloc and a directory with various projects
+for building variations on the Python interpreter. The mwerks_*.h files here
+are the option-setting files for the various interpreters and such, comparable to the unix
+command-line -D options to the compiler. Each project uses the correct option file
+as its "prefix file" in the "C/C++ language" settings. Disabling optional modules (for the 68K
+interpreter), building non-GUSI interpreters and various other things are accomplished by
+modifying these files (and possibly changing the list of files included in the project window, of course).
+
+build.mac68k.stand and build it.
+Do not run it yet, this will possibly result in a garbled preferences file.
+
+First remove the Python preferences file
+from your preference folder, only if you had an older version of Python installed.
+(this is also what you do if you did not heed the last sentence of the
+preceeding paragraph). Next, move the interpreter to the main Python folder (up one level) and run it
+there. This will create a correct initial preferences file. You are now all set, and your tree
+should be completely compatible with a binary-only distribution. Read the release notes
+(Relnotes-somethingorother) and ReadMeOrSuffer in the Mac folder.
+
+
build.macppc.stand.
+The order to build things is the following:
+
+Extensions folder of your system folder.
+Do exactly that: put an alias there, copying or moving the file will cause you grief later.
+
++ +
PythonPPC, but it calls to a different
+entrypoint in the core library. The mkapplet script will copy this complete file, and add
+a 'PYC ' with the module to generate an applet. +
PythonCore you should move PythonPPC to the main
+Python folder. Next you remove any old Python Preferences file from the Preferences
+folder (if you had python installed on your system before) and run the interpreter once to create the
+correct preferences file. You should also make an alias to PythonApplet in the main Python
+folder. (again: making an alias is preferrable to copying or moving the file, since this will cause the
+correct file to be used if you ever rebuild PythonApplet).
+
+Next, you have to build the extension modules in the PlugIns folder. Open each project and
+build it. After all the dynamically loaded modules are built you have to create a number of aliases: some
+modules live together in a single dynamic library. Copy or move the MkPluginAliases.py script
+from Mac:scripts to the main python folder and run it.
+
+Finally, you must build the standard applets: EditPythonPrefs, mkapplet, etc. This
+is easiest done with the fullbuild script from Mac:scripts. Answer no to
+all questions except when it asks whether to build the applets.
+ +
+Actually, the fullbuild script can be used to build everything, but you need a fully-functional
+interpreter before you can use it (and one that isn't rebuilt in the process: you cannot rebuild a running
+program). You could copy the 68K interpreter to a different place and use that to run fullbuild, or use the
+standalone PPC python for this. I tend to keep a standalone interpreter in a safe place for this use only.
+
+
+You are all set now, and should read the release notes and ReadMeOrSuffer file from
+the Mac folder.
+
+PythonCore shared library to embed Python in
+another program, if your program can live with using GUSI for I/O. Use PythonCore in stead of
+your C library (or, at the very least, link it before the normal C library). Let me know whether this
+works.
+
+Include, Mac:Include and Mac:mwerks from the source
+distribution and you should be all set. A template for a dynamic module can be found in xxmodule.µ.
+
+
+