I've just gone through the process of setting up ROMS 2.2 on a Mac OSX cluster running the IBM xlf compiler and I have a couple of tweaks to hopefully make it easier for others in the future.
1. the xlf compiler uses flush_ instead of flush. Utility/mp_routines.F checks #ifdef AIX for this but it would be better to use #ifdef XLF since it is a xlf issue and not an AIX-specific issue.
2. I ran into the mp_strings issue that others have run across. Unfortunately I didn't find viewtopic.php?t=278 in time to make a simple fix. My "fix" was similar except I used the \ escape character instead of reversing the single quotes with the double quotes:
mod_strings.f90: CPPFLAGS += -DMY_OS="\"$(OS)\"" \
...
This "should" be more cross-platform compatible. The use of the single apostrophe/single-quote in Gnu cpp is "interpreted as the beginning of character constants" according to the GNU cpp man page. This is a hazard of using cpp for non-C language applications. I understand that there will be hesitation in changing this due to worries about cross-platform compatibility but it would be nice to have a universal fix for this too so that people don't have to hack the code each time they want to run it on a Mac. I believe the use of the escape character will be closer to being a universal fix than what is currently being used.
3. The Compilers/Darwin-xlf.mk file specifies -qextname in FFLAGS. I found that this was incompatible with the symbols in my libnetcdf.a library. I got rid of it and it worked fine. Is there a reason that -qextname should be specified? I guess it depends on if it was used to create the netcdf library or not.
Steve