On 20/02/16 02:07 +0000, Jonathan Wakely wrote:
The next problem is that gnulib defines:

inline int signbit (float f) { return _gl_cxx_signbitf (f); } inline
int signbit (double d) { return _gl_cxx_signbitd (d); } inline int
signbit (long double l) { return _gl_cxx_signbitl (l); }

GCC 6 provides a standard-conforming <math.h> which defines the same
signbit overloads (as required by C++11 and C++14).  So the gnulib
header is incompatible with any conforming C++11 implementation.


Here's a patch for Octave which hacks around the above problem in
gnulib and then fixes Octave to include gnulib headers explicitly,
instead of assuming they'll get found by GCC's std::lib.

I haven't waited for octave to finish building (it's after 3am here)
but if other files fail just #include <libgnu/math.h> or #include
<libgnu/stdlib.h> and it should work.

The gnulib change is a hack, a proper fix would only skip the signbit
overloads for __cplusplus >= 201103L, but would also make sure to
#undef signbit if there's an earlier #define signbit 1. Maybe that
should be done by defining @GNULIB_SIGNBIT@ to something different.

--- octave-4.0.0/libgnu/math.in.h.orig  2016-02-20 02:08:09.749957859 +0000
+++ octave-4.0.0/libgnu/math.in.h       2016-02-20 02:18:29.600429130 +0000
@@ -2204,7 +2204,7 @@
 #endif
 
 
-#if @GNULIB_SIGNBIT@
+#if @GNULIB_SIGNBIT@ && 0
 # if @REPLACE_SIGNBIT_USING_GCC@
 #  undef signbit
    /* GCC 4.0 and newer provides three built-ins for signbit.  */
--- octave-4.0.0/liboctave/array/Range.cc.orig  2016-02-20 02:24:21.519828963 
+0000
+++ octave-4.0.0/liboctave/array/Range.cc       2016-02-20 03:00:17.681405544 
+0000
@@ -29,6 +29,8 @@
 #include <iostream>
 #include <limits>
 
+#include <libgnu/math.h>
+
 #include "Range.h"
 #include "lo-error.h"
 #include "lo-mappers.h"
--- octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.cc.orig      2016-02-20 
02:33:21.204975673 +0000
+++ octave-4.0.0/liboctave/cruft/Faddeeva/Faddeeva.cc   2016-02-20 
02:33:31.664017276 +0000
@@ -157,6 +157,8 @@
 
 #ifdef __cplusplus
 
+#  include <libgnu/math.h>
+
 #  include "Faddeeva.hh"
 
 #  include <cfloat>
--- octave-4.0.0/liboctave/numeric/lo-mappers.cc.orig   2016-02-20 
02:46:27.409102963 +0000
+++ octave-4.0.0/liboctave/numeric/lo-mappers.cc        2016-02-20 
03:00:34.637472991 +0000
@@ -27,6 +27,8 @@
 
 #include <cfloat>
 
+#include <libgnu/math.h>
+
 #include "lo-error.h"
 #include "lo-ieee.h"
 #include "lo-mappers.h"
--- octave-4.0.0/liboctave/numeric/lo-specfun.cc.orig   2016-02-20 
02:47:00.785235724 +0000
+++ octave-4.0.0/liboctave/numeric/lo-specfun.cc        2016-02-20 
02:47:09.936272124 +0000
@@ -26,6 +26,7 @@
 #include <config.h>
 #endif
 
+#include <libgnu/math.h>
 #include "Range.h"
 #include "CColVector.h"
 #include "CMatrix.h"
--- octave-4.0.0/liboctave/util/cmd-edit.cc.orig        2016-02-20 
02:47:30.192352697 +0000
+++ octave-4.0.0/liboctave/util/cmd-edit.cc     2016-02-20 03:00:42.914505914 
+0000
@@ -32,6 +32,8 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <libgnu/stdlib.h>
+
 #include "quit.h"
 
 #include "cmd-edit.h"
--- octave-4.0.0/liboctave/util/lo-utils.cc.orig        2016-02-20 
02:48:55.376691535 +0000
+++ octave-4.0.0/liboctave/util/lo-utils.cc     2016-02-20 03:00:52.644544618 
+0000
@@ -37,6 +37,8 @@
 #include <sys/types.h>
 #include <unistd.h>
 
+#include <libgnu/stdlib.h>
+
 #include "quit.h"
 
 #include "lo-error.h"
--- octave-4.0.0/libinterp/parse-tree/oct-parse.cc.orig 2016-02-20 
02:56:51.446585202 +0000
+++ octave-4.0.0/libinterp/parse-tree/oct-parse.cc      2016-02-20 
02:57:19.782697915 +0000
@@ -90,6 +90,8 @@
 #include <map>
 #include <sstream>
 
+#include <libgnu/stdlib.h>
+
 #include "Cell.h"
 #include "Matrix.h"
 #include "cmd-edit.h"
--- octave-4.0.0/libinterp/octave-value/ov-scalar.cc.orig       2016-02-20 
03:02:12.267861336 +0000
+++ octave-4.0.0/libinterp/octave-value/ov-scalar.cc    2016-02-20 
03:02:20.363893540 +0000
@@ -26,6 +26,8 @@
 
 #include <iostream>
 
