First off, thanks for the help with git, I appreciate that. > I think the important cases to distinguish are: > > 1. Does the C compiler us an LLVM backend (e.g. llvm-gcc or clang) > 2. Is the C compiler clang? > > For #1 we know that we have to write some different code in the rts to handle > thread local storage. For #2 we know that we have to use a different C > preprocessor (and perhaps write some of the rts C code differently?). > > For #1, I defined the preprocessor variable llvm_CC_FLAVOR based on whether > or not the C compiler defines the __llvm__ preprocessor variable, which both > llvm-gcc and clang do. For #2 it could be done by looking for the __clang__ > preprocessor variable.
Excellent point. Okay. I hadn't thought about supporting llvm-gcc at this juncture, but there's no reason I can't modify my build-system stuff to handle all three possibilities so that at least people can try it. I'll make it so there are two separate preprocessor variables for the two conditions. > I'm not that familiar with the C preprocessor, but I didn't think it was easy > to compare strings in #if directives. If you define CC_FLAVOR as a string, is > there an easy way to do the conditional compilation we need in the rts? You are correct, there's not. I hadn't thought that through. Okay, I'll go ahead and modify my stuff accordingly. -- Dan Knapp "An infallible method of conciliating a tiger is to allow oneself to be devoured." (Konrad Adenauer) _______________________________________________ Cvs-ghc mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-ghc
