
Ralf W. Grosse-Kunstleve wrote:
I looked around a bit and I see that the toolset was modified in May: -std strict_ansi was removed. IMO this is not the best idea. All of Boost.Python compiles and works with -std strict_ansi. And this works as well:
% cat test.cpp #include <cctype>
int main() { std::toupper('c'); return 0; }
cxx -std strict_ansi -tlocal test.cpp
I am afraid I don't have time to fix the toolset. What I can offer is ssh access to our machine and the compiler/linker commands that work for Boost.Python (I am using SCons).
The toolset was modified on my behalf. Below is an excert of the mail I sent to justify the changes.
You might want to try the appended tools file for true64cxx65. I recently started to use boost on this platform and this is what I have come up with so far.
These were the major issues with the toolset description:
- The "flags tru64cxx65 CFLAGS <inlining>full : -inline all ;" hangs the compiler when compiling with full inlining. Leaving this at the default value solves the problem.
- The command line for the archive action exceeds its maximum length when used with certain libs. On recommendation from Ralf Grosse-Kunstleve I removed the whole cxx repository stuff and added "-tlocal" to the C++ compiler options. This avoids the need for repositories completely.
- The Cc-action was refering to a non existant cxx-Cc-action.
- The use of "-std strict_ansi -nopure_cname" was causing all kinds of troubles for me. I replaced that with "-D__USE_STD_IOSTREAM -nousing_std" which seems to work far better.
Maybe the maintainers should consider to replace the current toolset with the one attached.
There are other issues to be aware of:
- When compiling boost you will see several warnings (and one error!) about the use of assert on pointer types. These are caused by a bug in the system header files which force the argument for assert() to int. This can be fixed by editing the header file "/usr/include/assert.h".
- When the macro _XOPEN_SOURCE is defined to something greater or equal to 500, you will encounter errors when compiling code which involes iostreams because of a bug in the iotraits header file. This happended to me when compiling boost.python because python forces the _XOPEN_SOURCE to 600. You need to fix the iotraits header file for this.
- There are several statements in the form of
# if (defined(__DECCXX_VER) && __DECCXX_VER <= 60590031)
sprincled through boost to work around compiler deficencies. As we are using 60590040 I patched these to the new revision number. I didn't check if the bugs were fixed in the compiler but you might want to do the same.
Thats all I can remember off the top of my head. I did some tweaking to the boost.python source but that might not be necessary for you.
With the current toolset I am able to compile the whole boost libraries (v 1.31.0) on my platform (OSF1, V5.1, alpha) and compiler (Compaq C++ V6.5-033 for Compaq Tru64 UNIX V5.1B (Rev. 2650)). I just started downloading the current CVS snapshot to have a look at this problem. Markus