+#include <libgnu/math.h>
+
 #include "data-conv.h"
 #include "mach-info.h"
 #include "lo-specfun.h"
--- octave-4.0.0/libinterp/octave-value/ov-re-mat.cc.orig       2016-02-20 
03:02:56.003035302 +0000
+++ octave-4.0.0/libinterp/octave-value/ov-re-mat.cc    2016-02-20 
03:02:58.451045039 +0000
@@ -29,6 +29,8 @@
 #include <limits>
 #include <vector>
 
+#include <libgnu/math.h>
+
 #include "data-conv.h"
 #include "lo-ieee.h"
 #include "lo-utils.h"
--- octave-4.0.0/libinterp/octave-value/ov-float.cc.orig        2016-02-20 
03:03:10.763094013 +0000
+++ octave-4.0.0/libinterp/octave-value/ov-float.cc     2016-02-20 
03:03:18.556125011 +0000
@@ -26,6 +26,8 @@
 
 #include <iostream>
 
+#include <libgnu/math.h>
+
 #include "data-conv.h"
 #include "mach-info.h"
 #include "lo-specfun.h"
--- octave-4.0.0/libinterp/octave-value/ov-cell.cc.orig 2016-02-20 
02:57:49.484816062 +0000
+++ octave-4.0.0/libinterp/octave-value/ov-cell.cc      2016-02-20 
03:04:25.203390114 +0000
@@ -31,6 +31,9 @@
 #include <vector>
 #include <queue>
 
+#include <libgnu/stdlib.h>
+#include <libgnu/math.h>
+
 #include "Array-util.h"
 #include "byte-swap.h"
 #include "lo-utils.h"
--- octave-4.0.0/libinterp/octave-value/ov-flt-re-mat.cc.orig   2016-02-20 
03:06:10.762809999 +0000
+++ octave-4.0.0/libinterp/octave-value/ov-flt-re-mat.cc        2016-02-20 
03:05:21.411613695 +0000
@@ -29,6 +29,8 @@
 #include <limits>
 #include <vector>
 
+#include <libgnu/math.h>
+
 #include "data-conv.h"
 #include "lo-ieee.h"
 #include "lo-utils.h"
--- octave-4.0.0/libinterp/corefcn/data.cc.orig 2016-02-20 03:05:52.339736718 
+0000
+++ octave-4.0.0/libinterp/corefcn/data.cc      2016-02-20 03:06:02.899778722 
+0000
@@ -39,6 +39,8 @@
 
 #include <string>
 
+#include <libgnu/math.h>
+
 #include "lo-ieee.h"
 #include "lo-math.h"
 #include "oct-base64.h"
--- octave-4.0.0/libinterp/corefcn/gcd.cc.orig  2016-02-20 03:08:23.250336996 
+0000
+++ octave-4.0.0/libinterp/corefcn/gcd.cc       2016-02-20 03:08:28.618358348 
+0000
@@ -25,6 +25,8 @@
 #include <config.h>
 #endif
 
+#include <libgnu/math.h>
+
 #include "dNDArray.h"
 #include "CNDArray.h"
 #include "fNDArray.h"
--- octave-4.0.0/libinterp/corefcn/file-io.cc.orig      2016-02-20 
03:08:49.345440932 +0000
+++ octave-4.0.0/libinterp/corefcn/file-io.cc   2016-02-20 03:09:01.625492941 
+0000
@@ -54,6 +54,8 @@
 #include <zlib.h>
 #endif
 
+#include <libgnu/stdlib.h>
+
 #include "error.h"
 #include "file-ops.h"
 #include "file-stat.h"
--- octave-4.0.0/libinterp/corefcn/graphics.cc.orig     2016-02-20 
03:09:39.754654427 +0000
+++ octave-4.0.0/libinterp/corefcn/graphics.cc  2016-02-20 03:09:50.243698850 
+0000
@@ -36,6 +36,8 @@
 #include <string>
 #include <sstream>
 
+#include <libgnu/math.h>
+
 #include "cmd-edit.h"
 #include "file-ops.h"
 #include "file-stat.h"
--- octave-4.0.0/libinterp/corefcn/rand.cc.orig 2016-02-20 03:15:54.087239817 
+0000
+++ octave-4.0.0/libinterp/corefcn/rand.cc      2016-02-20 03:15:57.967256250 
+0000
@@ -34,6 +34,8 @@
 #endif
 #include <string>
 
+#include <libgnu/math.h>
+
 #include "f77-fcn.h"
 #include "lo-mappers.h"
 #include "oct-rand.h"
--- octave-4.0.0/libinterp/corefcn/sysdep.cc.orig       2016-02-20 
03:16:57.808509692 +0000
+++ octave-4.0.0/libinterp/corefcn/sysdep.cc    2016-02-20 03:17:09.071557394 
+0000
@@ -60,6 +60,8 @@
 #include <ieeefp.h>
 #endif
 
+#include <libgnu/stdlib.h>
+
 #include "cmd-edit.h"
 #include "file-ops.h"
 #include "lo-mappers.h"
--
devel mailing list
devel@lists.fedoraproject.org
http://lists.fedoraproject.org/admin/lists/devel@lists.fedoraproject.org

Reply via email to