How to Build An External

My makefile (max/makefile.per-object, which is included by the Makefile in each external's directory) automates the creation of the version.h file from the version info name/value table as well as the building of the compiled object (by invoking xcodebuild from the terminal or opening the CodeWarrior project and asking you to build from the IDE's GUI) and creation of archives of the object and its help patch for downloading.

All you really need to say to build the object is "make macho" or "make cfm" . If you just want to make the version.h file, you can say "make version.h".

How to Release an External

To release an external you must follow these steps:

  1. Commit your source code to the SVN repository. You don't want to make (a version of) an object public without saving the source code to it!
  2. Use the makefile-based system to build the "web release" archive (a .tar.gz file containing the platform-specific archive for the external and its help patch, plus an "info file" in text format used by the web downloads system) and copy it into the appropriate directory on CNMAT's web server.

All you have to say is "make macho-release" or "make cfm-release" ; if you have uncommitted modifications to files in the current directory then make will give you an error message like this:

[Matt-Wrights-Computer:externals/misc/lbyl] matt% make macho-release
M lbyl.c
You have modified files that have not been checked back into SVN!
make: *** [code-checked-in] Error 1

One annoying thing about CodeWarrior is that if you build an external it will modify the .mcp file, even if you didn't change anything in the project. So when you say "make cfm-release", after rebuilding the CFM external, it will give you the above error message about your .mcp file not being checked in. What I usually do in this case is cheat by throwing away the changes to the .mcp file:

svn revert foo.mcp
make cfm-release

Of course if I really do make a change to the CodeWarrior project then obviously I check it in.