Alexander Dreyer wrote: > Dear Dave, > I'll try to find time to have a look at it. But unfortunately, Sun, in > particular the Sun-Compiler, is out of the scope of the projects, I'm > working on. So I cannot promise to fix it in the next days. Meanwhile, > you can have a look, how to teach the Sun-Compiler the missing STL stuff > (see below).
It would be good if you can look at it, as I do not believe I can 'teach' the compiler. There are no options to enable any features for C89 - see below. It should be supporting the standard. >> Part of the issue seems to be that few really understands SCons, so I >> suspect the patches are far from optimal. I've also seen some comments >> to suggest SCons is a good replacment for make, but it is nowhere near >> as good as autoconf/automake for generating a makefile. But that aside, >> to get to the specific issues in Sage: > autoconf/automake is far from being a modern configure/build system. If > one really wants to have something based on Makefiles cmake would be the > system of choice. For use in Unix platforms, it does work well though. Some pretty big projects use it - Python, gcc, Apache etc. I realise it is not a Windows solution though. >> Libtool is a tool which sorts all of this out, picking the right flags >> on every platform. But that is designed to integrate with >> autoconf/automake, not SCons. > scons picks up the right flag, the problem is the the flag was > explicitly by Sage >> "polybori/include/CCuddZDD.h", line 308: Warning (Anachronism): Formal >> argument func of type DdNode*(*)(DdManager*,DdNode*,int) in call to >> polybori::CCuddDDBase<polybori::CCuddZDD>::apply(DdNode*(*)(DdManager*,DdNode*,int), >> int) const is being passed extern "C" DdNode*(*)(DdManager*,DdNode*,int). > [...] > These warning seem to be caused, because a C function was called by C++ > code. But as there are only warnings, I would postpone that issue. Fair enough, though perhaps worth investigating. These things have a habit of coming back to bite one. > More interesting is the following. >> "polybori/include/CCuddNavigator.h", line 157: Error: iterator_traits is >> not a member of std. > std::iterator_traits is part of the C++ standard. So maybe one hat to > tell the Sun-Compiler to obey C++98 or later? > > As far as I can see, the remaining errors are caused by that error. > > Best regards, > Alexander I've checked the Sun Studio 12.1 compiler documentation http://docs.sun.com/app/docs/doc/820-7599 and can find no switches that would be needed to obey a 1998 standard. The documentation says: "The C++ compiler (CC) supports the ISO International Standard for C++, ISO IS 14882:2003, Programming LanguageāC++. The readme file that accompanies the current release describes any departures from requirements in the standard." Looking at the readme, http://developers.sun.com/sunstudio/documentation/ss12u1/mr/READMEs/c++.html#problems there's a short section on what is not implemented: I. Standards Not Implemented * The C++ compiler supports the ISO standard for C++, ISO IS 14882:1998, Programming Language C++. The following list describes requirements in the standard that are not supported in this release: * The export model of template compilation * Some functionality of the C++ library is not implemented in the default libCstd to preserve binary compatibility between the current and earlier releases of the C++ compiler. For more information, check the C++ FAQ. I can't see anything relevant looking in the FAQ. It seems odd that in one place the Sun Studio documents says it supports ISO IS 14882:2003 and in another ISO IS 14882:1998. But I've looked at the compiler documentation and can find nothing to say any flag is needed to enable specific standards. There is a flag which will make the compiler default to an incompatible implementation to the ISO standard used in some old Sun C++ compiler, but there is nothing needed to support any new features. I'm not a C++ programmer myself, but I'll ask on comp.lang.c++, in the hope someone there might know how to work around this problem. A Google on the exact error message http://www.google.com/#hl=en&source=hp&fkt=5002&fsdt=14383&q=%22Error%3A+iterator_traits+is+not+a+member+of+std%22&btnG=Google+Search&aq=f&aqi=&oq=%22Error%3A+iterator_traits+is+not+a+member+of+std%22&fp=2bf6fc1127eea2c7 shows only 9 hits, about half of which are discussions about Sage and PolyBoRi. The old message with this error is over 6 years old, so I would assume if it was a compiler bug, Sun would have sorted it out in 6 years, but that is by no means certain. Dave -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org