Slashdot Mirror


Apple Win32 to OS X Porting Guide

BoomerSooner writes "Apple has released a Win32 to Mac OS X Porting Guide for C/C++ developers. This Guide is to get you started porting an existing procedural Win32 application written in C or C++ to Mac OS X. It looks like Apple is getting a bit more aggressive toward Microsoft."

4 of 285 comments (clear)

  1. Re:X-OSX? by Anonymous Coward · · Score: 5, Informative

    Why yes there is....

    http://developer.apple.com/techpubs/macosx/Darwi n/ GettingStarted/PortingUNIX/

  2. Re:Step #1 by Anonymous Coward · · Score: 5, Informative
    I have developed with Codewarrior for years. Yes, the compiler suite is cross platform... or more correctly "Metrowerks make products for both platforms".

    NO, the API is not cross platform. MFC/Win32 on Windows, Carbon/Cocoa/Toolbox on the Mac. API code you write for one is not compatible with the other

    Just so you know, before you go out downloading CW from hotline.

  3. Re:Oops by glwtta · · Score: 5, Funny
    Hit the wrong 'reply' link.

    Getting confused by all the buttons? ;)

    --
    sic transit gloria mundi
  4. Advice to Geeks about to try out mac osx by goombah99 · · Score: 5, Informative

    Sorry to repost this but it gets tiresome to see the same misinformation out there. read on.

    Dear Unix user, welcome to mac. If you trust me you will just do all of the following without asking why, before you start whining about features you miss. The following is a no-fat-added list of essential customization for unix users converting to the mac world.

    1. The Mouse.
    Go buy a 3 button USB mouse. Make sure you get an optical mouse with a wheel. Buy the most expensive one you can. Heriditary mac users prefer a 1 button mouse, but you wont.

    2. The Terminal.
    Open /Applications/Utilities. Drag the terminal.app to the Dock

    3. File system journaling
    Open the terminal.app and type
    sudo diskutil enableJournal /Users
    Just do it. This can be undone and you can change how you want it later.

    4. The Compiler
    Regardless of what compiler you prefer, you need the native compiler and libs. Go to
    http://developer.lanl.gov and register for free. Enter the site and select the downloads option. Scroll through the list till you find "developer tools", download and install it.

    5. Installing GNU ports part 1.
    Goto http://sourceforge.com and find the latest stable release of "fink" for mac os X. download and install it. There will be some questions to answer, just choose the defaults except if offered, ask it to get updates from CVS.

    6. Install X-windows part 1
    If you have 5 hours to you can wait, type in the terminal
    fink install xfree86-rootless
    this is preferred as it gets the latest release of a fast changing package.
    If you are in a hurry you can install the binary.
    Type
    sudo dselect
    Quick intro to dselect: after some preliminaries you are offered the chance to choose packages from a list. Use the down-arrow key to move down and find xfree86-rootless.
    Press the + key to select it. You will be offered "conflict resolution": accept the defaults by pressing return. Then return again to exit the selection. DO NOT GET GREEDY and select other packages yet. Finish the installation.

    7. Installing X-windows part 2: the window manager
    You may prefer fvwm2 or some other window manager but take my advice and try out oroborus first. Oroborus does things the mac way, and later you will be glad you did even if its not familiar at first. Oroborus deliberately eschews many popular features, letting the OS provide those services. For example, if you want virtual screens you DO NOT want them as part of the windows manager! You want them as part of Aqua so that they apply to both aqua and to x-windows. Likewise you want the Dock to manage minimizing windows not the window manager.
    Go to http://apple.com click the OSX tab, then the downloads tab and find oroborus.
    Note: the oroborus that comes with Fink/dselect is not quite the same thing.

    8. Installing GNU ports part 2.
    Use dselect or fink to install a few packages. Fink has about 2000 packages available including your favorite parts of kde and gnome. To see what's avalaible type
    fink list | more
    just for practice try installing gv (ghost view) and xemacs.
    Remember, dselect will install binaries (fast), and fink will install source (slow), generally dselect is a good idea. Once a month type "fink update-all" or update packages in dselect.

    9. Text editor
    Goto http://www.barebones.com and get a free copy of bbedit "lite". I recommend buying the full version, especially to geeks. Note that you can save files in unix/mac/PC formats which have different end of line characters. Despite the name, on a mac you should normally use unix format. Mac mode is mainly for historic reasons but gums up unix commands. Even if this (amazingly) does not turn out to be your preferred editor, you should install it anyhow so that it is there for guests.

    10. Mounting network disks
    You can mount NFS disks by creating a file that looks just like the usual /etc/fstab file. It does not matter where you put it since the mac will ignore it. To mount the disks type "sudo niload fstab" followed by the file path name. However, don't do this right away till you have more experience. Instead do the following.
    In the finder window, select go>servers. In the text field type
    nfs://xxx.xxx.xxx.xxx/hostpath
    Where xxx.xxx.xxx.xxx is the ip address or domain name of the host with the disk, and /hostpath is the exported fs. The disk will be mounted in /Volumes and be "aliased" to the desktop.
    To mount windows network disks we use
    smb://xxx.xxx.xxx.xxx/path
    Be nice and unmount your disks (throw them in the trash) before disconnecting from the net.

    11. using X windows across the network.
    All the usual stuff (like xhosts and DISPLAY) works as expected. However you do need to activate oroborus (which will fire up X-windows) since its not on by default. However, before you do this let me suggest an alternative you may find better. Goto http://apple.com and on the osx downloads page locate VNCdimension (or VNCthing) and install this application. On the X windows client, run vncserver. And on the mac attatch to it using VNC dimension. On anything but the fastest network connection you will find this smoother and faster than using x-windows. Plus its more secure and even runs through firewalls. At present much of X-windows on the mac is not graphics accelerated, but VNC dimension which runs in aqua is.

    12. Shortcuts worth knowing about
    On your unix machine to run netscape you type /usr/bin/Netscape &
    on a mac you type
    open /Applications/Netscape
    to open the file browser at the current working directory type
    open . (note the period)
    to open a web page type
    open http://macosxhints.com

    13. Pitfalls
    There are few pitfalls in the file system you need to know about early on.
    First be careful with cp,mv,rsync, and tar. For 99.9% of the time they work as expected. But a lot of mac applications and mac documents store info in something called the "resource fork" of a file. Unix files only have a single data fork. Mac files have a data and a resource fork. The data fork is the same as what you would see on the unix system. The resource fork can contain almost anything, but usually contains unimportant meta-information about the file itself like what app created it, and so on. But sometimes it contains crucial information (e.g quicken).
    When you do a unix cp or mv or tar all you get are the data forks. The rule of thumb is this: if your file can be used by a unix program then dont worry about the resource fork. Most modern mac apps do not use the resource fork but older ones do.

    Second, mac filenames are case-insensitive but case preserving. Thus ReadME and readme are the same file.

    Third, unfortunately, for backwards compatibility there are two different kinds of soft links on a mac. One is the usual unix soft link and the other is the "alias" function of the OS. The OS is smart enough to recognize the unix links and treat them as file aliases in the GUI. But the reverse is not true. Generally you are better off using the unix soft links.

    Fourth, macs have three layers of file permissions where unix has one. Macs have the usual unix permissions. Plus there is an ability to lock a file against changes or deletion, and finally there is the ability to lock a file against modification even by root. generally you wont ever need either of the latter two, but you may someday find a file you cant seem to delete! just in case, the normal file lock is accessed via "get info"

    Fifth, fstab, exports, shadowpassword, passwd, and most unix configs don't work the way you expect. Use the admin tools to alter netinfo configuration data. (see root below)

    14. Thinking mac-like.
    First off you never need to touch the other mouse buttons outside of x-windows. Second, try to adopt apple applications where they exist to replace you current favorites. For example, use the mail.app instead of pine or Eudora. Sure these have nice features, but long term apple apps will stay more tightly integrated: for example, mail.app links to addressbook which links to iCal. Third, Chill-out dude. Macs force you to do things a certain ways with warning dialog boxes or focus-on-click windows. These are not worse than other ways, and long term you will come to see the benefits from the cross-application uniformity of operations. Unmount disks, especially network disks, by tossing them in the trash. (you may want to add an eject button to the finder menu)

    15. Viruses, Worms, holes, etc...
    Regularly use the software update feature. Bugs get patched quickly. Historically, the only security holes you must stay on top of are Microsoft Internet Explorer holes, Microsoft Entourage/outlook holes, and Microsoft macro viruses. Don't bother worrying about anything else till you worry about these. Many people use Chimera for this reason.

    16. Root
    If you read just one book try "mac OS X for unix geeks", most other books aren't for you because they are trying to explain unix to mac-heads. Avoid using root when you can use an admin tool or sudo instead. Apple has not fully document root admin, so stick with tools. Except don't ever play with netinfo manager or niload until you have a lot of experience, as there is no faster way to make your mac unbootable.

    17. Goodies
    There are virtual window managers at mac OSX downloads.
    Try out Watson at http://www.karelia.com/watson/
    Microsoft office X is a great program even if it is made by Microsoft.
    Scientific plotting: You may like Igor from wavemetrics.com since it has both command line and menu driven interface. Fink comes with R, Octave and Gnu-plot. Mathematicians may prefer mathematica.
    If you have a powerbook, put the dock on the left and make it small.
    Turn off autostart on OS 9.0
    Discover iTunes.
    Consider a mac.com account
    Read http://macosxhints.com

    --
    Some drink at the fountain of knowledge. Others just gargle.