rawtherapee 4.0.7 build failure on 9-STABLE amd64
Matthias Andree
mandree at FreeBSD.org
Sat Mar 31 07:01:59 UTC 2012
Ruslan,
I cannot build rawtherapee 4.0.7 on 9-STABLE amd64,
re-running it after failure with "make MAKE_JOBS_UNSAFE=yes" yields:
[ 5%] Building CXX object rtengine/CMakeFiles/rtengine.dir/ipresize.cc.o
In file included from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/ipresize.cc:20:
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/improcfun.h:21:13:
warning: extra tokens at end of #ifndef directive
In file included from /usr/include/c++/4.2/cmath:54,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/../rtexif/rtexif.h:28,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/rtengine.h:28,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/imageio.h:30,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/imagefloat.h:25,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/improcfun.h:25,
from
/var/tmp/usr/ports/graphics/rawtherapee/work/rawtherapee-4.0.7/rtengine/ipresize.cc:20:
/usr/include/math.h:239: error: expected `)' before '/' token
*** Error code 1
math.h line 239 declares "double log2(double);", so I presume that
patch-rtengine_improcfun.h proves harmful here; the "#ifndef log2(x)" is
bogus if log2 isn't declared as macro (and is actually what breaks the
compile), and the macro is #define log2(x) ((log(x)/log(2)).
It might be more useful to do this instead:
static const double lnOf2 = log(2);
static inline double log2(double x) { return log(x)/lnOf2; }
or possibly checking math.h for log2() before adding the patch.
I'm afraid I won't have the time to do that now; could you?
Thanks.
Best,
Matthias
More information about the freebsd-ports
mailing list