
John Maddock wrote:
Martin Wille wrote:
If using an exit code is not viable then we also could do something along this: int main() { std::cout << "<platform_unsupported/>\n"; return EXIT_FAILURE; }
Or static_assert(platform_unupported) or even #error "<platform_unsupported/>"
The trouble is these aren't traditional configure tests, what we really want is "Does this compile, link and run? Yes: OK we have the feature, No: it's not usable." So we can't fix the errors in advance :-(
IIUC, Robert was concerned about managing tests that are only supported by a subset of the compilers. He wasn't directly talking about how Boost.Config should handle things. (Obviously, Boost.Config should not immediately #error for missing support of concept checking.) I know that my suggestion doesn't offer a perfect solution. However, it addresses the most pressing problems rather effectively: explosion of manual markups (by adding markup to the tests), explosion of exclusion management in the build system (by shortcutting compilation/execution), and compile/runtime costs for testing what is to known fail (also by shortcutting). These are the problems Robert wanted to avoid, IIUC. We went the #error route for the Spirit tests and it helped a lot (back when I was running gcc 2 tests). Adding markup to the output from the compiler and/or from the test run would also allow for inserting comments into the result tables without having to fiddle with the manual markup file. I think this could be interesting, too. Version management becomes easier, too, since the markup and the code the markup is referring to are the the same file and share the same CVS history. Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com