I am using LibraryLink and CCompilerDriver on OS X. I would like to use a different compiler than the system's default. For example, I can install different versions of clang and gcc using MacPorts. Using gcc is necessary if I want OpenMP.
CCompilerDriver comes with a clang driver and a gcc driver. Both work with the system defaults. But how can I coerce them to work with a compiler having a different name (in the case of MacPorts, gcc might be named gcc-mp-5) and installed in a different location (e.g. /opt/local/bin)? However, I am unable to use either (CCompilerDriver`ClangCompiler`ClangCompiler or CCompilerDriver`GCCCompiler`GCCCompiler) with a different installation of gcc or clang.
I can set up CCompilerDriver`GenericCCompiler`GenericCCompiler to sort of work, with something like this:
 
$CCompiler = {"Compiler" -> CCompilerDriver`GenericCCompiler`GenericCCompiler, 
    "SystemCompileOptions" -> "-m64 -fPIC -O2 -framework Foundation", "CompilerName" -> "g++-mp-5", 
    "CompilerInstallation" -> "/opt/local/bin"};
But this has its own problems because it's geared towards Windows. For example "Libraries" -> {"foo"} will translate to the compiler option -lfoo.lib instead of -lfoo, and won't work on OS X. Then I have to resort to some ugly hack such as passing -lfoo in "CompilerOptions", which then brings its own problems and inconveniences.
So, short of trying to write a compiler drivers (which looks very daunting and I won't try), how can I use a non-default gcc or a non-default clang on OS X?