public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* Re: [Patch] libgfortran: do not assume libm
@ 2012-03-20  9:49 Tobias Burnus
  2012-03-20  9:57 ` Tristan Gingold
  2012-03-22  8:30 ` [Patch V2] " Tristan Gingold
  0 siblings, 2 replies; 17+ messages in thread
From: Tobias Burnus @ 2012-03-20  9:49 UTC (permalink / raw)
  To: Tristan Gingold, GCC Patches, fortran

Hi Tristan,

> I am starting to build fortran for VMS.

Thanks for the patch and this endeavor.

> The first serious issue was with libgfortran/configure.  It checks for
> several math functions, but directly in libm using AC_CHECK_LIB.
> But there is on such things as libm on VMS systems 

I think after building you will run into the same issue when using
gfortran. The linking of -lm is hardcoded in gcc/fortran/gfortranspec.c
(search there for MATH_LIBRARY).

And it is hard coded in libgfortran/libgfortran.spec.in and in the
as-needed check of libgfortran/acinclude.m4 within a libquadmath check.

Talking about libquadmath, its libquadmath/configure.ac has the same issue.

 * * *

To your patch:

First, I am far from being a configure expert and thus would like if
a build maintainer could have a look (or Janne, who seems to have also
more experience.)


I don't understand the purpose of the line:

+# Check for libm
+AC_CHECK_LIB([m],[sin])

Except of printing to stdout and to the logs whether -lm is available and
contains "sin", it doesn't seem to do anything. If that's the purpose, I think
it needs a better comment. If not, I would like to know its purpose.

Otherwise, the patch looks fine to me - but as written, I would like if
someone else (build maintainer, Janne, ...) could have a look.

Tobias

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch] libgfortran: do not assume libm
  2012-03-20  9:49 [Patch] libgfortran: do not assume libm Tobias Burnus
@ 2012-03-20  9:57 ` Tristan Gingold
  2012-03-22  8:30 ` [Patch V2] " Tristan Gingold
  1 sibling, 0 replies; 17+ messages in thread
From: Tristan Gingold @ 2012-03-20  9:57 UTC (permalink / raw)
  To: Tobias Burnus; +Cc: GCC Patches, fortran


On Mar 20, 2012, at 10:48 AM, Tobias Burnus wrote:

> Hi Tristan,
> 
>> I am starting to build fortran for VMS.
> 
> Thanks for the patch and this endeavor.
> 
>> The first serious issue was with libgfortran/configure.  It checks for
>> several math functions, but directly in libm using AC_CHECK_LIB.
>> But there is on such things as libm on VMS systems 
> 
> I think after building you will run into the same issue when using
> gfortran. The linking of -lm is hardcoded in gcc/fortran/gfortranspec.c
> (search there for MATH_LIBRARY).

A target may redefine MATH_LIBRARY to "" to avoid linking with -lm, and this is
correctly handled by gfortranspec.c.  After defining MATH_LIBRARY in vms.h, I was
able to cross build a hello whorl fortran program.

So that part is already correctly handled!

> And it is hard coded in libgfortran/libgfortran.spec.in and in the
> as-needed check of libgfortran/acinclude.m4 within a libquadmath check.
> 
> Talking about libquadmath, its libquadmath/configure.ac has the same issue.

I have to check that.  I was able to build libquadmath without errors, but I
didn't look at config.log, so I may have missed issues.

> * * *
> 
> To your patch:
> 
> First, I am far from being a configure expert and thus would like if
> a build maintainer could have a look (or Janne, who seems to have also
> more experience.)

Sure.

> I don't understand the purpose of the line:
> 
> +# Check for libm
> +AC_CHECK_LIB([m],[sin])
> 
> Except of printing to stdout and to the logs whether -lm is available and
> contains "sin", it doesn't seem to do anything. If that's the purpose, I think
> it needs a better comment. If not, I would like to know its purpose.

The purpose is to check for the presence of -libm.  If found, all tests will be linked
with -lm, which is necessary for the following tests on regular platform.  Indeed, I
should improve the documentation.

> Otherwise, the patch looks fine to me - but as written, I would like if
> someone else (build maintainer, Janne, ...) could have a look.

Thank you for your prompt reply,
Tristan.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Patch V2] libgfortran: do not assume libm
  2012-03-20  9:49 [Patch] libgfortran: do not assume libm Tobias Burnus
  2012-03-20  9:57 ` Tristan Gingold
@ 2012-03-22  8:30 ` Tristan Gingold
  2012-03-22 10:07   ` Paolo Bonzini
  1 sibling, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-22  8:30 UTC (permalink / raw)
  To: Tobias Burnus; +Cc: GCC Patches, fortran, Ralf Corsepius, Paolo Bonzini, jb

Hi,

this is version 2 of the patch.

The initial problem is that libgfortran configure.ac used AC_CHECK_LIB([m]…) to check wether several math functions are available.  That doesn't work on VMS, because there is no such things as a libm.

It seems to me that there are no autoconf macro to check wether a function is available: AC_CHECK_FUNC[S] don't allow to specify additional include files (necessary on VMS as some math functions are renamed through macros), and AC_CHECK_DECL only checks the presence of the declaration (as pointed out by Ralf).

So I have finally learnt a little bit more about autoconf and added a new file: config/math.m4 (build machinery maintainer cc:)
libgfortran/configure.ac now uses the new GCC_CHECK_MATH_FUNC macro.

Bootstrapped without gfortran regressions on x86_64-darwin.

Ok for trunk ?

(I will submit a follow-up change in libquadmath once this change is approved).

Tristan.

config/
2012-03-22  Tristan Gingold  <gingold@adacore.com>

	* math.m4: New file.

libgfortran/
2012-03-22  Tristan Gingold  <gingold@adacore.com>

	* configure.ac: Use GCC_CHECK_MATH_FUNC for math functions.
	* acinclude.m4: Include ../config/math.m4
	* configure: Regenerate.
	* Makefile.in: Regenerate.


diff --git a/config/math.m4 b/config/math.m4
new file mode 100644
index 0000000..ceb29b4
--- /dev/null
+++ b/config/math.m4
@@ -0,0 +1,49 @@
+dnl GCC_CHECK_LIBM
+dnl
+dnl Check wether -lm is available.  This is a pre-requisite for
+dnl GCC_CHECK_MATH_FUNC so that it will link with -lm.
+AC_DEFUN([GCC_CHECK_LIBM],
+[AC_CHECK_LIB([m],[sin])])
+
+dnl GCC_CHECK_MATH_HEADERS
+dnl
+dnl Check for math.h and complex.h.  This is a pre-requisite for
+dnl GCC_CHECK_MATH_FUNC so that it includes the right headers.
+dnl (Some systems, such as AIX or OpenVMS may define macro for math
+dnl  functions).
+AC_DEFUN([GCC_CHECK_MATH_HEADERS],
+[AC_CHECK_HEADERS_ONCE(math.h complex.h)])
+
+dnl GCC_CHECK_MATH_FUNC([name],[if-present])
+dnl
+dnl Check wether math function NAME is available on the system (by compiling
+dnl and linking a C program) and run if-present on success.
+dnl
+dnl Note that OpenVMS system insists on including complex.h before math.h
+AC_DEFUN([GCC_CHECK_MATH_FUNC],
+[
+  AC_REQUIRE([GCC_CHECK_LIBM])
+  AC_REQUIRE([GCC_CHECK_MATH_HEADERS])
+  AC_CACHE_CHECK([for $1], [gcc_cv_math_func_$1],
+		 [AC_LINK_IFELSE([
+#ifdef HAVE_COMPLEX_H
+#include <complex.h>
+#endif
+#ifdef HAVE_MATH_H
+#include <math.h>
+#endif
+
+int (*ptr)() = (int (*)())$1;
+
+int
+main ()
+{
+  return 0;
+}
+],
+[gcc_cv_math_func_$1=yes],
+[gcc_cv_math_func_$1=no])])
+  if test $gcc_cv_math_func_$1 = yes; then
+    $2
+  fi
+])
diff --git a/libgfortran/acinclude.m4 b/libgfortran/acinclude.m4
index d4acf76..1b11e6a 100644
--- a/libgfortran/acinclude.m4
+++ b/libgfortran/acinclude.m4
@@ -1,5 +1,6 @@
 m4_include(../config/acx.m4)
 m4_include(../config/no-executables.m4)
+m4_include(../config/math.m4)
 
 dnl Check that we have a working GNU Fortran compiler
 AC_DEFUN([LIBGFOR_WORKING_GFORTRAN], [
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 7011a93..0f29804 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -269,191 +269,191 @@ getcwd localtime_r gmtime_r strerror_r getpwuid_r ttyname_r clock_gettime \
 readlink getgid getpid getppid getuid geteuid umask)
 
 # Check for C99 (and other IEEE) math functions
-AC_CHECK_LIB([m],[acosf],[AC_DEFINE([HAVE_ACOSF],[1],[libm includes acosf])])
-AC_CHECK_LIB([m],[acos],[AC_DEFINE([HAVE_ACOS],[1],[libm includes acos])])
-AC_CHECK_LIB([m],[acosl],[AC_DEFINE([HAVE_ACOSL],[1],[libm includes acosl])])
-AC_CHECK_LIB([m],[acoshf],[AC_DEFINE([HAVE_ACOSHF],[1],[libm includes acoshf])])
-AC_CHECK_LIB([m],[acosh],[AC_DEFINE([HAVE_ACOSH],[1],[libm includes acosh])])
-AC_CHECK_LIB([m],[acoshl],[AC_DEFINE([HAVE_ACOSHL],[1],[libm includes acoshl])])
-AC_CHECK_LIB([m],[asinf],[AC_DEFINE([HAVE_ASINF],[1],[libm includes asinf])])
-AC_CHECK_LIB([m],[asin],[AC_DEFINE([HAVE_ASIN],[1],[libm includes asin])])
-AC_CHECK_LIB([m],[asinl],[AC_DEFINE([HAVE_ASINL],[1],[libm includes asinl])])
-AC_CHECK_LIB([m],[asinhf],[AC_DEFINE([HAVE_ASINHF],[1],[libm includes asinhf])])
-AC_CHECK_LIB([m],[asinh],[AC_DEFINE([HAVE_ASINH],[1],[libm includes asinh])])
-AC_CHECK_LIB([m],[asinhl],[AC_DEFINE([HAVE_ASINHL],[1],[libm includes asinhl])])
-AC_CHECK_LIB([m],[atan2f],[AC_DEFINE([HAVE_ATAN2F],[1],[libm includes atan2f])])
-AC_CHECK_LIB([m],[atan2],[AC_DEFINE([HAVE_ATAN2],[1],[libm includes atan2])])
-AC_CHECK_LIB([m],[atan2l],[AC_DEFINE([HAVE_ATAN2L],[1],[libm includes atan2l])])
-AC_CHECK_LIB([m],[atanf],[AC_DEFINE([HAVE_ATANF],[1],[libm includes atanf])])
-AC_CHECK_LIB([m],[atan],[AC_DEFINE([HAVE_ATAN],[1],[libm includes atan])])
-AC_CHECK_LIB([m],[atanl],[AC_DEFINE([HAVE_ATANL],[1],[libm includes atanl])])
-AC_CHECK_LIB([m],[atanhf],[AC_DEFINE([HAVE_ATANHF],[1],[libm includes atanhf])])
-AC_CHECK_LIB([m],[atanh],[AC_DEFINE([HAVE_ATANH],[1],[libm includes atanh])])
-AC_CHECK_LIB([m],[atanhl],[AC_DEFINE([HAVE_ATANHL],[1],[libm includes atanhl])])
-AC_CHECK_LIB([m],[cargf],[AC_DEFINE([HAVE_CARGF],[1],[libm includes cargf])])
-AC_CHECK_LIB([m],[carg],[AC_DEFINE([HAVE_CARG],[1],[libm includes carg])])
-AC_CHECK_LIB([m],[cargl],[AC_DEFINE([HAVE_CARGL],[1],[libm includes cargl])])
-AC_CHECK_LIB([m],[ceilf],[AC_DEFINE([HAVE_CEILF],[1],[libm includes ceilf])])
-AC_CHECK_LIB([m],[ceil],[AC_DEFINE([HAVE_CEIL],[1],[libm includes ceil])])
-AC_CHECK_LIB([m],[ceill],[AC_DEFINE([HAVE_CEILL],[1],[libm includes ceill])])
-AC_CHECK_LIB([m],[copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1],[libm includes copysignf])])
-AC_CHECK_LIB([m],[copysign],[AC_DEFINE([HAVE_COPYSIGN],[1],[libm includes copysign])])
-AC_CHECK_LIB([m],[copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1],[libm includes copysignl])])
-AC_CHECK_LIB([m],[cosf],[AC_DEFINE([HAVE_COSF],[1],[libm includes cosf])])
-AC_CHECK_LIB([m],[cos],[AC_DEFINE([HAVE_COS],[1],[libm includes cos])])
-AC_CHECK_LIB([m],[cosl],[AC_DEFINE([HAVE_COSL],[1],[libm includes cosl])])
-AC_CHECK_LIB([m],[ccosf],[AC_DEFINE([HAVE_CCOSF],[1],[libm includes ccosf])])
-AC_CHECK_LIB([m],[ccos],[AC_DEFINE([HAVE_CCOS],[1],[libm includes ccos])])
-AC_CHECK_LIB([m],[ccosl],[AC_DEFINE([HAVE_CCOSL],[1],[libm includes ccosl])])
-AC_CHECK_LIB([m],[coshf],[AC_DEFINE([HAVE_COSHF],[1],[libm includes coshf])])
-AC_CHECK_LIB([m],[cosh],[AC_DEFINE([HAVE_COSH],[1],[libm includes cosh])])
-AC_CHECK_LIB([m],[coshl],[AC_DEFINE([HAVE_COSHL],[1],[libm includes coshl])])
-AC_CHECK_LIB([m],[ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1],[libm includes ccoshf])])
-AC_CHECK_LIB([m],[ccosh],[AC_DEFINE([HAVE_CCOSH],[1],[libm includes ccosh])])
-AC_CHECK_LIB([m],[ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1],[libm includes ccoshl])])
-AC_CHECK_LIB([m],[expf],[AC_DEFINE([HAVE_EXPF],[1],[libm includes expf])])
-AC_CHECK_LIB([m],[exp],[AC_DEFINE([HAVE_EXP],[1],[libm includes exp])])
-AC_CHECK_LIB([m],[expl],[AC_DEFINE([HAVE_EXPL],[1],[libm includes expl])])
-AC_CHECK_LIB([m],[cexpf],[AC_DEFINE([HAVE_CEXPF],[1],[libm includes cexpf])])
-AC_CHECK_LIB([m],[cexp],[AC_DEFINE([HAVE_CEXP],[1],[libm includes cexp])])
-AC_CHECK_LIB([m],[cexpl],[AC_DEFINE([HAVE_CEXPL],[1],[libm includes cexpl])])
-AC_CHECK_LIB([m],[fabsf],[AC_DEFINE([HAVE_FABSF],[1],[libm includes fabsf])])
-AC_CHECK_LIB([m],[fabs],[AC_DEFINE([HAVE_FABS],[1],[libm includes fabs])])
-AC_CHECK_LIB([m],[fabsl],[AC_DEFINE([HAVE_FABSL],[1],[libm includes fabsl])])
-AC_CHECK_LIB([m],[cabsf],[AC_DEFINE([HAVE_CABSF],[1],[libm includes cabsf])])
-AC_CHECK_LIB([m],[cabs],[AC_DEFINE([HAVE_CABS],[1],[libm includes cabs])])
-AC_CHECK_LIB([m],[cabsl],[AC_DEFINE([HAVE_CABSL],[1],[libm includes cabsl])])
-AC_CHECK_LIB([m],[floorf],[AC_DEFINE([HAVE_FLOORF],[1],[libm includes floorf])])
-AC_CHECK_LIB([m],[floor],[AC_DEFINE([HAVE_FLOOR],[1],[libm includes floor])])
-AC_CHECK_LIB([m],[floorl],[AC_DEFINE([HAVE_FLOORL],[1],[libm includes floorl])])
-AC_CHECK_LIB([m],[fmodf],[AC_DEFINE([HAVE_FMODF],[1],[libm includes fmodf])])
-AC_CHECK_LIB([m],[fmod],[AC_DEFINE([HAVE_FMOD],[1],[libm includes fmod])])
-AC_CHECK_LIB([m],[fmodl],[AC_DEFINE([HAVE_FMODL],[1],[libm includes fmodl])])
-AC_CHECK_LIB([m],[frexpf],[AC_DEFINE([HAVE_FREXPF],[1],[libm includes frexpf])])
-AC_CHECK_LIB([m],[frexp],[AC_DEFINE([HAVE_FREXP],[1],[libm includes frexp])])
-AC_CHECK_LIB([m],[frexpl],[AC_DEFINE([HAVE_FREXPL],[1],[libm includes frexpl])])
-AC_CHECK_LIB([m],[hypotf],[AC_DEFINE([HAVE_HYPOTF],[1],[libm includes hypotf])])
-AC_CHECK_LIB([m],[hypot],[AC_DEFINE([HAVE_HYPOT],[1],[libm includes hypot])])
-AC_CHECK_LIB([m],[hypotl],[AC_DEFINE([HAVE_HYPOTL],[1],[libm includes hypotl])])
-AC_CHECK_LIB([m],[ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1],[libm includes ldexpf])])
-AC_CHECK_LIB([m],[ldexp],[AC_DEFINE([HAVE_LDEXP],[1],[libm includes ldexp])])
-AC_CHECK_LIB([m],[ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1],[libm includes ldexpl])])
-AC_CHECK_LIB([m],[logf],[AC_DEFINE([HAVE_LOGF],[1],[libm includes logf])])
-AC_CHECK_LIB([m],[log],[AC_DEFINE([HAVE_LOG],[1],[libm includes log])])
-AC_CHECK_LIB([m],[logl],[AC_DEFINE([HAVE_LOGL],[1],[libm includes logl])])
-AC_CHECK_LIB([m],[clogf],[AC_DEFINE([HAVE_CLOGF],[1],[libm includes clogf])])
-AC_CHECK_LIB([m],[clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])
-AC_CHECK_LIB([m],[clogl],[AC_DEFINE([HAVE_CLOGL],[1],[libm includes clogl])])
-AC_CHECK_LIB([m],[log10f],[AC_DEFINE([HAVE_LOG10F],[1],[libm includes log10f])])
-AC_CHECK_LIB([m],[log10],[AC_DEFINE([HAVE_LOG10],[1],[libm includes log10])])
-AC_CHECK_LIB([m],[log10l],[AC_DEFINE([HAVE_LOG10L],[1],[libm includes log10l])])
-AC_CHECK_LIB([m],[clog10f],[AC_DEFINE([HAVE_CLOG10F],[1],[libm includes clog10f])])
-AC_CHECK_LIB([m],[clog10],[AC_DEFINE([HAVE_CLOG10],[1],[libm includes clog10])])
-AC_CHECK_LIB([m],[clog10l],[AC_DEFINE([HAVE_CLOG10L],[1],[libm includes clog10l])])
-AC_CHECK_LIB([m],[nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1],[libm includes nextafterf])])
-AC_CHECK_LIB([m],[nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1],[libm includes nextafter])])
-AC_CHECK_LIB([m],[nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1],[libm includes nextafterl])])
-AC_CHECK_LIB([m],[powf],[AC_DEFINE([HAVE_POWF],[1],[libm includes powf])])
-AC_CHECK_LIB([m],[pow],[AC_DEFINE([HAVE_POW],[1],[libm includes pow])])
-AC_CHECK_LIB([m],[powl],[AC_DEFINE([HAVE_POWL],[1],[libm includes powl])])
-AC_CHECK_LIB([m],[cpowf],[AC_DEFINE([HAVE_CPOWF],[1],[libm includes cpowf])])
-AC_CHECK_LIB([m],[cpow],[AC_DEFINE([HAVE_CPOW],[1],[libm includes cpow])])
-AC_CHECK_LIB([m],[cpowl],[AC_DEFINE([HAVE_CPOWL],[1],[libm includes cpowl])])
-AC_CHECK_LIB([m],[roundf],[AC_DEFINE([HAVE_ROUNDF],[1],[libm includes roundf])])
-AC_CHECK_LIB([m],[round],[AC_DEFINE([HAVE_ROUND],[1],[libm includes round])])
-AC_CHECK_LIB([m],[roundl],[AC_DEFINE([HAVE_ROUNDL],[1],[libm includes roundl])])
-AC_CHECK_LIB([m],[lroundf],[AC_DEFINE([HAVE_LROUNDF],[1],[libm includes lroundf])])
-AC_CHECK_LIB([m],[lround],[AC_DEFINE([HAVE_LROUND],[1],[libm includes lround])])
-AC_CHECK_LIB([m],[lroundl],[AC_DEFINE([HAVE_LROUNDL],[1],[libm includes lroundl])])
-AC_CHECK_LIB([m],[llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1],[libm includes llroundf])])
-AC_CHECK_LIB([m],[llround],[AC_DEFINE([HAVE_LLROUND],[1],[libm includes llround])])
-AC_CHECK_LIB([m],[llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1],[libm includes llroundl])])
-AC_CHECK_LIB([m],[scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1],[libm includes scalbnf])])
-AC_CHECK_LIB([m],[scalbn],[AC_DEFINE([HAVE_SCALBN],[1],[libm includes scalbn])])
-AC_CHECK_LIB([m],[scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1],[libm includes scalbnl])])
-AC_CHECK_LIB([m],[sinf],[AC_DEFINE([HAVE_SINF],[1],[libm includes sinf])])
-AC_CHECK_LIB([m],[sin],[AC_DEFINE([HAVE_SIN],[1],[libm includes sin])])
-AC_CHECK_LIB([m],[sinl],[AC_DEFINE([HAVE_SINL],[1],[libm includes sinl])])
-AC_CHECK_LIB([m],[csinf],[AC_DEFINE([HAVE_CSINF],[1],[libm includes csinf])])
-AC_CHECK_LIB([m],[csin],[AC_DEFINE([HAVE_CSIN],[1],[libm includes csin])])
-AC_CHECK_LIB([m],[csinl],[AC_DEFINE([HAVE_CSINL],[1],[libm includes csinl])])
-AC_CHECK_LIB([m],[sinhf],[AC_DEFINE([HAVE_SINHF],[1],[libm includes sinhf])])
-AC_CHECK_LIB([m],[sinh],[AC_DEFINE([HAVE_SINH],[1],[libm includes sinh])])
-AC_CHECK_LIB([m],[sinhl],[AC_DEFINE([HAVE_SINHL],[1],[libm includes sinhl])])
-AC_CHECK_LIB([m],[csinhf],[AC_DEFINE([HAVE_CSINHF],[1],[libm includes csinhf])])
-AC_CHECK_LIB([m],[csinh],[AC_DEFINE([HAVE_CSINH],[1],[libm includes csinh])])
-AC_CHECK_LIB([m],[csinhl],[AC_DEFINE([HAVE_CSINHL],[1],[libm includes csinhl])])
-AC_CHECK_LIB([m],[sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[libm includes sqrtf])])
-AC_CHECK_LIB([m],[sqrt],[AC_DEFINE([HAVE_SQRT],[1],[libm includes sqrt])])
-AC_CHECK_LIB([m],[sqrtl],[AC_DEFINE([HAVE_SQRTL],[1],[libm includes sqrtl])])
-AC_CHECK_LIB([m],[csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1],[libm includes csqrtf])])
-AC_CHECK_LIB([m],[csqrt],[AC_DEFINE([HAVE_CSQRT],[1],[libm includes csqrt])])
-AC_CHECK_LIB([m],[csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1],[libm includes csqrtl])])
-AC_CHECK_LIB([m],[tanf],[AC_DEFINE([HAVE_TANF],[1],[libm includes tanf])])
-AC_CHECK_LIB([m],[tan],[AC_DEFINE([HAVE_TAN],[1],[libm includes tan])])
-AC_CHECK_LIB([m],[tanl],[AC_DEFINE([HAVE_TANL],[1],[libm includes tanl])])
-AC_CHECK_LIB([m],[ctanf],[AC_DEFINE([HAVE_CTANF],[1],[libm includes ctanf])])
-AC_CHECK_LIB([m],[ctan],[AC_DEFINE([HAVE_CTAN],[1],[libm includes ctan])])
-AC_CHECK_LIB([m],[ctanl],[AC_DEFINE([HAVE_CTANL],[1],[libm includes ctanl])])
-AC_CHECK_LIB([m],[tanhf],[AC_DEFINE([HAVE_TANHF],[1],[libm includes tanhf])])
-AC_CHECK_LIB([m],[tanh],[AC_DEFINE([HAVE_TANH],[1],[libm includes tanh])])
-AC_CHECK_LIB([m],[tanhl],[AC_DEFINE([HAVE_TANHL],[1],[libm includes tanhl])])
-AC_CHECK_LIB([m],[ctanhf],[AC_DEFINE([HAVE_CTANHF],[1],[libm includes ctanhf])])
-AC_CHECK_LIB([m],[ctanh],[AC_DEFINE([HAVE_CTANH],[1],[libm includes ctanh])])
-AC_CHECK_LIB([m],[ctanhl],[AC_DEFINE([HAVE_CTANHL],[1],[libm includes ctanhl])])
-AC_CHECK_LIB([m],[truncf],[AC_DEFINE([HAVE_TRUNCF],[1],[libm includes truncf])])
-AC_CHECK_LIB([m],[trunc],[AC_DEFINE([HAVE_TRUNC],[1],[libm includes trunc])])
-AC_CHECK_LIB([m],[truncl],[AC_DEFINE([HAVE_TRUNCL],[1],[libm includes truncl])])
-AC_CHECK_LIB([m],[erff],[AC_DEFINE([HAVE_ERFF],[1],[libm includes erff])])
-AC_CHECK_LIB([m],[erf],[AC_DEFINE([HAVE_ERF],[1],[libm includes erf])])
-AC_CHECK_LIB([m],[erfl],[AC_DEFINE([HAVE_ERFL],[1],[libm includes erfl])])
-AC_CHECK_LIB([m],[erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[libm includes erfcf])])
-AC_CHECK_LIB([m],[erfc],[AC_DEFINE([HAVE_ERFC],[1],[libm includes erfc])])
-AC_CHECK_LIB([m],[erfcl],[AC_DEFINE([HAVE_ERFCL],[1],[libm includes erfcl])])
-AC_CHECK_LIB([m],[j0f],[AC_DEFINE([HAVE_J0F],[1],[libm includes j0f])])
-AC_CHECK_LIB([m],[j0],[AC_DEFINE([HAVE_J0],[1],[libm includes j0])])
-AC_CHECK_LIB([m],[j0l],[AC_DEFINE([HAVE_J0L],[1],[libm includes j0l])])
-AC_CHECK_LIB([m],[j1f],[AC_DEFINE([HAVE_J1F],[1],[libm includes j1f])])
-AC_CHECK_LIB([m],[j1],[AC_DEFINE([HAVE_J1],[1],[libm includes j1])])
-AC_CHECK_LIB([m],[j1l],[AC_DEFINE([HAVE_J1L],[1],[libm includes j1l])])
-AC_CHECK_LIB([m],[jnf],[AC_DEFINE([HAVE_JNF],[1],[libm includes jnf])])
-AC_CHECK_LIB([m],[jn],[AC_DEFINE([HAVE_JN],[1],[libm includes jn])])
-AC_CHECK_LIB([m],[jnl],[AC_DEFINE([HAVE_JNL],[1],[libm includes jnl])])
-AC_CHECK_LIB([m],[y0f],[AC_DEFINE([HAVE_Y0F],[1],[libm includes y0f])])
-AC_CHECK_LIB([m],[y0],[AC_DEFINE([HAVE_Y0],[1],[libm includes y0])])
-AC_CHECK_LIB([m],[y0l],[AC_DEFINE([HAVE_Y0L],[1],[libm includes y0l])])
-AC_CHECK_LIB([m],[y1f],[AC_DEFINE([HAVE_Y1F],[1],[libm includes y1f])])
-AC_CHECK_LIB([m],[y1],[AC_DEFINE([HAVE_Y1],[1],[libm includes y1])])
-AC_CHECK_LIB([m],[y1l],[AC_DEFINE([HAVE_Y1L],[1],[libm includes y1l])])
-AC_CHECK_LIB([m],[ynf],[AC_DEFINE([HAVE_YNF],[1],[libm includes ynf])])
-AC_CHECK_LIB([m],[yn],[AC_DEFINE([HAVE_YN],[1],[libm includes yn])])
-AC_CHECK_LIB([m],[ynl],[AC_DEFINE([HAVE_YNL],[1],[libm includes ynl])])
-AC_CHECK_LIB([m],[tgamma],[AC_DEFINE([HAVE_TGAMMA],[1],[libm includes tgamma])])
-AC_CHECK_LIB([m],[tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1],[libm includes tgammaf])])
-AC_CHECK_LIB([m],[tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1],[libm includes tgammal])])
-AC_CHECK_LIB([m],[lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[libm includes lgamma])])
-AC_CHECK_LIB([m],[lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[libm includes lgammaf])])
-AC_CHECK_LIB([m],[lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1],[libm includes lgammal])])
+GCC_CHECK_MATH_FUNC([acosf],[AC_DEFINE([HAVE_ACOSF],[1])])
+GCC_CHECK_MATH_FUNC([acos],[AC_DEFINE([HAVE_ACOS],[1])])
+GCC_CHECK_MATH_FUNC([acosl],[AC_DEFINE([HAVE_ACOSL],[1])])
+GCC_CHECK_MATH_FUNC([acoshf],[AC_DEFINE([HAVE_ACOSHF],[1])])
+GCC_CHECK_MATH_FUNC([acosh],[AC_DEFINE([HAVE_ACOSH],[1])])
+GCC_CHECK_MATH_FUNC([acoshl],[AC_DEFINE([HAVE_ACOSHL],[1])])
+GCC_CHECK_MATH_FUNC([asinf],[AC_DEFINE([HAVE_ASINF],[1])])
+GCC_CHECK_MATH_FUNC([asin],[AC_DEFINE([HAVE_ASIN],[1])])
+GCC_CHECK_MATH_FUNC([asinl],[AC_DEFINE([HAVE_ASINL],[1])])
+GCC_CHECK_MATH_FUNC([asinhf],[AC_DEFINE([HAVE_ASINHF],[1])])
+GCC_CHECK_MATH_FUNC([asinh],[AC_DEFINE([HAVE_ASINH],[1])])
+GCC_CHECK_MATH_FUNC([asinhl],[AC_DEFINE([HAVE_ASINHL],[1])])
+GCC_CHECK_MATH_FUNC([atan2f],[AC_DEFINE([HAVE_ATAN2F],[1])])
+GCC_CHECK_MATH_FUNC([atan2],[AC_DEFINE([HAVE_ATAN2],[1])])
+GCC_CHECK_MATH_FUNC([atan2l],[AC_DEFINE([HAVE_ATAN2L],[1])])
+GCC_CHECK_MATH_FUNC([atanf],[AC_DEFINE([HAVE_ATANF],[1])])
+GCC_CHECK_MATH_FUNC([atan],[AC_DEFINE([HAVE_ATAN],[1])])
+GCC_CHECK_MATH_FUNC([atanl],[AC_DEFINE([HAVE_ATANL],[1])])
+GCC_CHECK_MATH_FUNC([atanhf],[AC_DEFINE([HAVE_ATANHF],[1])])
+GCC_CHECK_MATH_FUNC([atanh],[AC_DEFINE([HAVE_ATANH],[1])])
+GCC_CHECK_MATH_FUNC([atanhl],[AC_DEFINE([HAVE_ATANHL],[1])])
+GCC_CHECK_MATH_FUNC([cargf],[AC_DEFINE([HAVE_CARGF],[1])])
+GCC_CHECK_MATH_FUNC([carg],[AC_DEFINE([HAVE_CARG],[1])])
+GCC_CHECK_MATH_FUNC([cargl],[AC_DEFINE([HAVE_CARGL],[1])])
+GCC_CHECK_MATH_FUNC([ceilf],[AC_DEFINE([HAVE_CEILF],[1])])
+GCC_CHECK_MATH_FUNC([ceil],[AC_DEFINE([HAVE_CEIL],[1])])
+GCC_CHECK_MATH_FUNC([ceill],[AC_DEFINE([HAVE_CEILL],[1])])
+GCC_CHECK_MATH_FUNC([copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1])])
+GCC_CHECK_MATH_FUNC([copysign],[AC_DEFINE([HAVE_COPYSIGN],[1])])
+GCC_CHECK_MATH_FUNC([copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1])])
+GCC_CHECK_MATH_FUNC([cosf],[AC_DEFINE([HAVE_COSF],[1])])
+GCC_CHECK_MATH_FUNC([cos],[AC_DEFINE([HAVE_COS],[1])])
+GCC_CHECK_MATH_FUNC([cosl],[AC_DEFINE([HAVE_COSL],[1])])
+GCC_CHECK_MATH_FUNC([ccosf],[AC_DEFINE([HAVE_CCOSF],[1])])
+GCC_CHECK_MATH_FUNC([ccos],[AC_DEFINE([HAVE_CCOS],[1])])
+GCC_CHECK_MATH_FUNC([ccosl],[AC_DEFINE([HAVE_CCOSL],[1])])
+GCC_CHECK_MATH_FUNC([coshf],[AC_DEFINE([HAVE_COSHF],[1])])
+GCC_CHECK_MATH_FUNC([cosh],[AC_DEFINE([HAVE_COSH],[1])])
+GCC_CHECK_MATH_FUNC([coshl],[AC_DEFINE([HAVE_COSHL],[1])])
+GCC_CHECK_MATH_FUNC([ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1])])
+GCC_CHECK_MATH_FUNC([ccosh],[AC_DEFINE([HAVE_CCOSH],[1])])
+GCC_CHECK_MATH_FUNC([ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1])])
+GCC_CHECK_MATH_FUNC([expf],[AC_DEFINE([HAVE_EXPF],[1])])
+GCC_CHECK_MATH_FUNC([exp],[AC_DEFINE([HAVE_EXP],[1])])
+GCC_CHECK_MATH_FUNC([expl],[AC_DEFINE([HAVE_EXPL],[1])])
+GCC_CHECK_MATH_FUNC([cexpf],[AC_DEFINE([HAVE_CEXPF],[1])])
+GCC_CHECK_MATH_FUNC([cexp],[AC_DEFINE([HAVE_CEXP],[1])])
+GCC_CHECK_MATH_FUNC([cexpl],[AC_DEFINE([HAVE_CEXPL],[1])])
+GCC_CHECK_MATH_FUNC([fabsf],[AC_DEFINE([HAVE_FABSF],[1])])
+GCC_CHECK_MATH_FUNC([fabs],[AC_DEFINE([HAVE_FABS],[1])])
+GCC_CHECK_MATH_FUNC([fabsl],[AC_DEFINE([HAVE_FABSL],[1])])
+GCC_CHECK_MATH_FUNC([cabsf],[AC_DEFINE([HAVE_CABSF],[1])])
+GCC_CHECK_MATH_FUNC([cabs],[AC_DEFINE([HAVE_CABS],[1])])
+GCC_CHECK_MATH_FUNC([cabsl],[AC_DEFINE([HAVE_CABSL],[1])])
+GCC_CHECK_MATH_FUNC([floorf],[AC_DEFINE([HAVE_FLOORF],[1])])
+GCC_CHECK_MATH_FUNC([floor],[AC_DEFINE([HAVE_FLOOR],[1])])
+GCC_CHECK_MATH_FUNC([floorl],[AC_DEFINE([HAVE_FLOORL],[1])])
+GCC_CHECK_MATH_FUNC([fmodf],[AC_DEFINE([HAVE_FMODF],[1])])
+GCC_CHECK_MATH_FUNC([fmod],[AC_DEFINE([HAVE_FMOD],[1])])
+GCC_CHECK_MATH_FUNC([fmodl],[AC_DEFINE([HAVE_FMODL],[1])])
+GCC_CHECK_MATH_FUNC([frexpf],[AC_DEFINE([HAVE_FREXPF],[1])])
+GCC_CHECK_MATH_FUNC([frexp],[AC_DEFINE([HAVE_FREXP],[1])])
+GCC_CHECK_MATH_FUNC([frexpl],[AC_DEFINE([HAVE_FREXPL],[1])])
+GCC_CHECK_MATH_FUNC([hypotf],[AC_DEFINE([HAVE_HYPOTF],[1])])
+GCC_CHECK_MATH_FUNC([hypot],[AC_DEFINE([HAVE_HYPOT],[1])])
+GCC_CHECK_MATH_FUNC([hypotl],[AC_DEFINE([HAVE_HYPOTL],[1])])
+GCC_CHECK_MATH_FUNC([ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1])])
+GCC_CHECK_MATH_FUNC([ldexp],[AC_DEFINE([HAVE_LDEXP],[1])])
+GCC_CHECK_MATH_FUNC([ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1])])
+GCC_CHECK_MATH_FUNC([logf],[AC_DEFINE([HAVE_LOGF],[1])])
+GCC_CHECK_MATH_FUNC([log],[AC_DEFINE([HAVE_LOG],[1])])
+GCC_CHECK_MATH_FUNC([logl],[AC_DEFINE([HAVE_LOGL],[1])])
+GCC_CHECK_MATH_FUNC([clogf],[AC_DEFINE([HAVE_CLOGF],[1])])
+GCC_CHECK_MATH_FUNC([clog],[AC_DEFINE([HAVE_CLOG],[1])])
+GCC_CHECK_MATH_FUNC([clogl],[AC_DEFINE([HAVE_CLOGL],[1])])
+GCC_CHECK_MATH_FUNC([log10f],[AC_DEFINE([HAVE_LOG10F],[1])])
+GCC_CHECK_MATH_FUNC([log10],[AC_DEFINE([HAVE_LOG10],[1])])
+GCC_CHECK_MATH_FUNC([log10l],[AC_DEFINE([HAVE_LOG10L],[1])])
+GCC_CHECK_MATH_FUNC([clog10f],[AC_DEFINE([HAVE_CLOG10F],[1])])
+GCC_CHECK_MATH_FUNC([clog10],[AC_DEFINE([HAVE_CLOG10],[1])])
+GCC_CHECK_MATH_FUNC([clog10l],[AC_DEFINE([HAVE_CLOG10L],[1])])
+GCC_CHECK_MATH_FUNC([nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1])])
+GCC_CHECK_MATH_FUNC([nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1])])
+GCC_CHECK_MATH_FUNC([nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1])])
+GCC_CHECK_MATH_FUNC([powf],[AC_DEFINE([HAVE_POWF],[1])])
+GCC_CHECK_MATH_FUNC([pow],[AC_DEFINE([HAVE_POW],[1])])
+GCC_CHECK_MATH_FUNC([powl],[AC_DEFINE([HAVE_POWL],[1])])
+GCC_CHECK_MATH_FUNC([cpowf],[AC_DEFINE([HAVE_CPOWF],[1])])
+GCC_CHECK_MATH_FUNC([cpow],[AC_DEFINE([HAVE_CPOW],[1])])
+GCC_CHECK_MATH_FUNC([cpowl],[AC_DEFINE([HAVE_CPOWL],[1])])
+GCC_CHECK_MATH_FUNC([roundf],[AC_DEFINE([HAVE_ROUNDF],[1])])
+GCC_CHECK_MATH_FUNC([round],[AC_DEFINE([HAVE_ROUND],[1])])
+GCC_CHECK_MATH_FUNC([roundl],[AC_DEFINE([HAVE_ROUNDL],[1])])
+GCC_CHECK_MATH_FUNC([lroundf],[AC_DEFINE([HAVE_LROUNDF],[1])])
+GCC_CHECK_MATH_FUNC([lround],[AC_DEFINE([HAVE_LROUND],[1])])
+GCC_CHECK_MATH_FUNC([lroundl],[AC_DEFINE([HAVE_LROUNDL],[1])])
+GCC_CHECK_MATH_FUNC([llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1])])
+GCC_CHECK_MATH_FUNC([llround],[AC_DEFINE([HAVE_LLROUND],[1])])
+GCC_CHECK_MATH_FUNC([llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1])])
+GCC_CHECK_MATH_FUNC([scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1])])
+GCC_CHECK_MATH_FUNC([scalbn],[AC_DEFINE([HAVE_SCALBN],[1])])
+GCC_CHECK_MATH_FUNC([scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1])])
+GCC_CHECK_MATH_FUNC([sinf],[AC_DEFINE([HAVE_SINF],[1])])
+GCC_CHECK_MATH_FUNC([sin],[AC_DEFINE([HAVE_SIN],[1])])
+GCC_CHECK_MATH_FUNC([sinl],[AC_DEFINE([HAVE_SINL],[1])])
+GCC_CHECK_MATH_FUNC([csinf],[AC_DEFINE([HAVE_CSINF],[1])])
+GCC_CHECK_MATH_FUNC([csin],[AC_DEFINE([HAVE_CSIN],[1])])
+GCC_CHECK_MATH_FUNC([csinl],[AC_DEFINE([HAVE_CSINL],[1])])
+GCC_CHECK_MATH_FUNC([sinhf],[AC_DEFINE([HAVE_SINHF],[1])])
+GCC_CHECK_MATH_FUNC([sinh],[AC_DEFINE([HAVE_SINH],[1])])
+GCC_CHECK_MATH_FUNC([sinhl],[AC_DEFINE([HAVE_SINHL],[1])])
+GCC_CHECK_MATH_FUNC([csinhf],[AC_DEFINE([HAVE_CSINHF],[1])])
+GCC_CHECK_MATH_FUNC([csinh],[AC_DEFINE([HAVE_CSINH],[1])])
+GCC_CHECK_MATH_FUNC([csinhl],[AC_DEFINE([HAVE_CSINHL],[1])])
+GCC_CHECK_MATH_FUNC([sqrtf],[AC_DEFINE([HAVE_SQRTF],[1])])
+GCC_CHECK_MATH_FUNC([sqrt],[AC_DEFINE([HAVE_SQRT],[1])])
+GCC_CHECK_MATH_FUNC([sqrtl],[AC_DEFINE([HAVE_SQRTL],[1])])
+GCC_CHECK_MATH_FUNC([csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1])])
+GCC_CHECK_MATH_FUNC([csqrt],[AC_DEFINE([HAVE_CSQRT],[1])])
+GCC_CHECK_MATH_FUNC([csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1])])
+GCC_CHECK_MATH_FUNC([tanf],[AC_DEFINE([HAVE_TANF],[1])])
+GCC_CHECK_MATH_FUNC([tan],[AC_DEFINE([HAVE_TAN],[1])])
+GCC_CHECK_MATH_FUNC([tanl],[AC_DEFINE([HAVE_TANL],[1])])
+GCC_CHECK_MATH_FUNC([ctanf],[AC_DEFINE([HAVE_CTANF],[1])])
+GCC_CHECK_MATH_FUNC([ctan],[AC_DEFINE([HAVE_CTAN],[1])])
+GCC_CHECK_MATH_FUNC([ctanl],[AC_DEFINE([HAVE_CTANL],[1])])
+GCC_CHECK_MATH_FUNC([tanhf],[AC_DEFINE([HAVE_TANHF],[1])])
+GCC_CHECK_MATH_FUNC([tanh],[AC_DEFINE([HAVE_TANH],[1])])
+GCC_CHECK_MATH_FUNC([tanhl],[AC_DEFINE([HAVE_TANHL],[1])])
+GCC_CHECK_MATH_FUNC([ctanhf],[AC_DEFINE([HAVE_CTANHF],[1])])
+GCC_CHECK_MATH_FUNC([ctanh],[AC_DEFINE([HAVE_CTANH],[1])])
+GCC_CHECK_MATH_FUNC([ctanhl],[AC_DEFINE([HAVE_CTANHL],[1])])
+GCC_CHECK_MATH_FUNC([truncf],[AC_DEFINE([HAVE_TRUNCF],[1])])
+GCC_CHECK_MATH_FUNC([trunc],[AC_DEFINE([HAVE_TRUNC],[1])])
+GCC_CHECK_MATH_FUNC([truncl],[AC_DEFINE([HAVE_TRUNCL],[1])])
+GCC_CHECK_MATH_FUNC([erff],[AC_DEFINE([HAVE_ERFF],[1])])
+GCC_CHECK_MATH_FUNC([erf],[AC_DEFINE([HAVE_ERF],[1])])
+GCC_CHECK_MATH_FUNC([erfl],[AC_DEFINE([HAVE_ERFL],[1])])
+GCC_CHECK_MATH_FUNC([erfcf],[AC_DEFINE([HAVE_ERFCF],[1])])
+GCC_CHECK_MATH_FUNC([erfc],[AC_DEFINE([HAVE_ERFC],[1])])
+GCC_CHECK_MATH_FUNC([erfcl],[AC_DEFINE([HAVE_ERFCL],[1])])
+GCC_CHECK_MATH_FUNC([j0f],[AC_DEFINE([HAVE_J0F],[1])])
+GCC_CHECK_MATH_FUNC([j0],[AC_DEFINE([HAVE_J0],[1])])
+GCC_CHECK_MATH_FUNC([j0l],[AC_DEFINE([HAVE_J0L],[1])])
+GCC_CHECK_MATH_FUNC([j1f],[AC_DEFINE([HAVE_J1F],[1])])
+GCC_CHECK_MATH_FUNC([j1],[AC_DEFINE([HAVE_J1],[1])])
+GCC_CHECK_MATH_FUNC([j1l],[AC_DEFINE([HAVE_J1L],[1])])
+GCC_CHECK_MATH_FUNC([jnf],[AC_DEFINE([HAVE_JNF],[1])])
+GCC_CHECK_MATH_FUNC([jn],[AC_DEFINE([HAVE_JN],[1])])
+GCC_CHECK_MATH_FUNC([jnl],[AC_DEFINE([HAVE_JNL],[1])])
+GCC_CHECK_MATH_FUNC([y0f],[AC_DEFINE([HAVE_Y0F],[1])])
+GCC_CHECK_MATH_FUNC([y0],[AC_DEFINE([HAVE_Y0],[1])])
+GCC_CHECK_MATH_FUNC([y0l],[AC_DEFINE([HAVE_Y0L],[1])])
+GCC_CHECK_MATH_FUNC([y1f],[AC_DEFINE([HAVE_Y1F],[1])])
+GCC_CHECK_MATH_FUNC([y1],[AC_DEFINE([HAVE_Y1],[1])])
+GCC_CHECK_MATH_FUNC([y1l],[AC_DEFINE([HAVE_Y1L],[1])])
+GCC_CHECK_MATH_FUNC([ynf],[AC_DEFINE([HAVE_YNF],[1])])
+GCC_CHECK_MATH_FUNC([yn],[AC_DEFINE([HAVE_YN],[1])])
+GCC_CHECK_MATH_FUNC([ynl],[AC_DEFINE([HAVE_YNL],[1])])
+GCC_CHECK_MATH_FUNC([tgamma],[AC_DEFINE([HAVE_TGAMMA],[1])])
+GCC_CHECK_MATH_FUNC([tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1])])
+GCC_CHECK_MATH_FUNC([tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1])])
+GCC_CHECK_MATH_FUNC([lgamma],[AC_DEFINE([HAVE_LGAMMA],[1])])
+GCC_CHECK_MATH_FUNC([lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1])])
+GCC_CHECK_MATH_FUNC([lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1])])
 
 # Check for GFORTRAN_C99_1.1 funcs
-AC_CHECK_LIB([m],[cacos],[AC_DEFINE([HAVE_CACOS],[1],[libm includes cacos])])
-AC_CHECK_LIB([m],[cacosf],[AC_DEFINE([HAVE_CACOSF],[1],[libm includes cacosf])])
-AC_CHECK_LIB([m],[cacosh],[AC_DEFINE([HAVE_CACOSH],[1],[libm includes cacosh])])
-AC_CHECK_LIB([m],[cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1],[libm includes cacoshf])])
-AC_CHECK_LIB([m],[cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1],[libm includes cacoshl])])
-AC_CHECK_LIB([m],[cacosl],[AC_DEFINE([HAVE_CACOSL],[1],[libm includes cacosl])])
-AC_CHECK_LIB([m],[casin],[AC_DEFINE([HAVE_CASIN],[1],[libm includes casin])])
-AC_CHECK_LIB([m],[casinf],[AC_DEFINE([HAVE_CASINF],[1],[libm includes casinf])])
-AC_CHECK_LIB([m],[casinh],[AC_DEFINE([HAVE_CASINH],[1],[libm includes casinh])])
-AC_CHECK_LIB([m],[casinhf],[AC_DEFINE([HAVE_CASINHF],[1],[libm includes casinhf])])
-AC_CHECK_LIB([m],[casinhl],[AC_DEFINE([HAVE_CASINHL],[1],[libm includes casinhl])])
-AC_CHECK_LIB([m],[casinl],[AC_DEFINE([HAVE_CASINL],[1],[libm includes casinl])])
-AC_CHECK_LIB([m],[catan],[AC_DEFINE([HAVE_CATAN],[1],[libm includes catan])])
-AC_CHECK_LIB([m],[catanf],[AC_DEFINE([HAVE_CATANF],[1],[libm includes catanf])])
-AC_CHECK_LIB([m],[catanh],[AC_DEFINE([HAVE_CATANH],[1],[libm includes catanh])])
-AC_CHECK_LIB([m],[catanhf],[AC_DEFINE([HAVE_CATANHF],[1],[libm includes catanhf])])
-AC_CHECK_LIB([m],[catanhl],[AC_DEFINE([HAVE_CATANHL],[1],[libm includes catanhl])])
-AC_CHECK_LIB([m],[catanl],[AC_DEFINE([HAVE_CATANL],[1],[libm includes catanl])])
+GCC_CHECK_MATH_FUNC([cacos],[AC_DEFINE([HAVE_CACOS],[1])])
+GCC_CHECK_MATH_FUNC([cacosf],[AC_DEFINE([HAVE_CACOSF],[1])])
+GCC_CHECK_MATH_FUNC([cacosh],[AC_DEFINE([HAVE_CACOSH],[1])])
+GCC_CHECK_MATH_FUNC([cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1])])
+GCC_CHECK_MATH_FUNC([cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1])])
+GCC_CHECK_MATH_FUNC([cacosl],[AC_DEFINE([HAVE_CACOSL],[1])])
+GCC_CHECK_MATH_FUNC([casin],[AC_DEFINE([HAVE_CASIN],[1])])
+GCC_CHECK_MATH_FUNC([casinf],[AC_DEFINE([HAVE_CASINF],[1])])
+GCC_CHECK_MATH_FUNC([casinh],[AC_DEFINE([HAVE_CASINH],[1])])
+GCC_CHECK_MATH_FUNC([casinhf],[AC_DEFINE([HAVE_CASINHF],[1])])
+GCC_CHECK_MATH_FUNC([casinhl],[AC_DEFINE([HAVE_CASINHL],[1])])
+GCC_CHECK_MATH_FUNC([casinl],[AC_DEFINE([HAVE_CASINL],[1])])
+GCC_CHECK_MATH_FUNC([catan],[AC_DEFINE([HAVE_CATAN],[1])])
+GCC_CHECK_MATH_FUNC([catanf],[AC_DEFINE([HAVE_CATANF],[1])])
+GCC_CHECK_MATH_FUNC([catanh],[AC_DEFINE([HAVE_CATANH],[1])])
+GCC_CHECK_MATH_FUNC([catanhf],[AC_DEFINE([HAVE_CATANHF],[1])])
+GCC_CHECK_MATH_FUNC([catanhl],[AC_DEFINE([HAVE_CATANHL],[1])])
+GCC_CHECK_MATH_FUNC([catanl],[AC_DEFINE([HAVE_CATANL],[1])])
 
 # On AIX, clog is present in libm as __clog
 AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-22  8:30 ` [Patch V2] " Tristan Gingold
@ 2012-03-22 10:07   ` Paolo Bonzini
  2012-03-22 20:57     ` Tobias Burnus
  2012-03-26  8:44     ` Tristan Gingold
  0 siblings, 2 replies; 17+ messages in thread
From: Paolo Bonzini @ 2012-03-22 10:07 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: Tobias Burnus, GCC Patches, fortran, Ralf Corsepius, jb

Il 22/03/2012 09:30, Tristan Gingold ha scritto:
> Hi,
> 
> this is version 2 of the patch.
> 
> The initial problem is that libgfortran configure.ac used AC_CHECK_LIB([m]Â…) to check wether several math functions are available.  That doesn't work on VMS, because there is no such things as a libm.
> 
> It seems to me that there are no autoconf macro to check wether a function is available: AC_CHECK_FUNC[S] don't allow to specify additional include files (necessary on VMS as some math functions are renamed through macros), and AC_CHECK_DECL only checks the presence of the declaration (as pointed out by Ralf).
> 
> So I have finally learnt a little bit more about autoconf and added a new file: config/math.m4 (build machinery maintainer cc:)
> libgfortran/configure.ac now uses the new GCC_CHECK_MATH_FUNC macro.
> 
> Bootstrapped without gfortran regressions on x86_64-darwin.
> 
> Ok for trunk ?
> 
> (I will submit a follow-up change in libquadmath once this change is approved).
> 
> Tristan.
> 
> config/
> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
> 
> 	* math.m4: New file.
> 
> libgfortran/
> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
> 
> 	* configure.ac: Use GCC_CHECK_MATH_FUNC for math functions.
> 	* acinclude.m4: Include ../config/math.m4
> 	* configure: Regenerate.
> 	* Makefile.in: Regenerate.

Ok.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-22 10:07   ` Paolo Bonzini
@ 2012-03-22 20:57     ` Tobias Burnus
  2012-03-26  8:44     ` Tristan Gingold
  1 sibling, 0 replies; 17+ messages in thread
From: Tobias Burnus @ 2012-03-22 20:57 UTC (permalink / raw)
  To: Paolo Bonzini
  Cc: Tristan Gingold, Tobias Burnus, GCC Patches, fortran, Ralf Corsepius, jb

Paolo Bonzini wrote:
> Il 22/03/2012 09:30, Tristan Gingold ha scritto:
>> Bootstrapped without gfortran regressions on x86_64-darwin.
>> Ok for trunk ?
>>
>> (I will submit a follow-up change in libquadmath once this change is approved).
>>
>> config/
>> 2012-03-22  Tristan Gingold<gingold@adacore.com>
>>
>> 	* math.m4: New file.
>>
>> libgfortran/
>> 2012-03-22  Tristan Gingold<gingold@adacore.com>
>>
>> 	* configure.ac: Use GCC_CHECK_MATH_FUNC for math functions.
>> 	* acinclude.m4: Include ../config/math.m4
>> 	* configure: Regenerate.
>> 	* Makefile.in: Regenerate.
> Ok.

I have the feeling that you are still waiting for an expliciat gfortran 
approval - however, I think that a build maintainer's okay should be 
sufficient.

Thus, for what it is worth: I believe that patch is okay.

Tobias

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-22 10:07   ` Paolo Bonzini
  2012-03-22 20:57     ` Tobias Burnus
@ 2012-03-26  8:44     ` Tristan Gingold
  2012-03-26 21:43       ` Janne Blomqvist
  1 sibling, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-26  8:44 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Tobias Burnus, GCC Patches, fortran, Ralf Corsepius, jb


On Mar 22, 2012, at 11:06 AM, Paolo Bonzini wrote:

> Il 22/03/2012 09:30, Tristan Gingold ha scritto:
>> Hi,
>> 
>> this is version 2 of the patch.
>> 
>> The initial problem is that libgfortran configure.ac used AC_CHECK_LIB([m]…) to check wether several math functions are available.  That doesn't work on VMS, because there is no such things as a libm.
>> 
>> It seems to me that there are no autoconf macro to check wether a function is available: AC_CHECK_FUNC[S] don't allow to specify additional include files (necessary on VMS as some math functions are renamed through macros), and AC_CHECK_DECL only checks the presence of the declaration (as pointed out by Ralf).
>> 
>> So I have finally learnt a little bit more about autoconf and added a new file: config/math.m4 (build machinery maintainer cc:)
>> libgfortran/configure.ac now uses the new GCC_CHECK_MATH_FUNC macro.
>> 
>> Bootstrapped without gfortran regressions on x86_64-darwin.
>> 
>> Ok for trunk ?
>> 
>> (I will submit a follow-up change in libquadmath once this change is approved).
>> 
>> Tristan.
>> 
>> config/
>> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* math.m4: New file.
>> 
>> libgfortran/
>> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
>> 
>> 	* configure.ac: Use GCC_CHECK_MATH_FUNC for math functions.
>> 	* acinclude.m4: Include ../config/math.m4
>> 	* configure: Regenerate.
>> 	* Makefile.in: Regenerate.
> 
> Ok.

Thanks, now committed.

Tristan.


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-26  8:44     ` Tristan Gingold
@ 2012-03-26 21:43       ` Janne Blomqvist
  2012-03-27  7:51         ` Tristan Gingold
  0 siblings, 1 reply; 17+ messages in thread
From: Janne Blomqvist @ 2012-03-26 21:43 UTC (permalink / raw)
  To: Tristan Gingold
  Cc: Paolo Bonzini, Tobias Burnus, GCC Patches, fortran, Ralf Corsepius, jb

On Mon, Mar 26, 2012 at 11:44, Tristan Gingold <gingold@adacore.com> wrote:
>
> On Mar 22, 2012, at 11:06 AM, Paolo Bonzini wrote:
>
>> Il 22/03/2012 09:30, Tristan Gingold ha scritto:
>>> Hi,
>>>
>>> this is version 2 of the patch.
>>>
>>> The initial problem is that libgfortran configure.ac used AC_CHECK_LIB([m]…) to check wether several math functions are available.  That doesn't work on VMS, because there is no such things as a libm.
>>>
>>> It seems to me that there are no autoconf macro to check wether a function is available: AC_CHECK_FUNC[S] don't allow to specify additional include files (necessary on VMS as some math functions are renamed through macros), and AC_CHECK_DECL only checks the presence of the declaration (as pointed out by Ralf).
>>>
>>> So I have finally learnt a little bit more about autoconf and added a new file: config/math.m4 (build machinery maintainer cc:)
>>> libgfortran/configure.ac now uses the new GCC_CHECK_MATH_FUNC macro.
>>>
>>> Bootstrapped without gfortran regressions on x86_64-darwin.
>>>
>>> Ok for trunk ?
>>>
>>> (I will submit a follow-up change in libquadmath once this change is approved).
>>>
>>> Tristan.
>>>
>>> config/
>>> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
>>>
>>>      * math.m4: New file.
>>>
>>> libgfortran/
>>> 2012-03-22  Tristan Gingold  <gingold@adacore.com>
>>>
>>>      * configure.ac: Use GCC_CHECK_MATH_FUNC for math functions.
>>>      * acinclude.m4: Include ../config/math.m4
>>>      * configure: Regenerate.
>>>      * Makefile.in: Regenerate.
>>
>> Ok.
>
> Thanks, now committed.

On x86_64-unknown-linux-gnu bootstrap I see the following:


make[1]: Entering directory
`/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
make  check-am
make[2]: Entering directory
`/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
(CDPATH="${ZSH_VERSION+.}:" && cd ../../../trunk-git/libgfortran &&
/bin/bash /home/janne/src/gfortran/trunk/trunk-git/missing --run
autoheader)
true  DO=all multi-do # make
make[1]: Entering directory `/home/janne/src/gfortran/trunk/objdir-git/gcc'
Making a new config file...
echo "set tmpdir
/home/janne/src/gfortran/trunk/objdir-git/gcc/testsuite" >> ./site.tmp
autoheader: warning: missing template: HAVE_ACOS
autoheader: Use AC_DEFINE([HAVE_ACOS], [], [Description])
autoheader: warning: missing template: HAVE_ACOSF
autoheader: warning: missing template: HAVE_ACOSH
autoheader: warning: missing template: HAVE_ACOSHF
autoheader: warning: missing template: HAVE_ACOSHL
autoheader: warning: missing template: HAVE_ACOSL
autoheader: warning: missing template: HAVE_ASIN
autoheader: warning: missing template: HAVE_ASINF
autoheader: warning: missing template: HAVE_ASINH
autoheader: warning: missing template: HAVE_ASINHF
autoheader: warning: missing template: HAVE_ASINHL
autoheader: warning: missing template: HAVE_ASINL
autoheader: warning: missing template: HAVE_ATAN
autoheader: warning: missing template: HAVE_ATAN2
autoheader: warning: missing template: HAVE_ATAN2F
autoheader: warning: missing template: HAVE_ATAN2L
autoheader: warning: missing template: HAVE_ATANF
autoheader: warning: missing template: HAVE_ATANH
autoheader: warning: missing template: HAVE_ATANHF
autoheader: warning: missing template: HAVE_ATANHL
autoheader: warning: missing template: HAVE_ATANL
autoheader: warning: missing template: HAVE_CABS
autoheader: warning: missing template: HAVE_CABSF
autoheader: warning: missing template: HAVE_CABSL
autoheader: warning: missing template: HAVE_CACOS
autoheader: warning: missing template: HAVE_CACOSF
autoheader: warning: missing template: HAVE_CACOSH
autoheader: warning: missing template: HAVE_CACOSHF
autoheader: warning: missing template: HAVE_CACOSHL
autoheader: warning: missing template: HAVE_CACOSL
autoheader: warning: missing template: HAVE_CARG
autoheader: warning: missing template: HAVE_CARGF
autoheader: warning: missing template: HAVE_CARGL
autoheader: warning: missing template: HAVE_CASIN
autoheader: warning: missing template: HAVE_CASINF
autoheader: warning: missing template: HAVE_CASINH
autoheader: warning: missing template: HAVE_CASINHF
autoheader: warning: missing template: HAVE_CASINHL
autoheader: warning: missing template: HAVE_CASINL
autoheader: warning: missing template: HAVE_CATAN
autoheader: warning: missing template: HAVE_CATANF
autoheader: warning: missing template: HAVE_CATANH
autoheader: warning: missing template: HAVE_CATANHF
autoheader: warning: missing template: HAVE_CATANHL
autoheader: warning: missing template: HAVE_CATANL
autoheader: warning: missing template: HAVE_CCOS
autoheader: warning: missing template: HAVE_CCOSF
autoheader: warning: missing template: HAVE_CCOSH
autoheader: warning: missing template: HAVE_CCOSHF
autoheader: warning: missing template: HAVE_CCOSHL
autoheader: warning: missing template: HAVE_CCOSL
autoheader: warning: missing template: HAVE_CEIL
autoheader: warning: missing template: HAVE_CEILF
autoheader: warning: missing template: HAVE_CEILL
autoheader: warning: missing template: HAVE_CEXP
autoheader: warning: missing template: HAVE_CEXPF
autoheader: warning: missing template: HAVE_CEXPL
autoheader: warning: missing template: HAVE_CLOG10
autoheader: warning: missing template: HAVE_CLOG10F
autoheader: warning: missing template: HAVE_CLOG10L
autoheader: warning: missing template: HAVE_CLOGF
autoheader: warning: missing template: HAVE_CLOGL
autoheader: warning: missing template: HAVE_COPYSIGN
autoheader: warning: missing template: HAVE_COPYSIGNF
autoheader: warning: missing template: HAVE_COPYSIGNL
autoheader: warning: missing template: HAVE_COS
autoheader: warning: missing template: HAVE_COSF
autoheader: warning: missing template: HAVE_COSH
autoheader: warning: missing template: HAVE_COSHF
autoheader: warning: missing template: HAVE_COSHL
autoheader: warning: missing template: HAVE_COSL
autoheader: warning: missing template: HAVE_CPOW
autoheader: warning: missing template: HAVE_CPOWF
autoheader: warning: missing template: HAVE_CPOWL
autoheader: warning: missing template: HAVE_CSIN
autoheader: warning: missing template: HAVE_CSINF
autoheader: warning: missing template: HAVE_CSINH
autoheader: warning: missing template: HAVE_CSINHF
autoheader: warning: missing template: HAVE_CSINHL
autoheader: warning: missing template: HAVE_CSINL
autoheader: warning: missing template: HAVE_CSQRT
autoheader: warning: missing template: HAVE_CSQRTF
autoheader: warning: missing template: HAVE_CSQRTL
autoheader: warning: missing template: HAVE_CTAN
autoheader: warning: missing template: HAVE_CTANF
autoheader: warning: missing template: HAVE_CTANH
autoheader: warning: missing template: HAVE_CTANHF
autoheader: warning: missing template: HAVE_CTANHL
autoheader: warning: missing template: HAVE_CTANL
autoheader: warning: missing template: HAVE_ERF
autoheader: warning: missing template: HAVE_ERFC
autoheader: warning: missing template: HAVE_ERFCF
autoheader: warning: missing template: HAVE_ERFCL
autoheader: warning: missing template: HAVE_ERFF
autoheader: warning: missing template: HAVE_ERFL
autoheader: warning: missing template: HAVE_EXP
autoheader: warning: missing template: HAVE_EXPF
autoheader: warning: missing template: HAVE_EXPL
autoheader: warning: missing template: HAVE_FABS
autoheader: warning: missing template: HAVE_FABSF
autoheader: warning: missing template: HAVE_FABSL
autoheader: warning: missing template: HAVE_FLOOR
autoheader: warning: missing template: HAVE_FLOORF
autoheader: warning: missing template: HAVE_FLOORL
autoheader: warning: missing template: HAVE_FMOD
autoheader: warning: missing template: HAVE_FMODF
autoheader: warning: missing template: HAVE_FMODL
autoheader: warning: missing template: HAVE_FREXP
autoheader: warning: missing template: HAVE_FREXPF
autoheader: warning: missing template: HAVE_FREXPL
autoheader: warning: missing template: HAVE_HYPOT
autoheader: warning: missing template: HAVE_HYPOTF
autoheader: warning: missing template: HAVE_HYPOTL
autoheader: warning: missing template: HAVE_J0
autoheader: warning: missing template: HAVE_J0F
autoheader: warning: missing template: HAVE_J0L
autoheader: warning: missing template: HAVE_J1
autoheader: warning: missing template: HAVE_J1F
autoheader: warning: missing template: HAVE_J1L
autoheader: warning: missing template: HAVE_JN
autoheader: warning: missing template: HAVE_JNF
autoheader: warning: missing template: HAVE_JNL
autoheader: warning: missing template: HAVE_LDEXP
autoheader: warning: missing template: HAVE_LDEXPF
autoheader: warning: missing template: HAVE_LDEXPL
autoheader: warning: missing template: HAVE_LGAMMA
autoheader: warning: missing template: HAVE_LGAMMAF
autoheader: warning: missing template: HAVE_LGAMMAL
autoheader: warning: missing template: HAVE_LLROUND
autoheader: warning: missing template: HAVE_LLROUNDF
autoheader: warning: missing template: HAVE_LLROUNDL
autoheader: warning: missing template: HAVE_LOG
autoheader: warning: missing template: HAVE_LOG10
autoheader: warning: missing template: HAVE_LOG10F
autoheader: warning: missing template: HAVE_LOG10L
autoheader: warning: missing template: HAVE_LOGF
autoheader: warning: missing template: HAVE_LOGL
autoheader: warning: missing template: HAVE_LROUND
autoheader: warning: missing template: HAVE_LROUNDF
autoheader: warning: missing template: HAVE_LROUNDL
autoheader: warning: missing template: HAVE_NEXTAFTER
autoheader: warning: missing template: HAVE_NEXTAFTERF
autoheader: warning: missing template: HAVE_NEXTAFTERL
autoheader: warning: missing template: HAVE_POW
autoheader: warning: missing template: HAVE_POWF
autoheader: warning: missing template: HAVE_POWL
autoheader: warning: missing template: HAVE_ROUND
autoheader: warning: missing template: HAVE_ROUNDF
autoheader: warning: missing template: HAVE_ROUNDL
autoheader: warning: missing template: HAVE_SCALBN
autoheader: warning: missing template: HAVE_SCALBNF
autoheader: warning: missing template: HAVE_SCALBNL
autoheader: warning: missing template: HAVE_SIN
autoheader: warning: missing template: HAVE_SINF
autoheader: warning: missing template: HAVE_SINH
autoheader: warning: missing template: HAVE_SINHF
autoheader: warning: missing template: HAVE_SINHL
autoheader: warning: missing template: HAVE_SINL
autoheader: warning: missing template: HAVE_SQRT
autoheader: warning: missing template: HAVE_SQRTF
autoheader: warning: missing template: HAVE_SQRTL
autoheader: warning: missing template: HAVE_TAN
autoheader: warning: missing template: HAVE_TANF
autoheader: warning: missing template: HAVE_TANH
autoheader: warning: missing template: HAVE_TANHF
autoheader: warning: missing template: HAVE_TANHL
autoheader: warning: missing template: HAVE_TANL
autoheader: warning: missing template: HAVE_TGAMMA
autoheader: warning: missing template: HAVE_TGAMMAF
autoheader: warning: missing template: HAVE_TGAMMAL
autoheader: warning: missing template: HAVE_TRUNC
autoheader: warning: missing template: HAVE_TRUNCF
autoheader: warning: missing template: HAVE_TRUNCL
autoheader: warning: missing template: HAVE_Y0
autoheader: warning: missing template: HAVE_Y0F
autoheader: warning: missing template: HAVE_Y0L
autoheader: warning: missing template: HAVE_Y1
autoheader: warning: missing template: HAVE_Y1F
autoheader: warning: missing template: HAVE_Y1L
autoheader: warning: missing template: HAVE_YN
autoheader: warning: missing template: HAVE_YNF
autoheader: warning: missing template: HAVE_YNL
make[2]: *** [../../../trunk-git/libgfortran/config.h.in] Error 1
make[2]: Leaving directory
`/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
make[1]: *** [check] Error 2
make[1]: Leaving directory
`/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
make: *** [check-target-libgfortran] Error 2
make: *** Waiting for unfinished jobs....


Anybody else seeing something similar? The strange thing is that even
though there is an error the bootstrapping continues just fine. Though
I haven't had time to look into it deeper.



-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-26 21:43       ` Janne Blomqvist
@ 2012-03-27  7:51         ` Tristan Gingold
  2012-03-27  8:01           ` Tristan Gingold
  0 siblings, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-27  7:51 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Tobias Burnus, GCC Patches, fortran


On Mar 26, 2012, at 11:43 PM, Janne Blomqvist wrote:
[...]

> On x86_64-unknown-linux-gnu bootstrap I see the following:
> 
> 
> make[1]: Entering directory
> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
> make  check-am
> make[2]: Entering directory
> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
> (CDPATH="${ZSH_VERSION+.}:" && cd ../../../trunk-git/libgfortran &&
> /bin/bash /home/janne/src/gfortran/trunk/trunk-git/missing --run
> autoheader)
> true  DO=all multi-do # make
> make[1]: Entering directory `/home/janne/src/gfortran/trunk/objdir-git/gcc'
> Making a new config file...
> echo "set tmpdir
> /home/janne/src/gfortran/trunk/objdir-git/gcc/testsuite" >> ./site.tmp
> autoheader: warning: missing template: HAVE_ACOS
> autoheader: Use AC_DEFINE([HAVE_ACOS], [], [Description])
> autoheader: warning: missing template: HAVE_ACOSF

...

> autoheader: warning: missing template: HAVE_YNF
> autoheader: warning: missing template: HAVE_YNL
> make[2]: *** [../../../trunk-git/libgfortran/config.h.in] Error 1
> make[2]: Leaving directory
> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
> make[1]: *** [check] Error 2
> make[1]: Leaving directory
> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
> make: *** [check-target-libgfortran] Error 2
> make: *** Waiting for unfinished jobs....
> 
> 
> Anybody else seeing something similar? The strange thing is that even
> though there is an error the bootstrapping continues just fine. Though
> I haven't had time to look into it deeper.

Yes, I can reproduce that.  Autoheader returns 1 as exit status even for warnings.
I am investigating (I suppose that adding a description will fix the issue).

