On 03/15/16 09:28, François Bissey wrote:
On 03/15/16 05:23, Victor Shoup wrote:
That is a bummer with the C++11 issues.
The way I see it, C++11 is the future, and pretty much all
C++ must eventually deal with it.

Looking over the build issues with singular -- if the make files don't
respect CFLAGS or CXXFLAGS, then maybe one can make
the g++ command itself be a script that calls the "real" g++
with the right flags...


That's about the only thing I didn't try yet, having
CXX="g++ -std=c++11"
That may work. Some objects (that look like debugging objects)
are purposefully build without any *FLAGS so defining the
compiler is about the only way to get there.


Defining CXX="g++ -std=c++11" does work. At least singular compiles.

I will do a more comprehensive battery of tests in sage-on-gentoo as time allows.

* flint will also need some love for its ntl interface but it does
obey CXXFLAGS. And with CXXFLAGS="-std=c++11" it does compile and
passes it test suite.

* similarly eclib fails at configuration time but is able to take
CXXFLAGS. Compiles and passes its tests with CXXFLAGS="-std=c++11".

* linbox-1.3.2 fails to find ntl for the linboxsage library
but it will compile and work without it.
It does respect CXXFLAGS and will find ntl at configuration time
if CXXFLAGS="-std=c++11" is provided. Unfortunately compilation fails
in that case:
/bin/sh ../../libtool --tag=CXX --mode=compile x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -g -DNDEBUG -U_LB_DEBUG -DDISABLE_COMMENTATOR -std=c++11 -c -o diophantine-solver.lo diophantine-solver.C libtool: compile: x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -g -DNDEBUG -U_LB_DEBUG -DDISABLE_COMMENTATOR -std=c++11 -c diophantine-solver.C -fPIC -DPIC -o .libs/diophantine-solver.o
In file included from ../../linbox/vector/vector-domain-gf2.h:59:0,
                 from ../../linbox/vector/vector-domain.h:1293,
                 from ../../linbox/matrix/matrix-domain.h:42,
                 from ../../linbox/matrix/sparse.h:75,
                 from ../../linbox/blackbox/sparse.h:57,
                 from ../../linbox/blackbox/lambda-sparse.h:29,
                 from ../../linbox/algorithms/rational-solver.h:43,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:25:
../../linbox/field/gf2.h: In function 'void std::swap(std::_Bit_reference, std::_Bit_reference)': ../../linbox/field/gf2.h:985:14: error: redefinition of 'void std::swap(std::_Bit_reference, std::_Bit_reference)'
  inline void swap(stdBitReference __x, stdBitReference __y)
              ^
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4/vector:65:0,
                 from ../../linbox/util/debug.h:42,
                 from ../../linbox/algorithms/rational-solver.h:38,
                 from ../../linbox/algorithms/diophantine-solver.h:29,
                 from diophantine-solver.C:25:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/include/g++-v4/bits/stl_bvector.h:112:3: note: 'void std::swap(std::_Bit_reference, std::_Bit_reference)' previously defined here
   swap(_Bit_reference __x, _Bit_reference __y) noexcept
   ^

So linbox-1.3.2 would have to go without ntl support.
Cannot comment on more recent linbox at the moment but c++11 support was
requested by upstream for the upgrade currently under review. So should be OK.

* sage itself will probably need extra flags for anything that depends
on ntl.

In a way it is a partial c++11 support card for sage components.

Francois

--
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to