[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: attempt to build on Mac OS 10.6 (Snow Leopard)
From: |
John W. Eaton |
Subject: |
Re: attempt to build on Mac OS 10.6 (Snow Leopard) |
Date: |
Sun, 30 Aug 2009 23:48:00 -0400 |
On 30-Aug-2009, John W. Eaton wrote:
| On 30-Aug-2009, Ben Abbott wrote:
|
| | Thanks Joel. WIth Mac OS 10.6, I now get as far as ...
| |
| | g++-4 -c -I/sw/include -I/sw/include/freetype2 -I/sw/lib/flex/include -
| | I/sw/include -fPIC -I. -I.. -I../liboctave -I../src -I../libcruft/
| | misc -DHAVE_CONFIG_H -mieee-fp -I/sw/include/freetype2 -I/sw/include -
| | I/usr/X11/include -Wall -W -Wshadow -Wold-style-cast -Wformat -g -O2
| | -D_THREAD_SAFE lo-specfun.cc -o pic/lo-specfun.o
| | lo-specfun.cc: In function $,1rx(BComplex xlgamma(const
Complex&)$,1ry(B:
| | lo-specfun.cc:327: error: $,1rx(Blgamma_r$,1ry(B was not declared in
this scope
| | lo-specfun.cc: In function $,1rx(BFloatComplex xlgamma(const
FloatComplex&)$,1ry(B:
| | lo-specfun.cc:394: error: $,1rx(Blgammaf_r$,1ry(B was not declared in
this scope
| | make[2]: *** [pic/lo-specfun.o] Error 1
| | make[1]: *** [liboctave] Error 2
| | make: *** [all] Error 2
|
| Your system apparently has lgamma_r, but maybe something needs to be
| defined for it to be declared? On my system (Debian, using GNU libc)
| it is declared in math.h (actually, in bits/mathcalls.h, which is
| unconditionally included in math.h. It's declaration apparently
| requires __USE_MISC to be defined, but apparently it is by default.
| Of course, the details on OS X may be completely different, but maybe
| you could start by searching for declarations of lgamma in
| /usr/include?
Oh, I just found the page
http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/lgamma_r.3.html
Which says that you need to define _REENTRANT before including math.h
in order for lgamma_r to be declared. What happens if you make the
following change?
diff --git a/liboctave/lo-specfun.cc b/liboctave/lo-specfun.cc
--- a/liboctave/lo-specfun.cc
+++ b/liboctave/lo-specfun.cc
@@ -25,6 +25,12 @@
#include <config.h>
#endif
+#if !defined (_REENTRANT)
+#define _REENTRANT
+#endif
+#include <cmath>
+#undef _REENTRANT
+
#include "Range.h"
#include "CColVector.h"
#include "CMatrix.h"
If we include this change in Octave, then maybe we should restrict it
to OS X systems? Ugh. Is there a better way?
jwe