Tristan.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-27  7:51         ` Tristan Gingold
@ 2012-03-27  8:01           ` Tristan Gingold
  2012-03-27  8:39             ` Janne Blomqvist
  0 siblings, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-27  8:01 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Tobias Burnus, GCC Patches, fortran


On Mar 27, 2012, at 9:51 AM, Tristan Gingold wrote:

> 
> On Mar 26, 2012, at 11:43 PM, Janne Blomqvist wrote:
> [...]
> 
>> On x86_64-unknown-linux-gnu bootstrap I see the following:
>> 
>> 
>> make[1]: Entering directory
>> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
>> make  check-am
>> make[2]: Entering directory
>> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
>> (CDPATH="${ZSH_VERSION+.}:" && cd ../../../trunk-git/libgfortran &&
>> /bin/bash /home/janne/src/gfortran/trunk/trunk-git/missing --run
>> autoheader)
>> true  DO=all multi-do # make
>> make[1]: Entering directory `/home/janne/src/gfortran/trunk/objdir-git/gcc'
>> Making a new config file...
>> echo "set tmpdir
>> /home/janne/src/gfortran/trunk/objdir-git/gcc/testsuite" >> ./site.tmp
>> autoheader: warning: missing template: HAVE_ACOS
>> autoheader: Use AC_DEFINE([HAVE_ACOS], [], [Description])
>> autoheader: warning: missing template: HAVE_ACOSF
> 
> ...
> 
>> autoheader: warning: missing template: HAVE_YNF
>> autoheader: warning: missing template: HAVE_YNL
>> make[2]: *** [../../../trunk-git/libgfortran/config.h.in] Error 1
>> make[2]: Leaving directory
>> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
>> make[1]: *** [check] Error 2
>> make[1]: Leaving directory
>> `/home/janne/src/gfortran/trunk/objdir-git/x86_64-unknown-linux-gnu/libgfortran'
>> make: *** [check-target-libgfortran] Error 2
>> make: *** Waiting for unfinished jobs....
>> 
>> 
>> Anybody else seeing something similar? The strange thing is that even
>> though there is an error the bootstrapping continues just fine. Though
>> I haven't had time to look into it deeper.
> 
> Yes, I can reproduce that.  Autoheader returns 1 as exit status even for warnings.
> I am investigating (I suppose that adding a description will fix the issue).

Hi,

this patch fixes this issue.  Is it OK ?

Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.

Sorry for not having noticed this issue before.

Tristan.

libgfortran/
2012-03-27  Tristan Gingold  <gingold@adacore.com>

	* configure.ac: Add description to AC_DEFINE in
	GCC_CHECK_MATH_FUNC.
	* configure: Regenerate
	* config.h.in: Regenerate.


diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 0f29804..08eb789 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -269,191 +269,191 @@ getcwd localtime_r gmtime_r strerror_r getpwuid_r ttyname_r clock_gettime \
 readlink getgid getpid getppid getuid geteuid umask)
 
 # Check for C99 (and other IEEE) math functions
-GCC_CHECK_MATH_FUNC([acosf],[AC_DEFINE([HAVE_ACOSF],[1])])
-GCC_CHECK_MATH_FUNC([acos],[AC_DEFINE([HAVE_ACOS],[1])])
-GCC_CHECK_MATH_FUNC([acosl],[AC_DEFINE([HAVE_ACOSL],[1])])
-GCC_CHECK_MATH_FUNC([acoshf],[AC_DEFINE([HAVE_ACOSHF],[1])])
-GCC_CHECK_MATH_FUNC([acosh],[AC_DEFINE([HAVE_ACOSH],[1])])
-GCC_CHECK_MATH_FUNC([acoshl],[AC_DEFINE([HAVE_ACOSHL],[1])])
-GCC_CHECK_MATH_FUNC([asinf],[AC_DEFINE([HAVE_ASINF],[1])])
-GCC_CHECK_MATH_FUNC([asin],[AC_DEFINE([HAVE_ASIN],[1])])
-GCC_CHECK_MATH_FUNC([asinl],[AC_DEFINE([HAVE_ASINL],[1])])
-GCC_CHECK_MATH_FUNC([asinhf],[AC_DEFINE([HAVE_ASINHF],[1])])
-GCC_CHECK_MATH_FUNC([asinh],[AC_DEFINE([HAVE_ASINH],[1])])
-GCC_CHECK_MATH_FUNC([asinhl],[AC_DEFINE([HAVE_ASINHL],[1])])
-GCC_CHECK_MATH_FUNC([atan2f],[AC_DEFINE([HAVE_ATAN2F],[1])])
-GCC_CHECK_MATH_FUNC([atan2],[AC_DEFINE([HAVE_ATAN2],[1])])
-GCC_CHECK_MATH_FUNC([atan2l],[AC_DEFINE([HAVE_ATAN2L],[1])])
-GCC_CHECK_MATH_FUNC([atanf],[AC_DEFINE([HAVE_ATANF],[1])])
-GCC_CHECK_MATH_FUNC([atan],[AC_DEFINE([HAVE_ATAN],[1])])
-GCC_CHECK_MATH_FUNC([atanl],[AC_DEFINE([HAVE_ATANL],[1])])
-GCC_CHECK_MATH_FUNC([atanhf],[AC_DEFINE([HAVE_ATANHF],[1])])
-GCC_CHECK_MATH_FUNC([atanh],[AC_DEFINE([HAVE_ATANH],[1])])
-GCC_CHECK_MATH_FUNC([atanhl],[AC_DEFINE([HAVE_ATANHL],[1])])
-GCC_CHECK_MATH_FUNC([cargf],[AC_DEFINE([HAVE_CARGF],[1])])
-GCC_CHECK_MATH_FUNC([carg],[AC_DEFINE([HAVE_CARG],[1])])
-GCC_CHECK_MATH_FUNC([cargl],[AC_DEFINE([HAVE_CARGL],[1])])
-GCC_CHECK_MATH_FUNC([ceilf],[AC_DEFINE([HAVE_CEILF],[1])])
-GCC_CHECK_MATH_FUNC([ceil],[AC_DEFINE([HAVE_CEIL],[1])])
-GCC_CHECK_MATH_FUNC([ceill],[AC_DEFINE([HAVE_CEILL],[1])])
-GCC_CHECK_MATH_FUNC([copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1])])
-GCC_CHECK_MATH_FUNC([copysign],[AC_DEFINE([HAVE_COPYSIGN],[1])])
-GCC_CHECK_MATH_FUNC([copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1])])
-GCC_CHECK_MATH_FUNC([cosf],[AC_DEFINE([HAVE_COSF],[1])])
-GCC_CHECK_MATH_FUNC([cos],[AC_DEFINE([HAVE_COS],[1])])
-GCC_CHECK_MATH_FUNC([cosl],[AC_DEFINE([HAVE_COSL],[1])])
-GCC_CHECK_MATH_FUNC([ccosf],[AC_DEFINE([HAVE_CCOSF],[1])])
-GCC_CHECK_MATH_FUNC([ccos],[AC_DEFINE([HAVE_CCOS],[1])])
-GCC_CHECK_MATH_FUNC([ccosl],[AC_DEFINE([HAVE_CCOSL],[1])])
-GCC_CHECK_MATH_FUNC([coshf],[AC_DEFINE([HAVE_COSHF],[1])])
-GCC_CHECK_MATH_FUNC([cosh],[AC_DEFINE([HAVE_COSH],[1])])
-GCC_CHECK_MATH_FUNC([coshl],[AC_DEFINE([HAVE_COSHL],[1])])
-GCC_CHECK_MATH_FUNC([ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1])])
-GCC_CHECK_MATH_FUNC([ccosh],[AC_DEFINE([HAVE_CCOSH],[1])])
-GCC_CHECK_MATH_FUNC([ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1])])
-GCC_CHECK_MATH_FUNC([expf],[AC_DEFINE([HAVE_EXPF],[1])])
-GCC_CHECK_MATH_FUNC([exp],[AC_DEFINE([HAVE_EXP],[1])])
-GCC_CHECK_MATH_FUNC([expl],[AC_DEFINE([HAVE_EXPL],[1])])
-GCC_CHECK_MATH_FUNC([cexpf],[AC_DEFINE([HAVE_CEXPF],[1])])
-GCC_CHECK_MATH_FUNC([cexp],[AC_DEFINE([HAVE_CEXP],[1])])
-GCC_CHECK_MATH_FUNC([cexpl],[AC_DEFINE([HAVE_CEXPL],[1])])
-GCC_CHECK_MATH_FUNC([fabsf],[AC_DEFINE([HAVE_FABSF],[1])])
-GCC_CHECK_MATH_FUNC([fabs],[AC_DEFINE([HAVE_FABS],[1])])
-GCC_CHECK_MATH_FUNC([fabsl],[AC_DEFINE([HAVE_FABSL],[1])])
-GCC_CHECK_MATH_FUNC([cabsf],[AC_DEFINE([HAVE_CABSF],[1])])
-GCC_CHECK_MATH_FUNC([cabs],[AC_DEFINE([HAVE_CABS],[1])])
-GCC_CHECK_MATH_FUNC([cabsl],[AC_DEFINE([HAVE_CABSL],[1])])
-GCC_CHECK_MATH_FUNC([floorf],[AC_DEFINE([HAVE_FLOORF],[1])])
-GCC_CHECK_MATH_FUNC([floor],[AC_DEFINE([HAVE_FLOOR],[1])])
-GCC_CHECK_MATH_FUNC([floorl],[AC_DEFINE([HAVE_FLOORL],[1])])
-GCC_CHECK_MATH_FUNC([fmodf],[AC_DEFINE([HAVE_FMODF],[1])])
-GCC_CHECK_MATH_FUNC([fmod],[AC_DEFINE([HAVE_FMOD],[1])])
-GCC_CHECK_MATH_FUNC([fmodl],[AC_DEFINE([HAVE_FMODL],[1])])
-GCC_CHECK_MATH_FUNC([frexpf],[AC_DEFINE([HAVE_FREXPF],[1])])
-GCC_CHECK_MATH_FUNC([frexp],[AC_DEFINE([HAVE_FREXP],[1])])
-GCC_CHECK_MATH_FUNC([frexpl],[AC_DEFINE([HAVE_FREXPL],[1])])
-GCC_CHECK_MATH_FUNC([hypotf],[AC_DEFINE([HAVE_HYPOTF],[1])])
-GCC_CHECK_MATH_FUNC([hypot],[AC_DEFINE([HAVE_HYPOT],[1])])
-GCC_CHECK_MATH_FUNC([hypotl],[AC_DEFINE([HAVE_HYPOTL],[1])])
-GCC_CHECK_MATH_FUNC([ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1])])
-GCC_CHECK_MATH_FUNC([ldexp],[AC_DEFINE([HAVE_LDEXP],[1])])
-GCC_CHECK_MATH_FUNC([ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1])])
-GCC_CHECK_MATH_FUNC([logf],[AC_DEFINE([HAVE_LOGF],[1])])
-GCC_CHECK_MATH_FUNC([log],[AC_DEFINE([HAVE_LOG],[1])])
-GCC_CHECK_MATH_FUNC([logl],[AC_DEFINE([HAVE_LOGL],[1])])
-GCC_CHECK_MATH_FUNC([clogf],[AC_DEFINE([HAVE_CLOGF],[1])])
-GCC_CHECK_MATH_FUNC([clog],[AC_DEFINE([HAVE_CLOG],[1])])
-GCC_CHECK_MATH_FUNC([clogl],[AC_DEFINE([HAVE_CLOGL],[1])])
-GCC_CHECK_MATH_FUNC([log10f],[AC_DEFINE([HAVE_LOG10F],[1])])
-GCC_CHECK_MATH_FUNC([log10],[AC_DEFINE([HAVE_LOG10],[1])])
-GCC_CHECK_MATH_FUNC([log10l],[AC_DEFINE([HAVE_LOG10L],[1])])
-GCC_CHECK_MATH_FUNC([clog10f],[AC_DEFINE([HAVE_CLOG10F],[1])])
-GCC_CHECK_MATH_FUNC([clog10],[AC_DEFINE([HAVE_CLOG10],[1])])
-GCC_CHECK_MATH_FUNC([clog10l],[AC_DEFINE([HAVE_CLOG10L],[1])])
-GCC_CHECK_MATH_FUNC([nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1])])
-GCC_CHECK_MATH_FUNC([nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1])])
-GCC_CHECK_MATH_FUNC([nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1])])
-GCC_CHECK_MATH_FUNC([powf],[AC_DEFINE([HAVE_POWF],[1])])
-GCC_CHECK_MATH_FUNC([pow],[AC_DEFINE([HAVE_POW],[1])])
-GCC_CHECK_MATH_FUNC([powl],[AC_DEFINE([HAVE_POWL],[1])])
-GCC_CHECK_MATH_FUNC([cpowf],[AC_DEFINE([HAVE_CPOWF],[1])])
-GCC_CHECK_MATH_FUNC([cpow],[AC_DEFINE([HAVE_CPOW],[1])])
-GCC_CHECK_MATH_FUNC([cpowl],[AC_DEFINE([HAVE_CPOWL],[1])])
-GCC_CHECK_MATH_FUNC([roundf],[AC_DEFINE([HAVE_ROUNDF],[1])])
-GCC_CHECK_MATH_FUNC([round],[AC_DEFINE([HAVE_ROUND],[1])])
-GCC_CHECK_MATH_FUNC([roundl],[AC_DEFINE([HAVE_ROUNDL],[1])])
-GCC_CHECK_MATH_FUNC([lroundf],[AC_DEFINE([HAVE_LROUNDF],[1])])
-GCC_CHECK_MATH_FUNC([lround],[AC_DEFINE([HAVE_LROUND],[1])])
-GCC_CHECK_MATH_FUNC([lroundl],[AC_DEFINE([HAVE_LROUNDL],[1])])
-GCC_CHECK_MATH_FUNC([llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1])])
-GCC_CHECK_MATH_FUNC([llround],[AC_DEFINE([HAVE_LLROUND],[1])])
-GCC_CHECK_MATH_FUNC([llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1])])
-GCC_CHECK_MATH_FUNC([scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1])])
-GCC_CHECK_MATH_FUNC([scalbn],[AC_DEFINE([HAVE_SCALBN],[1])])
-GCC_CHECK_MATH_FUNC([scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1])])
-GCC_CHECK_MATH_FUNC([sinf],[AC_DEFINE([HAVE_SINF],[1])])
-GCC_CHECK_MATH_FUNC([sin],[AC_DEFINE([HAVE_SIN],[1])])
-GCC_CHECK_MATH_FUNC([sinl],[AC_DEFINE([HAVE_SINL],[1])])
-GCC_CHECK_MATH_FUNC([csinf],[AC_DEFINE([HAVE_CSINF],[1])])
-GCC_CHECK_MATH_FUNC([csin],[AC_DEFINE([HAVE_CSIN],[1])])
-GCC_CHECK_MATH_FUNC([csinl],[AC_DEFINE([HAVE_CSINL],[1])])
-GCC_CHECK_MATH_FUNC([sinhf],[AC_DEFINE([HAVE_SINHF],[1])])
-GCC_CHECK_MATH_FUNC([sinh],[AC_DEFINE([HAVE_SINH],[1])])
-GCC_CHECK_MATH_FUNC([sinhl],[AC_DEFINE([HAVE_SINHL],[1])])
-GCC_CHECK_MATH_FUNC([csinhf],[AC_DEFINE([HAVE_CSINHF],[1])])
-GCC_CHECK_MATH_FUNC([csinh],[AC_DEFINE([HAVE_CSINH],[1])])
-GCC_CHECK_MATH_FUNC([csinhl],[AC_DEFINE([HAVE_CSINHL],[1])])
-GCC_CHECK_MATH_FUNC([sqrtf],[AC_DEFINE([HAVE_SQRTF],[1])])
-GCC_CHECK_MATH_FUNC([sqrt],[AC_DEFINE([HAVE_SQRT],[1])])
-GCC_CHECK_MATH_FUNC([sqrtl],[AC_DEFINE([HAVE_SQRTL],[1])])
-GCC_CHECK_MATH_FUNC([csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1])])
-GCC_CHECK_MATH_FUNC([csqrt],[AC_DEFINE([HAVE_CSQRT],[1])])
-GCC_CHECK_MATH_FUNC([csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1])])
-GCC_CHECK_MATH_FUNC([tanf],[AC_DEFINE([HAVE_TANF],[1])])
-GCC_CHECK_MATH_FUNC([tan],[AC_DEFINE([HAVE_TAN],[1])])
-GCC_CHECK_MATH_FUNC([tanl],[AC_DEFINE([HAVE_TANL],[1])])
-GCC_CHECK_MATH_FUNC([ctanf],[AC_DEFINE([HAVE_CTANF],[1])])
-GCC_CHECK_MATH_FUNC([ctan],[AC_DEFINE([HAVE_CTAN],[1])])
-GCC_CHECK_MATH_FUNC([ctanl],[AC_DEFINE([HAVE_CTANL],[1])])
-GCC_CHECK_MATH_FUNC([tanhf],[AC_DEFINE([HAVE_TANHF],[1])])
-GCC_CHECK_MATH_FUNC([tanh],[AC_DEFINE([HAVE_TANH],[1])])
-GCC_CHECK_MATH_FUNC([tanhl],[AC_DEFINE([HAVE_TANHL],[1])])
-GCC_CHECK_MATH_FUNC([ctanhf],[AC_DEFINE([HAVE_CTANHF],[1])])
-GCC_CHECK_MATH_FUNC([ctanh],[AC_DEFINE([HAVE_CTANH],[1])])
-GCC_CHECK_MATH_FUNC([ctanhl],[AC_DEFINE([HAVE_CTANHL],[1])])
-GCC_CHECK_MATH_FUNC([truncf],[AC_DEFINE([HAVE_TRUNCF],[1])])
-GCC_CHECK_MATH_FUNC([trunc],[AC_DEFINE([HAVE_TRUNC],[1])])
-GCC_CHECK_MATH_FUNC([truncl],[AC_DEFINE([HAVE_TRUNCL],[1])])
-GCC_CHECK_MATH_FUNC([erff],[AC_DEFINE([HAVE_ERFF],[1])])
-GCC_CHECK_MATH_FUNC([erf],[AC_DEFINE([HAVE_ERF],[1])])
-GCC_CHECK_MATH_FUNC([erfl],[AC_DEFINE([HAVE_ERFL],[1])])
-GCC_CHECK_MATH_FUNC([erfcf],[AC_DEFINE([HAVE_ERFCF],[1])])
-GCC_CHECK_MATH_FUNC([erfc],[AC_DEFINE([HAVE_ERFC],[1])])
-GCC_CHECK_MATH_FUNC([erfcl],[AC_DEFINE([HAVE_ERFCL],[1])])
-GCC_CHECK_MATH_FUNC([j0f],[AC_DEFINE([HAVE_J0F],[1])])
-GCC_CHECK_MATH_FUNC([j0],[AC_DEFINE([HAVE_J0],[1])])
-GCC_CHECK_MATH_FUNC([j0l],[AC_DEFINE([HAVE_J0L],[1])])
-GCC_CHECK_MATH_FUNC([j1f],[AC_DEFINE([HAVE_J1F],[1])])
-GCC_CHECK_MATH_FUNC([j1],[AC_DEFINE([HAVE_J1],[1])])
-GCC_CHECK_MATH_FUNC([j1l],[AC_DEFINE([HAVE_J1L],[1])])
-GCC_CHECK_MATH_FUNC([jnf],[AC_DEFINE([HAVE_JNF],[1])])
-GCC_CHECK_MATH_FUNC([jn],[AC_DEFINE([HAVE_JN],[1])])
-GCC_CHECK_MATH_FUNC([jnl],[AC_DEFINE([HAVE_JNL],[1])])
-GCC_CHECK_MATH_FUNC([y0f],[AC_DEFINE([HAVE_Y0F],[1])])
-GCC_CHECK_MATH_FUNC([y0],[AC_DEFINE([HAVE_Y0],[1])])
-GCC_CHECK_MATH_FUNC([y0l],[AC_DEFINE([HAVE_Y0L],[1])])
-GCC_CHECK_MATH_FUNC([y1f],[AC_DEFINE([HAVE_Y1F],[1])])
-GCC_CHECK_MATH_FUNC([y1],[AC_DEFINE([HAVE_Y1],[1])])
-GCC_CHECK_MATH_FUNC([y1l],[AC_DEFINE([HAVE_Y1L],[1])])
-GCC_CHECK_MATH_FUNC([ynf],[AC_DEFINE([HAVE_YNF],[1])])
-GCC_CHECK_MATH_FUNC([yn],[AC_DEFINE([HAVE_YN],[1])])
-GCC_CHECK_MATH_FUNC([ynl],[AC_DEFINE([HAVE_YNL],[1])])
-GCC_CHECK_MATH_FUNC([tgamma],[AC_DEFINE([HAVE_TGAMMA],[1])])
-GCC_CHECK_MATH_FUNC([tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1])])
-GCC_CHECK_MATH_FUNC([tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1])])
-GCC_CHECK_MATH_FUNC([lgamma],[AC_DEFINE([HAVE_LGAMMA],[1])])
-GCC_CHECK_MATH_FUNC([lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1])])
-GCC_CHECK_MATH_FUNC([lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1])])
+GCC_CHECK_MATH_FUNC([acosf],[AC_DEFINE([HAVE_ACOSF],[1],[acosf is available])])
+GCC_CHECK_MATH_FUNC([acos],[AC_DEFINE([HAVE_ACOS],[1],[acos is available])])
+GCC_CHECK_MATH_FUNC([acosl],[AC_DEFINE([HAVE_ACOSL],[1],[acosl is available])])
+GCC_CHECK_MATH_FUNC([acoshf],[AC_DEFINE([HAVE_ACOSHF],[1],[acoshf is available])])
+GCC_CHECK_MATH_FUNC([acosh],[AC_DEFINE([HAVE_ACOSH],[1],[acosh is available])])
+GCC_CHECK_MATH_FUNC([acoshl],[AC_DEFINE([HAVE_ACOSHL],[1],[acoshl is available])])
+GCC_CHECK_MATH_FUNC([asinf],[AC_DEFINE([HAVE_ASINF],[1],[asinf is available])])
+GCC_CHECK_MATH_FUNC([asin],[AC_DEFINE([HAVE_ASIN],[1],[asin is available])])
+GCC_CHECK_MATH_FUNC([asinl],[AC_DEFINE([HAVE_ASINL],[1],[asinl is available])])
+GCC_CHECK_MATH_FUNC([asinhf],[AC_DEFINE([HAVE_ASINHF],[1],[asinhf is available])])
+GCC_CHECK_MATH_FUNC([asinh],[AC_DEFINE([HAVE_ASINH],[1],[asinh is available])])
+GCC_CHECK_MATH_FUNC([asinhl],[AC_DEFINE([HAVE_ASINHL],[1],[asinhl is available])])
+GCC_CHECK_MATH_FUNC([atan2f],[AC_DEFINE([HAVE_ATAN2F],[1],[atan2f is available])])
+GCC_CHECK_MATH_FUNC([atan2],[AC_DEFINE([HAVE_ATAN2],[1],[atan2 is available])])
+GCC_CHECK_MATH_FUNC([atan2l],[AC_DEFINE([HAVE_ATAN2L],[1],[atan2l is available])])
+GCC_CHECK_MATH_FUNC([atanf],[AC_DEFINE([HAVE_ATANF],[1],[atanf is available])])
+GCC_CHECK_MATH_FUNC([atan],[AC_DEFINE([HAVE_ATAN],[1],[atan is available])])
+GCC_CHECK_MATH_FUNC([atanl],[AC_DEFINE([HAVE_ATANL],[1],[atanl is available])])
+GCC_CHECK_MATH_FUNC([atanhf],[AC_DEFINE([HAVE_ATANHF],[1],[atanhf is available])])
+GCC_CHECK_MATH_FUNC([atanh],[AC_DEFINE([HAVE_ATANH],[1],[atanh is available])])
+GCC_CHECK_MATH_FUNC([atanhl],[AC_DEFINE([HAVE_ATANHL],[1],[atanhl is available])])
+GCC_CHECK_MATH_FUNC([cargf],[AC_DEFINE([HAVE_CARGF],[1],[cargf is available])])
+GCC_CHECK_MATH_FUNC([carg],[AC_DEFINE([HAVE_CARG],[1],[carg is available])])
+GCC_CHECK_MATH_FUNC([cargl],[AC_DEFINE([HAVE_CARGL],[1],[cargl is available])])
+GCC_CHECK_MATH_FUNC([ceilf],[AC_DEFINE([HAVE_CEILF],[1],[ceilf is available])])
+GCC_CHECK_MATH_FUNC([ceil],[AC_DEFINE([HAVE_CEIL],[1],[ceil is available])])
+GCC_CHECK_MATH_FUNC([ceill],[AC_DEFINE([HAVE_CEILL],[1],[ceill is available])])
+GCC_CHECK_MATH_FUNC([copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1],[copysignf is available])])
+GCC_CHECK_MATH_FUNC([copysign],[AC_DEFINE([HAVE_COPYSIGN],[1],[copysign is available])])
+GCC_CHECK_MATH_FUNC([copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1],[copysignl is available])])
+GCC_CHECK_MATH_FUNC([cosf],[AC_DEFINE([HAVE_COSF],[1],[cosf is available])])
+GCC_CHECK_MATH_FUNC([cos],[AC_DEFINE([HAVE_COS],[1],[cos is available])])
+GCC_CHECK_MATH_FUNC([cosl],[AC_DEFINE([HAVE_COSL],[1],[cosl is available])])
+GCC_CHECK_MATH_FUNC([ccosf],[AC_DEFINE([HAVE_CCOSF],[1],[ccosf is available])])
+GCC_CHECK_MATH_FUNC([ccos],[AC_DEFINE([HAVE_CCOS],[1],[ccos is available])])
+GCC_CHECK_MATH_FUNC([ccosl],[AC_DEFINE([HAVE_CCOSL],[1],[ccosl is available])])
+GCC_CHECK_MATH_FUNC([coshf],[AC_DEFINE([HAVE_COSHF],[1],[coshf is available])])
+GCC_CHECK_MATH_FUNC([cosh],[AC_DEFINE([HAVE_COSH],[1],[cosh is available])])
+GCC_CHECK_MATH_FUNC([coshl],[AC_DEFINE([HAVE_COSHL],[1],[coshl is available])])
+GCC_CHECK_MATH_FUNC([ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1],[ccoshf is available])])
+GCC_CHECK_MATH_FUNC([ccosh],[AC_DEFINE([HAVE_CCOSH],[1],[ccosh is available])])
+GCC_CHECK_MATH_FUNC([ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1],[ccoshl is available])])
+GCC_CHECK_MATH_FUNC([expf],[AC_DEFINE([HAVE_EXPF],[1],[expf is available])])
+GCC_CHECK_MATH_FUNC([exp],[AC_DEFINE([HAVE_EXP],[1],[exp is available])])
+GCC_CHECK_MATH_FUNC([expl],[AC_DEFINE([HAVE_EXPL],[1],[expl is available])])
+GCC_CHECK_MATH_FUNC([cexpf],[AC_DEFINE([HAVE_CEXPF],[1],[cexpf is available])])
+GCC_CHECK_MATH_FUNC([cexp],[AC_DEFINE([HAVE_CEXP],[1],[cexp is available])])
+GCC_CHECK_MATH_FUNC([cexpl],[AC_DEFINE([HAVE_CEXPL],[1],[cexpl is available])])
+GCC_CHECK_MATH_FUNC([fabsf],[AC_DEFINE([HAVE_FABSF],[1],[fabsf is available])])
+GCC_CHECK_MATH_FUNC([fabs],[AC_DEFINE([HAVE_FABS],[1],[fabs is available])])
+GCC_CHECK_MATH_FUNC([fabsl],[AC_DEFINE([HAVE_FABSL],[1],[fabsl is available])])
+GCC_CHECK_MATH_FUNC([cabsf],[AC_DEFINE([HAVE_CABSF],[1],[cabsf is available])])
+GCC_CHECK_MATH_FUNC([cabs],[AC_DEFINE([HAVE_CABS],[1],[cabs is available])])
+GCC_CHECK_MATH_FUNC([cabsl],[AC_DEFINE([HAVE_CABSL],[1],[cabsl is available])])
+GCC_CHECK_MATH_FUNC([floorf],[AC_DEFINE([HAVE_FLOORF],[1],[floorf is available])])
+GCC_CHECK_MATH_FUNC([floor],[AC_DEFINE([HAVE_FLOOR],[1],[floor is available])])
+GCC_CHECK_MATH_FUNC([floorl],[AC_DEFINE([HAVE_FLOORL],[1],[floorl is available])])
+GCC_CHECK_MATH_FUNC([fmodf],[AC_DEFINE([HAVE_FMODF],[1],[fmodf is available])])
+GCC_CHECK_MATH_FUNC([fmod],[AC_DEFINE([HAVE_FMOD],[1],[fmod is available])])
+GCC_CHECK_MATH_FUNC([fmodl],[AC_DEFINE([HAVE_FMODL],[1],[fmodl is available])])
+GCC_CHECK_MATH_FUNC([frexpf],[AC_DEFINE([HAVE_FREXPF],[1],[frexpf is available])])
+GCC_CHECK_MATH_FUNC([frexp],[AC_DEFINE([HAVE_FREXP],[1],[frexp is available])])
+GCC_CHECK_MATH_FUNC([frexpl],[AC_DEFINE([HAVE_FREXPL],[1],[frexpl is available])])
+GCC_CHECK_MATH_FUNC([hypotf],[AC_DEFINE([HAVE_HYPOTF],[1],[hypotf is available])])
+GCC_CHECK_MATH_FUNC([hypot],[AC_DEFINE([HAVE_HYPOT],[1],[hypot is available])])
+GCC_CHECK_MATH_FUNC([hypotl],[AC_DEFINE([HAVE_HYPOTL],[1],[hypotl is available])])
+GCC_CHECK_MATH_FUNC([ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1],[ldexpf is available])])
+GCC_CHECK_MATH_FUNC([ldexp],[AC_DEFINE([HAVE_LDEXP],[1],[ldexp is available])])
+GCC_CHECK_MATH_FUNC([ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1],[ldexpl is available])])
+GCC_CHECK_MATH_FUNC([logf],[AC_DEFINE([HAVE_LOGF],[1],[logf is available])])
+GCC_CHECK_MATH_FUNC([log],[AC_DEFINE([HAVE_LOG],[1],[log is available])])
+GCC_CHECK_MATH_FUNC([logl],[AC_DEFINE([HAVE_LOGL],[1],[logl is available])])
+GCC_CHECK_MATH_FUNC([clogf],[AC_DEFINE([HAVE_CLOGF],[1],[clogf is available])])
+GCC_CHECK_MATH_FUNC([clog],[AC_DEFINE([HAVE_CLOG],[1],[clog is available])])
+GCC_CHECK_MATH_FUNC([clogl],[AC_DEFINE([HAVE_CLOGL],[1],[clogl is available])])
+GCC_CHECK_MATH_FUNC([log10f],[AC_DEFINE([HAVE_LOG10F],[1],[log10f is available])])
+GCC_CHECK_MATH_FUNC([log10],[AC_DEFINE([HAVE_LOG10],[1],[log10 is available])])
+GCC_CHECK_MATH_FUNC([log10l],[AC_DEFINE([HAVE_LOG10L],[1],[log10l is available])])
+GCC_CHECK_MATH_FUNC([clog10f],[AC_DEFINE([HAVE_CLOG10F],[1],[clog10f is available])])
+GCC_CHECK_MATH_FUNC([clog10],[AC_DEFINE([HAVE_CLOG10],[1],[clog10 is available])])
+GCC_CHECK_MATH_FUNC([clog10l],[AC_DEFINE([HAVE_CLOG10L],[1],[clog10l is available])])
+GCC_CHECK_MATH_FUNC([nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1],[nextafterf is available])])
+GCC_CHECK_MATH_FUNC([nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1],[nextafter is available])])
+GCC_CHECK_MATH_FUNC([nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1],[nextafterl is available])])
+GCC_CHECK_MATH_FUNC([powf],[AC_DEFINE([HAVE_POWF],[1],[powf is available])])
+GCC_CHECK_MATH_FUNC([pow],[AC_DEFINE([HAVE_POW],[1],[pow is available])])
+GCC_CHECK_MATH_FUNC([powl],[AC_DEFINE([HAVE_POWL],[1],[powl is available])])
+GCC_CHECK_MATH_FUNC([cpowf],[AC_DEFINE([HAVE_CPOWF],[1],[cpowf is available])])
+GCC_CHECK_MATH_FUNC([cpow],[AC_DEFINE([HAVE_CPOW],[1],[cpow is available])])
+GCC_CHECK_MATH_FUNC([cpowl],[AC_DEFINE([HAVE_CPOWL],[1],[cpowl is available])])
+GCC_CHECK_MATH_FUNC([roundf],[AC_DEFINE([HAVE_ROUNDF],[1],[roundf is available])])
+GCC_CHECK_MATH_FUNC([round],[AC_DEFINE([HAVE_ROUND],[1],[round is available])])
+GCC_CHECK_MATH_FUNC([roundl],[AC_DEFINE([HAVE_ROUNDL],[1],[roundl is available])])
+GCC_CHECK_MATH_FUNC([lroundf],[AC_DEFINE([HAVE_LROUNDF],[1],[lroundf is available])])
+GCC_CHECK_MATH_FUNC([lround],[AC_DEFINE([HAVE_LROUND],[1],[lround is available])])
+GCC_CHECK_MATH_FUNC([lroundl],[AC_DEFINE([HAVE_LROUNDL],[1],[lroundl is available])])
+GCC_CHECK_MATH_FUNC([llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1],[llroundf is available])])
+GCC_CHECK_MATH_FUNC([llround],[AC_DEFINE([HAVE_LLROUND],[1],[llround is available])])
+GCC_CHECK_MATH_FUNC([llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1],[llroundl is available])])
+GCC_CHECK_MATH_FUNC([scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1],[scalbnf is available])])
+GCC_CHECK_MATH_FUNC([scalbn],[AC_DEFINE([HAVE_SCALBN],[1],[scalbn is available])])
+GCC_CHECK_MATH_FUNC([scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1],[scalbnl is available])])
+GCC_CHECK_MATH_FUNC([sinf],[AC_DEFINE([HAVE_SINF],[1],[sinf is available])])
+GCC_CHECK_MATH_FUNC([sin],[AC_DEFINE([HAVE_SIN],[1],[sin is available])])
+GCC_CHECK_MATH_FUNC([sinl],[AC_DEFINE([HAVE_SINL],[1],[sinl is available])])
+GCC_CHECK_MATH_FUNC([csinf],[AC_DEFINE([HAVE_CSINF],[1],[csinf is available])])
+GCC_CHECK_MATH_FUNC([csin],[AC_DEFINE([HAVE_CSIN],[1],[csin is available])])
+GCC_CHECK_MATH_FUNC([csinl],[AC_DEFINE([HAVE_CSINL],[1],[csinl is available])])
+GCC_CHECK_MATH_FUNC([sinhf],[AC_DEFINE([HAVE_SINHF],[1],[sinhf is available])])
+GCC_CHECK_MATH_FUNC([sinh],[AC_DEFINE([HAVE_SINH],[1],[sinh is available])])
+GCC_CHECK_MATH_FUNC([sinhl],[AC_DEFINE([HAVE_SINHL],[1],[sinhl is available])])
+GCC_CHECK_MATH_FUNC([csinhf],[AC_DEFINE([HAVE_CSINHF],[1],[csinhf is available])])
+GCC_CHECK_MATH_FUNC([csinh],[AC_DEFINE([HAVE_CSINH],[1],[csinh is available])])
+GCC_CHECK_MATH_FUNC([csinhl],[AC_DEFINE([HAVE_CSINHL],[1],[csinhl is available])])
+GCC_CHECK_MATH_FUNC([sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[sqrtf is available])])
+GCC_CHECK_MATH_FUNC([sqrt],[AC_DEFINE([HAVE_SQRT],[1],[sqrt is available])])
+GCC_CHECK_MATH_FUNC([sqrtl],[AC_DEFINE([HAVE_SQRTL],[1],[sqrtl is available])])
+GCC_CHECK_MATH_FUNC([csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1],[csqrtf is available])])
+GCC_CHECK_MATH_FUNC([csqrt],[AC_DEFINE([HAVE_CSQRT],[1],[csqrt is available])])
+GCC_CHECK_MATH_FUNC([csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1],[csqrtl is available])])
+GCC_CHECK_MATH_FUNC([tanf],[AC_DEFINE([HAVE_TANF],[1],[tanf is available])])
+GCC_CHECK_MATH_FUNC([tan],[AC_DEFINE([HAVE_TAN],[1],[tan is available])])
+GCC_CHECK_MATH_FUNC([tanl],[AC_DEFINE([HAVE_TANL],[1],[tanl is available])])
+GCC_CHECK_MATH_FUNC([ctanf],[AC_DEFINE([HAVE_CTANF],[1],[ctanf is available])])
+GCC_CHECK_MATH_FUNC([ctan],[AC_DEFINE([HAVE_CTAN],[1],[ctan is available])])
+GCC_CHECK_MATH_FUNC([ctanl],[AC_DEFINE([HAVE_CTANL],[1],[ctanl is available])])
+GCC_CHECK_MATH_FUNC([tanhf],[AC_DEFINE([HAVE_TANHF],[1],[tanhf is available])])
+GCC_CHECK_MATH_FUNC([tanh],[AC_DEFINE([HAVE_TANH],[1],[tanh is available])])
+GCC_CHECK_MATH_FUNC([tanhl],[AC_DEFINE([HAVE_TANHL],[1],[tanhl is available])])
+GCC_CHECK_MATH_FUNC([ctanhf],[AC_DEFINE([HAVE_CTANHF],[1],[ctanhf is available])])
+GCC_CHECK_MATH_FUNC([ctanh],[AC_DEFINE([HAVE_CTANH],[1],[ctanh is available])])
+GCC_CHECK_MATH_FUNC([ctanhl],[AC_DEFINE([HAVE_CTANHL],[1],[ctanhl is available])])
+GCC_CHECK_MATH_FUNC([truncf],[AC_DEFINE([HAVE_TRUNCF],[1],[truncf is available])])
+GCC_CHECK_MATH_FUNC([trunc],[AC_DEFINE([HAVE_TRUNC],[1],[trunc is available])])
+GCC_CHECK_MATH_FUNC([truncl],[AC_DEFINE([HAVE_TRUNCL],[1],[truncl is available])])
+GCC_CHECK_MATH_FUNC([erff],[AC_DEFINE([HAVE_ERFF],[1],[erff is available])])
+GCC_CHECK_MATH_FUNC([erf],[AC_DEFINE([HAVE_ERF],[1],[erf is available])])
+GCC_CHECK_MATH_FUNC([erfl],[AC_DEFINE([HAVE_ERFL],[1],[erfl is available])])
+GCC_CHECK_MATH_FUNC([erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[erfcf is available])])
+GCC_CHECK_MATH_FUNC([erfc],[AC_DEFINE([HAVE_ERFC],[1],[erfc is available])])
+GCC_CHECK_MATH_FUNC([erfcl],[AC_DEFINE([HAVE_ERFCL],[1],[erfcl is available])])
+GCC_CHECK_MATH_FUNC([j0f],[AC_DEFINE([HAVE_J0F],[1],[j0f is available])])
+GCC_CHECK_MATH_FUNC([j0],[AC_DEFINE([HAVE_J0],[1],[j0 is available])])
+GCC_CHECK_MATH_FUNC([j0l],[AC_DEFINE([HAVE_J0L],[1],[j0l is available])])
+GCC_CHECK_MATH_FUNC([j1f],[AC_DEFINE([HAVE_J1F],[1],[j1f is available])])
+GCC_CHECK_MATH_FUNC([j1],[AC_DEFINE([HAVE_J1],[1],[j1 is available])])
+GCC_CHECK_MATH_FUNC([j1l],[AC_DEFINE([HAVE_J1L],[1],[j1l is available])])
+GCC_CHECK_MATH_FUNC([jnf],[AC_DEFINE([HAVE_JNF],[1],[jnf is available])])
+GCC_CHECK_MATH_FUNC([jn],[AC_DEFINE([HAVE_JN],[1],[jn is available])])
+GCC_CHECK_MATH_FUNC([jnl],[AC_DEFINE([HAVE_JNL],[1],[jnl is available])])
+GCC_CHECK_MATH_FUNC([y0f],[AC_DEFINE([HAVE_Y0F],[1],[y0f is available])])
+GCC_CHECK_MATH_FUNC([y0],[AC_DEFINE([HAVE_Y0],[1],[y0 is available])])
+GCC_CHECK_MATH_FUNC([y0l],[AC_DEFINE([HAVE_Y0L],[1],[y0l is available])])
+GCC_CHECK_MATH_FUNC([y1f],[AC_DEFINE([HAVE_Y1F],[1],[y1f is available])])
+GCC_CHECK_MATH_FUNC([y1],[AC_DEFINE([HAVE_Y1],[1],[y1 is available])])
+GCC_CHECK_MATH_FUNC([y1l],[AC_DEFINE([HAVE_Y1L],[1],[y1l is available])])
+GCC_CHECK_MATH_FUNC([ynf],[AC_DEFINE([HAVE_YNF],[1],[ynf is available])])
+GCC_CHECK_MATH_FUNC([yn],[AC_DEFINE([HAVE_YN],[1],[yn is available])])
+GCC_CHECK_MATH_FUNC([ynl],[AC_DEFINE([HAVE_YNL],[1],[ynl is available])])
+GCC_CHECK_MATH_FUNC([tgamma],[AC_DEFINE([HAVE_TGAMMA],[1],[tgamma is available])])
+GCC_CHECK_MATH_FUNC([tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1],[tgammaf is available])])
+GCC_CHECK_MATH_FUNC([tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1],[tgammal is available])])
+GCC_CHECK_MATH_FUNC([lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[lgamma is available])])
+GCC_CHECK_MATH_FUNC([lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[lgammaf is available])])
+GCC_CHECK_MATH_FUNC([lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1],[lgammal is available])])
 
 # Check for GFORTRAN_C99_1.1 funcs
-GCC_CHECK_MATH_FUNC([cacos],[AC_DEFINE([HAVE_CACOS],[1])])
-GCC_CHECK_MATH_FUNC([cacosf],[AC_DEFINE([HAVE_CACOSF],[1])])
-GCC_CHECK_MATH_FUNC([cacosh],[AC_DEFINE([HAVE_CACOSH],[1])])
-GCC_CHECK_MATH_FUNC([cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1])])
-GCC_CHECK_MATH_FUNC([cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1])])
-GCC_CHECK_MATH_FUNC([cacosl],[AC_DEFINE([HAVE_CACOSL],[1])])
-GCC_CHECK_MATH_FUNC([casin],[AC_DEFINE([HAVE_CASIN],[1])])
-GCC_CHECK_MATH_FUNC([casinf],[AC_DEFINE([HAVE_CASINF],[1])])
-GCC_CHECK_MATH_FUNC([casinh],[AC_DEFINE([HAVE_CASINH],[1])])
-GCC_CHECK_MATH_FUNC([casinhf],[AC_DEFINE([HAVE_CASINHF],[1])])
-GCC_CHECK_MATH_FUNC([casinhl],[AC_DEFINE([HAVE_CASINHL],[1])])
-GCC_CHECK_MATH_FUNC([casinl],[AC_DEFINE([HAVE_CASINL],[1])])
-GCC_CHECK_MATH_FUNC([catan],[AC_DEFINE([HAVE_CATAN],[1])])
-GCC_CHECK_MATH_FUNC([catanf],[AC_DEFINE([HAVE_CATANF],[1])])
-GCC_CHECK_MATH_FUNC([catanh],[AC_DEFINE([HAVE_CATANH],[1])])
-GCC_CHECK_MATH_FUNC([catanhf],[AC_DEFINE([HAVE_CATANHF],[1])])
-GCC_CHECK_MATH_FUNC([catanhl],[AC_DEFINE([HAVE_CATANHL],[1])])
-GCC_CHECK_MATH_FUNC([catanl],[AC_DEFINE([HAVE_CATANL],[1])])
+GCC_CHECK_MATH_FUNC([cacos],[AC_DEFINE([HAVE_CACOS],[1],[cacos is available])])
+GCC_CHECK_MATH_FUNC([cacosf],[AC_DEFINE([HAVE_CACOSF],[1],[cacosf is available])])
+GCC_CHECK_MATH_FUNC([cacosh],[AC_DEFINE([HAVE_CACOSH],[1],[cacosh is available])])
+GCC_CHECK_MATH_FUNC([cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1],[cacoshf is available])])
+GCC_CHECK_MATH_FUNC([cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1],[cacoshl is available])])
+GCC_CHECK_MATH_FUNC([cacosl],[AC_DEFINE([HAVE_CACOSL],[1],[cacosl is available])])
+GCC_CHECK_MATH_FUNC([casin],[AC_DEFINE([HAVE_CASIN],[1],[casin is available])])
+GCC_CHECK_MATH_FUNC([casinf],[AC_DEFINE([HAVE_CASINF],[1],[casinf is available])])
+GCC_CHECK_MATH_FUNC([casinh],[AC_DEFINE([HAVE_CASINH],[1],[casinh is available])])
+GCC_CHECK_MATH_FUNC([casinhf],[AC_DEFINE([HAVE_CASINHF],[1],[casinhf is available])])
+GCC_CHECK_MATH_FUNC([casinhl],[AC_DEFINE([HAVE_CASINHL],[1],[casinhl is available])])
+GCC_CHECK_MATH_FUNC([casinl],[AC_DEFINE([HAVE_CASINL],[1],[casinl is available])])
+GCC_CHECK_MATH_FUNC([catan],[AC_DEFINE([HAVE_CATAN],[1],[catan is available])])
+GCC_CHECK_MATH_FUNC([catanf],[AC_DEFINE([HAVE_CATANF],[1],[catanf is available])])
+GCC_CHECK_MATH_FUNC([catanh],[AC_DEFINE([HAVE_CATANH],[1],[catanh is available])])
+GCC_CHECK_MATH_FUNC([catanhf],[AC_DEFINE([HAVE_CATANHF],[1],[catanhf is available])])
+GCC_CHECK_MATH_FUNC([catanhl],[AC_DEFINE([HAVE_CATANHL],[1],[catanhl is available])])
+GCC_CHECK_MATH_FUNC([catanl],[AC_DEFINE([HAVE_CATANL],[1],[catanl is available])])
 
 # On AIX, clog is present in libm as __clog
 AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-27  8:01           ` Tristan Gingold
@ 2012-03-27  8:39             ` Janne Blomqvist
  2012-03-27  9:29               ` Tristan Gingold
  2012-03-30 10:22               ` Tristan Gingold
  0 siblings, 2 replies; 17+ messages in thread
From: Janne Blomqvist @ 2012-03-27  8:39 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: Tobias Burnus, GCC Patches, fortran

On Tue, Mar 27, 2012 at 11:01, Tristan Gingold <gingold@adacore.com> wrote:
> Hi,
>
> this patch fixes this issue.  Is it OK ?

Ok.

> Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.

That looks like a cleaner solution, yes, and less chance for typos to sneak in.

> Sorry for not having noticed this issue before.

No problem. Thanks for fixing it quickly.

-- 
Janne Blomqvist

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-27  8:39             ` Janne Blomqvist
@ 2012-03-27  9:29               ` Tristan Gingold
  2012-03-30 10:22               ` Tristan Gingold
  1 sibling, 0 replies; 17+ messages in thread
From: Tristan Gingold @ 2012-03-27  9:29 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Tobias Burnus, GCC Patches, fortran


On Mar 27, 2012, at 10:38 AM, Janne Blomqvist wrote:

> On Tue, Mar 27, 2012 at 11:01, Tristan Gingold <gingold@adacore.com> wrote:
>> Hi,
>> 
>> this patch fixes this issue.  Is it OK ?
> 
> Ok.

No check-gfortran regressions on x86_64-darwin, committed.

>> Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.
> 
> That looks like a cleaner solution, yes, and less chance for typos to sneak in.
> 
>> Sorry for not having noticed this issue before.
> 
> No problem. Thanks for fixing it quickly.

You're welcome!

Tristan.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-27  8:39             ` Janne Blomqvist
  2012-03-27  9:29               ` Tristan Gingold
@ 2012-03-30 10:22               ` Tristan Gingold
  2012-03-30 12:40                 ` Paolo Bonzini
  1 sibling, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-30 10:22 UTC (permalink / raw)
  To: Janne Blomqvist; +Cc: Tobias Burnus, GCC Patches, fortran, Paolo Bonzini


On Mar 27, 2012, at 10:38 AM, Janne Blomqvist wrote:

> On Tue, Mar 27, 2012 at 11:01, Tristan Gingold <gingold@adacore.com> wrote:
>> Hi,
>> 
>> this patch fixes this issue.  Is it OK ?
> 
> Ok.
> 
>> Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.
> 
> That looks like a cleaner solution, yes, and less chance for typos to sneak in.

Hi,

here is the 'cleaner solution': now GCC_CHECK_MATH_FUNC automatically define the HAVE_xxx variable.

The description is now: Define to 1 if you have the `xxx' function.  As a consequence, libgfortran/config.h.in was regenerated (with differences like:
 
-/* acos is available */
+/* Define to 1 if you have the `acos' function. */
 #undef HAVE_ACOS
 
)

Tested by rebuild libgfortran for ia64-hp-openvms and visual inspection of differences.

I have CC: Paolo as he approved the first version of math.m4.

Ok for trunk ?

Tristan.


config/
2012-03-30  Tristan Gingold  <gingold@adacore.com>

	* math.m4 (GCC_CHECK_MATH_FUNC): Remove if-present
	argument.  Define the variable.


libgfortran/
2012-03-30  Tristan Gingold  <gingold@adacore.com>

	* configure.ac: Use new version of GCC_CHECK_MATH_FUNC.
	* configure: Regenerate
	* config.h.in: Regenerate.

diff --git a/config/math.m4 b/config/math.m4
index 5527c25..23835f2 100644
--- a/config/math.m4
+++ b/config/math.m4
@@ -14,10 +14,10 @@ dnl  functions).
 AC_DEFUN([GCC_CHECK_MATH_HEADERS],
 [AC_CHECK_HEADERS_ONCE(math.h complex.h)])
 
-dnl GCC_CHECK_MATH_FUNC([name],[if-present])
+dnl GCC_CHECK_MATH_FUNC([name])
 dnl
 dnl Check whether math function NAME is available on the system (by compiling
-dnl and linking a C program) and run if-present on success.
+dnl and linking a C program) and run define HAVE_name on success.
 dnl
 dnl Note that OpenVMS system insists on including complex.h before math.h
 AC_DEFUN([GCC_CHECK_MATH_FUNC],
@@ -44,6 +44,7 @@ main ()
 [gcc_cv_math_func_$1=yes],
 [gcc_cv_math_func_$1=no])])
   if test $gcc_cv_math_func_$1 = yes; then
-    $2
+    AC_DEFINE_UNQUOTED(AS_TR_CPP(HAVE_$1),[1],
+                       [Define to 1 if you have the `$1' function.])
   fi
 ])
diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 08eb789..d70924e 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -269,191 +269,191 @@ getcwd localtime_r gmtime_r strerror_r getpwuid_r ttyname_r clock_gettime \
 readlink getgid getpid getppid getuid geteuid umask)
 
 # Check for C99 (and other IEEE) math functions
-GCC_CHECK_MATH_FUNC([acosf],[AC_DEFINE([HAVE_ACOSF],[1],[acosf is available])])
-GCC_CHECK_MATH_FUNC([acos],[AC_DEFINE([HAVE_ACOS],[1],[acos is available])])
-GCC_CHECK_MATH_FUNC([acosl],[AC_DEFINE([HAVE_ACOSL],[1],[acosl is available])])
-GCC_CHECK_MATH_FUNC([acoshf],[AC_DEFINE([HAVE_ACOSHF],[1],[acoshf is available])])
-GCC_CHECK_MATH_FUNC([acosh],[AC_DEFINE([HAVE_ACOSH],[1],[acosh is available])])
-GCC_CHECK_MATH_FUNC([acoshl],[AC_DEFINE([HAVE_ACOSHL],[1],[acoshl is available])])
-GCC_CHECK_MATH_FUNC([asinf],[AC_DEFINE([HAVE_ASINF],[1],[asinf is available])])
-GCC_CHECK_MATH_FUNC([asin],[AC_DEFINE([HAVE_ASIN],[1],[asin is available])])
-GCC_CHECK_MATH_FUNC([asinl],[AC_DEFINE([HAVE_ASINL],[1],[asinl is available])])
-GCC_CHECK_MATH_FUNC([asinhf],[AC_DEFINE([HAVE_ASINHF],[1],[asinhf is available])])
-GCC_CHECK_MATH_FUNC([asinh],[AC_DEFINE([HAVE_ASINH],[1],[asinh is available])])
-GCC_CHECK_MATH_FUNC([asinhl],[AC_DEFINE([HAVE_ASINHL],[1],[asinhl is available])])
-GCC_CHECK_MATH_FUNC([atan2f],[AC_DEFINE([HAVE_ATAN2F],[1],[atan2f is available])])
-GCC_CHECK_MATH_FUNC([atan2],[AC_DEFINE([HAVE_ATAN2],[1],[atan2 is available])])
-GCC_CHECK_MATH_FUNC([atan2l],[AC_DEFINE([HAVE_ATAN2L],[1],[atan2l is available])])
-GCC_CHECK_MATH_FUNC([atanf],[AC_DEFINE([HAVE_ATANF],[1],[atanf is available])])
-GCC_CHECK_MATH_FUNC([atan],[AC_DEFINE([HAVE_ATAN],[1],[atan is available])])
-GCC_CHECK_MATH_FUNC([atanl],[AC_DEFINE([HAVE_ATANL],[1],[atanl is available])])
-GCC_CHECK_MATH_FUNC([atanhf],[AC_DEFINE([HAVE_ATANHF],[1],[atanhf is available])])
-GCC_CHECK_MATH_FUNC([atanh],[AC_DEFINE([HAVE_ATANH],[1],[atanh is available])])
-GCC_CHECK_MATH_FUNC([atanhl],[AC_DEFINE([HAVE_ATANHL],[1],[atanhl is available])])
-GCC_CHECK_MATH_FUNC([cargf],[AC_DEFINE([HAVE_CARGF],[1],[cargf is available])])
-GCC_CHECK_MATH_FUNC([carg],[AC_DEFINE([HAVE_CARG],[1],[carg is available])])
-GCC_CHECK_MATH_FUNC([cargl],[AC_DEFINE([HAVE_CARGL],[1],[cargl is available])])
-GCC_CHECK_MATH_FUNC([ceilf],[AC_DEFINE([HAVE_CEILF],[1],[ceilf is available])])
-GCC_CHECK_MATH_FUNC([ceil],[AC_DEFINE([HAVE_CEIL],[1],[ceil is available])])
-GCC_CHECK_MATH_FUNC([ceill],[AC_DEFINE([HAVE_CEILL],[1],[ceill is available])])
-GCC_CHECK_MATH_FUNC([copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1],[copysignf is available])])
-GCC_CHECK_MATH_FUNC([copysign],[AC_DEFINE([HAVE_COPYSIGN],[1],[copysign is available])])
-GCC_CHECK_MATH_FUNC([copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1],[copysignl is available])])
-GCC_CHECK_MATH_FUNC([cosf],[AC_DEFINE([HAVE_COSF],[1],[cosf is available])])
-GCC_CHECK_MATH_FUNC([cos],[AC_DEFINE([HAVE_COS],[1],[cos is available])])
-GCC_CHECK_MATH_FUNC([cosl],[AC_DEFINE([HAVE_COSL],[1],[cosl is available])])
-GCC_CHECK_MATH_FUNC([ccosf],[AC_DEFINE([HAVE_CCOSF],[1],[ccosf is available])])
-GCC_CHECK_MATH_FUNC([ccos],[AC_DEFINE([HAVE_CCOS],[1],[ccos is available])])
-GCC_CHECK_MATH_FUNC([ccosl],[AC_DEFINE([HAVE_CCOSL],[1],[ccosl is available])])
-GCC_CHECK_MATH_FUNC([coshf],[AC_DEFINE([HAVE_COSHF],[1],[coshf is available])])
-GCC_CHECK_MATH_FUNC([cosh],[AC_DEFINE([HAVE_COSH],[1],[cosh is available])])
-GCC_CHECK_MATH_FUNC([coshl],[AC_DEFINE([HAVE_COSHL],[1],[coshl is available])])
-GCC_CHECK_MATH_FUNC([ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1],[ccoshf is available])])
-GCC_CHECK_MATH_FUNC([ccosh],[AC_DEFINE([HAVE_CCOSH],[1],[ccosh is available])])
-GCC_CHECK_MATH_FUNC([ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1],[ccoshl is available])])
-GCC_CHECK_MATH_FUNC([expf],[AC_DEFINE([HAVE_EXPF],[1],[expf is available])])
-GCC_CHECK_MATH_FUNC([exp],[AC_DEFINE([HAVE_EXP],[1],[exp is available])])
-GCC_CHECK_MATH_FUNC([expl],[AC_DEFINE([HAVE_EXPL],[1],[expl is available])])
-GCC_CHECK_MATH_FUNC([cexpf],[AC_DEFINE([HAVE_CEXPF],[1],[cexpf is available])])
-GCC_CHECK_MATH_FUNC([cexp],[AC_DEFINE([HAVE_CEXP],[1],[cexp is available])])
-GCC_CHECK_MATH_FUNC([cexpl],[AC_DEFINE([HAVE_CEXPL],[1],[cexpl is available])])
-GCC_CHECK_MATH_FUNC([fabsf],[AC_DEFINE([HAVE_FABSF],[1],[fabsf is available])])
-GCC_CHECK_MATH_FUNC([fabs],[AC_DEFINE([HAVE_FABS],[1],[fabs is available])])
-GCC_CHECK_MATH_FUNC([fabsl],[AC_DEFINE([HAVE_FABSL],[1],[fabsl is available])])
-GCC_CHECK_MATH_FUNC([cabsf],[AC_DEFINE([HAVE_CABSF],[1],[cabsf is available])])
-GCC_CHECK_MATH_FUNC([cabs],[AC_DEFINE([HAVE_CABS],[1],[cabs is available])])
-GCC_CHECK_MATH_FUNC([cabsl],[AC_DEFINE([HAVE_CABSL],[1],[cabsl is available])])
-GCC_CHECK_MATH_FUNC([floorf],[AC_DEFINE([HAVE_FLOORF],[1],[floorf is available])])
-GCC_CHECK_MATH_FUNC([floor],[AC_DEFINE([HAVE_FLOOR],[1],[floor is available])])
-GCC_CHECK_MATH_FUNC([floorl],[AC_DEFINE([HAVE_FLOORL],[1],[floorl is available])])
-GCC_CHECK_MATH_FUNC([fmodf],[AC_DEFINE([HAVE_FMODF],[1],[fmodf is available])])
-GCC_CHECK_MATH_FUNC([fmod],[AC_DEFINE([HAVE_FMOD],[1],[fmod is available])])
-GCC_CHECK_MATH_FUNC([fmodl],[AC_DEFINE([HAVE_FMODL],[1],[fmodl is available])])
-GCC_CHECK_MATH_FUNC([frexpf],[AC_DEFINE([HAVE_FREXPF],[1],[frexpf is available])])
-GCC_CHECK_MATH_FUNC([frexp],[AC_DEFINE([HAVE_FREXP],[1],[frexp is available])])
-GCC_CHECK_MATH_FUNC([frexpl],[AC_DEFINE([HAVE_FREXPL],[1],[frexpl is available])])
-GCC_CHECK_MATH_FUNC([hypotf],[AC_DEFINE([HAVE_HYPOTF],[1],[hypotf is available])])
-GCC_CHECK_MATH_FUNC([hypot],[AC_DEFINE([HAVE_HYPOT],[1],[hypot is available])])
-GCC_CHECK_MATH_FUNC([hypotl],[AC_DEFINE([HAVE_HYPOTL],[1],[hypotl is available])])
-GCC_CHECK_MATH_FUNC([ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1],[ldexpf is available])])
-GCC_CHECK_MATH_FUNC([ldexp],[AC_DEFINE([HAVE_LDEXP],[1],[ldexp is available])])
-GCC_CHECK_MATH_FUNC([ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1],[ldexpl is available])])
-GCC_CHECK_MATH_FUNC([logf],[AC_DEFINE([HAVE_LOGF],[1],[logf is available])])
-GCC_CHECK_MATH_FUNC([log],[AC_DEFINE([HAVE_LOG],[1],[log is available])])
-GCC_CHECK_MATH_FUNC([logl],[AC_DEFINE([HAVE_LOGL],[1],[logl is available])])
-GCC_CHECK_MATH_FUNC([clogf],[AC_DEFINE([HAVE_CLOGF],[1],[clogf is available])])
-GCC_CHECK_MATH_FUNC([clog],[AC_DEFINE([HAVE_CLOG],[1],[clog is available])])
-GCC_CHECK_MATH_FUNC([clogl],[AC_DEFINE([HAVE_CLOGL],[1],[clogl is available])])
-GCC_CHECK_MATH_FUNC([log10f],[AC_DEFINE([HAVE_LOG10F],[1],[log10f is available])])
-GCC_CHECK_MATH_FUNC([log10],[AC_DEFINE([HAVE_LOG10],[1],[log10 is available])])
-GCC_CHECK_MATH_FUNC([log10l],[AC_DEFINE([HAVE_LOG10L],[1],[log10l is available])])
-GCC_CHECK_MATH_FUNC([clog10f],[AC_DEFINE([HAVE_CLOG10F],[1],[clog10f is available])])
-GCC_CHECK_MATH_FUNC([clog10],[AC_DEFINE([HAVE_CLOG10],[1],[clog10 is available])])
-GCC_CHECK_MATH_FUNC([clog10l],[AC_DEFINE([HAVE_CLOG10L],[1],[clog10l is available])])
-GCC_CHECK_MATH_FUNC([nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1],[nextafterf is available])])
-GCC_CHECK_MATH_FUNC([nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1],[nextafter is available])])
-GCC_CHECK_MATH_FUNC([nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1],[nextafterl is available])])
-GCC_CHECK_MATH_FUNC([powf],[AC_DEFINE([HAVE_POWF],[1],[powf is available])])
-GCC_CHECK_MATH_FUNC([pow],[AC_DEFINE([HAVE_POW],[1],[pow is available])])
-GCC_CHECK_MATH_FUNC([powl],[AC_DEFINE([HAVE_POWL],[1],[powl is available])])
-GCC_CHECK_MATH_FUNC([cpowf],[AC_DEFINE([HAVE_CPOWF],[1],[cpowf is available])])
-GCC_CHECK_MATH_FUNC([cpow],[AC_DEFINE([HAVE_CPOW],[1],[cpow is available])])
-GCC_CHECK_MATH_FUNC([cpowl],[AC_DEFINE([HAVE_CPOWL],[1],[cpowl is available])])
-GCC_CHECK_MATH_FUNC([roundf],[AC_DEFINE([HAVE_ROUNDF],[1],[roundf is available])])
-GCC_CHECK_MATH_FUNC([round],[AC_DEFINE([HAVE_ROUND],[1],[round is available])])
-GCC_CHECK_MATH_FUNC([roundl],[AC_DEFINE([HAVE_ROUNDL],[1],[roundl is available])])
-GCC_CHECK_MATH_FUNC([lroundf],[AC_DEFINE([HAVE_LROUNDF],[1],[lroundf is available])])
-GCC_CHECK_MATH_FUNC([lround],[AC_DEFINE([HAVE_LROUND],[1],[lround is available])])
-GCC_CHECK_MATH_FUNC([lroundl],[AC_DEFINE([HAVE_LROUNDL],[1],[lroundl is available])])
-GCC_CHECK_MATH_FUNC([llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1],[llroundf is available])])
-GCC_CHECK_MATH_FUNC([llround],[AC_DEFINE([HAVE_LLROUND],[1],[llround is available])])
-GCC_CHECK_MATH_FUNC([llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1],[llroundl is available])])
-GCC_CHECK_MATH_FUNC([scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1],[scalbnf is available])])
-GCC_CHECK_MATH_FUNC([scalbn],[AC_DEFINE([HAVE_SCALBN],[1],[scalbn is available])])
-GCC_CHECK_MATH_FUNC([scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1],[scalbnl is available])])
-GCC_CHECK_MATH_FUNC([sinf],[AC_DEFINE([HAVE_SINF],[1],[sinf is available])])
-GCC_CHECK_MATH_FUNC([sin],[AC_DEFINE([HAVE_SIN],[1],[sin is available])])
-GCC_CHECK_MATH_FUNC([sinl],[AC_DEFINE([HAVE_SINL],[1],[sinl is available])])
-GCC_CHECK_MATH_FUNC([csinf],[AC_DEFINE([HAVE_CSINF],[1],[csinf is available])])
-GCC_CHECK_MATH_FUNC([csin],[AC_DEFINE([HAVE_CSIN],[1],[csin is available])])
-GCC_CHECK_MATH_FUNC([csinl],[AC_DEFINE([HAVE_CSINL],[1],[csinl is available])])
-GCC_CHECK_MATH_FUNC([sinhf],[AC_DEFINE([HAVE_SINHF],[1],[sinhf is available])])
-GCC_CHECK_MATH_FUNC([sinh],[AC_DEFINE([HAVE_SINH],[1],[sinh is available])])
-GCC_CHECK_MATH_FUNC([sinhl],[AC_DEFINE([HAVE_SINHL],[1],[sinhl is available])])
-GCC_CHECK_MATH_FUNC([csinhf],[AC_DEFINE([HAVE_CSINHF],[1],[csinhf is available])])
-GCC_CHECK_MATH_FUNC([csinh],[AC_DEFINE([HAVE_CSINH],[1],[csinh is available])])
-GCC_CHECK_MATH_FUNC([csinhl],[AC_DEFINE([HAVE_CSINHL],[1],[csinhl is available])])
-GCC_CHECK_MATH_FUNC([sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[sqrtf is available])])
-GCC_CHECK_MATH_FUNC([sqrt],[AC_DEFINE([HAVE_SQRT],[1],[sqrt is available])])
-GCC_CHECK_MATH_FUNC([sqrtl],[AC_DEFINE([HAVE_SQRTL],[1],[sqrtl is available])])
-GCC_CHECK_MATH_FUNC([csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1],[csqrtf is available])])
-GCC_CHECK_MATH_FUNC([csqrt],[AC_DEFINE([HAVE_CSQRT],[1],[csqrt is available])])
-GCC_CHECK_MATH_FUNC([csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1],[csqrtl is available])])
-GCC_CHECK_MATH_FUNC([tanf],[AC_DEFINE([HAVE_TANF],[1],[tanf is available])])
-GCC_CHECK_MATH_FUNC([tan],[AC_DEFINE([HAVE_TAN],[1],[tan is available])])
-GCC_CHECK_MATH_FUNC([tanl],[AC_DEFINE([HAVE_TANL],[1],[tanl is available])])
-GCC_CHECK_MATH_FUNC([ctanf],[AC_DEFINE([HAVE_CTANF],[1],[ctanf is available])])
-GCC_CHECK_MATH_FUNC([ctan],[AC_DEFINE([HAVE_CTAN],[1],[ctan is available])])
-GCC_CHECK_MATH_FUNC([ctanl],[AC_DEFINE([HAVE_CTANL],[1],[ctanl is available])])
-GCC_CHECK_MATH_FUNC([tanhf],[AC_DEFINE([HAVE_TANHF],[1],[tanhf is available])])
-GCC_CHECK_MATH_FUNC([tanh],[AC_DEFINE([HAVE_TANH],[1],[tanh is available])])
-GCC_CHECK_MATH_FUNC([tanhl],[AC_DEFINE([HAVE_TANHL],[1],[tanhl is available])])
-GCC_CHECK_MATH_FUNC([ctanhf],[AC_DEFINE([HAVE_CTANHF],[1],[ctanhf is available])])
-GCC_CHECK_MATH_FUNC([ctanh],[AC_DEFINE([HAVE_CTANH],[1],[ctanh is available])])
-GCC_CHECK_MATH_FUNC([ctanhl],[AC_DEFINE([HAVE_CTANHL],[1],[ctanhl is available])])
-GCC_CHECK_MATH_FUNC([truncf],[AC_DEFINE([HAVE_TRUNCF],[1],[truncf is available])])
-GCC_CHECK_MATH_FUNC([trunc],[AC_DEFINE([HAVE_TRUNC],[1],[trunc is available])])
-GCC_CHECK_MATH_FUNC([truncl],[AC_DEFINE([HAVE_TRUNCL],[1],[truncl is available])])
-GCC_CHECK_MATH_FUNC([erff],[AC_DEFINE([HAVE_ERFF],[1],[erff is available])])
-GCC_CHECK_MATH_FUNC([erf],[AC_DEFINE([HAVE_ERF],[1],[erf is available])])
-GCC_CHECK_MATH_FUNC([erfl],[AC_DEFINE([HAVE_ERFL],[1],[erfl is available])])
-GCC_CHECK_MATH_FUNC([erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[erfcf is available])])
-GCC_CHECK_MATH_FUNC([erfc],[AC_DEFINE([HAVE_ERFC],[1],[erfc is available])])
-GCC_CHECK_MATH_FUNC([erfcl],[AC_DEFINE([HAVE_ERFCL],[1],[erfcl is available])])
-GCC_CHECK_MATH_FUNC([j0f],[AC_DEFINE([HAVE_J0F],[1],[j0f is available])])
-GCC_CHECK_MATH_FUNC([j0],[AC_DEFINE([HAVE_J0],[1],[j0 is available])])
-GCC_CHECK_MATH_FUNC([j0l],[AC_DEFINE([HAVE_J0L],[1],[j0l is available])])
-GCC_CHECK_MATH_FUNC([j1f],[AC_DEFINE([HAVE_J1F],[1],[j1f is available])])
-GCC_CHECK_MATH_FUNC([j1],[AC_DEFINE([HAVE_J1],[1],[j1 is available])])
-GCC_CHECK_MATH_FUNC([j1l],[AC_DEFINE([HAVE_J1L],[1],[j1l is available])])
-GCC_CHECK_MATH_FUNC([jnf],[AC_DEFINE([HAVE_JNF],[1],[jnf is available])])
-GCC_CHECK_MATH_FUNC([jn],[AC_DEFINE([HAVE_JN],[1],[jn is available])])
-GCC_CHECK_MATH_FUNC([jnl],[AC_DEFINE([HAVE_JNL],[1],[jnl is available])])
-GCC_CHECK_MATH_FUNC([y0f],[AC_DEFINE([HAVE_Y0F],[1],[y0f is available])])
-GCC_CHECK_MATH_FUNC([y0],[AC_DEFINE([HAVE_Y0],[1],[y0 is available])])
-GCC_CHECK_MATH_FUNC([y0l],[AC_DEFINE([HAVE_Y0L],[1],[y0l is available])])
-GCC_CHECK_MATH_FUNC([y1f],[AC_DEFINE([HAVE_Y1F],[1],[y1f is available])])
-GCC_CHECK_MATH_FUNC([y1],[AC_DEFINE([HAVE_Y1],[1],[y1 is available])])
-GCC_CHECK_MATH_FUNC([y1l],[AC_DEFINE([HAVE_Y1L],[1],[y1l is available])])
-GCC_CHECK_MATH_FUNC([ynf],[AC_DEFINE([HAVE_YNF],[1],[ynf is available])])
-GCC_CHECK_MATH_FUNC([yn],[AC_DEFINE([HAVE_YN],[1],[yn is available])])
-GCC_CHECK_MATH_FUNC([ynl],[AC_DEFINE([HAVE_YNL],[1],[ynl is available])])
-GCC_CHECK_MATH_FUNC([tgamma],[AC_DEFINE([HAVE_TGAMMA],[1],[tgamma is available])])
-GCC_CHECK_MATH_FUNC([tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1],[tgammaf is available])])
-GCC_CHECK_MATH_FUNC([tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1],[tgammal is available])])
-GCC_CHECK_MATH_FUNC([lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[lgamma is available])])
-GCC_CHECK_MATH_FUNC([lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[lgammaf is available])])
-GCC_CHECK_MATH_FUNC([lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1],[lgammal is available])])
+GCC_CHECK_MATH_FUNC([acosf])
+GCC_CHECK_MATH_FUNC([acos])
+GCC_CHECK_MATH_FUNC([acosl])
+GCC_CHECK_MATH_FUNC([acoshf])
+GCC_CHECK_MATH_FUNC([acosh])
+GCC_CHECK_MATH_FUNC([acoshl])
+GCC_CHECK_MATH_FUNC([asinf])
+GCC_CHECK_MATH_FUNC([asin])
+GCC_CHECK_MATH_FUNC([asinl])
+GCC_CHECK_MATH_FUNC([asinhf])
+GCC_CHECK_MATH_FUNC([asinh])
+GCC_CHECK_MATH_FUNC([asinhl])
+GCC_CHECK_MATH_FUNC([atan2f])
+GCC_CHECK_MATH_FUNC([atan2])
+GCC_CHECK_MATH_FUNC([atan2l])
+GCC_CHECK_MATH_FUNC([atanf])
+GCC_CHECK_MATH_FUNC([atan])
+GCC_CHECK_MATH_FUNC([atanl])
+GCC_CHECK_MATH_FUNC([atanhf])
+GCC_CHECK_MATH_FUNC([atanh])
+GCC_CHECK_MATH_FUNC([atanhl])
+GCC_CHECK_MATH_FUNC([cargf])
+GCC_CHECK_MATH_FUNC([carg])
+GCC_CHECK_MATH_FUNC([cargl])
+GCC_CHECK_MATH_FUNC([ceilf])
+GCC_CHECK_MATH_FUNC([ceil])
+GCC_CHECK_MATH_FUNC([ceill])
+GCC_CHECK_MATH_FUNC([copysignf])
+GCC_CHECK_MATH_FUNC([copysign])
+GCC_CHECK_MATH_FUNC([copysignl])
+GCC_CHECK_MATH_FUNC([cosf])
+GCC_CHECK_MATH_FUNC([cos])
+GCC_CHECK_MATH_FUNC([cosl])
+GCC_CHECK_MATH_FUNC([ccosf])
+GCC_CHECK_MATH_FUNC([ccos])
+GCC_CHECK_MATH_FUNC([ccosl])
+GCC_CHECK_MATH_FUNC([coshf])
+GCC_CHECK_MATH_FUNC([cosh])
+GCC_CHECK_MATH_FUNC([coshl])
+GCC_CHECK_MATH_FUNC([ccoshf])
+GCC_CHECK_MATH_FUNC([ccosh])
+GCC_CHECK_MATH_FUNC([ccoshl])
+GCC_CHECK_MATH_FUNC([expf])
+GCC_CHECK_MATH_FUNC([exp])
+GCC_CHECK_MATH_FUNC([expl])
+GCC_CHECK_MATH_FUNC([cexpf])
+GCC_CHECK_MATH_FUNC([cexp])
+GCC_CHECK_MATH_FUNC([cexpl])
+GCC_CHECK_MATH_FUNC([fabsf])
+GCC_CHECK_MATH_FUNC([fabs])
+GCC_CHECK_MATH_FUNC([fabsl])
+GCC_CHECK_MATH_FUNC([cabsf])
+GCC_CHECK_MATH_FUNC([cabs])
+GCC_CHECK_MATH_FUNC([cabsl])
+GCC_CHECK_MATH_FUNC([floorf])
+GCC_CHECK_MATH_FUNC([floor])
+GCC_CHECK_MATH_FUNC([floorl])
+GCC_CHECK_MATH_FUNC([fmodf])
+GCC_CHECK_MATH_FUNC([fmod])
+GCC_CHECK_MATH_FUNC([fmodl])
+GCC_CHECK_MATH_FUNC([frexpf])
+GCC_CHECK_MATH_FUNC([frexp])
+GCC_CHECK_MATH_FUNC([frexpl])
+GCC_CHECK_MATH_FUNC([hypotf])
+GCC_CHECK_MATH_FUNC([hypot])
+GCC_CHECK_MATH_FUNC([hypotl])
+GCC_CHECK_MATH_FUNC([ldexpf])
+GCC_CHECK_MATH_FUNC([ldexp])
+GCC_CHECK_MATH_FUNC([ldexpl])
+GCC_CHECK_MATH_FUNC([logf])
+GCC_CHECK_MATH_FUNC([log])
+GCC_CHECK_MATH_FUNC([logl])
+GCC_CHECK_MATH_FUNC([clogf])
+GCC_CHECK_MATH_FUNC([clog])
+GCC_CHECK_MATH_FUNC([clogl])
+GCC_CHECK_MATH_FUNC([log10f])
+GCC_CHECK_MATH_FUNC([log10])
+GCC_CHECK_MATH_FUNC([log10l])
+GCC_CHECK_MATH_FUNC([clog10f])
+GCC_CHECK_MATH_FUNC([clog10])
+GCC_CHECK_MATH_FUNC([clog10l])
+GCC_CHECK_MATH_FUNC([nextafterf])
+GCC_CHECK_MATH_FUNC([nextafter])
+GCC_CHECK_MATH_FUNC([nextafterl])
+GCC_CHECK_MATH_FUNC([powf])
+GCC_CHECK_MATH_FUNC([pow])
+GCC_CHECK_MATH_FUNC([powl])
+GCC_CHECK_MATH_FUNC([cpowf])
+GCC_CHECK_MATH_FUNC([cpow])
+GCC_CHECK_MATH_FUNC([cpowl])
+GCC_CHECK_MATH_FUNC([roundf])
+GCC_CHECK_MATH_FUNC([round])
+GCC_CHECK_MATH_FUNC([roundl])
+GCC_CHECK_MATH_FUNC([lroundf])
+GCC_CHECK_MATH_FUNC([lround])
+GCC_CHECK_MATH_FUNC([lroundl])
+GCC_CHECK_MATH_FUNC([llroundf])
+GCC_CHECK_MATH_FUNC([llround])
+GCC_CHECK_MATH_FUNC([llroundl])
+GCC_CHECK_MATH_FUNC([scalbnf])
+GCC_CHECK_MATH_FUNC([scalbn])
+GCC_CHECK_MATH_FUNC([scalbnl])
+GCC_CHECK_MATH_FUNC([sinf])
+GCC_CHECK_MATH_FUNC([sin])
+GCC_CHECK_MATH_FUNC([sinl])
+GCC_CHECK_MATH_FUNC([csinf])
+GCC_CHECK_MATH_FUNC([csin])
+GCC_CHECK_MATH_FUNC([csinl])
+GCC_CHECK_MATH_FUNC([sinhf])
+GCC_CHECK_MATH_FUNC([sinh])
+GCC_CHECK_MATH_FUNC([sinhl])
+GCC_CHECK_MATH_FUNC([csinhf])
+GCC_CHECK_MATH_FUNC([csinh])
+GCC_CHECK_MATH_FUNC([csinhl])
+GCC_CHECK_MATH_FUNC([sqrtf])
+GCC_CHECK_MATH_FUNC([sqrt])
+GCC_CHECK_MATH_FUNC([sqrtl])
+GCC_CHECK_MATH_FUNC([csqrtf])
+GCC_CHECK_MATH_FUNC([csqrt])
+GCC_CHECK_MATH_FUNC([csqrtl])
+GCC_CHECK_MATH_FUNC([tanf])
+GCC_CHECK_MATH_FUNC([tan])
+GCC_CHECK_MATH_FUNC([tanl])
+GCC_CHECK_MATH_FUNC([ctanf])
+GCC_CHECK_MATH_FUNC([ctan])
+GCC_CHECK_MATH_FUNC([ctanl])
+GCC_CHECK_MATH_FUNC([tanhf])
+GCC_CHECK_MATH_FUNC([tanh])
+GCC_CHECK_MATH_FUNC([tanhl])
+GCC_CHECK_MATH_FUNC([ctanhf])
+GCC_CHECK_MATH_FUNC([ctanh])
+GCC_CHECK_MATH_FUNC([ctanhl])
+GCC_CHECK_MATH_FUNC([truncf])
+GCC_CHECK_MATH_FUNC([trunc])
+GCC_CHECK_MATH_FUNC([truncl])
+GCC_CHECK_MATH_FUNC([erff])
+GCC_CHECK_MATH_FUNC([erf])
+GCC_CHECK_MATH_FUNC([erfl])
+GCC_CHECK_MATH_FUNC([erfcf])
+GCC_CHECK_MATH_FUNC([erfc])
+GCC_CHECK_MATH_FUNC([erfcl])
+GCC_CHECK_MATH_FUNC([j0f])
+GCC_CHECK_MATH_FUNC([j0])
+GCC_CHECK_MATH_FUNC([j0l])
+GCC_CHECK_MATH_FUNC([j1f])
+GCC_CHECK_MATH_FUNC([j1])
+GCC_CHECK_MATH_FUNC([j1l])
+GCC_CHECK_MATH_FUNC([jnf])
+GCC_CHECK_MATH_FUNC([jn])
+GCC_CHECK_MATH_FUNC([jnl])
+GCC_CHECK_MATH_FUNC([y0f])
+GCC_CHECK_MATH_FUNC([y0])
+GCC_CHECK_MATH_FUNC([y0l])
+GCC_CHECK_MATH_FUNC([y1f])
+GCC_CHECK_MATH_FUNC([y1])
+GCC_CHECK_MATH_FUNC([y1l])
+GCC_CHECK_MATH_FUNC([ynf])
+GCC_CHECK_MATH_FUNC([yn])
+GCC_CHECK_MATH_FUNC([ynl])
+GCC_CHECK_MATH_FUNC([tgamma])
+GCC_CHECK_MATH_FUNC([tgammaf])
+GCC_CHECK_MATH_FUNC([tgammal])
+GCC_CHECK_MATH_FUNC([lgamma])
+GCC_CHECK_MATH_FUNC([lgammaf])
+GCC_CHECK_MATH_FUNC([lgammal])
 
 # Check for GFORTRAN_C99_1.1 funcs
-GCC_CHECK_MATH_FUNC([cacos],[AC_DEFINE([HAVE_CACOS],[1],[cacos is available])])
-GCC_CHECK_MATH_FUNC([cacosf],[AC_DEFINE([HAVE_CACOSF],[1],[cacosf is available])])
-GCC_CHECK_MATH_FUNC([cacosh],[AC_DEFINE([HAVE_CACOSH],[1],[cacosh is available])])
-GCC_CHECK_MATH_FUNC([cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1],[cacoshf is available])])
-GCC_CHECK_MATH_FUNC([cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1],[cacoshl is available])])
-GCC_CHECK_MATH_FUNC([cacosl],[AC_DEFINE([HAVE_CACOSL],[1],[cacosl is available])])
-GCC_CHECK_MATH_FUNC([casin],[AC_DEFINE([HAVE_CASIN],[1],[casin is available])])
-GCC_CHECK_MATH_FUNC([casinf],[AC_DEFINE([HAVE_CASINF],[1],[casinf is available])])
-GCC_CHECK_MATH_FUNC([casinh],[AC_DEFINE([HAVE_CASINH],[1],[casinh is available])])
-GCC_CHECK_MATH_FUNC([casinhf],[AC_DEFINE([HAVE_CASINHF],[1],[casinhf is available])])
-GCC_CHECK_MATH_FUNC([casinhl],[AC_DEFINE([HAVE_CASINHL],[1],[casinhl is available])])
-GCC_CHECK_MATH_FUNC([casinl],[AC_DEFINE([HAVE_CASINL],[1],[casinl is available])])
-GCC_CHECK_MATH_FUNC([catan],[AC_DEFINE([HAVE_CATAN],[1],[catan is available])])
-GCC_CHECK_MATH_FUNC([catanf],[AC_DEFINE([HAVE_CATANF],[1],[catanf is available])])
-GCC_CHECK_MATH_FUNC([catanh],[AC_DEFINE([HAVE_CATANH],[1],[catanh is available])])
-GCC_CHECK_MATH_FUNC([catanhf],[AC_DEFINE([HAVE_CATANHF],[1],[catanhf is available])])
-GCC_CHECK_MATH_FUNC([catanhl],[AC_DEFINE([HAVE_CATANHL],[1],[catanhl is available])])
-GCC_CHECK_MATH_FUNC([catanl],[AC_DEFINE([HAVE_CATANL],[1],[catanl is available])])
+GCC_CHECK_MATH_FUNC([cacos])
+GCC_CHECK_MATH_FUNC([cacosf])
+GCC_CHECK_MATH_FUNC([cacosh])
+GCC_CHECK_MATH_FUNC([cacoshf])
+GCC_CHECK_MATH_FUNC([cacoshl])
+GCC_CHECK_MATH_FUNC([cacosl])
+GCC_CHECK_MATH_FUNC([casin])
+GCC_CHECK_MATH_FUNC([casinf])
+GCC_CHECK_MATH_FUNC([casinh])
+GCC_CHECK_MATH_FUNC([casinhf])
+GCC_CHECK_MATH_FUNC([casinhl])
+GCC_CHECK_MATH_FUNC([casinl])
+GCC_CHECK_MATH_FUNC([catan])
+GCC_CHECK_MATH_FUNC([catanf])
+GCC_CHECK_MATH_FUNC([catanh])
+GCC_CHECK_MATH_FUNC([catanhf])
+GCC_CHECK_MATH_FUNC([catanhl])
+GCC_CHECK_MATH_FUNC([catanl])
 
 # On AIX, clog is present in libm as __clog
 AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-30 10:22               ` Tristan Gingold
@ 2012-03-30 12:40                 ` Paolo Bonzini
  2012-04-02  7:47                   ` Tristan Gingold
  0 siblings, 1 reply; 17+ messages in thread
From: Paolo Bonzini @ 2012-03-30 12:40 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: Janne Blomqvist, Tobias Burnus, GCC Patches, fortran

Il 30/03/2012 12:22, Tristan Gingold ha scritto:
> 
> On Mar 27, 2012, at 10:38 AM, Janne Blomqvist wrote:
> 
>> On Tue, Mar 27, 2012 at 11:01, Tristan Gingold <gingold@adacore.com> wrote:
>>> Hi,
>>>
>>> this patch fixes this issue.  Is it OK ?
>>
>> Ok.
>>
>>> Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.
>>
>> That looks like a cleaner solution, yes, and less chance for typos to sneak in.
> 
> Hi,
> 
> here is the 'cleaner solution': now GCC_CHECK_MATH_FUNC automatically define the HAVE_xxx variable.
> 
> The description is now: Define to 1 if you have the `xxx' function.  As a consequence, libgfortran/config.h.in was regenerated (with differences like:
>  
> -/* acos is available */
> +/* Define to 1 if you have the `acos' function. */
>  #undef HAVE_ACOS
>  
> )
> 
> Tested by rebuild libgfortran for ia64-hp-openvms and visual inspection of differences.
> 
> I have CC: Paolo as he approved the first version of math.m4.
> 
> Ok for trunk ?

Yes.

Paolo

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch V2] libgfortran: do not assume libm
  2012-03-30 12:40                 ` Paolo Bonzini
@ 2012-04-02  7:47                   ` Tristan Gingold
  0 siblings, 0 replies; 17+ messages in thread
From: Tristan Gingold @ 2012-04-02  7:47 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Janne Blomqvist, Tobias Burnus, GCC Patches, fortran


On Mar 30, 2012, at 2:39 PM, Paolo Bonzini wrote:

> Il 30/03/2012 12:22, Tristan Gingold ha scritto:
>> 
>> On Mar 27, 2012, at 10:38 AM, Janne Blomqvist wrote:
>> 
>>> On Tue, Mar 27, 2012 at 11:01, Tristan Gingold <gingold@adacore.com> wrote:
>>>> Hi,
>>>> 
>>>> this patch fixes this issue.  Is it OK ?
>>> 
>>> Ok.
>>> 
>>>> Maybe we should include the AC_DEFINE action within GCC_CHECK_MATH_FUNC.  Will try to do that.
>>> 
>>> That looks like a cleaner solution, yes, and less chance for typos to sneak in.
>> 
>> Hi,
>> 
>> here is the 'cleaner solution': now GCC_CHECK_MATH_FUNC automatically define the HAVE_xxx variable.
>> 
>> The description is now: Define to 1 if you have the `xxx' function.  As a consequence, libgfortran/config.h.in was regenerated (with differences like:
>> 
>> -/* acos is available */
>> +/* Define to 1 if you have the `acos' function. */
>> #undef HAVE_ACOS
>> 
>> )
>> 
>> Tested by rebuild libgfortran for ia64-hp-openvms and visual inspection of differences.
>> 
>> I have CC: Paolo as he approved the first version of math.m4.
>> 
>> Ok for trunk ?
> 
> Yes.

Thanks, committed.

Tristan.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch] libgfortran: do not assume libm
  2012-03-20  9:58 ` Ralf Corsepius
@ 2012-03-20 10:16   ` Tristan Gingold
  0 siblings, 0 replies; 17+ messages in thread
From: Tristan Gingold @ 2012-03-20 10:16 UTC (permalink / raw)
  To: Ralf Corsepius; +Cc: GCC Patches, fortran


On Mar 20, 2012, at 10:56 AM, Ralf Corsepius wrote:

> On 03/20/2012 10:01 AM, Tristan Gingold wrote:
>> Hi,
>> 
>> I am starting to build fortran for VMS.
>> 
>> The first serious issue was with libgfortran/configure.  It checks for several math functions, but directly in libm using AC_CHECK_LIB.
>> But there is on such things as libm on VMS systems (thus requiring to define MATH_LIBRARY as "").  Therefore all these tests fail,
>> resulting in a failure during libgfortran build.
>> 
>> I think the best way to test for the math function is to use AC_CHECK_DECLS as hinted by the autoconf manual
>> (cf the AC_CHECK_DECLS example in http://www.gnu.org/software/autoconf/manual/autoconf.html
>>          AC_CHECK_DECLS([j0], [], [], [[#include<math.h>]])
>>          AC_CHECK_DECLS([[basename(char *)], [dirname(char *)]])
>> 
>> )
>> but I am not an autoconf expert.
>> 
>> I think that this change makes the AIX specific check for __clog obsolete, but I haven't removed it.
>> 
>> With this change I was able to cross build libgfortran for VMS (ia64 and alpha).
>> I have also bootstrapped gcc for x86_64-darwin, without fortran regressions.
>> 
>> Ok for trunk ?
> 
> IMO, no.
> 
> What you are doing here is to replace checks, which check for presence of a symbol in a library (e.g. cos in libm.*) by checks for presence of a symbol's declaration inside of a header.
> 
> This is something entirely different (This also reflects in AC_CHECK_DECL by default providing HAVE_DECL_XXX defines).

Ah, indeed.  I missed that.

> Also note that it's not uncommon to have declarations inside of headers, which are not present inside of a library.

So, I should use AC_LINK_IFELSE instead, shouldn't I ?

Tristan.

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Patch] libgfortran: do not assume libm
  2012-03-20  9:02 [Patch] " Tristan Gingold
@ 2012-03-20  9:58 ` Ralf Corsepius
  2012-03-20 10:16   ` Tristan Gingold
  0 siblings, 1 reply; 17+ messages in thread
From: Ralf Corsepius @ 2012-03-20  9:58 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: GCC Patches, fortran

On 03/20/2012 10:01 AM, Tristan Gingold wrote:
> Hi,
>
> I am starting to build fortran for VMS.
>
> The first serious issue was with libgfortran/configure.  It checks for several math functions, but directly in libm using AC_CHECK_LIB.
> But there is on such things as libm on VMS systems (thus requiring to define MATH_LIBRARY as "").  Therefore all these tests fail,
> resulting in a failure during libgfortran build.
>
> I think the best way to test for the math function is to use AC_CHECK_DECLS as hinted by the autoconf manual
> (cf the AC_CHECK_DECLS example in http://www.gnu.org/software/autoconf/manual/autoconf.html
>           AC_CHECK_DECLS([j0], [], [], [[#include<math.h>]])
>           AC_CHECK_DECLS([[basename(char *)], [dirname(char *)]])
>
> )
> but I am not an autoconf expert.
>
> I think that this change makes the AIX specific check for __clog obsolete, but I haven't removed it.
>
> With this change I was able to cross build libgfortran for VMS (ia64 and alpha).
> I have also bootstrapped gcc for x86_64-darwin, without fortran regressions.
>
> Ok for trunk ?

IMO, no.

What you are doing here is to replace checks, which check for presence 
of a symbol in a library (e.g. cos in libm.*) by checks for presence of 
a symbol's declaration inside of a header.

This is something entirely different (This also reflects in 
AC_CHECK_DECL by default providing HAVE_DECL_XXX defines).

Also note that it's not uncommon to have declarations inside of headers, 
which are not present inside of a library.

Ralf

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Patch] libgfortran: do not assume libm
@ 2012-03-20  9:02 Tristan Gingold
  2012-03-20  9:58 ` Ralf Corsepius
  0 siblings, 1 reply; 17+ messages in thread
From: Tristan Gingold @ 2012-03-20  9:02 UTC (permalink / raw)
  To: GCC Patches, fortran

Hi,

I am starting to build fortran for VMS.

The first serious issue was with libgfortran/configure.  It checks for several math functions, but directly in libm using AC_CHECK_LIB.
But there is on such things as libm on VMS systems (thus requiring to define MATH_LIBRARY as "").  Therefore all these tests fail,
resulting in a failure during libgfortran build.

I think the best way to test for the math function is to use AC_CHECK_DECLS as hinted by the autoconf manual
(cf the AC_CHECK_DECLS example in http://www.gnu.org/software/autoconf/manual/autoconf.html
         AC_CHECK_DECLS([j0], [], [], [[#include <math.h>]])
         AC_CHECK_DECLS([[basename(char *)], [dirname(char *)]])

)
but I am not an autoconf expert.

I think that this change makes the AIX specific check for __clog obsolete, but I haven't removed it.

With this change I was able to cross build libgfortran for VMS (ia64 and alpha).
I have also bootstrapped gcc for x86_64-darwin, without fortran regressions.

Ok for trunk ?

Tristan.

libgfortran/
2012-03-20  Tristan Gingold  <gingold@adacore.com>

	* configure.ac: Check for libm.  Use AC_CHECK_DECLS for
	math functions.
	* configure: Regenerate.

diff --git a/libgfortran/configure.ac b/libgfortran/configure.ac
index 7011a93..aaaedc2 100644
--- a/libgfortran/configure.ac
+++ b/libgfortran/configure.ac
@@ -268,192 +268,195 @@ strcasestr getrlimit gettimeofday stat fstat lstat getpwuid vsnprintf dup \
 getcwd localtime_r gmtime_r strerror_r getpwuid_r ttyname_r clock_gettime \
 readlink getgid getpid getppid getuid geteuid umask)
 
+# Check for libm
+AC_CHECK_LIB([m],[sin])
+
 # Check for C99 (and other IEEE) math functions
-AC_CHECK_LIB([m],[acosf],[AC_DEFINE([HAVE_ACOSF],[1],[libm includes acosf])])
-AC_CHECK_LIB([m],[acos],[AC_DEFINE([HAVE_ACOS],[1],[libm includes acos])])
-AC_CHECK_LIB([m],[acosl],[AC_DEFINE([HAVE_ACOSL],[1],[libm includes acosl])])
-AC_CHECK_LIB([m],[acoshf],[AC_DEFINE([HAVE_ACOSHF],[1],[libm includes acoshf])])
-AC_CHECK_LIB([m],[acosh],[AC_DEFINE([HAVE_ACOSH],[1],[libm includes acosh])])
-AC_CHECK_LIB([m],[acoshl],[AC_DEFINE([HAVE_ACOSHL],[1],[libm includes acoshl])])
-AC_CHECK_LIB([m],[asinf],[AC_DEFINE([HAVE_ASINF],[1],[libm includes asinf])])
-AC_CHECK_LIB([m],[asin],[AC_DEFINE([HAVE_ASIN],[1],[libm includes asin])])
-AC_CHECK_LIB([m],[asinl],[AC_DEFINE([HAVE_ASINL],[1],[libm includes asinl])])
-AC_CHECK_LIB([m],[asinhf],[AC_DEFINE([HAVE_ASINHF],[1],[libm includes asinhf])])
-AC_CHECK_LIB([m],[asinh],[AC_DEFINE([HAVE_ASINH],[1],[libm includes asinh])])
-AC_CHECK_LIB([m],[asinhl],[AC_DEFINE([HAVE_ASINHL],[1],[libm includes asinhl])])
-AC_CHECK_LIB([m],[atan2f],[AC_DEFINE([HAVE_ATAN2F],[1],[libm includes atan2f])])
-AC_CHECK_LIB([m],[atan2],[AC_DEFINE([HAVE_ATAN2],[1],[libm includes atan2])])
-AC_CHECK_LIB([m],[atan2l],[AC_DEFINE([HAVE_ATAN2L],[1],[libm includes atan2l])])
-AC_CHECK_LIB([m],[atanf],[AC_DEFINE([HAVE_ATANF],[1],[libm includes atanf])])
-AC_CHECK_LIB([m],[atan],[AC_DEFINE([HAVE_ATAN],[1],[libm includes atan])])
-AC_CHECK_LIB([m],[atanl],[AC_DEFINE([HAVE_ATANL],[1],[libm includes atanl])])
-AC_CHECK_LIB([m],[atanhf],[AC_DEFINE([HAVE_ATANHF],[1],[libm includes atanhf])])
-AC_CHECK_LIB([m],[atanh],[AC_DEFINE([HAVE_ATANH],[1],[libm includes atanh])])
-AC_CHECK_LIB([m],[atanhl],[AC_DEFINE([HAVE_ATANHL],[1],[libm includes atanhl])])
-AC_CHECK_LIB([m],[cargf],[AC_DEFINE([HAVE_CARGF],[1],[libm includes cargf])])
-AC_CHECK_LIB([m],[carg],[AC_DEFINE([HAVE_CARG],[1],[libm includes carg])])
-AC_CHECK_LIB([m],[cargl],[AC_DEFINE([HAVE_CARGL],[1],[libm includes cargl])])
-AC_CHECK_LIB([m],[ceilf],[AC_DEFINE([HAVE_CEILF],[1],[libm includes ceilf])])
-AC_CHECK_LIB([m],[ceil],[AC_DEFINE([HAVE_CEIL],[1],[libm includes ceil])])
-AC_CHECK_LIB([m],[ceill],[AC_DEFINE([HAVE_CEILL],[1],[libm includes ceill])])
-AC_CHECK_LIB([m],[copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1],[libm includes copysignf])])
-AC_CHECK_LIB([m],[copysign],[AC_DEFINE([HAVE_COPYSIGN],[1],[libm includes copysign])])
-AC_CHECK_LIB([m],[copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1],[libm includes copysignl])])
-AC_CHECK_LIB([m],[cosf],[AC_DEFINE([HAVE_COSF],[1],[libm includes cosf])])
-AC_CHECK_LIB([m],[cos],[AC_DEFINE([HAVE_COS],[1],[libm includes cos])])
-AC_CHECK_LIB([m],[cosl],[AC_DEFINE([HAVE_COSL],[1],[libm includes cosl])])
-AC_CHECK_LIB([m],[ccosf],[AC_DEFINE([HAVE_CCOSF],[1],[libm includes ccosf])])
-AC_CHECK_LIB([m],[ccos],[AC_DEFINE([HAVE_CCOS],[1],[libm includes ccos])])
-AC_CHECK_LIB([m],[ccosl],[AC_DEFINE([HAVE_CCOSL],[1],[libm includes ccosl])])
-AC_CHECK_LIB([m],[coshf],[AC_DEFINE([HAVE_COSHF],[1],[libm includes coshf])])
-AC_CHECK_LIB([m],[cosh],[AC_DEFINE([HAVE_COSH],[1],[libm includes cosh])])
-AC_CHECK_LIB([m],[coshl],[AC_DEFINE([HAVE_COSHL],[1],[libm includes coshl])])
-AC_CHECK_LIB([m],[ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1],[libm includes ccoshf])])
-AC_CHECK_LIB([m],[ccosh],[AC_DEFINE([HAVE_CCOSH],[1],[libm includes ccosh])])
-AC_CHECK_LIB([m],[ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1],[libm includes ccoshl])])
-AC_CHECK_LIB([m],[expf],[AC_DEFINE([HAVE_EXPF],[1],[libm includes expf])])
-AC_CHECK_LIB([m],[exp],[AC_DEFINE([HAVE_EXP],[1],[libm includes exp])])
-AC_CHECK_LIB([m],[expl],[AC_DEFINE([HAVE_EXPL],[1],[libm includes expl])])
-AC_CHECK_LIB([m],[cexpf],[AC_DEFINE([HAVE_CEXPF],[1],[libm includes cexpf])])
-AC_CHECK_LIB([m],[cexp],[AC_DEFINE([HAVE_CEXP],[1],[libm includes cexp])])
-AC_CHECK_LIB([m],[cexpl],[AC_DEFINE([HAVE_CEXPL],[1],[libm includes cexpl])])
-AC_CHECK_LIB([m],[fabsf],[AC_DEFINE([HAVE_FABSF],[1],[libm includes fabsf])])
-AC_CHECK_LIB([m],[fabs],[AC_DEFINE([HAVE_FABS],[1],[libm includes fabs])])
-AC_CHECK_LIB([m],[fabsl],[AC_DEFINE([HAVE_FABSL],[1],[libm includes fabsl])])
-AC_CHECK_LIB([m],[cabsf],[AC_DEFINE([HAVE_CABSF],[1],[libm includes cabsf])])
-AC_CHECK_LIB([m],[cabs],[AC_DEFINE([HAVE_CABS],[1],[libm includes cabs])])
-AC_CHECK_LIB([m],[cabsl],[AC_DEFINE([HAVE_CABSL],[1],[libm includes cabsl])])
-AC_CHECK_LIB([m],[floorf],[AC_DEFINE([HAVE_FLOORF],[1],[libm includes floorf])])
-AC_CHECK_LIB([m],[floor],[AC_DEFINE([HAVE_FLOOR],[1],[libm includes floor])])
-AC_CHECK_LIB([m],[floorl],[AC_DEFINE([HAVE_FLOORL],[1],[libm includes floorl])])
-AC_CHECK_LIB([m],[fmodf],[AC_DEFINE([HAVE_FMODF],[1],[libm includes fmodf])])
-AC_CHECK_LIB([m],[fmod],[AC_DEFINE([HAVE_FMOD],[1],[libm includes fmod])])
-AC_CHECK_LIB([m],[fmodl],[AC_DEFINE([HAVE_FMODL],[1],[libm includes fmodl])])
-AC_CHECK_LIB([m],[frexpf],[AC_DEFINE([HAVE_FREXPF],[1],[libm includes frexpf])])
-AC_CHECK_LIB([m],[frexp],[AC_DEFINE([HAVE_FREXP],[1],[libm includes frexp])])
-AC_CHECK_LIB([m],[frexpl],[AC_DEFINE([HAVE_FREXPL],[1],[libm includes frexpl])])
-AC_CHECK_LIB([m],[hypotf],[AC_DEFINE([HAVE_HYPOTF],[1],[libm includes hypotf])])
-AC_CHECK_LIB([m],[hypot],[AC_DEFINE([HAVE_HYPOT],[1],[libm includes hypot])])
-AC_CHECK_LIB([m],[hypotl],[AC_DEFINE([HAVE_HYPOTL],[1],[libm includes hypotl])])
-AC_CHECK_LIB([m],[ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1],[libm includes ldexpf])])
-AC_CHECK_LIB([m],[ldexp],[AC_DEFINE([HAVE_LDEXP],[1],[libm includes ldexp])])
-AC_CHECK_LIB([m],[ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1],[libm includes ldexpl])])
-AC_CHECK_LIB([m],[logf],[AC_DEFINE([HAVE_LOGF],[1],[libm includes logf])])
-AC_CHECK_LIB([m],[log],[AC_DEFINE([HAVE_LOG],[1],[libm includes log])])
-AC_CHECK_LIB([m],[logl],[AC_DEFINE([HAVE_LOGL],[1],[libm includes logl])])
-AC_CHECK_LIB([m],[clogf],[AC_DEFINE([HAVE_CLOGF],[1],[libm includes clogf])])
-AC_CHECK_LIB([m],[clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])
-AC_CHECK_LIB([m],[clogl],[AC_DEFINE([HAVE_CLOGL],[1],[libm includes clogl])])
-AC_CHECK_LIB([m],[log10f],[AC_DEFINE([HAVE_LOG10F],[1],[libm includes log10f])])
-AC_CHECK_LIB([m],[log10],[AC_DEFINE([HAVE_LOG10],[1],[libm includes log10])])
-AC_CHECK_LIB([m],[log10l],[AC_DEFINE([HAVE_LOG10L],[1],[libm includes log10l])])
-AC_CHECK_LIB([m],[clog10f],[AC_DEFINE([HAVE_CLOG10F],[1],[libm includes clog10f])])
-AC_CHECK_LIB([m],[clog10],[AC_DEFINE([HAVE_CLOG10],[1],[libm includes clog10])])
-AC_CHECK_LIB([m],[clog10l],[AC_DEFINE([HAVE_CLOG10L],[1],[libm includes clog10l])])
-AC_CHECK_LIB([m],[nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1],[libm includes nextafterf])])
-AC_CHECK_LIB([m],[nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1],[libm includes nextafter])])
-AC_CHECK_LIB([m],[nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1],[libm includes nextafterl])])
-AC_CHECK_LIB([m],[powf],[AC_DEFINE([HAVE_POWF],[1],[libm includes powf])])
-AC_CHECK_LIB([m],[pow],[AC_DEFINE([HAVE_POW],[1],[libm includes pow])])
-AC_CHECK_LIB([m],[powl],[AC_DEFINE([HAVE_POWL],[1],[libm includes powl])])
-AC_CHECK_LIB([m],[cpowf],[AC_DEFINE([HAVE_CPOWF],[1],[libm includes cpowf])])
-AC_CHECK_LIB([m],[cpow],[AC_DEFINE([HAVE_CPOW],[1],[libm includes cpow])])
-AC_CHECK_LIB([m],[cpowl],[AC_DEFINE([HAVE_CPOWL],[1],[libm includes cpowl])])
-AC_CHECK_LIB([m],[roundf],[AC_DEFINE([HAVE_ROUNDF],[1],[libm includes roundf])])
-AC_CHECK_LIB([m],[round],[AC_DEFINE([HAVE_ROUND],[1],[libm includes round])])
-AC_CHECK_LIB([m],[roundl],[AC_DEFINE([HAVE_ROUNDL],[1],[libm includes roundl])])
-AC_CHECK_LIB([m],[lroundf],[AC_DEFINE([HAVE_LROUNDF],[1],[libm includes lroundf])])
-AC_CHECK_LIB([m],[lround],[AC_DEFINE([HAVE_LROUND],[1],[libm includes lround])])
-AC_CHECK_LIB([m],[lroundl],[AC_DEFINE([HAVE_LROUNDL],[1],[libm includes lroundl])])
-AC_CHECK_LIB([m],[llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1],[libm includes llroundf])])
-AC_CHECK_LIB([m],[llround],[AC_DEFINE([HAVE_LLROUND],[1],[libm includes llround])])
-AC_CHECK_LIB([m],[llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1],[libm includes llroundl])])
-AC_CHECK_LIB([m],[scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1],[libm includes scalbnf])])
-AC_CHECK_LIB([m],[scalbn],[AC_DEFINE([HAVE_SCALBN],[1],[libm includes scalbn])])
-AC_CHECK_LIB([m],[scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1],[libm includes scalbnl])])
-AC_CHECK_LIB([m],[sinf],[AC_DEFINE([HAVE_SINF],[1],[libm includes sinf])])
-AC_CHECK_LIB([m],[sin],[AC_DEFINE([HAVE_SIN],[1],[libm includes sin])])
-AC_CHECK_LIB([m],[sinl],[AC_DEFINE([HAVE_SINL],[1],[libm includes sinl])])
-AC_CHECK_LIB([m],[csinf],[AC_DEFINE([HAVE_CSINF],[1],[libm includes csinf])])
-AC_CHECK_LIB([m],[csin],[AC_DEFINE([HAVE_CSIN],[1],[libm includes csin])])
-AC_CHECK_LIB([m],[csinl],[AC_DEFINE([HAVE_CSINL],[1],[libm includes csinl])])
-AC_CHECK_LIB([m],[sinhf],[AC_DEFINE([HAVE_SINHF],[1],[libm includes sinhf])])
-AC_CHECK_LIB([m],[sinh],[AC_DEFINE([HAVE_SINH],[1],[libm includes sinh])])
-AC_CHECK_LIB([m],[sinhl],[AC_DEFINE([HAVE_SINHL],[1],[libm includes sinhl])])
-AC_CHECK_LIB([m],[csinhf],[AC_DEFINE([HAVE_CSINHF],[1],[libm includes csinhf])])
-AC_CHECK_LIB([m],[csinh],[AC_DEFINE([HAVE_CSINH],[1],[libm includes csinh])])
-AC_CHECK_LIB([m],[csinhl],[AC_DEFINE([HAVE_CSINHL],[1],[libm includes csinhl])])
-AC_CHECK_LIB([m],[sqrtf],[AC_DEFINE([HAVE_SQRTF],[1],[libm includes sqrtf])])
-AC_CHECK_LIB([m],[sqrt],[AC_DEFINE([HAVE_SQRT],[1],[libm includes sqrt])])
-AC_CHECK_LIB([m],[sqrtl],[AC_DEFINE([HAVE_SQRTL],[1],[libm includes sqrtl])])
-AC_CHECK_LIB([m],[csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1],[libm includes csqrtf])])
-AC_CHECK_LIB([m],[csqrt],[AC_DEFINE([HAVE_CSQRT],[1],[libm includes csqrt])])
-AC_CHECK_LIB([m],[csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1],[libm includes csqrtl])])
-AC_CHECK_LIB([m],[tanf],[AC_DEFINE([HAVE_TANF],[1],[libm includes tanf])])
-AC_CHECK_LIB([m],[tan],[AC_DEFINE([HAVE_TAN],[1],[libm includes tan])])
-AC_CHECK_LIB([m],[tanl],[AC_DEFINE([HAVE_TANL],[1],[libm includes tanl])])
-AC_CHECK_LIB([m],[ctanf],[AC_DEFINE([HAVE_CTANF],[1],[libm includes ctanf])])
-AC_CHECK_LIB([m],[ctan],[AC_DEFINE([HAVE_CTAN],[1],[libm includes ctan])])
-AC_CHECK_LIB([m],[ctanl],[AC_DEFINE([HAVE_CTANL],[1],[libm includes ctanl])])
-AC_CHECK_LIB([m],[tanhf],[AC_DEFINE([HAVE_TANHF],[1],[libm includes tanhf])])
-AC_CHECK_LIB([m],[tanh],[AC_DEFINE([HAVE_TANH],[1],[libm includes tanh])])
-AC_CHECK_LIB([m],[tanhl],[AC_DEFINE([HAVE_TANHL],[1],[libm includes tanhl])])
-AC_CHECK_LIB([m],[ctanhf],[AC_DEFINE([HAVE_CTANHF],[1],[libm includes ctanhf])])
-AC_CHECK_LIB([m],[ctanh],[AC_DEFINE([HAVE_CTANH],[1],[libm includes ctanh])])
-AC_CHECK_LIB([m],[ctanhl],[AC_DEFINE([HAVE_CTANHL],[1],[libm includes ctanhl])])
-AC_CHECK_LIB([m],[truncf],[AC_DEFINE([HAVE_TRUNCF],[1],[libm includes truncf])])
-AC_CHECK_LIB([m],[trunc],[AC_DEFINE([HAVE_TRUNC],[1],[libm includes trunc])])
-AC_CHECK_LIB([m],[truncl],[AC_DEFINE([HAVE_TRUNCL],[1],[libm includes truncl])])
-AC_CHECK_LIB([m],[erff],[AC_DEFINE([HAVE_ERFF],[1],[libm includes erff])])
-AC_CHECK_LIB([m],[erf],[AC_DEFINE([HAVE_ERF],[1],[libm includes erf])])
-AC_CHECK_LIB([m],[erfl],[AC_DEFINE([HAVE_ERFL],[1],[libm includes erfl])])
-AC_CHECK_LIB([m],[erfcf],[AC_DEFINE([HAVE_ERFCF],[1],[libm includes erfcf])])
-AC_CHECK_LIB([m],[erfc],[AC_DEFINE([HAVE_ERFC],[1],[libm includes erfc])])
-AC_CHECK_LIB([m],[erfcl],[AC_DEFINE([HAVE_ERFCL],[1],[libm includes erfcl])])
-AC_CHECK_LIB([m],[j0f],[AC_DEFINE([HAVE_J0F],[1],[libm includes j0f])])
-AC_CHECK_LIB([m],[j0],[AC_DEFINE([HAVE_J0],[1],[libm includes j0])])
-AC_CHECK_LIB([m],[j0l],[AC_DEFINE([HAVE_J0L],[1],[libm includes j0l])])
-AC_CHECK_LIB([m],[j1f],[AC_DEFINE([HAVE_J1F],[1],[libm includes j1f])])
-AC_CHECK_LIB([m],[j1],[AC_DEFINE([HAVE_J1],[1],[libm includes j1])])
-AC_CHECK_LIB([m],[j1l],[AC_DEFINE([HAVE_J1L],[1],[libm includes j1l])])
-AC_CHECK_LIB([m],[jnf],[AC_DEFINE([HAVE_JNF],[1],[libm includes jnf])])
-AC_CHECK_LIB([m],[jn],[AC_DEFINE([HAVE_JN],[1],[libm includes jn])])
-AC_CHECK_LIB([m],[jnl],[AC_DEFINE([HAVE_JNL],[1],[libm includes jnl])])
-AC_CHECK_LIB([m],[y0f],[AC_DEFINE([HAVE_Y0F],[1],[libm includes y0f])])
-AC_CHECK_LIB([m],[y0],[AC_DEFINE([HAVE_Y0],[1],[libm includes y0])])
-AC_CHECK_LIB([m],[y0l],[AC_DEFINE([HAVE_Y0L],[1],[libm includes y0l])])
-AC_CHECK_LIB([m],[y1f],[AC_DEFINE([HAVE_Y1F],[1],[libm includes y1f])])
-AC_CHECK_LIB([m],[y1],[AC_DEFINE([HAVE_Y1],[1],[libm includes y1])])
-AC_CHECK_LIB([m],[y1l],[AC_DEFINE([HAVE_Y1L],[1],[libm includes y1l])])
-AC_CHECK_LIB([m],[ynf],[AC_DEFINE([HAVE_YNF],[1],[libm includes ynf])])
-AC_CHECK_LIB([m],[yn],[AC_DEFINE([HAVE_YN],[1],[libm includes yn])])
-AC_CHECK_LIB([m],[ynl],[AC_DEFINE([HAVE_YNL],[1],[libm includes ynl])])
-AC_CHECK_LIB([m],[tgamma],[AC_DEFINE([HAVE_TGAMMA],[1],[libm includes tgamma])])
-AC_CHECK_LIB([m],[tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1],[libm includes tgammaf])])
-AC_CHECK_LIB([m],[tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1],[libm includes tgammal])])
-AC_CHECK_LIB([m],[lgamma],[AC_DEFINE([HAVE_LGAMMA],[1],[libm includes lgamma])])
-AC_CHECK_LIB([m],[lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1],[libm includes lgammaf])])
-AC_CHECK_LIB([m],[lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1],[libm includes lgammal])])
+AC_CHECK_DECLS([acosf],[AC_DEFINE([HAVE_ACOSF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([acos],[AC_DEFINE([HAVE_ACOS],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([acosl],[AC_DEFINE([HAVE_ACOSL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([acoshf],[AC_DEFINE([HAVE_ACOSHF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([acosh],[AC_DEFINE([HAVE_ACOSH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([acoshl],[AC_DEFINE([HAVE_ACOSHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asinf],[AC_DEFINE([HAVE_ASINF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asin],[AC_DEFINE([HAVE_ASIN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asinl],[AC_DEFINE([HAVE_ASINL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asinhf],[AC_DEFINE([HAVE_ASINHF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asinh],[AC_DEFINE([HAVE_ASINH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([asinhl],[AC_DEFINE([HAVE_ASINHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atan2f],[AC_DEFINE([HAVE_ATAN2F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atan2],[AC_DEFINE([HAVE_ATAN2],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atan2l],[AC_DEFINE([HAVE_ATAN2L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atanf],[AC_DEFINE([HAVE_ATANF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atan],[AC_DEFINE([HAVE_ATAN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atanl],[AC_DEFINE([HAVE_ATANL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atanhf],[AC_DEFINE([HAVE_ATANHF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atanh],[AC_DEFINE([HAVE_ATANH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([atanhl],[AC_DEFINE([HAVE_ATANHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cargf],[AC_DEFINE([HAVE_CARGF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([carg],[AC_DEFINE([HAVE_CARG],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cargl],[AC_DEFINE([HAVE_CARGL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ceilf],[AC_DEFINE([HAVE_CEILF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ceil],[AC_DEFINE([HAVE_CEIL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ceill],[AC_DEFINE([HAVE_CEILL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([copysignf],[AC_DEFINE([HAVE_COPYSIGNF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([copysign],[AC_DEFINE([HAVE_COPYSIGN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([copysignl],[AC_DEFINE([HAVE_COPYSIGNL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cosf],[AC_DEFINE([HAVE_COSF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cos],[AC_DEFINE([HAVE_COS],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cosl],[AC_DEFINE([HAVE_COSL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ccosf],[AC_DEFINE([HAVE_CCOSF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ccos],[AC_DEFINE([HAVE_CCOS],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ccosl],[AC_DEFINE([HAVE_CCOSL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([coshf],[AC_DEFINE([HAVE_COSHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cosh],[AC_DEFINE([HAVE_COSH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([coshl],[AC_DEFINE([HAVE_COSHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ccoshf],[AC_DEFINE([HAVE_CCOSHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ccosh],[AC_DEFINE([HAVE_CCOSH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ccoshl],[AC_DEFINE([HAVE_CCOSHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([expf],[AC_DEFINE([HAVE_EXPF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([exp],[AC_DEFINE([HAVE_EXP],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([expl],[AC_DEFINE([HAVE_EXPL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cexpf],[AC_DEFINE([HAVE_CEXPF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cexp],[AC_DEFINE([HAVE_CEXP],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cexpl],[AC_DEFINE([HAVE_CEXPL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([fabsf],[AC_DEFINE([HAVE_FABSF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([fabs],[AC_DEFINE([HAVE_FABS],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([fabsl],[AC_DEFINE([HAVE_FABSL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cabsf],[AC_DEFINE([HAVE_CABSF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cabs],[AC_DEFINE([HAVE_CABS],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cabsl],[AC_DEFINE([HAVE_CABSL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([floorf],[AC_DEFINE([HAVE_FLOORF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([floor],[AC_DEFINE([HAVE_FLOOR],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([floorl],[AC_DEFINE([HAVE_FLOORL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([fmodf],[AC_DEFINE([HAVE_FMODF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([fmod],[AC_DEFINE([HAVE_FMOD],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([fmodl],[AC_DEFINE([HAVE_FMODL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([frexpf],[AC_DEFINE([HAVE_FREXPF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([frexp],[AC_DEFINE([HAVE_FREXP],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([frexpl],[AC_DEFINE([HAVE_FREXPL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([hypotf],[AC_DEFINE([HAVE_HYPOTF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([hypot],[AC_DEFINE([HAVE_HYPOT],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([hypotl],[AC_DEFINE([HAVE_HYPOTL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ldexpf],[AC_DEFINE([HAVE_LDEXPF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ldexp],[AC_DEFINE([HAVE_LDEXP],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ldexpl],[AC_DEFINE([HAVE_LDEXPL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([logf],[AC_DEFINE([HAVE_LOGF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([log],[AC_DEFINE([HAVE_LOG],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([logl],[AC_DEFINE([HAVE_LOGL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([clogf],[AC_DEFINE([HAVE_CLOGF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([clog],[AC_DEFINE([HAVE_CLOG],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([clogl],[AC_DEFINE([HAVE_CLOGL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([log10f],[AC_DEFINE([HAVE_LOG10F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([log10],[AC_DEFINE([HAVE_LOG10],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([log10l],[AC_DEFINE([HAVE_LOG10L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([clog10f],[AC_DEFINE([HAVE_CLOG10F],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([clog10],[AC_DEFINE([HAVE_CLOG10],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([clog10l],[AC_DEFINE([HAVE_CLOG10L],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([nextafterf],[AC_DEFINE([HAVE_NEXTAFTERF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([nextafter],[AC_DEFINE([HAVE_NEXTAFTER],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([nextafterl],[AC_DEFINE([HAVE_NEXTAFTERL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([powf],[AC_DEFINE([HAVE_POWF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([pow],[AC_DEFINE([HAVE_POW],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([powl],[AC_DEFINE([HAVE_POWL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([cpowf],[AC_DEFINE([HAVE_CPOWF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cpow],[AC_DEFINE([HAVE_CPOW],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cpowl],[AC_DEFINE([HAVE_CPOWL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([roundf],[AC_DEFINE([HAVE_ROUNDF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([round],[AC_DEFINE([HAVE_ROUND],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([roundl],[AC_DEFINE([HAVE_ROUNDL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lroundf],[AC_DEFINE([HAVE_LROUNDF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lround],[AC_DEFINE([HAVE_LROUND],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lroundl],[AC_DEFINE([HAVE_LROUNDL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([llroundf],[AC_DEFINE([HAVE_LLROUNDF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([llround],[AC_DEFINE([HAVE_LLROUND],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([llroundl],[AC_DEFINE([HAVE_LLROUNDL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([scalbnf],[AC_DEFINE([HAVE_SCALBNF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([scalbn],[AC_DEFINE([HAVE_SCALBN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([scalbnl],[AC_DEFINE([HAVE_SCALBNL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sinf],[AC_DEFINE([HAVE_SINF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sin],[AC_DEFINE([HAVE_SIN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sinl],[AC_DEFINE([HAVE_SINL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([csinf],[AC_DEFINE([HAVE_CSINF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csin],[AC_DEFINE([HAVE_CSIN],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csinl],[AC_DEFINE([HAVE_CSINL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([sinhf],[AC_DEFINE([HAVE_SINHF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sinh],[AC_DEFINE([HAVE_SINH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sinhl],[AC_DEFINE([HAVE_SINHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([csinhf],[AC_DEFINE([HAVE_CSINHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csinh],[AC_DEFINE([HAVE_CSINH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csinhl],[AC_DEFINE([HAVE_CSINHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([sqrtf],[AC_DEFINE([HAVE_SQRTF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sqrt],[AC_DEFINE([HAVE_SQRT],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([sqrtl],[AC_DEFINE([HAVE_SQRTL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([csqrtf],[AC_DEFINE([HAVE_CSQRTF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csqrt],[AC_DEFINE([HAVE_CSQRT],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([csqrtl],[AC_DEFINE([HAVE_CSQRTL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([tanf],[AC_DEFINE([HAVE_TANF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tan],[AC_DEFINE([HAVE_TAN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tanl],[AC_DEFINE([HAVE_TANL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ctanf],[AC_DEFINE([HAVE_CTANF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ctan],[AC_DEFINE([HAVE_CTAN],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ctanl],[AC_DEFINE([HAVE_CTANL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([tanhf],[AC_DEFINE([HAVE_TANHF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tanh],[AC_DEFINE([HAVE_TANH],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tanhl],[AC_DEFINE([HAVE_TANHL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ctanhf],[AC_DEFINE([HAVE_CTANHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ctanh],[AC_DEFINE([HAVE_CTANH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([ctanhl],[AC_DEFINE([HAVE_CTANHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([truncf],[AC_DEFINE([HAVE_TRUNCF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([trunc],[AC_DEFINE([HAVE_TRUNC],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([truncl],[AC_DEFINE([HAVE_TRUNCL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erff],[AC_DEFINE([HAVE_ERFF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erf],[AC_DEFINE([HAVE_ERF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erfl],[AC_DEFINE([HAVE_ERFL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erfcf],[AC_DEFINE([HAVE_ERFCF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erfc],[AC_DEFINE([HAVE_ERFC],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([erfcl],[AC_DEFINE([HAVE_ERFCL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j0f],[AC_DEFINE([HAVE_J0F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j0],[AC_DEFINE([HAVE_J0],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j0l],[AC_DEFINE([HAVE_J0L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j1f],[AC_DEFINE([HAVE_J1F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j1],[AC_DEFINE([HAVE_J1],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([j1l],[AC_DEFINE([HAVE_J1L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([jnf],[AC_DEFINE([HAVE_JNF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([jn],[AC_DEFINE([HAVE_JN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([jnl],[AC_DEFINE([HAVE_JNL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y0f],[AC_DEFINE([HAVE_Y0F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y0],[AC_DEFINE([HAVE_Y0],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y0l],[AC_DEFINE([HAVE_Y0L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y1f],[AC_DEFINE([HAVE_Y1F],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y1],[AC_DEFINE([HAVE_Y1],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([y1l],[AC_DEFINE([HAVE_Y1L],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ynf],[AC_DEFINE([HAVE_YNF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([yn],[AC_DEFINE([HAVE_YN],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([ynl],[AC_DEFINE([HAVE_YNL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tgamma],[AC_DEFINE([HAVE_TGAMMA],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tgammaf],[AC_DEFINE([HAVE_TGAMMAF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([tgammal],[AC_DEFINE([HAVE_TGAMMAL],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lgamma],[AC_DEFINE([HAVE_LGAMMA],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lgammaf],[AC_DEFINE([HAVE_LGAMMAF],[1])],[],[[#include <math.h>]])
+AC_CHECK_DECLS([lgammal],[AC_DEFINE([HAVE_LGAMMAL],[1])],[],[[#include <math.h>]])
 
 # Check for GFORTRAN_C99_1.1 funcs
-AC_CHECK_LIB([m],[cacos],[AC_DEFINE([HAVE_CACOS],[1],[libm includes cacos])])
-AC_CHECK_LIB([m],[cacosf],[AC_DEFINE([HAVE_CACOSF],[1],[libm includes cacosf])])
-AC_CHECK_LIB([m],[cacosh],[AC_DEFINE([HAVE_CACOSH],[1],[libm includes cacosh])])
-AC_CHECK_LIB([m],[cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1],[libm includes cacoshf])])
-AC_CHECK_LIB([m],[cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1],[libm includes cacoshl])])
-AC_CHECK_LIB([m],[cacosl],[AC_DEFINE([HAVE_CACOSL],[1],[libm includes cacosl])])
-AC_CHECK_LIB([m],[casin],[AC_DEFINE([HAVE_CASIN],[1],[libm includes casin])])
-AC_CHECK_LIB([m],[casinf],[AC_DEFINE([HAVE_CASINF],[1],[libm includes casinf])])
-AC_CHECK_LIB([m],[casinh],[AC_DEFINE([HAVE_CASINH],[1],[libm includes casinh])])
-AC_CHECK_LIB([m],[casinhf],[AC_DEFINE([HAVE_CASINHF],[1],[libm includes casinhf])])
-AC_CHECK_LIB([m],[casinhl],[AC_DEFINE([HAVE_CASINHL],[1],[libm includes casinhl])])
-AC_CHECK_LIB([m],[casinl],[AC_DEFINE([HAVE_CASINL],[1],[libm includes casinl])])
-AC_CHECK_LIB([m],[catan],[AC_DEFINE([HAVE_CATAN],[1],[libm includes catan])])
-AC_CHECK_LIB([m],[catanf],[AC_DEFINE([HAVE_CATANF],[1],[libm includes catanf])])
-AC_CHECK_LIB([m],[catanh],[AC_DEFINE([HAVE_CATANH],[1],[libm includes catanh])])
-AC_CHECK_LIB([m],[catanhf],[AC_DEFINE([HAVE_CATANHF],[1],[libm includes catanhf])])
-AC_CHECK_LIB([m],[catanhl],[AC_DEFINE([HAVE_CATANHL],[1],[libm includes catanhl])])
-AC_CHECK_LIB([m],[catanl],[AC_DEFINE([HAVE_CATANL],[1],[libm includes catanl])])
+AC_CHECK_DECLS([cacos],[AC_DEFINE([HAVE_CACOS],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cacosf],[AC_DEFINE([HAVE_CACOSF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cacosh],[AC_DEFINE([HAVE_CACOSH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cacoshf],[AC_DEFINE([HAVE_CACOSHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cacoshl],[AC_DEFINE([HAVE_CACOSHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([cacosl],[AC_DEFINE([HAVE_CACOSL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casin],[AC_DEFINE([HAVE_CASIN],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casinf],[AC_DEFINE([HAVE_CASINF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casinh],[AC_DEFINE([HAVE_CASINH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casinhf],[AC_DEFINE([HAVE_CASINHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casinhl],[AC_DEFINE([HAVE_CASINHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([casinl],[AC_DEFINE([HAVE_CASINL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catan],[AC_DEFINE([HAVE_CATAN],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catanf],[AC_DEFINE([HAVE_CATANF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catanh],[AC_DEFINE([HAVE_CATANH],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catanhf],[AC_DEFINE([HAVE_CATANHF],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catanhl],[AC_DEFINE([HAVE_CATANHL],[1])],[],[[#include <complex.h>]])
+AC_CHECK_DECLS([catanl],[AC_DEFINE([HAVE_CATANL],[1])],[],[[#include <complex.h>]])
 
 # On AIX, clog is present in libm as __clog
 AC_CHECK_LIB([m],[__clog],[AC_DEFINE([HAVE_CLOG],[1],[libm includes clog])])

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2012-04-02  7:47 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-03-20  9:49 [Patch] libgfortran: do not assume libm Tobias Burnus
2012-03-20  9:57 ` Tristan Gingold
2012-03-22  8:30 ` [Patch V2] " Tristan Gingold
2012-03-22 10:07   ` Paolo Bonzini
2012-03-22 20:57     ` Tobias Burnus
2012-03-26  8:44     ` Tristan Gingold
2012-03-26 21:43       ` Janne Blomqvist
2012-03-27  7:51         ` Tristan Gingold
2012-03-27  8:01           ` Tristan Gingold
2012-03-27  8:39             ` Janne Blomqvist
2012-03-27  9:29               ` Tristan Gingold
2012-03-30 10:22               ` Tristan Gingold
2012-03-30 12:40                 ` Paolo Bonzini
2012-04-02  7:47                   ` Tristan Gingold
  -- strict thread matches above, loose matches on Subject: below --
2012-03-20  9:02 [Patch] " Tristan Gingold
2012-03-20  9:58 ` Ralf Corsepius
2012-03-20 10:16   ` Tristan Gingold

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).