Integrate patches inside git repository
[hvlinux.git] / stage0 / patches / common / ppl-0.12.1-resolve-conflicts-with-gmp-5.1.0.patch
diff --git a/stage0/patches/common/ppl-0.12.1-resolve-conflicts-with-gmp-5.1.0.patch b/stage0/patches/common/ppl-0.12.1-resolve-conflicts-with-gmp-5.1.0.patch
new file mode 100644 (file)
index 0000000..1c1d1b8
--- /dev/null
@@ -0,0 +1,130 @@
+Submitted By: Hugo Villeneuve <hugo at hugovil dot com>
+Date: 2013-06-01
+Initial Package Version: 0.12.1
+Upstream Status: Not sent
+Origin: https://raw.github.com/niXman/mingw-builds/master/patches/ppl/ppl-resolve-conflicts-with-gmp-5.1.0.patch
+Description: Fix compilation errors similar to that:
+
+    error: redefinition of 'class > std::numeric_limits<__gmp_expr<__mpz_struct [1], __mpz_struct [1]> >'
+
+GMP version 5.1.0 (and, presumably, later versions) defines std::numeric_limits.
+
+diff -Naur ppl-0.12.1.orig/src/mp_std_bits.cc ppl-0.12.1.patched/src/mp_std_bits.cc
+--- ppl-0.12.1.orig/src/mp_std_bits.cc 2012-04-16 08:12:30.000000000 -0400
++++ ppl-0.12.1.patched/src/mp_std_bits.cc      2013-05-31 09:57:56.453911121 -0400
+@@ -25,6 +25,9 @@
+ #include "ppl-config.h"
+ #include "mp_std_bits.defs.hh"
++#if __GNU_MP_VERSION < 5 \
++  || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
++
+ const bool std::numeric_limits<mpz_class>::is_specialized;
+ const int std::numeric_limits<mpz_class>::digits;
+ const int std::numeric_limits<mpz_class>::digits10;
+@@ -70,3 +73,6 @@
+ const bool std::numeric_limits<mpq_class>::traps;
+ const bool std::numeric_limits<mpq_class>::tininess_before;
+ const std::float_round_style std::numeric_limits<mpq_class>::round_style;
++
++#endif // __GNU_MP_VERSION < 5
++       // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
+diff -Naur ppl-0.12.1.orig/src/mp_std_bits.cc.orig ppl-0.12.1.patched/src/mp_std_bits.cc.orig
+--- ppl-0.12.1.orig/src/mp_std_bits.cc.orig    1969-12-31 19:00:00.000000000 -0500
++++ ppl-0.12.1.patched/src/mp_std_bits.cc.orig 2012-04-16 08:12:30.000000000 -0400
+@@ -0,0 +1,72 @@
++/* Definitions of specializations of std::numeric_limits objects for
++   multi-precision types.
++   Copyright (C) 2001-2010 Roberto Bagnara <bagnara@cs.unipr.it>
++   Copyright (C) 2010-2012 BUGSENG srl (http://bugseng.com)
++
++This file is part of the Parma Polyhedra Library (PPL).
++
++The PPL is free software; you can redistribute it and/or modify it
++under the terms of the GNU General Public License as published by the
++Free Software Foundation; either version 3 of the License, or (at your
++option) any later version.
++
++The PPL is distributed in the hope that it will be useful, but WITHOUT
++ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
++FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
++for more details.
++
++You should have received a copy of the GNU General Public License
++along with this program; if not, write to the Free Software Foundation,
++Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1307, USA.
++
++For the most up-to-date information see the Parma Polyhedra Library
++site: http://bugseng.com/products/ppl/ . */
++
++#include "ppl-config.h"
++#include "mp_std_bits.defs.hh"
++
++const bool std::numeric_limits<mpz_class>::is_specialized;
++const int std::numeric_limits<mpz_class>::digits;
++const int std::numeric_limits<mpz_class>::digits10;
++const bool std::numeric_limits<mpz_class>::is_signed;
++const bool std::numeric_limits<mpz_class>::is_integer;
++const bool std::numeric_limits<mpz_class>::is_exact;
++const int std::numeric_limits<mpz_class>::radix;
++const int std::numeric_limits<mpz_class>::min_exponent;
++const int std::numeric_limits<mpz_class>::min_exponent10;
++const int std::numeric_limits<mpz_class>::max_exponent;
++const int std::numeric_limits<mpz_class>::max_exponent10;
++const bool std::numeric_limits<mpz_class>::has_infinity;
++const bool std::numeric_limits<mpz_class>::has_quiet_NaN;
++const bool std::numeric_limits<mpz_class>::has_signaling_NaN;
++const std::float_denorm_style std::numeric_limits<mpz_class>::has_denorm;
++const bool std::numeric_limits<mpz_class>::has_denorm_loss;
++const bool std::numeric_limits<mpz_class>::is_iec559;
++const bool std::numeric_limits<mpz_class>::is_bounded;
++const bool std::numeric_limits<mpz_class>::is_modulo;
++const bool std::numeric_limits<mpz_class>::traps;
++const bool std::numeric_limits<mpz_class>::tininess_before;
++const std::float_round_style std::numeric_limits<mpz_class>::round_style;
++
++const bool std::numeric_limits<mpq_class>::is_specialized;
++const int std::numeric_limits<mpq_class>::digits;
++const int std::numeric_limits<mpq_class>::digits10;
++const bool std::numeric_limits<mpq_class>::is_signed;
++const bool std::numeric_limits<mpq_class>::is_integer;
++const bool std::numeric_limits<mpq_class>::is_exact;
++const int std::numeric_limits<mpq_class>::radix;
++const int std::numeric_limits<mpq_class>::min_exponent;
++const int std::numeric_limits<mpq_class>::min_exponent10;
++const int std::numeric_limits<mpq_class>::max_exponent;
++const int std::numeric_limits<mpq_class>::max_exponent10;
++const bool std::numeric_limits<mpq_class>::has_infinity;
++const bool std::numeric_limits<mpq_class>::has_quiet_NaN;
++const bool std::numeric_limits<mpq_class>::has_signaling_NaN;
++const std::float_denorm_style std::numeric_limits<mpq_class>::has_denorm;
++const bool std::numeric_limits<mpq_class>::has_denorm_loss;
++const bool std::numeric_limits<mpq_class>::is_iec559;
++const bool std::numeric_limits<mpq_class>::is_bounded;
++const bool std::numeric_limits<mpq_class>::is_modulo;
++const bool std::numeric_limits<mpq_class>::traps;
++const bool std::numeric_limits<mpq_class>::tininess_before;
++const std::float_round_style std::numeric_limits<mpq_class>::round_style;
+diff -Naur ppl-0.12.1.orig/src/mp_std_bits.defs.hh ppl-0.12.1.patched/src/mp_std_bits.defs.hh
+--- ppl-0.12.1.orig/src/mp_std_bits.defs.hh    2012-04-16 08:12:30.000000000 -0400
++++ ppl-0.12.1.patched/src/mp_std_bits.defs.hh 2013-05-31 09:57:56.453911121 -0400
+@@ -38,6 +38,9 @@
+ #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
+ void swap(mpq_class& x, mpq_class& y);
++#if __GNU_MP_VERSION < 5 \
++  || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
++
+ namespace std {
+ #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
+@@ -164,6 +167,9 @@
+ } // namespace std
++#endif // __GNU_MP_VERSION < 5
++       // || (__GNU_MP_VERSION == 5 && __GNU_MP_VERSION_MINOR < 1)
++
+ #include "mp_std_bits.inlines.hh"
+ #endif // !defined(PPL_mp_std_bits_defs_hh)