|
Boost : |
From: Martin Wille (mw8329_at_[hidden])
Date: 2006-11-23 05:30:17
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
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk