Blame configure.ac

Packit 67cb25
dnl Process this file with autoconf to produce a configure script.
Packit 67cb25
Packit 67cb25
AC_INIT([gsl],[2.5])
Packit 67cb25
AC_CONFIG_SRCDIR(gsl_math.h)
Packit 67cb25
Packit 67cb25
AM_INIT_AUTOMAKE([gnu])
Packit 67cb25
AC_CONFIG_HEADERS([config.h])
Packit 67cb25
AM_MAINTAINER_MODE
Packit 67cb25
Packit 67cb25
dnl Library versioning (C:R:A == current:revision:age)
Packit 67cb25
dnl See the libtool manual for an explanation of the numbers
Packit 67cb25
dnl
Packit 67cb25
dnl gsl-1.0    libgsl 0:0:0  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.1    libgsl 1:0:1  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.1.1  libgsl 2:0:2  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.2    libgsl 3:0:3  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.3    libgsl 4:0:4  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.4    libgsl 5:0:5  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.5    libgsl 6:0:6  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.6    libgsl 7:0:7  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.7    libgsl 8:0:8  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.8    libgsl 9:0:9  libgslcblas 0:0:0
Packit 67cb25
dnl gsl-1.9    libgsl 10:0:10 libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.10   libgsl 10:0:10 (*) libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.11   libgsl 12:0:12  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.12   libgsl 13:0:13  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.13   libgsl 14:0:14  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.14   libgsl 15:0:15  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.15   libgsl 16:0:16  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-1.16   libgsl 17:0:17  libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.0    libgsl 18:0:18  (**) libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.1    libgsl 19:0:0   libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.2    libgsl 20:0:1   libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.2.1  libgsl 21:0:2   libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.3    libgsl 22:0:3   libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.4    libgsl 23:0:0   libgslcblas 0:0:0 
Packit 67cb25
dnl gsl-2.5    libgsl 24:0:1   libgslcblas 0:0:0 
Packit 67cb25
dnl 
Packit 67cb25
dnl (*) There was an error on this release.  Firstly, the versioning
Packit 67cb25
dnl numbers were not updated.  Secondly, 2 functions were removed, but
Packit 67cb25
dnl the age not reset--this should have been 11:0:0.  However these
Packit 67cb25
dnl functions were not documented and are regarded as internal, so we
Packit 67cb25
dnl will assume 11:0:11.
Packit 67cb25
dnl
Packit 67cb25
dnl (**) There was an error on this release. Age should have been
Packit 67cb25
dnl reset to 18:0:0
Packit 67cb25
dnl
Packit 67cb25
dnl How to update library version number
Packit 67cb25
dnl ====================================
Packit 67cb25
dnl 
Packit 67cb25
dnl C: increment if the interface has additions, changes, removals.
Packit 67cb25
dnl
Packit 67cb25
dnl R: increment any time the source changes; set to 0 if you
Packit 67cb25
dnl incremented CURRENT
Packit 67cb25
dnl
Packit 67cb25
dnl A: increment if any interfaces have been added; set to 0 if any
Packit 67cb25
dnl interfaces have been removed. removal has precedence over adding,
Packit 67cb25
dnl so set to 0 if both happened.
Packit 67cb25
dnl
Packit 67cb25
dnl See https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
Packit 67cb25
dnl for more detailed info
Packit 67cb25
Packit 67cb25
dnl
Packit 67cb25
GSL_CURRENT=24
Packit 67cb25
GSL_REVISION=0
Packit 67cb25
GSL_AGE=1
Packit 67cb25
dnl
Packit 67cb25
CBLAS_CURRENT=0
Packit 67cb25
CBLAS_REVISION=0
Packit 67cb25
CBLAS_AGE=0
Packit 67cb25
Packit 67cb25
GSL_LT_VERSION="${GSL_CURRENT}:${GSL_REVISION}:${GSL_AGE}"
Packit 67cb25
AC_SUBST(GSL_LT_VERSION)
Packit 67cb25
Packit 67cb25
GSL_LT_CBLAS_VERSION="${CBLAS_CURRENT}:${CBLAS_REVISION}:${CBLAS_AGE}"
Packit 67cb25
AC_SUBST(GSL_LT_CBLAS_VERSION)
Packit 67cb25
Packit 67cb25
case "$VERSION" in
Packit 67cb25
    *+)
Packit 67cb25
        ;;
Packit 67cb25
    *)
Packit 67cb25
        AC_DEFINE(RELEASED,[],[Defined if this is an official release])
Packit 67cb25
        ;;
Packit 67cb25
esac
Packit 67cb25
Packit 67cb25
dnl Split VERSION into GSL_VERSION_MAJOR and GSL_VERSION_MINOR
Packit 67cb25
dnl Follows AX_SPLIT_VERSION macro from AC-Archive
Packit 67cb25
dnl Rhys Ulerich <rhys.ulerich@gmail.com>
Packit 67cb25
AC_PROG_SED
Packit 67cb25
GSL_MAJOR_VERSION=`echo "$VERSION" | $SED 's/\([[^.]][[^.]]*\).*/\1/'`
Packit 67cb25
GSL_MINOR_VERSION=`echo "$VERSION" | $SED 's/[[^.]][[^.]]*.\([[^.]][[^.]]*\).*/\1/'`
Packit 67cb25
AC_SUBST(GSL_MAJOR_VERSION)
Packit 67cb25
AC_SUBST(GSL_MINOR_VERSION)
Packit 67cb25
Packit 67cb25
AC_PROG_MKDIR_P
Packit 67cb25
Packit 67cb25
dnl things required by automake
Packit 67cb25
dnl AC_ARG_PROGRAM
Packit 67cb25
AC_PROG_MAKE_SET
Packit 67cb25
Packit 67cb25
dnl Check for which system.
Packit 67cb25
AC_CANONICAL_HOST
Packit 67cb25
Packit 67cb25
dnl Checks for programs.
Packit 67cb25
AC_LANG(C)
Packit 67cb25
AC_PROG_CC
Packit 67cb25
AC_PROG_CPP
Packit 67cb25
AC_PROG_INSTALL
Packit 67cb25
AC_PROG_LN_S
Packit 67cb25
LT_INIT([win32-dll])
Packit 67cb25
Packit 67cb25
dnl Check compiler features
Packit 67cb25
AC_TYPE_SIZE_T
Packit 67cb25
dnl AC_C_CONST
Packit 67cb25
AC_C_VOLATILE
Packit 67cb25
AC_C_INLINE
Packit 67cb25
AC_C_CHAR_UNSIGNED
Packit 67cb25
Packit 67cb25
GSL_CFLAGS="-I$includedir"
Packit 67cb25
GSL_LIBS="-L$libdir -lgsl"
Packit 67cb25
dnl macro from libtool - can be replaced with LT_LIB_M when we require libtool 2
Packit 67cb25
LT_LIB_M
Packit 67cb25
GSL_LIBM=$LIBM
Packit 67cb25
Packit 67cb25
AC_SUBST(GSL_CFLAGS)
Packit 67cb25
AC_SUBST(GSL_LIBS)
Packit 67cb25
AC_SUBST(GSL_LIBM)
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_inline" != no ; then 
Packit 67cb25
dnl Check for "extern inline", using a modified version of the test
Packit 67cb25
dnl for AC_C_INLINE from acspecific.mt
Packit 67cb25
dnl
Packit 67cb25
   AC_CACHE_CHECK([for GNU-style extern inline], ac_cv_c_extern_inline,
Packit 67cb25
   [ac_cv_c_extern_inline=no
Packit 67cb25
   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern $ac_cv_c_inline double foo(double x);
Packit 67cb25
   extern $ac_cv_c_inline double foo(double x) { return x + 1.0 ; } ;
Packit 67cb25
   double foo (double x) { return x + 1.0 ; };]], [[  foo(1.0)  ]])],[ac_cv_c_extern_inline="yes"],[])
Packit 67cb25
   ])
Packit 67cb25
Packit 67cb25
   if test "$ac_cv_c_extern_inline" != no ; then
Packit 67cb25
      AC_DEFINE(HAVE_INLINE,[1],[Define if you have inline])
Packit 67cb25
   else
Packit 67cb25
      AC_CACHE_CHECK([for C99-style inline], ac_cv_c_c99inline,
Packit 67cb25
      [ac_cv_c_c99inline=no
Packit 67cb25
      dnl next line is a necessary condition
Packit 67cb25
      AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[extern inline void* foo() { foo(); return &foo ; };]], 
Packit 67cb25
      [[  return foo() != 0 ]])],[ac_cv_c_c99inline="yes"],[])
Packit 67cb25
      dnl but not sufficient, extern must work but inline on its own should not
Packit 67cb25
      if test "$ac_cv_c_c99inline" != no ; then
Packit 67cb25
            AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[inline void* foo() { foo(); return &foo ; };]], 
Packit 67cb25
            [[  return foo() != 0 ]])],[],ac_cv_c_c99inline="no")
Packit 67cb25
      fi
Packit 67cb25
      ])
Packit 67cb25
      if test "$ac_cv_c_c99inline" != no ; then
Packit 67cb25
         AC_DEFINE(HAVE_INLINE,[1],[Define if you have inline])
Packit 67cb25
         AC_DEFINE(HAVE_C99_INLINE,[1],[Define if you have inline with C99 behavior])
Packit 67cb25
      fi
Packit 67cb25
   fi
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
dnl Checks for header files.
Packit 67cb25
AC_CHECK_HEADERS(ieeefp.h)
Packit 67cb25
Packit 67cb25
dnl Checks for typedefs, structures, and compiler characteristics.
Packit 67cb25
Packit 67cb25
case $host in
Packit 67cb25
  *-*-cygwin* | *-*-mingw* )
Packit 67cb25
  if test "$enable_shared" = yes; then
Packit 67cb25
    GSLCBLAS_LDFLAGS="$GSLCBLAS_LDFLAGS -no-undefined"
Packit 67cb25
    GSL_LDFLAGS="$GSL_LDFLAGS -no-undefined"
Packit 67cb25
    GSL_LIBADD="cblas/libgslcblas.la"
Packit 67cb25
  fi
Packit 67cb25
  ;;
Packit 67cb25
esac
Packit 67cb25
Packit 67cb25
AC_SUBST(GSLCBLAS_LDFLAGS)
Packit 67cb25
AC_SUBST(GSL_LDFLAGS)
Packit 67cb25
AC_SUBST(GSL_LIBADD)
Packit 67cb25
Packit 67cb25
dnl Checks for library functions.
Packit 67cb25
Packit 67cb25
dnl AC_FUNC_ALLOCA
Packit 67cb25
AC_FUNC_VPRINTF
Packit 67cb25
Packit 67cb25
dnl strcasecmp, strerror, xmalloc, xrealloc, probably others should be added.
Packit 67cb25
dnl removed strerror from this list, it's hardcoded in the err/ directory
Packit 67cb25
dnl Any functions which appear in this list of functions should be provided
Packit 67cb25
dnl in the utils/ directory
Packit 67cb25
dnl xmalloc is not used, removed (bjg)
Packit 67cb25
AC_REPLACE_FUNCS(memcpy memmove strdup strtol strtoul)
Packit 67cb25
Packit 67cb25
AC_CACHE_CHECK(for EXIT_SUCCESS and EXIT_FAILURE,
Packit 67cb25
ac_cv_decl_exit_success_and_failure,
Packit 67cb25
AC_EGREP_CPP(yes,
Packit 67cb25
[
Packit 67cb25
#include <stdlib.h>
Packit 67cb25
#ifdef EXIT_SUCCESS
Packit 67cb25
yes
Packit 67cb25
#endif
Packit 67cb25
], 
Packit 67cb25
ac_cv_decl_exit_success_and_failure=yes,
Packit 67cb25
ac_cv_decl_exit_success_and_failure=no)
Packit 67cb25
)
Packit 67cb25
Packit 67cb25
if test "$ac_cv_decl_exit_success_and_failure" = yes ; then
Packit 67cb25
  AC_DEFINE(HAVE_EXIT_SUCCESS_AND_FAILURE,1,[Defined if you have ansi EXIT_SUCCESS and EXIT_FAILURE in stdlib.h])
Packit 67cb25
fi ;
Packit 67cb25
Packit 67cb25
dnl Use alternate libm if specified by user
Packit 67cb25
Packit 67cb25
if test "x$LIBS" = "x" ; then
Packit 67cb25
  AC_CHECK_LIB(m, cos)
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
dnl Remember to put a definition in acconfig.h for each of these
Packit 67cb25
AC_CHECK_DECLS(feenableexcept,,,[#define _GNU_SOURCE 1
Packit 67cb25
#include <fenv.h>]) 
Packit 67cb25
AC_CHECK_DECLS(fesettrapenable,,,[#define _GNU_SOURCE 1
Packit 67cb25
#include <fenv.h>]) 
Packit 67cb25
AC_CHECK_DECLS(hypot,,,[#include <math.h>]) 
Packit 67cb25
AC_CHECK_DECLS(expm1,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(acosh,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(asinh,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(atanh,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(ldexp,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(frexp,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS([fprnd_t],[],[],[[#include <float.h>]]) 
Packit 67cb25
AC_CHECK_DECLS(isinf,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(isfinite,,,[#include <math.h>])
Packit 67cb25
AC_CHECK_DECLS(finite,,,[#include <math.h>
Packit 67cb25
#if HAVE_IEEEFP_H
Packit 67cb25
#include <ieeefp.h>
Packit 67cb25
#endif])
Packit 67cb25
AC_CHECK_DECLS(isnan,,,[#include <math.h>])
Packit 67cb25
Packit 67cb25
dnl OpenBSD has a broken implementation of log1p.
Packit 67cb25
case "$host" in
Packit 67cb25
    *-*-*openbsd*)
Packit 67cb25
       AC_MSG_RESULT([avoiding OpenBSD system log1p - using gsl version])
Packit 67cb25
       ;;
Packit 67cb25
    *)
Packit 67cb25
        AC_CHECK_DECLS(log1p,,,[#include <math.h>])
Packit 67cb25
       ;;
Packit 67cb25
esac
Packit 67cb25
Packit 67cb25
AC_CACHE_CHECK([for long double stdio], ac_cv_func_printf_longdouble,
Packit 67cb25
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Packit 67cb25
#include <stdlib.h>
Packit 67cb25
#include <stdio.h>
Packit 67cb25
int main (void) 
Packit 67cb25
{ 
Packit 67cb25
const char * s = "5678.25"; long double x = 1.234 ; 
Packit 67cb25
fprintf(stderr,"%Lg\n",x) ; 
Packit 67cb25
sscanf(s, "%Lg", &x);
Packit 67cb25
if (x == 5678.25) {exit (0);} else {exit(1); };
Packit 67cb25
}]])],[ac_cv_func_printf_longdouble="yes"],[ac_cv_func_printf_longdouble="no"],[ac_cv_func_printf_longdouble="no"])])
Packit 67cb25
Packit 67cb25
if test "$ac_cv_func_printf_longdouble" != no; then
Packit 67cb25
  AC_DEFINE(HAVE_PRINTF_LONGDOUBLE,1,[Define this if printf can handle %Lf for long double])
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
AC_CACHE_CHECK([for extended floating point registers],ac_cv_c_extended_fp,
Packit 67cb25
[case "$host" in
Packit 67cb25
    *sparc*-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=no
Packit 67cb25
        ;;     
Packit 67cb25
    *powerpc*-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=no
Packit 67cb25
        ;;      
Packit 67cb25
    *hppa*-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=no
Packit 67cb25
        ;;      
Packit 67cb25
    *alpha*-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=no
Packit 67cb25
        ;;      
Packit 67cb25
    *68k*-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=yes
Packit 67cb25
        ;;      
Packit 67cb25
    *86-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=yes
Packit 67cb25
        ;;      
Packit 67cb25
    x86_64-*-*)
Packit 67cb25
        ac_cv_c_extended_fp=yes
Packit 67cb25
        ;;      
Packit 67cb25
    *) 
Packit 67cb25
        ac_cv_c_extended_fp=unknown
Packit 67cb25
        ;;
Packit 67cb25
esac
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
if test $ac_cv_c_extended_fp != "no" ; then
Packit 67cb25
    AC_DEFINE(HAVE_EXTENDED_PRECISION_REGISTERS,1,[Defined on architectures with excess floating-point precision])
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
AC_CACHE_CHECK([for IEEE arithmetic interface type], ac_cv_c_ieee_interface,
Packit 67cb25
[case "$host" in
Packit 67cb25
    sparc-*-linux*) 
Packit 67cb25
        ac_cv_c_ieee_interface=gnusparc
Packit 67cb25
        ;;
Packit 67cb25
    m68k-*-linux*) 
Packit 67cb25
        ac_cv_c_ieee_interface=gnum68k
Packit 67cb25
        ;;
Packit 67cb25
    powerpc-*-linux*) 
Packit 67cb25
        ac_cv_c_ieee_interface=gnuppc
Packit 67cb25
        ;;
Packit 67cb25
    *86-*-gnu | *86_64-*-gnu | *86-*-linux* | *86_64-*-linux*) 
Packit 67cb25
        ac_cv_c_ieee_interface=gnux86
Packit 67cb25
        ;;
Packit 67cb25
    *-*-sunos4*) 
Packit 67cb25
        ac_cv_c_ieee_interface=sunos4
Packit 67cb25
        ;;
Packit 67cb25
    *-*-solaris*) 
Packit 67cb25
        ac_cv_c_ieee_interface=solaris
Packit 67cb25
        ;;
Packit 67cb25
    *-*-hpux11*) 
Packit 67cb25
        ac_cv_c_ieee_interface=hpux11
Packit 67cb25
        ;;
Packit 67cb25
    *-*-hpux*) 
Packit 67cb25
        ac_cv_c_ieee_interface=hpux
Packit 67cb25
        ;;
Packit 67cb25
    *-*-osf*) 
Packit 67cb25
        ac_cv_c_ieee_interface=tru64
Packit 67cb25
        ;;
Packit 67cb25
    *-*-aix*) 
Packit 67cb25
        ac_cv_c_ieee_interface=aix
Packit 67cb25
        ;;
Packit 67cb25
    *-*-irix*) 
Packit 67cb25
        ac_cv_c_ieee_interface=irix
Packit 67cb25
        ;;
Packit 67cb25
    powerpc-*-*darwin*) 
Packit 67cb25
        ac_cv_c_ieee_interface=darwin
Packit 67cb25
        ;;
Packit 67cb25
    *86-*-*darwin*) 
Packit 67cb25
        ac_cv_c_ieee_interface=darwin86
Packit 67cb25
        ;;
Packit 67cb25
    *-*-*netbsd*) 
Packit 67cb25
        ac_cv_c_ieee_interface=netbsd
Packit 67cb25
        ;;
Packit 67cb25
    *-*-*openbsd*)  
Packit 67cb25
        ac_cv_c_ieee_interface=openbsd
Packit 67cb25
        ;;
Packit 67cb25
    *-*-*bsd*) 
Packit 67cb25
        ac_cv_c_ieee_interface=freebsd
Packit 67cb25
        ;;
Packit 67cb25
    *-*-os2*)
Packit 67cb25
        ac_cv_c_ieee_interface=os2emx
Packit 67cb25
        ;;
Packit 67cb25
    *)
Packit 67cb25
        ac_cv_c_ieee_interface=unknown
Packit 67cb25
        ;;
Packit 67cb25
esac
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_ieee_interface" = "gnux86" ; then
Packit 67cb25
    AC_CACHE_CHECK([for FPU_SETCW], ac_cv_c_fpu_setcw,
Packit 67cb25
    [ac_cv_c_fpu_setcw=no
Packit 67cb25
    AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <fpu_control.h>
Packit 67cb25
#ifndef _FPU_SETCW
Packit 67cb25
#include <i386/fpu_control.h>
Packit 67cb25
#define _FPU_SETCW(cw) __setfpucw(cw)
Packit 67cb25
#endif
Packit 67cb25
]], [[ unsigned short mode = 0 ; _FPU_SETCW(mode); ]])],[ac_cv_c_fpu_setcw="yes"],[ac_cv_c_ieee_interface=unknown])
Packit 67cb25
    ])
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_ieee_interface" = "gnux86" ; then
Packit 67cb25
    AC_CACHE_CHECK([for SSE extensions], ac_cv_c_fpu_sse,
Packit 67cb25
    [ac_cv_c_fpu_sse=no
Packit 67cb25
    AC_RUN_IFELSE([AC_LANG_PROGRAM([[
Packit 67cb25
#include <stdlib.h>
Packit 67cb25
#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse))
Packit 67cb25
]], [[ unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); ]])],[ac_cv_c_fpu_sse="yes"],[ac_cv_c_fpu_sse="no"],[
Packit 67cb25
        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
Packit 67cb25
#include <stdlib.h>
Packit 67cb25
#define _FPU_SETMXCSR(cw_sse) asm volatile ("ldmxcsr %0" : : "m" (*&cw_sse))
Packit 67cb25
]], [[ unsigned int mode = 0x1f80 ; _FPU_SETMXCSR(mode); exit(0); ]])],[ac_cv_c_fpu_sse="yes"],[ac_cv_c_fpu_sse="no"])
Packit 67cb25
])])
Packit 67cb25
Packit 67cb25
    if test $ac_cv_c_fpu_sse = yes; then
Packit 67cb25
        AC_DEFINE([HAVE_FPU_X86_SSE], 1,
Packit 67cb25
                  [Define if x86 processor has sse extensions.])
Packit 67cb25
   fi
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
ac_tr_ieee_interface=HAVE_`echo $ac_cv_c_ieee_interface | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`_IEEE_INTERFACE
Packit 67cb25
AC_DEFINE_UNQUOTED($ac_tr_ieee_interface,1,[IEEE Interface Type])
Packit 67cb25
Packit 67cb25
AC_SUBST(HAVE_GNUSPARC_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_GNUM68K_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_GNUPPC_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_GNUX86_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_SUNOS4_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_SOLARIS_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_HPUX11_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_HPUX_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_TRU64_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_IRIX_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_AIX_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_FREEBSD_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_OS2EMX_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_NETBSD_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_OPENBSD_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_DARWIN_IEEE_INTERFACE)
Packit 67cb25
AC_SUBST(HAVE_DARWIN86_IEEE_INTERFACE)
Packit 67cb25
Packit 67cb25
dnl Check for IEEE control flags
Packit 67cb25
Packit 67cb25
save_cflags="$CFLAGS"
Packit 67cb25
AC_CACHE_CHECK([for IEEE compiler flags], ac_cv_c_ieee_flags,
Packit 67cb25
[
Packit 67cb25
case "$host" in
Packit 67cb25
    alpha*-*-*)
Packit 67cb25
        if test X"$GCC" = Xyes ; then
Packit 67cb25
            ieee_flags='-mieee -mfp-rounding-mode=d'
Packit 67cb25
        else
Packit 67cb25
            # This assumes Compaq's C compiler.
Packit 67cb25
            ieee_flags='-ieee -fprm d'
Packit 67cb25
        fi
Packit 67cb25
        ;;
Packit 67cb25
esac
Packit 67cb25
if test X"$ieee_flags" != X ; then
Packit 67cb25
  CFLAGS="$ieee_flags $CFLAGS"
Packit 67cb25
  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[int foo;]])],[ac_cv_c_ieee_flags="$ieee_flags"],[ac_cv_c_ieee_flags="none"])
Packit 67cb25
else
Packit 67cb25
  ac_cv_c_ieee_flags="none"
Packit 67cb25
fi])
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_ieee_flags" != "none" ; then
Packit 67cb25
   CFLAGS="$ac_cv_c_ieee_flags $save_cflags"
Packit 67cb25
else
Packit 67cb25
   CFLAGS="$save_cflags"
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
dnl Check IEEE comparisons, whether "x != x" is true for NaNs
Packit 67cb25
dnl
Packit 67cb25
AC_CACHE_CHECK([for IEEE comparisons], ac_cv_c_ieee_comparisons,
Packit 67cb25
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Packit 67cb25
#include <math.h>
Packit 67cb25
int main (void) 
Packit 67cb25
{ 
Packit 67cb25
   int status; double inf, nan;
Packit 67cb25
   inf = exp(1.0e10);
Packit 67cb25
   nan = inf / inf ;
Packit 67cb25
   status = (nan == nan);
Packit 67cb25
   exit (status);
Packit 67cb25
}]])],[ac_cv_c_ieee_comparisons="yes"],[ac_cv_c_ieee_comparisons="no"],[ac_cv_c_ieee_comparisons="yes"])
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_ieee_comparisons" != no ; then
Packit 67cb25
  AC_DEFINE(HAVE_IEEE_COMPARISONS,1,[Define this if IEEE comparisons work correctly (e.g. NaN != NaN)])
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
dnl Check for IEEE denormalized arithmetic
Packit 67cb25
dnl
Packit 67cb25
AC_CACHE_CHECK([for IEEE denormalized values], ac_cv_c_ieee_denormals,
Packit 67cb25
[AC_RUN_IFELSE([AC_LANG_SOURCE([[
Packit 67cb25
#include <math.h> 
Packit 67cb25
int main (void) 
Packit 67cb25
{ 
Packit 67cb25
   int i, status; 
Packit 67cb25
   volatile double z = 1e-308;
Packit 67cb25
   for (i = 0; i < 5; i++) { z = z / 10.0 ; };        
Packit 67cb25
   for (i = 0; i < 5; i++) { z = z * 10.0 ; };
Packit 67cb25
   status = (z == 0.0);
Packit 67cb25
   exit (status);
Packit 67cb25
}]])],[ac_cv_c_ieee_denormals="yes"],[ac_cv_c_ieee_denormals="no"],[ac_cv_c_ieee_denormals="yes"])
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
if test "$ac_cv_c_ieee_denormals" != no ; then
Packit 67cb25
  AC_DEFINE(HAVE_IEEE_DENORMALS,1,[Define this if IEEE denormalized numbers are available])
Packit 67cb25
fi
Packit 67cb25
Packit 67cb25
AH_TEMPLATE([HIDE_INLINE_STATIC],[Define if you need to hide the static definitions of inline functions])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([/* Use 0 and 1 for EXIT_SUCCESS and EXIT_FAILURE if we don't have them */
Packit 67cb25
#if !HAVE_EXIT_SUCCESS_AND_FAILURE
Packit 67cb25
#define EXIT_SUCCESS 0
Packit 67cb25
#define EXIT_FAILURE 1
Packit 67cb25
#endif])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([/* Define one of these if you have a known IEEE arithmetic interface */
Packit 67cb25
#undef HAVE_GNUSPARC_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_GNUM68K_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_GNUPPC_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_GNUX86_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_SUNOS4_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_SOLARIS_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_HPUX11_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_HPUX_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_TRU64_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_IRIX_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_AIX_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_FREEBSD_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_OS2EMX_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_NETBSD_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_OPENBSD_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_DARWIN_IEEE_INTERFACE
Packit 67cb25
#undef HAVE_DARWIN86_IEEE_INTERFACE])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([/* Define a rounding function which moves extended precision values
Packit 67cb25
   out of registers and rounds them to double-precision. This should
Packit 67cb25
   be used *sparingly*, in places where it is necessary to keep
Packit 67cb25
   double-precision rounding for critical expressions while running in
Packit 67cb25
   extended precision. For example, the following code should ensure
Packit 67cb25
   exact equality, even when extended precision registers are in use,
Packit 67cb25
Packit 67cb25
      double q = GSL_COERCE_DBL(3.0/7.0) ;
Packit 67cb25
      if (q == GSL_COERCE_DBL(3.0/7.0)) { ... } ;
Packit 67cb25
Packit 67cb25
   It carries a penalty even when the program is running in double
Packit 67cb25
   precision mode unless you compile a separate version of the
Packit 67cb25
   library with HAVE_EXTENDED_PRECISION_REGISTERS turned off. */
Packit 67cb25
Packit 67cb25
#if HAVE_EXTENDED_PRECISION_REGISTERS
Packit 67cb25
#define GSL_COERCE_DBL(x) (gsl_coerce_double(x))
Packit 67cb25
#else
Packit 67cb25
#define GSL_COERCE_DBL(x) (x)
Packit 67cb25
#endif])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([/* Substitute gsl functions for missing system functions */
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_HYPOT
Packit 67cb25
#define hypot gsl_hypot
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_LOG1P
Packit 67cb25
#define log1p gsl_log1p
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_EXPM1
Packit 67cb25
#define expm1 gsl_expm1
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ACOSH
Packit 67cb25
#define acosh gsl_acosh
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ASINH
Packit 67cb25
#define asinh gsl_asinh
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ATANH
Packit 67cb25
#define atanh gsl_atanh
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_LDEXP
Packit 67cb25
#define ldexp gsl_ldexp
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_FREXP
Packit 67cb25
#define frexp gsl_frexp
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ISINF
Packit 67cb25
#define isinf gsl_isinf
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ISFINITE
Packit 67cb25
#define isfinite gsl_finite
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_FINITE
Packit 67cb25
#define finite gsl_finite
Packit 67cb25
#endif
Packit 67cb25
Packit 67cb25
#if !HAVE_DECL_ISNAN
Packit 67cb25
#define isnan gsl_isnan
Packit 67cb25
#endif])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([#ifdef __GNUC__
Packit 67cb25
#define DISCARD_POINTER(p) do { ; } while(p ? 0 : 0);
Packit 67cb25
#else
Packit 67cb25
#define DISCARD_POINTER(p) /* ignoring discarded pointer */
Packit 67cb25
#endif])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([#if defined(GSL_RANGE_CHECK_OFF) || !defined(GSL_RANGE_CHECK)
Packit 67cb25
#define GSL_RANGE_CHECK 0  /* turn off range checking by default internally */
Packit 67cb25
#endif])
Packit 67cb25
Packit 67cb25
AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
AH_VERBATIM([GSL_DISABLE_DEPRECATED],
Packit 67cb25
[/* Disable deprecated functions and enums while building */
Packit 67cb25
#define GSL_DISABLE_DEPRECATED 1])
Packit 67cb25
Packit 67cb25
dnl
Packit 67cb25
AC_CONFIG_FILES([            \
Packit 67cb25
Makefile                     \
Packit 67cb25
gsl_version.h                \
Packit 67cb25
gsl.spec                     \
Packit 67cb25
blas/Makefile                \
Packit 67cb25
block/Makefile               \
Packit 67cb25
bspline/Makefile             \
Packit 67cb25
cblas/Makefile               \
Packit 67cb25
cdf/Makefile                 \
Packit 67cb25
cheb/Makefile                \
Packit 67cb25
combination/Makefile         \
Packit 67cb25
complex/Makefile             \
Packit 67cb25
const/Makefile               \
Packit 67cb25
deriv/Makefile               \
Packit 67cb25
dht/Makefile                 \
Packit 67cb25
diff/Makefile                \
Packit 67cb25
doc/Makefile                 \
Packit 67cb25
doc/examples/Makefile        \
Packit 67cb25
eigen/Makefile               \
Packit 67cb25
err/Makefile                 \
Packit 67cb25
fft/Makefile                 \
Packit 67cb25
filter/Makefile              \
Packit 67cb25
fit/Makefile                 \
Packit 67cb25
gsl/Makefile                 \
Packit 67cb25
histogram/Makefile           \
Packit 67cb25
ieee-utils/Makefile          \
Packit 67cb25
integration/Makefile         \
Packit 67cb25
interpolation/Makefile       \
Packit 67cb25
linalg/Makefile              \
Packit 67cb25
matrix/Makefile              \
Packit 67cb25
min/Makefile                 \
Packit 67cb25
monte/Makefile               \
Packit 67cb25
movstat/Makefile             \
Packit 67cb25
multifit/Makefile            \
Packit 67cb25
multifit_nlinear/Makefile    \
Packit 67cb25
multilarge/Makefile          \
Packit 67cb25
multilarge_nlinear/Makefile  \
Packit 67cb25
multimin/Makefile            \
Packit 67cb25
multiroots/Makefile          \
Packit 67cb25
multiset/Makefile            \
Packit 67cb25
ntuple/Makefile              \
Packit 67cb25
ode-initval/Makefile         \
Packit 67cb25
ode-initval2/Makefile        \
Packit 67cb25
permutation/Makefile         \
Packit 67cb25
poly/Makefile                \
Packit 67cb25
qrng/Makefile                \
Packit 67cb25
randist/Makefile             \
Packit 67cb25
rng/Makefile                 \
Packit 67cb25
roots/Makefile               \
Packit 67cb25
rstat/Makefile               \
Packit 67cb25
siman/Makefile               \
Packit 67cb25
sort/Makefile                \
Packit 67cb25
spblas/Makefile              \
Packit 67cb25
splinalg/Makefile            \
Packit 67cb25
spmatrix/Makefile            \
Packit 67cb25
specfunc/Makefile            \
Packit 67cb25
statistics/Makefile          \
Packit 67cb25
sum/Makefile                 \
Packit 67cb25
sys/Makefile                 \
Packit 67cb25
test/Makefile                \
Packit 67cb25
utils/Makefile               \
Packit 67cb25
vector/Makefile              \
Packit 67cb25
wavelet/Makefile             \
Packit 67cb25
])
Packit 67cb25
Packit 67cb25
AC_OUTPUT