Nicolas Pitre wrote: > On Tue, 18 Aug 2009, Brandon Casey wrote: > >> The SUNWspro compiler doesn't set __i386__. Instead it sets __i386, and >> I think __x86_64 and __amd64 where appropriate. So, compilation with >> the SUNWspro compiler on x86 is currently unaffected by these changes and >> falls back to the generic routines. >> >> It seems that v5.10 of the compiler can grok both the __asm__ statements >> and the ({...}) naked block notation and passes all of the tests when the >> block_sha1 code is modified to add defined(__i386) to each of the macro >> statements. >> >> The 5.8 version cannot grok the naked block, and requires spelling __asm__ >> as __asm for inline assembly. Even then it appears that there is a bug in >> the assembly that is produced (a google search told me so), so the assembly >> code does not successfully compile. >> >> I haven't had much time to think about how or whether to address this. >> >> Adding something like the following would get ugly real quick: >> >> (defined(__i386) && defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5100)) > > I think the best solution in this case might simply be to add something > like this somewhere at the top of git-compat-util.h after the system > includes: > > /* > * The SUNWspro compiler uses different symbols than gcc. > * Let's standardize on the gcc flavor. > */ > #if defined(__i386) && !defined(__i386__) > #define __i386__ > #endif > #if (defined(__x86_64) || defined(__amd64)) && !defined(__x86_64__) > #define __x86_64__ > #endif Yes, I had this idea too. > /* > * SUNWspro from version 5.10 supports gcc extensions such as gcc's > * statement expressions and extended inline asm, so let's pretend... > */ > #if defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5100)) > #define __GNUC__ > #endif I hadn't thought of this. I'll test to make sure the other statements that are protected by ifdef __GNUC__ work correctly with SUNWspro v5.10. -brandon -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html