STLPort & MPW Notes
STLPort is Standard
Template Library (right now part of C++ ANSI/ISO standards) implementation
intended for C++ compilers which do not have complete support for templates
and namespaces Unfortunately, Apple MrCpp is one of them. In general, STLPort
represents cross-platform, open source and freeware adoption of SGI
STL, developed by Moscow Center of SPARC Technologies, which supports
enormous number of OS platforms and compilers. It takes some time to get
it work, however.
Here is how to get them work together:
- Download Apple MPW (Macintosh Programmers Workshop),
latest Universal Interfaces, and MrCpp Compiler from Apple
Development Site.
- Install all MPW components (have to learn how to do
it yourself).
- Download STLPort 3.21 and/or 4.x from STLPort.org
site. STLPort 4 needs few modifications
to coexist nicely with MrCpp.
- Put STLPort into MPW folder.
- Follow instruction supplied with STLPort to build
STL test.
Finally, your MPW & STLPort should look like this (you do not need
Ad Lib, Apple Frameworks, CarbonLib SDK, OpenGL SDK to use STLPort):
How to Build STLPort Precompiled Header:
- At first, download STLPort
Additions.
- Put UserStartup¸1STL
into MPW:Startup. I took this startup script from Apple MacApp distribution.
It defines {STL} shell variable which
contains path to STLPort location.
- Using precompiled header could cut compilation time
several times. Please follow this instruction:
- STLPort
Additions contains the following files (along with UserStartup¸1STL):
new make file MrCpp.mak,
header stl_precompile.h and
MPW script MrCppCompile.
- Replace file MrCpp.mak
in STLPort distribution with one from my STLPort Additions.
- Put file stl_precompile.h
into STLPort folder.
- Find statement ObjDir_PPC
= "HD:Applications:MPW:STLPort:Objects:" in MrCpp.mak
and replace with your own path.
- Update MrCppCompile
with your own path.
- Run MrCppCompile
in MPW Shell.
- Use snippets from MrCpp.mak
to build your own STL-based project.
Some STLPort Tips, Tricks & Issues:
- MrCpp v3.x, 4.x and 5.0d1c1 (no newer 5.x versions at this time) do
not support precompiled headers with templates. Undefine macro STL_PRECOMPILE_STLSTD_H
in MrCpp.mak. Otherwise you will face
weird internal compiler errors.
- MrCpp 5.0d1c1have certain problems with C++ name mangling. No solution
until newer version.
- PPCLink really needs a lot of RAM to link many object files. Turn off
Faster Linking option to reduce memory
requirements.
PS. Apple abandoned MPW in favor of proven GNU UNIX-based tools (in
fact, MPW emulates UNIX command-line shell under classic MacOS). gcc
(GNU C/C++ compiler) is no questions more stable and capable rather
than Apple's own MrCpp. At the time I am writing this Apple is in
process of incorporating advanced optimization features from MrCpp
to PowerPC MacOS X version of gcc.
|