[CONFIGURATION]
* NEW: Check for missing mathematical function directly instead of relying on operating system detection. git-svn-id: svn://localhost/gambas/trunk@3166 867c0c6c-44f3-4631-809d-bfa615b0a4ec
This commit is contained in:
parent
93a7daf44e
commit
3fbd60c233
4 changed files with 48 additions and 14 deletions
18
acinclude.m4
18
acinclude.m4
|
@ -194,7 +194,7 @@ AC_DEFUN([GB_INIT],
|
|||
dnl AC_FUNC_WAIT3
|
||||
dnl AC_CHECK_FUNCS(getcwd gettimeofday mkdir rmdir select socket strdup strerror strtod strtol sysinfo)
|
||||
|
||||
AC_REPLACE_FUNCS(setenv unsetenv getdomainname getpt cfmakeraw)
|
||||
AC_CHECK_FUNCS(setenv unsetenv getdomainname getpt cfmakeraw)
|
||||
|
||||
dnl ---- Checks for libraries
|
||||
|
||||
|
@ -342,6 +342,7 @@ AC_DEFUN([GB_INIT],
|
|||
rm -f DISABLED
|
||||
])
|
||||
|
||||
|
||||
## ---------------------------------------------------------------------------
|
||||
## GB_THREAD
|
||||
## Detect threading compiler options
|
||||
|
@ -405,6 +406,21 @@ AC_DEFUN([GB_MATH],
|
|||
])
|
||||
|
||||
|
||||
## ---------------------------------------------------------------------------
|
||||
## GB_MATH_FUNC
|
||||
## Detect which mathematical functions are available
|
||||
## ---------------------------------------------------------------------------
|
||||
|
||||
AC_DEFUN([GB_MATH_FUNC],
|
||||
[
|
||||
dnl AC_CHECK_LIB(m, main, true)
|
||||
ac_save_LDFLAGS="$LDFLAGS"
|
||||
LDFLAGS="$LDFLAGS -lm"
|
||||
AC_CHECK_FUNCS(log10l fabsl powl modfl exp10 exp2 log2)
|
||||
LDFLAGS=$ac_save_LDFLAGS
|
||||
])
|
||||
|
||||
|
||||
## ---------------------------------------------------------------------------
|
||||
## GB_SYSTEM
|
||||
## Detects the target system and its architecture
|
||||
|
|
|
@ -4,6 +4,7 @@ AC_INIT
|
|||
AC_CONFIG_SRCDIR([configure.ac])
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
GB_INIT(main)
|
||||
GB_MATH_FUNC
|
||||
LT_INIT
|
||||
AM_PROG_CC_C_O
|
||||
|
||||
|
|
|
@ -177,50 +177,55 @@ double rnd(void)
|
|||
return (double)val / 18446744073709551616.0; //0xFFFFFFFFFFFFFFFFULL;
|
||||
}
|
||||
|
||||
|
||||
#if defined(OS_FREEBSD) || defined(OS_OPENBSD)
|
||||
|
||||
#ifndef HAVE_EXP10
|
||||
double exp10(double x)
|
||||
{
|
||||
return pow(10, x);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_LOG2
|
||||
double log2(double x)
|
||||
{
|
||||
return log(x) / M_LN2;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_EXP2
|
||||
double exp2(double x)
|
||||
{
|
||||
return pow(2, x);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(ARCH_ARM) || defined(OS_CYGWIN)
|
||||
|
||||
#ifndef HAVE_LOG10L
|
||||
long double log10l(long double x)
|
||||
{
|
||||
return log10((double) x);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FABSL
|
||||
long double fabsl(long double x)
|
||||
{
|
||||
return fabs((double) x);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_POWL
|
||||
long double powl(long double x, long double y)
|
||||
{
|
||||
return pow((double) x, (double) y);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_MODFL
|
||||
long double modfl(long double x, long double *iptr)
|
||||
{
|
||||
double val;
|
||||
return modf((double)x, &val);
|
||||
*iptr = val;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void MATH_init(void)
|
||||
|
|
|
@ -42,20 +42,32 @@ double rnd(void);
|
|||
#define deg(_x) ((_x) * 180 / M_PI)
|
||||
#define rad(_x) ((_x) * M_PI / 180)
|
||||
|
||||
#if defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_CYGWIN)
|
||||
#ifndef HAVE_EXP10
|
||||
double exp10(double x);
|
||||
#ifdef log2
|
||||
#undef log2
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_LOG2
|
||||
double log2(double x);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_EXP2
|
||||
double exp2(double x);
|
||||
#endif
|
||||
|
||||
#if defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_CYGWIN) || defined(ARCH_ARM)
|
||||
#ifndef HAVE_LOG10L
|
||||
long double log10l(long double x);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FABSL
|
||||
long double fabsl(long double x);
|
||||
long double powl(long double x, long double y);
|
||||
long double modfl(long double x, long double *p);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_POWL
|
||||
long double powl(long double x);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_MODFL
|
||||
long double modfl(long double x);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue