Getting Started with PORTING to Mac OS X ...

Mac OS X is a uniquely powerful development platform, supporting multiple development technologies including UNIX, Java, the proprietary Cocoa and Carbon runtime environments, and a host of open source, web, scripting, database, and development technologies.

The built-in Xcode Tools, combined with time-tested stability and performance characteristics, standards-based technologies, and remarkable user interface, make Mac OS X an amazingly multifaceted development platform. The current release, Mac OS X v10.4 Tiger, brings developers revolutionary new technologies like Spotlight, Dashboard, Automator, Core Data, Core Image, and many others. These powerful additions to the modern, UNIX-based foundation make Mac OS X Tiger the most advanced operating system available.

MAC OS X is a form of Unix. It is an offshoot of an old FreeBSD. There are differences with the Unixes you are familiar with, but there are many more similarities. It doesn't look like Unix when you turn on the machine, because the GUI is the most obvious thing, but underneath it is Unix -- which you would see by bringing up a terminal window and entering standard Unix shell commands.

When porting products from Unix, remember that Mac IS Unix. When porting from Windows that's different. What would you tell yourself if you were porting from Windows to Unix? They are very different.

Porting the basic code is not that difficult. It uses gcc. But there are some things you need to be aware of.

  • You will, of course, have to become familiar with some different system APIs.
  • There are some different rules about building shared libraries. There are two kinds (bundles and dylibs) which are to be used in different circumstances. Second, though on other Unixes we don't worry about resolving all references when building a shared library (we let the executable take care of that at run time), you can't do that on OS X. All references have to be resolved at build time.
  • Because of the two types of processors(Intel/Power-PC), you need to become familiar with their Universal Binary mechanism. This allows you essentially to build the product for each processor on one machine, and then combine the results for each processor into a single "fat" binary that contains binary code for both in a single file. The result is a product that can be installed and run on either machine (the system figures out which binary code to use), without the user having to use a different version for each processor.
  • If you intend to have any GUI , you really have to make it look enough Mac-like (which is a bit different from other graphical desktops) to make the Mac users accept it, You have to understand the nature of the Mac desktop.
  • You also have to know how Mac products install. Underneath you can use your own script, but there is a Mac installer that people may expect you to use.

I credit the content of this article to my Colleague Jonathan. Thanks a lot Buddy Jon !!!

Porting UNIX/Linux Applications to Mac OS X -