"Unknown compiler version"

Hi, quite a number of headers in boost/config/compiler have bits like this: # error "Unknown compiler version - please run the configure tests and report the results" I think this cause more hard than good these days. If a new version of an otherwise perfectly conforming compiler is released, this error will be emitted when compiling Boost. So, users would have to manually hack the config headers and keep this change locally. And, it's likely that some users won't even bother -- especially given that the message say to run some configure tests, and where those configure tests are is not clear. And definitely, those tests have nothing to do with the 'configure' script at the top-level dir. So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one? Thanks, Volodya

--------------------------- Vicente Juan Botet Escriba ----- Original Message ----- From: "Vladimir Prus" <vladimir@codesourcery.com> To: <boost@lists.boost.org> Sent: Saturday, May 17, 2008 8:29 AM Subject: [boost] "Unknown compiler version"
Hi, quite a number of headers in boost/config/compiler have bits like this:
# error "Unknown compiler version - please run the configure tests and report the results"
I think this cause more hard than good these days. If a new version of an otherwise perfectly conforming compiler is released, this error will be emitted when compiling Boost. So, users would have to manually hack the config headers and keep this change locally. And, it's likely that some users won't even bother -- especially given that the message say to run some configure tests, and where those configure tests are is not clear. And definitely, those tests have nothing to do with the 'configure' script at the top-level dir.
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
Hello, this seams reasonable for new versions of already known compilers. For not know compilers the question is what would be the default value. One possibility is to provide a user define that give the default known compiler, the other preserve the error. #else // UNKNOWN_COMPILER # if defined(BOOST_UNKNOWN_COMPILER_DEFAULT) # if !defined(BOOST_DISABLE_UNKNOWN_COMPILER_WARNING) # warning "Unknown compiler - please run the configure tests and report the results" # endif # if BOOST_UNKNOWN_COMPILER_DEFAULT=compX_versionY // do as for compX_versionY # else // ... # endif # else # error "Unknown compiler - please run the configure tests and report the results" # endif #endif Anyway I think that the warning should be preserved (adding the address of the page explaining how to do that will help) and maybe this could be protected with conditional compilation. #if !defined(BOOST_DISABLE_UNKNOWN_COMPILER_VERSION_WARNING) # warning "Unknown compiler version - please run the configure tests and report the results (http://www.boost.org/...." #endif Best Vicente

vicente.botet wrote:
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
Hello,
this seams reasonable for new versions of already known compilers.
Ok.
For not know compilers the question is what would be the default value. One possibility is to provide a user define that give the default known compiler, the other preserve the error.
Why? What good does the error do to user? Failing just because the compiler *might* have a bug does not seem right.
Anyway I think that the warning should be preserved (adding the address of the page explaining how to do that will help) and maybe this could be protected with conditional compilation.
#if !defined(BOOST_DISABLE_UNKNOWN_COMPILER_VERSION_WARNING) # warning "Unknown compiler version - please run the configure tests and report the results (http://www.boost.org/...." #endif
Why would a user who's just downloaded Boost and builds it on SVN version of gcc have to specify some defines? - Volodya

Please forget my last post. I should take a look on how config.h file works before posting _____________________ Vicente Juan Botet Escriba ----- Original Message ----- From: "Vladimir Prus" <vladimir@codesourcery.com> To: <boost@lists.boost.org> Sent: Saturday, May 17, 2008 10:13 AM Subject: Re: [boost] "Unknown compiler version"
vicente.botet wrote:
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
Hello,
this seams reasonable for new versions of already known compilers.
Ok.
For not know compilers the question is what would be the default value. One possibility is to provide a user define that give the default known compiler, the other preserve the error.
Why? What good does the error do to user? Failing just because the compiler *might* have a bug does not seem right.
Anyway I think that the warning should be preserved (adding the address of the page explaining how to do that will help) and maybe this could be protected with conditional compilation.
#if !defined(BOOST_DISABLE_UNKNOWN_COMPILER_VERSION_WARNING) # warning "Unknown compiler version - please run the configure tests and report the results (http://www.boost.org/...." #endif
Why would a user who's just downloaded Boost and builds it on SVN version of gcc have to specify some defines?
- Volodya
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

