Targeting Mac OS

1 Introduction

Read the Release Notes!
What's New in This Release
What's in This Manual
CodeWarrior Documentation
Adobe Acrobat Indexes
Where to Go from Here

2 Getting Started

System Requirements
Installing CodeWarrior for Mac OS
CodeWarrior Compiler Architecture
Development Tools for Mac OS
CodeWarrior IDE
CodeWarrior Compiler for Mac OS
CodeWarrior Assembler for Mac OS
CodeWarrior Linker for Mac OS
CodeWarrior Debugger for Mac OS
Metrowerks Standard Libraries
CodeWarrior Development Process

3 Application Projects

Application Overview
Mac OS Application Types
Application Finder Types
Developer References
Creating Application Projects
Application Project Stationery
68K and CFM68K Application Stationery
Power PC Application Stationery
Fat Application Stationery
Carbon Application Stationery
Application Project Target Options
68K and CFM68K Application Options
Power PC Application Options
Fat Application Options
Carbon Application Options
Application Project Libraries
68K and CFM68K Application Libraries
Power PC Application Libraries
Fat Application Libraries
Carbon Application Libraries
Altivec Application Libraries
Creating Fat Applications
Using Multiple Targets
Using Subprojects
Application Project Notes
Library Naming Conventions
Using #if in Source Code
SIOUX

4 Library Projects

Libraries Overview
Developer References
Static Library Projects
Types of Static Libraries
Creating Static Libraries
Static Library Stationery
Static Library Project Target Options
Static Library Project Libraries
Shared Library Projects
Types of Shared Libraries
Creating Shared Libraries
Creating a Fat Shared Library
Shared Library Stationery
Shared Library Project Target Options
Shared Library Project Libraries
Exporting Library Symbols
Library Project Notes
Special Library Linker Options
Ignored Linker Warnings

5 Code Resource Projects

Code Resource Overview
Code Resource Types
Developer References
Creating Code Resources
Saving Code Resource Files
Code Resource Stationery Options
Code Resource Target Options
68K Code Resource Options
PPC Code Resource Options
Fat Code Resource Options
Code Resource Library Options
68K Code Resource Libraries
PPC Code Resource Libraries
Fat Code Resource Libraries
Custom Code Resource Options
Accessing Global Data from 68K Code Resources
Creating 68K Custom Headers
Calling PowerPC Code Resources

6 Adding Project Resources

Adding Resource Files to a Project
Adding Rez files to a Project
Placing a Resource File in the Project Folder
Creating a Rez file from a Resource File

7 Porting Projects to Carbon

Carbon Information
Setting Up a Carbon Development System
CarbonLib
Universal Interfaces
Porting a Mac OS Project to Carbon Example
Carbon Source Changes in SillyBallsCarbon

8 Mac OS Target Settings

