diff --git a/Mac/Demo/building.html b/Mac/Demo/building.html index 036ff91b989..73e3d4e8c17 100644 --- a/Mac/Demo/building.html +++ b/Mac/Demo/building.html @@ -57,12 +57,13 @@
Mac:mwerks:mwerks_nonshared_config.h
+file to remove the USE_... line. Here are the locations for the various things
you need:
CWGUSI you build the
-projects GUSI.68K.µ and GUSI.PPC.µ, in
+projects GUSI.68K.µ, GUSI.CFM68K.µ
+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.
+case, see below. Of course, if you are only interested in one of
+static 68K, CFM68K or PPC you can skip building the other libraries.
NULL
values. Needless to say, this wreaks havoc on a Macintosh.
+TclMacNotify.c
+because there is an error in the Apple Universal headers (sic!). Read the
+comments at the beginning of Mac:Python:macglue.c and copy the
+code to TclMacNotify.c. If you get linker errors on GetEvQHdr
+you have not done this correctly.
+
Relnotes-somethingorother) and
ReadMeOrSuffer in the Mac folder.
+Extensions folder of your system
@@ -366,11 +384,12 @@
Next, you have to build the extension modules in the
-PlugIns folder. Open each project and build it. After all
+PlugIns folder. Open each project with .ppc in the
+name 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.
+library. Run the MkPluginAliases.py script from
+Mac:scripts to create the aliases.
Finally, you must build the standard applets:
EditPythonPrefs, mkapplet, etc. This is
@@ -391,6 +410,24 @@
ReadMeOrSuffer file from the Mac folder.
+.exp files for PPC and CFM68K.exp
+file, a file that controls which symbols are exported by your PythonCore
+shared library. Rebuild it if you get unexpected undefined symbols when you
+are building a plugin module.
+
+Rebuilding the .exp file is done by first removing the file and removing the
+reference to it in the project (in the "config" section). Next, build PythonCore.
+This will create a new .exp file. Edit this file to remove the references to
+the symbols __initialize, __terminate, setjmp,
+longjmp and __ptmf_null. Next, add the .exp file to the project
+again and rebuild PythonCore.
+ +This rather convoluted procedure is needed to ensure that plugin modules don't +accidentally link with those entrypoints from PythonCore, which will not work because +those routines have to be in the same code fragment as they are used from. +
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.µ.
+xx.ppc.µ or xx.CFM68K.µ.
+
+AppRuntime.Lib runtime library (with properly set CFM
+initialization and termination routines). PythonCore uses ShlibRuntime.Lib
+and MWRuntimeStaticLib.Lib, which is almost identical to the MW
+standard MWRuntimeLib, but not dynamically loaded. This library contains
+the part of the runtime that can (or must) be shared between all modules in the program.
+It is linked statically into PythonCore (and exported to the applications and plugins)
+so we do not have to distribute yet another shared library. Plugin modules use
+ShlibRuntime.Lib and obtain the rest from PythonCore. PythonCore uses a
+non-standard initialization entry point, __initialize_with_resources, to
+be able to obtain resources from the library file lateron. Plugins can do the same or
+use the standard __initialize entry point.