[PPL-devel] Duplicate code between ppl-1.0 and gmp-5.1.0
Roberto Bagnara
bagnara at cs.unipr.it
Sat Dec 22 11:06:58 CET 2012
On 12/22/12 09:31, Алексей Павлов wrote:
> Hi!
> New gmp-5.1.0 conflicting with ppl-1.0. When I try to build ppl-1.0 I got errors:
>
> libtool: compile: i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I../../../mingw-sources/ppl-1.0/src -I.. -I.. -I../../../mingw-sources/ppl-1.0/src -I/temp/mingw-prereq/i686-w64-mingw32-static/include -g -O2 -frounding-math -march=nocona -mtune=nocona -O2 -pipe -fomit-frame-pointer -W -Wall -MT assert.lo -MD -MP -MF .deps/assert.Tpo -c ../../../mingw-sources/ppl-1.0/src/assert.cc -o assert.o
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.types.hh:16,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.defs.hh:27,
> from ../../../mingw-sources/ppl-1.0/src/Box.defs.hh:29,
> from ../../../mingw-sources/ppl-1.0/src/Box.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:47:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.types.hh:16,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.defs.hh:27,
> from ../../../mingw-sources/ppl-1.0/src/Box.defs.hh:29,
> from ../../../mingw-sources/ppl-1.0/src/Box.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3269:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.types.hh:16,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.defs.hh:27,
> from ../../../mingw-sources/ppl-1.0/src/Box.defs.hh:29,
> from ../../../mingw-sources/ppl-1.0/src/Box.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:108:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.types.hh:16,
> from ../../../mingw-sources/ppl-1.0/src/Coefficient.defs.hh:27,
> from ../../../mingw-sources/ppl-1.0/src/Box.defs.hh:29,
> from ../../../mingw-sources/ppl-1.0/src/Box.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3306:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/checked.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:47:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/checked.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3269:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/checked.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:108:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/checked.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3306:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> mv -f .deps/assert.Tpo .deps/assert.Plo
> /bin/sh ../libtool --tag=CXX --mode=compile i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I../../../mingw-sources/ppl-1.0/src -I.. -I.. -I../../../mingw-sources/ppl-1.0/src -I/temp/mingw-prereq/i686-w64-mingw32-static/include -g -O2 -frounding-math -march=nocona -mtune=nocona -O2 -pipe -fomit-frame-pointer -W -Wall -MT Checked_Number.lo -MD -MP -MF .deps/Checked_Number.Tpo -c -o Checked_Number.lo ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc
> make[3]: *** [checked.lo] Error 1
> make[3]: *** Waiting for unfinished jobs....
> libtool: compile: i686-w64-mingw32-g++ -DHAVE_CONFIG_H -I. -I../../../mingw-sources/ppl-1.0/src -I.. -I.. -I../../../mingw-sources/ppl-1.0/src -I/temp/mingw-prereq/i686-w64-mingw32-static/include -g -O2 -frounding-math -march=nocona -mtune=nocona -O2 -pipe -fomit-frame-pointer -W -Wall -MT Checked_Number.lo -MD -MP -MF .deps/Checked_Number.Tpo -c ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc -o Checked_Number.o
> make[3]: *** [Box.lo] Error 1
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:47:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3269:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:30:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc:25:
> ../../../mingw-sources/ppl-1.0/src/mp_std_bits.defs.hh:108:7: error: redefinition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> In file included from ../../../mingw-sources/ppl-1.0/src/checked.defs.hh:29:0,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.defs.hh:28,
> from ../../../mingw-sources/ppl-1.0/src/Checked_Number.cc:25:
> C:/gccbuild/msys/temp/mingw-prereq/i686-w64-mingw32-static/include/gmpxx.h:3306:21: error: previous definition of 'class std::numeric_limits<__gmp_expr<__mpq_struct [1], __mpq_struct [1]> >'
> make[3]: *** [Checked_Number.lo] Error 1
> make[3]: Leaving directory `/temp/prereq-build/x32-ppl-1.0-static/src'
> make[2]: *** [all] Error 2
> make[2]: Leaving directory `/temp/prereq-build/x32-ppl-1.0-static/src'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/temp/prereq-build/x32-ppl-1.0-static'
> make: *** [all] Error 2
>
> I resolve this by remove duplicate code from src/mp_std_bits.defs.hh and src/mp_std_bits.cc
Hello Alexey,
thanks for the report. Indeed, previous versions of GMP did not
define std::numeric_limits for its data types. That is why we were
defining these specializations ourselves. Immediately after the
release of GMP 5.1.0 we made that code conditional on the version of
GMP. Both the Git version of the PPL and the snapshot of PPL 1.1
available at
http://bugseng.com/products/ppl/download/ftp/snapshots/
contain the correction.
Kind regards,
Roberto
--
Prof. Roberto Bagnara
Applied Formal Methods Laboratory - University of Parma, Italy
mailto:bagnara at cs.unipr.it
BUGSENG srl - http://bugseng.com
mailto:roberto.bagnara at bugseng.com
More information about the PPL-devel
mailing list