Target Settings Overview
Common Target Option Panels
Target Settings panel
Output Flags panel
Rez panel
PowerPC Target Option Panels
PPC Target panel
PPC Target: Application pane
PPC Target: Shared Library pane
PPC Target: Code Resource pane
PPC Target: Library pane
PPC Target: Stub Library pane
PPCAsm panel
PPC Processor panel
PPC Disassembler panel
Mac OS Packager panel
PPC Linker panel
PPC PEF panel
68K Target Option Panels
68K Target panel
68K Target: Application pane
68K Target: CFM68K Application pane
68K Target: Code Resource pane
68K Target: Library pane
68K Target: CFM68K Shared Library pane
68K Target: MPW Tool pane
68K Processor panel
68K Disassembler panel
68K Linker panel
CFM68K panel
Fat Target Option Panels
Mac OS Merge
Alphabetical List of Target Setting Options
4-Byte Ints
68020 Codegen
8-Byte Doubles
A4 relative data
A5 relative data
Alignment
AltiVec Programming Model
Assembler Dialect
Case Sensitive
CFM68K library
Code Model
Code Sorting
Collapse Unused TOC-reloads
Comments
Copy Code Fragments
Copy Resources
Create alias to Classic executable
Create PkgInfo file
Creator
Current Version
Dead-strip Static Initialization Code
Disable All Warnings
Disassemble Exception Tables
Display Dialog
Escape Control Chars
Expand Uninitialized Data
Export Symbols
Extended Resource
Far Data
Far Data Threshold
Far Method Tables
Far String Constants
Fast Link
File Flags
File locked
File Name
Filter Mode
Finder Flags
Floating Point
Folder to package
Force Indirect Access
Fragment Name
Full Path in SYM Files
Generate A6 Stack Frames
Generate Link Map
Generate Profiler Information
Generate SYM File
Generate VRSAVE Instructions
Global Data Alignment
Has been inited
Has bundle
Has custom icon
Header Type
Initialization
Invisible
Label
Library Folder ID
Library SubFolder ID
Link Mode
Link Single Segment
Linker
MacsBug Symbols
Main
Make Strings Read-Only
Max String Width
Merge Compiler Glue into Segment 1
Merge to File
Minimum Heap Size
MPW C Calling Conventions
Name locked
Old Definition
Old Implementation
Only Show Operands and Mnemonics
Output Directory
Package Creator Type
Package File Type
PalmOS library
PC-Relative Strings
Peephole Optimization
Perform Typechecking
Post-Linker
Preferred Heap Size
Prefix File
Pre-Linker
Printer Driver is MultiFinder Compatible
Processor Specific Instructions
Profiler Information
Project Type
Resource Flags
Resource Map is Read-only
Resource Name
ResType
ResID
RSEG Application
Save Project Entries Using Relative Paths
Schedule Instructions
Script Language
SegType
Share Data
Share Data Section
Shared
Show Code Modules
Show Data Modules
Show Name Table
Show Source Code
Show SYM Info
'SIZE' Flags
Skip Resource Types
Stack Size
Startup Code
Stationery
Store Small Static Data in TOC
Store Static Vector Data in TOC
Struct Alignment
Suppress Warnings
Suppress Warnings for Redeclared Resource Types
Suppress Warning Messages
Sym Name
Symbolic Debugging
Target Name
Target Processor
Termination
Traceback Tables
Treat Multiple Definitions as Warnings
Type
Use Extended Mnemonics
Use FMADD & FMSUB

9 C and C++ Support for Power PC

Predefined Preprocessor Macros
Number Formats
AltiVec Vector Data Formats
Integer Formats
Floating-Point Formats
Register Variables
Optimizing Code
Register Coloring
Pragmas
PowerPC Pragmas
AltiVec Pragmas
Constants
Alignment Considerations for AltiVec
Non-Vector Data
Embedded Vector Data
Dynamic Allocation
Compiler Local Variables
Stack Data
Heap Data
Object Data
Expressions and AltiVec
sizeof()
Assignment Operator
Address Operator
Pointer Arithmetic
Pointer Dereferencing
Type Casting
Vector Constants
Pointer Offsets
AltiVec-Specific Operators
Linker Issues
Deadstripping Unused Code and Data
Stripping Resources
Link Order

10 PowerPC Assembler

Working With Assembly
Assembler Syntax for PowerPC
Special PowerPC Instructions
Support for AltiVec Instructions
Creating Labels for PowerPC Assembly
Using Comments in PowerPC Assembly
Using the Preprocessor in PowerPC Assembly
Using Local Variables and Arguments in PowerPC Assembly
Creating a Stack Frame in PowerPC Assembly
Specifying Operands in PowerPC Assembly
Assembler Directives
entry
fralloc
frfree
machine
nofralloc
Intrinsic Functions
Low-Level Processor Synchronization
Floating-Point Functions
Byte-Reversing Functions
Setting the Floating-Point Environment
Manipulating the Contents of a Variable or Register
Data Cache Manipulation
Math Functions
Buffer Manipulation
AltiVec Intrinsics Support

11 68K Assembler