--------------------------- Vicente Juan Botet Escriba ----- Original Message ----- From: "Vladimir Prus" <vladimir@codesourcery.com> To: <boost@lists.boost.org> Sent: Saturday, May 17, 2008 8:29 AM Subject: [boost] "Unknown compiler version"
Hi, quite a number of headers in boost/config/compiler have bits like this:
# error "Unknown compiler version - please run the configure tests and report the results"
I think this cause more hard than good these days. If a new version of an otherwise perfectly conforming compiler is released, this error will be emitted when compiling Boost. So, users would have to manually hack the config headers and keep this change locally. And, it's likely that some users won't even bother -- especially given that the message say to run some configure tests, and where those configure tests are is not clear. And definitely, those tests have nothing to do with the 'configure' script at the top-level dir.
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
This works if the unknown version is greater than the last known. For versions before the first supported one the problem remains, but this situation is less critical. Best regards Vicente

Vladimir Prus wrote:
Hi, quite a number of headers in boost/config/compiler have bits like this:
# error "Unknown compiler version - please run the configure tests and report the results"
I think this cause more hard than good these days. If a new version of an otherwise perfectly conforming compiler is released, this error will be emitted when compiling Boost. So, users would have to manually hack the config headers and keep this change locally. And, it's likely that some users won't even bother -- especially given that the message say to run some configure tests, and where those configure tests are is not clear. And definitely, those tests have nothing to do with the 'configure' script at the top-level dir.
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
I think you're probably misunderstanding how those headers work: the #error is only emitted if: * the user has defined BOOST_ASSERT_CONFIG and * the compiler is not recognosed. Since the whole purpose of BOOST_ASSERT_CONFIG is to emit an error when the compiler is not recognised, this is quite deliberate and should IMO stay. Unless users explicitly define this macro they won't ever see the #error. There are some compilers that historically emit a *warning* if the compiler is unrecognised and BOOST_ASSERT_CONFIG is *not* defined. These are: Borland: Given it's current poor std conformance, I think this one should stay. GCC: This has already been disabled for the reasons you give above. Intel: Also already disabled. MSVC: Currently still emits a warning, I'm not sure if this one should stay or not. HTH, John.

John Maddock wrote:
Vladimir Prus wrote:
Hi, quite a number of headers in boost/config/compiler have bits like this:
# error "Unknown compiler version - please run the configure tests and report the results"
I think this cause more hard than good these days. If a new version of an otherwise perfectly conforming compiler is released, this error will be emitted when compiling Boost. So, users would have to manually hack the config headers and keep this change locally. And, it's likely that some users won't even bother -- especially given that the message say to run some configure tests, and where those configure tests are is not clear. And definitely, those tests have nothing to do with the 'configure' script at the top-level dir.
So, the message is likely to totally confuse some users, and force other users to keep local modifications to boost. Can we either remove this check, or assume that unknown version of compiler is identical in behaviour to the last known one?
I think you're probably misunderstanding how those headers work: the #error is only emitted if:
* the user has defined BOOST_ASSERT_CONFIG and * the compiler is not recognosed.
Since the whole purpose of BOOST_ASSERT_CONFIG is to emit an error when the compiler is not recognised, this is quite deliberate and should IMO stay. Unless users explicitly define this macro they won't ever see the #error.
Well, warning is just as bad, as it's emitted per each compiled file.
There are some compilers that historically emit a *warning* if the compiler is unrecognised and BOOST_ASSERT_CONFIG is *not* defined. These are:
Borland: Given it's current poor std conformance, I think this one should stay.
I suspect borland users already know about its poor conformance, so need no further message :-)
GCC: This has already been disabled for the reasons you give above.
Ah, did not notice it.
Intel: Also already disabled. MSVC: Currently still emits a warning, I'm not sure if this one should stay or not.
MSVC is what I was looking at, and I'd suggest it does not emit a warning. - Volodya
participants (3)
-
John Maddock
-
vicente.botet
-
Vladimir Prus