Use of undeclared identifier 'fpgetmask'
Jan Beich
jbeich at FreeBSD.org
Tue Jan 30 22:15:33 UTC 2018
bob prohaska <fbsd at www.zefox.net> writes:
> On Mon, Jan 22, 2018 at 10:14:26AM -0800, Steve Kargl wrote:
>
>> On Mon, Jan 22, 2018 at 08:48:48AM -0800, bob prohaska wrote:
>> > > What happens if you force inclusion by deleting #ifdef HAVE_IEEEFP_H?
>> > >
>> > After commenting out the test, running make clean and restarting a single-
>> > threaded make the process stops with the same error:
>> >
>> > src/main.cpp:679:15: error: use of undeclared identifier 'fpgetmask'
>> > fpsetmask(fpgetmask() & ~(FP_X_DZ | FP_X_INV));
>> >
>> >
>> > I've placed a copy of the make log file at
>> > http://www.zefox.net/~fbsd/rpi2/inkscape/ieeefp_h_included.log
>> >
>>
>> rpi2 is an ARM based board, right? Compare
>> /usr/src/sys/amd64/include/ieeefp.h
>> /usr/src/sys/arm/include/ieeefp.h
>> It seems that FreeBSD' ARM architecture doesn't implement
>> the functions associate with ieeefp.h. You probably need
>> to force HAVE_IEEEF_H to 0.
>
> It looks as if there's no option to set HAVE_IEEEFP_H to zero,
> at least not in a straightforward way. Poking around in
> /usr/ports/graphics/inkscape/work/inkscape-0.92.2 one finds
> a README which describes two manual build procedures, but
> those seem to automate the setting of HAVE_IEEEFP_H
>
> The relevant lines appear to be:
>
> for ac_header in ieeefp.h
> do :
> ac_fn_cxx_check_header_mongrel "$LINENO" "ieeefp.h" "ac_cv_header_ieeefp_h" "$ac_includes_default"
> if test "x$ac_cv_header_ieeefp_h" = xyes; then :
> cat >>confdefs.h <<_ACEOF
> #define HAVE_IEEEFP_H 1
> _ACEOF
autoconf often supports overriding e.g.,
CONFIGURE_ENV += ac_cv_header_ieeefp_h=no
CONFIGURE_ENV += ac_cv_func_setmask=no
except those would be nop due to USES=cmake.
> main.cpp:679:15: error: use of undeclared identifier 'fpgetmask'
> fpsetmask(fpgetmask() & ~(FP_X_DZ | FP_X_INV));
CMakeScripts/ConfigChecks.cmake has the following line
CHECK_FUNCTION_EXISTS(fpsetmask HAVE_FPSETMASK)
which is under the following caveat
* ``check_function_exists()`` only verifies linking, it does not verify
that the function is declared in system headers.
suggesting fpsetmask() is actually present on armv6
$ nm -D /lib/libc.so.7 | fgrep fpsetmask
00050dd4 T fpsetmask
cf. https://svnweb.freebsd.org/changeset/base/264696
More information about the freebsd-arm
mailing list