Inline Assembly for 68K
Inline Assembler Syntax for 68K
Defining an Assembly Function for 68K
Creating Labels for 68K Assembly
Using Comments in 68K Assembly
Using the Preprocessor in 68K Assembly
Using Structures in 68K Assembly
Using Global Variables in 68K Assembly
Using Local Variables and Arguments in 68K Assembly
Returning From a Routine in 68K Assembly
Assembler Directives for 68K
dc
ds
entry
fralloc
frfree
machine
opword
Assembler Instructions for 68K
Language Extensions for 68K
Inline Data
Specifying the Registers for Arguments
PC-Relative Strings
Number Formats for 68K
68K Integer Formats
68K Floating Point Formats
Special 68K Type Considerations
Calling Conventions for 68K
Variable Allocation for 68K
Register Variables for 68K
Optimizing Code for 68K
Register Coloring
Generating Code for Specific 68K Processors
Generating Code for the MC68000
Generating Code for the MC68020
Generating Code for the MC68881
Hazards of 68020 and 68881 Codegen
Pragmas for 68K
Linker Issues for 68K
Deadstripping Unused Code and Data
Stripping Resources
Link Order

12 Basic Mac OS Debugging

Configuring the Debugger
Debugger Requirements
Debugger Settings
Basic Mac OS Debugging Concepts
Mac OS Debugger Traps
Starting the Debugger with SYM Files

13 Advanced Mac OS Debugging

Remote Debugging
Preparation
Remote Debugging
C++ and PowerPlant Code
Object-Oriented Data Types and References
Debugging Objects Created With new
Debugging Static Constructors and Destructors
Viewing PowerPlant Source Code
Debugging Inline Functions
Debugging Template Classes
Debugging C++ Exceptions
Profiled Code
Stepping into a profiled routine
Stepping out of a profiled routine
Effect of stopping on the profile results
Shared Libraries
Shared-Library Limitations
Debugging a Shared Library in Four Steps
Code Resources
Debugging Requirements
Runtime Debugging Requirements
Debugging a Code Resource in Four Steps
Threads
SOM Objects
Viewing SOM Objects
DebugNew
Setting Up DebugNew
Using DebugNew
Leaks.log
Advanced Techniques

A Troubleshooting

Programming Specific
BowelsOfTheMemoryMgr
IDE Specific
Running Mac OS Applications Created on the Windows-hosted IDE
Error: Local Data >32k
Installing Universal Interfaces
Incompatibility between MPW Shell and Mac OS
Generating MPW Object Files
Using QuickView
Debugger Specific
Debugger doesn't Regain Control after my Exception Handler is Called
Crashing in the Drag Manager
The debugger crashes
Debugger() and DebugStr()
Pointer variables have a "Bus Error" value
Debugger Error Messages
Working With Other Debuggers

B Balloon Help Compiler

Balloon Help Setup
Help File Example
Formal Specification
Help Text Options
Help Text Commands
Dialog commands
End command
Menu commands
STR# command

C Using MPW ToolServer with CodeWarrior

Using MPW ToolServer Overview
About ToolServer
ToolServer and MPW Shell Differences
Installing ToolServer
Starting ToolServer
Executing MPW Commands
Using the ToolServer WorkSheet
Using the ToolServer Tools Menu
Using a Commando Dialog Box
Looking Up MPW 411 Documentation

D Creating MPW Tool Projects

Creating an MPW Tool Project
Creating a 68K MPW Tool Project
Creating a PowerPC MPW Tool Project
Creating a Fat MPW tool
Choosing Libraries for an MPW Tool Project
Writing an MPW Tool
Running the MPW Tool

E Glossary

Index


[ First ]  [ Previous ]  [ Next ]  [ Last ]

Visit the Metrowerks website at: http://www.metrowerks.com
For assistance contact Metrowerks Technical Support at: cw_support@metrowerks.com
Copyright © 2000, Metrowerks Corp. All rights reserved.

Last updated: July 21, 2000