Bug#443234: Inconsistent definition of _GLIBCXX_USE_C99 across arches
Package: libstdc++6-4.1-dev
Version: 4.1.2-15
Severity: important
Investigating why stlport5.1 fails to build from sources on arm[1] and
mips[2] shows that _GLIBCXX_USE_C99 is defined inconsistently across
platforms.
The following C++ snippet:
#include <cstdlib>
int main(int argc, char* argv[]) {
long long int l = std::llabs(0LL);
return (int) l;
}
compiles fine on my amd64 box with `g++ stlportftbfs.cc', but on mips I get:
stlportftbfs.cc: In function 'int main(int, char**)':
stlportftbfs.cc:3: error: 'llabs' is not a member of 'std'
Adding `-D_GLIBCXX_USE_C99' makes the program compile on mips[3]. The
difference seems to come from /usr/include/c++/4.1/$arch/bits/c++config.h
which #define _GLIBCXX_USE_C99 on some arches but not on others.
Having a look a libstdc++-dev 4.2.1-5 headers on mips show that the
macro is still not defined, but I have not been able to test with the
snippet.
Adding unconditionally -D_GLIBCXX_USE_C99 when compiling stlport5.1
might work, but I'm not sure it's the way to go. Shouldn't g++ rather
provide similar features (if doable) on all arches we support?
Regards,
Thomas
[1] http://buildd.debian.org/fetch.cgi?&pkg=stlport5.1&ver=5.1.3-3&arch=arm&stamp=1187913269&file=log
[2] http://buildd.debian.org/fetch.cgi?&pkg=stlport5.1&ver=5.1.3-3&arch=mips&stamp=1187912520&file=log
[3] and `-D_GNU_SOURCE' does not help
Reply to: