+wxWidgets 2.5 for Mac installation
+----------------------------------
+
+On MacOS X, you can download Apple's free developer tools (gcc
+and associated headers and libraries, such as the Carbon API).
+You can then use configure in a similar way to compiling
+wxWidgets on Linux (or on Windows using MinGW or Cygwin). See
+'Apple Developer Tools' below for more details on using
+configure.
+
+To target on MacOS 8 or 9, you need to buy Metrowerks
+CodeWarrior. You can then compile Mac Classic or MacOS X
+applications on Mac OS X, or compile Mac Classic or MacOS X
+applications on Mac Classic. However you can only run and debug
+each type of application on the target operating system.
+
Installing latest headers (and Carbon Support)
----------------------------------------------
-NOTE : these steps are not necessary for Pro 6, only for Pro 5.3
+NOTE: these steps are not necessary for CW Pro 6 and above,
+only for CW Pro 5.3.
-the latest build for carbon support lead to a few changes you will have to follow, in order
-to successfully compile the code (also necessary if you don't want to build the carbon targets)
+The latest build for carbon support leads to a few changes you will have to
+follow, in order to successfully compile the code (also necessary if you don't
+want to build the carbon targets).
-1. you need CodeWarrior Pro 5.3 , i.e. 5.0 with all the upgrades
-2. you have to download the 3.3.2 universal interfaces from
- ftp://ftp.apple.com/developer/Development_Kits/UniversalInterfaces3.3.2.sit.hqx
-3. put the Interfaces and Libraries Folder into the MacOS Support folder and replace older versions
-4. remove from the MacOS Support folder the separate OpenTransport folder
+1. You need CodeWarrior Pro 5.3 , i.e. 5.0 with all the upgrades.
+2. You have to download the 3.4.0 (or greater) universal interfaces from
+ ftp://ftp.apple.com/developer/Development_Kits/UniversalHeaders3.4.1.img.bin.
+3. put the Interfaces and Libraries Folder into the MacOS Support folder and
+ replace older versions.
+4. remove from the MacOS Support folder the separate OpenTransport folder.
5. open the file MacOS Support:MacHeaders:MacHeaders.c and add the line
#include <ControlDefinitions.h>
after the
#include <Controls.h>
-6. rebuild all MacHeaders from the MacHeaders.mcp project in the same folder
+6. rebuild all MacHeaders from the MacHeaders.mcp project in the same folder.
+
+If you want to build the carbon targets, you will also need the latest
+carbonized version of MSL from Metrowerks, at the time of writing, this meant
+applying the changes from the folders:
-if you want to build the carbon targets, you will also need the latest carbonized version of
-MSL from Metrowerks, at the time of writing, this meant applying the changes from the folders
CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized MSL and
CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbonized Runtimes
(consult the file CodeWarrior Pro 5:Pre-Release:Carbon & MacOSX Development:Carbon & MacOSX README)
+Patching headers: CodeWarrior 8.x
+---------------------------------
+
+If you run into trouble with WCHAR_MIN and WCHAR_MAX in ansi.h,
+apply the patch ansi.diff.
+
+You may also need to comment out the _T definition in
+ctype.h if you get multiple definition errors.
+
setup.h
-------
-in order to build wxMac with CodeWarrior, you must copy or alias the file include/wx/mac/setup0.h
-to include/wx/setup.h.
+in order to build wxMac with CodeWarrior, you must copy or alias the file
+include/wx/mac/setup0.h to include/wx/setup.h.
-this step is not needed when using the Apple Developer Tools under Mac OS X since the setup.h
-file is automatically generated during the configuration of wxMac.
+this step is not needed when using the Apple Developer Tools under Mac OS X
+since the setup.h file is automatically generated during the configuration.
OpenGL
------
-In order to build opengl support with CodeWarrior, you must install the opengl libraries and headers
-from http://developer.apple.com/opengl/index.html
+In order to build opengl support with CodeWarrior, you must install the opengl
+libraries and headers from http://developer.apple.com/opengl/index.html
-If you want OpenGL support with CodeWarrior, set wxUSE_OPENGL in include/wx/setup.h to 1
+If you want OpenGL support with CodeWarrior, set wxUSE_OPENGL to 1 in
+include/wx/setup.h
-If you don't want OpenGl support, remove the file "glcanvas.cpp" from the project before
-compilation and leave the setting at 0
+If you don't want OpenGl support, set wxUSE_OPENGL to 0 (the
+default) and remove the file OpenGLLibraryStub from the project
+before compilation.
-If you want OpenGL support with the Apple Developer Tools under Mac OS X, add --with-opengl to the
-arguments of configure when configuring wxMac.
+If you want OpenGL support with the Apple Developer Tools under Mac OS X, add
+--with-opengl to the arguments of configure when configuring wxMac.
Project Files
-------------
-There are always the makemac.mcp or *M5.mcp files for Pro 5.3 and the makemac6.mcp files for Pro 6
+The project files are stored as xml text files and converted to binary
+CodeWarrior projects in the distribution (see AppleScript Files below):
+ - *M5.xml -> *M5.mcp for CodeWarrior 5.3
+ - *M6.xml -> *M6.mcp for CodeWarrior 6
+ - *M7.xml -> *M7.mcp for CodeWarrior 7 and above.
In order to build the library (and then the samples) you need to make the
-following projects (for 5.3)
-:src:wxWindowsM5.mcp
-:src:png:makemac.mcp
-:src:tif:makemac.mcp
-:src:jpeg:makemac.mcp
-:src:zlib:makemac.mcp
-
-Apple Developers Tools
-----------------------
-
-As in all Unix projects, you need to do something like this
-under MacOS 10.1 with the Apple Developers Tools installed.
-
-1) cd into the source dir
-2) mkdir build
-3) cd build
+following projects (for CW 5.3, similar process for CW 7):
+
+:src:wxwindowsM5.mcp
+:src:png:pngM5.mcp
+:src:tiff:tiffM5.mcp
+:src:jpeg:jpegM5.mcp
+:src:zlib:zlibM5.mcp
+
+Note that if using CW 8 and above, when compiling the samples
+you may need to edit the target settings, click on Language
+Settings, C/++ Language and remove the forward slash at the
+start of /wx/wx_cw_d.h (or similar filename).
+
+AppleScript Files
+-----------------
+
+Several AppleScript files are provided in the docs:mac directory:
+
+ - M5xml2mcp.applescript to convert xml files to CodeWarrior 5 projects
+ - M5mcp2xml.applescript to convert CodeWarrior 5 projects to xml files
+ - M5build.applescript to automatically build all samples/demos projects
+ - M8xml2mcp.applescript to convert xml files to CodeWarrior 8 projects
+ - M8mcp2xml.applescript to convert CodeWarrior 8 projects to xml files
+ - SetXMLCreator.applescript to set correct creator type (see below)
+
+To run the XML to MCP conversion scripts:
+
+Double click on e.g. docs/mac/M8xml2mcp.applescript, then "run"
+the applescript and when asked for a folder pick src/. Then it
+takes a while to scan all dirs for the xml files and convert
+them to mcps. If some conversions fail it means an mcp already
+exists (back them up prior to running the script).
+
+To set the correct creator type for importing into CodeWarrior,
+you may need to run SetXMLCreator.applescript.
+
+Apple Developer Tools
+---------------------
+
+As in all Unix projects, you need to do something like this under MacOS X
+with the Apple Developer Tools installed:
+
+1) cd into the base dir
+2) mkdir osx-build
+3) cd osx-build
4) ../configure
5) make
-If you want to install the library, you need to be able
-to log in as "root". For this, "root" has to be activated
-in the NetInfo utility - there you will also have to
-choose a password for the "root" user. Then
+If you want to install the library into the system directories you'll need
+to do this as root. The accepted way of running commands as root is to
+use the built-in sudo mechanism. First of all, you must be using an
+account marked as a "Computer Administrator". Then
+
+6) sudo make install
+7) type <YOUR OWN PASSWORD>
-6) su
-7) type <PASSWORD>
-8) make install
-9) exit
+Note that while using this method is okay for development, it is not
+recommended that you require endusers to install wxWidgets into their
+system directories in order to use your program. One way to avoid this
+is to configure wxWidgets with --disable-shared. Another way to avoid
+it is to make a framework for wxWidgets. Making frameworks is beyond
+the scope of this document.
-Note: There are currently link problems (in some rare cases)
-with wxMAC and Apple's tools when compiling the library as
-a shared library (the default). You might want to type
+Note:
+We recommend you configure a static library instead:
4) ../configure --disable-shared
-to build a static library instead.
+or activate OpenGL:
+4) ../configure --with-opengl
+
+Note:
+It is rarely desirable to install non-Apple software into system directories.
+By configuring the library with --disable-shared and using the full path
+to wx-config with the --in-place option you can avoid installing the library.
Problems with .xpm files
------------------------
Error : the file 'wx/generic/tip.xpm' cannot be opened
tipdlg.cpp line 201 #include "wx/generic/tip.xpm"
-then your cvs has changed the type of the .xpm files to something other than text, in order to fix this
-either change the type by using a resource editor or drag the files from /include/wx/generic/..xpm on
-the SetTypeFromExtension application that is included in this folder. This small applet itself queries
-the Internet Config, so you will have to associate the "xpm" extension with CodeWarrior before making
-use of this applet.
+then your cvs has changed the type of the .xpm files to something other than
+text, in order to fix this either change the type by using a resource editor
+or drag the files from /include/wx/generic/..xpm on the SetTypeFromExtension
+application that is included in this folder. This small applet itself queries
+the Internet Config, so you will have to associate the "xpm" extension with
+CodeWarrior before making use of this applet.
Missing PLStringFuncsLib
------------------------
You will have to build All Targets for MacOS Support:Libraries:Sources:PLStringFuncs:Glue:PLStringFuncsGlue.mcp
+