1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
# wm_libmath.m4 - Macros to check proper libMath usage for WINGs
#
# Copyright (c) 2013 Christophe Curis
#
# This program 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 2 of the License, or
# (at your option) any later version.
#
# This program 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 02110-1301 USA.
# WM_CHECK_LIBM
# -------------
#
# Checks the needed library link flags needed to have math lib
# Sets variable LIBM with the appropriates flags
AC_DEFUN_ONCE([WM_CHECK_LIBM],
[AC_CHECK_HEADER([math.h], [],
[AC_MSG_ERROR([header for math library not found])])
AC_CHECK_FUNC(atan,
[LIBM=],
[AC_CHECK_LIB(m, [atan],
[LIBM=-lm],
[AC_MSG_WARN(Could not find Math library, you may experience problems)
LIBM=] )] ) dnl
AC_CACHE_CHECK([if M_PI is defined in math.h], [wm_cv_libm_pi],
[wm_cv_libm_pi="no"
wm_save_CFLAGS="$CFLAGS"
for wm_arg in dnl
"% yes" dnl natively available (Unix98 compliant?)
"-D_XOPEN_SOURCE=500" ; dnl Explicit request
do
AS_IF([wm_fn_lib_try_compile "math.h" "double val;" "val = M_PI" dnl
"`echo "$wm_arg" | sed -e 's, *%.*$,,' `"],
[wm_cv_libm_pi="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break])
done
CFLAGS="$wm_save_CFLAGS"])
AS_IF([test "x$wm_cv_libm_pi" = "xno"],
[AC_DEFINE([WM_PI], [(3.14159265358979323846)],
[Defines how to access the value of Pi])],
[AC_DEFINE([WM_PI], [(M_PI)],
[Defines how to access the value of Pi])
AS_IF([test "x$wm_cv_libm_pi" != "xyes"],
[CFLAGS="$CFLAGS $wm_cv_libm_pi"]) ])
AC_CACHE_CHECK([if sinf+cosf are defined in math.h], [wm_cv_libm_sinf],
[wm_cv_libm_sinf="no"
wm_save_CFLAGS="$CFLAGS"
wm_save_LIBS="$LIBS"
LIBS="$LIBS $LIBM"
for wm_arg in dnl
"% yes" dnl natively available (C99 compliant)
"-D_XOPEN_SOURCE=600" ; dnl Explicit request
do
CFLAGS="$wm_save_CFLAGS `echo "$wm_arg" | sed -e 's, *%.*$,,' `"
AC_LINK_IFELSE([AC_LANG_PROGRAM([dnl
@%:@include <math.h>
], [dnl
float a, b;
a = WM_PI;
b = sqrtf(a);
a = atan2f(a, b);
b = cosf(a);
a = sinf(b);
a = powf(a, b);
return (int)a;])],
[wm_cv_libm_sinf="`echo "$wm_arg" | sed -e 's,^.*% *,,' `" ; break])
done
LIBS="$wm_save_LIBS"
CFLAGS="$wm_save_CFLAGS"])
AS_IF([test "x$wm_cv_libm_sinf" != "xno"],
[AC_DEFINE([HAVE_FLOAT_MATHFUNC], [1],
[Defined if the 'float'-typed math function are available (sinf, cosf)])
AS_IF([test "x$wm_cv_libm_sinf" != "xyes"],
[CFLAGS="$CFLAGS $wm_cd_libm_sinf"]) ])
AC_SUBST(LIBM) dnl
])
|