Q:

macos - how to tell cabal/ghc to look in /opt for libraries/include files? 

I've got the pcre library installed via ports in /opt. 
I'm trying to install pcre-light, but cabal install pcre-light reports:
Resolving dependencies...
Configuring pcre-light-0.4...
Preprocessing library pcre-light-0.4...
Base.hsc:103:18: error: pcre.h: No such file or directory
...

pcre.h is located in /opt/local/include
Update: I had trouble linking with the pcre library provided by macports, so I switched over to using home brew. 

A:

http://www.haskell.org/ghc/docs/7.0.2/html/Cabal/builders.html
--extra-include-dirs[=dir]
An extra directory to search for C header files.  You can use this flag multiple times to get a list of directories. 
You might need to use this flag if you have standard system header files in a non-standard location that is not mentioned in the package's .cabal file.  Using this option has the same affect as appending the directory dir to the include-dirs field in each library and executable in the package's .cabal file.  The advantage of course is that you do not have to modify the package at all.  These extra directories will be used while building the package and for libraries it is also saved in the package registration information and used when compiling modules that use the library.