diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 8633bcdd85..1edea457d5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,6 +17,11 @@ past entries belonging to author(s): Viktor Szakats. */ +2010-06-01 01:00 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * src/common/hbver.c + + Applied patch sent by Tamas Tevesz to clean up LLVM/Clang + version detection for all existing cases. Thank you very much. + 2010-06-01 00:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + contrib/hbct/hbct.hbp + contrib/xhb/xhb.hbp diff --git a/harbour/src/common/hbver.c b/harbour/src/common/hbver.c index 2e436e9dfe..59e09bc876 100644 --- a/harbour/src/common/hbver.c +++ b/harbour/src/common/hbver.c @@ -700,18 +700,46 @@ char * hb_verCompiler( void ) iVerPatch = 0; #endif -#elif defined( __llvm__ ) && defined( __clang_major__ ) +#elif defined( __clang__ ) && defined( __clang_major__ ) pszName = "LLVM/Clang C"; + #if defined( __cplusplus ) + hb_strncpy( szSub, "++", sizeof( szSub ) - 1 ); + #endif + iVerMajor = __clang_major__; iVerMinor = __clang_minor__; iVerPatch = __clang_patchlevel__; +#elif defined( __clang__ ) + + pszName = "LLVM/Clang C"; + #if defined( __cplusplus ) hb_strncpy( szSub, "++", sizeof( szSub ) - 1 ); #endif + hb_strncat( szSub, " 1.x", sizeof( szSub ) - 1 ); + + iVerMajor = iVerMinor = iVerPatch = 0; + +#elif defined( __llvm__ ) && defined( __GNUC__ ) + + pszName = "LLVM/GNU C" + + #if defined( __cplusplus ) + hb_strncpy( szSub, "++", sizeof( szSub ) - 1 ); + #endif + + iVerMajor = __GNUC__; + iVerMinor = __GNUC_MINOR__; + #if defined( __GNUC_PATCHLEVEL__ ) + iVerPatch = __GNUC_PATCHLEVEL__; + #else + iVerPatch = 0; + #endif + #elif defined( __GNUC__ ) #if defined( __DJGPP__ ) @@ -726,12 +754,6 @@ char * hb_verCompiler( void ) pszName = "EMX/RSXNT/Win32 GNU C"; #elif defined( __EMX__ ) pszName = "EMX GNU C"; - #elif defined( __clang__ ) && defined( __llvm__ ) - pszName = "LLVM/Clang C"; - #elif defined( __clang__ ) - pszName = "Clang/GNU C"; - #elif defined( __llvm__ ) - pszName = "LLVM/GNU C"; #else pszName = "GNU C"; #endif @@ -758,7 +780,7 @@ char * hb_verCompiler( void ) #else iVerMajor = __SUNPRO_C / 0x1000; iVerMinor = __SUNPRO_C / 0x10 & 0xff; - iVerMinor = iVerMinor / 16 * 10 + iVerMinor % 16; + iVerMinor = iVerMinor / 0x10 * 0xa + iVerMinor % 0x10; iVerPatch = __SUNPRO_C & 0xf; #endif @@ -772,7 +794,7 @@ char * hb_verCompiler( void ) #else iVerMajor = __SUNPRO_CC / 0x1000; iVerMinor = __SUNPRO_CC / 0x10 & 0xff; - iVerMinor = iVerMinor / 16 * 10 + iVerMinor % 16; + iVerMinor = iVerMinor / 0x10 * 0xa + iVerMinor % 0x10; iVerPatch = __SUNPRO_CC & 0xf; #endif