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.