mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Import gnulib modules printf-posix and vasprintf-posix
These are neccessary because Android's printf is missing basic format modifiers such as t. * admin/merge-gnulib (GNULIB_MODULES): Add printf-posix and vasprintf-posix. Update from gnulib. * configure.ac (CFLAGS): Add -DHAVE_CONFIG_H.
This commit is contained in:
parent
9082b4e6ee
commit
6f9a2a8f29
111 changed files with 36064 additions and 3 deletions
83
m4/asm-underscore.m4
Normal file
83
m4/asm-underscore.m4
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
# asm-underscore.m4 serial 5
|
||||
dnl Copyright (C) 2010-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible. Based on as-underscore.m4 in GNU clisp.
|
||||
|
||||
# gl_ASM_SYMBOL_PREFIX
|
||||
# Tests for the prefix of C symbols at the assembly language level and the
|
||||
# linker level. This prefix is either an underscore or empty. Defines the
|
||||
# C macro USER_LABEL_PREFIX to this prefix, and sets ASM_SYMBOL_PREFIX to
|
||||
# a stringified variant of this prefix.
|
||||
|
||||
AC_DEFUN([gl_ASM_SYMBOL_PREFIX],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_EGREP])
|
||||
dnl We don't use GCC's __USER_LABEL_PREFIX__ here, because
|
||||
dnl 1. It works only for GCC.
|
||||
dnl 2. It is incorrectly defined on some platforms, in some GCC versions.
|
||||
AC_REQUIRE([gl_C_ASM])
|
||||
AC_CACHE_CHECK(
|
||||
[whether C symbols are prefixed with underscore at the linker level],
|
||||
[gl_cv_prog_as_underscore],
|
||||
[cat > conftest.c <<EOF
|
||||
#ifdef __cplusplus
|
||||
extern "C" int foo (void);
|
||||
#endif
|
||||
int foo(void) { return 0; }
|
||||
EOF
|
||||
# Look for the assembly language name in the .s file.
|
||||
AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
|
||||
if LC_ALL=C $EGREP '(^|[[^a-zA-Z0-9_]])_foo([[^a-zA-Z0-9_]]|$)' conftest.$gl_asmext >/dev/null; then
|
||||
gl_cv_prog_as_underscore=yes
|
||||
else
|
||||
gl_cv_prog_as_underscore=no
|
||||
fi
|
||||
rm -f conftest*
|
||||
])
|
||||
if test $gl_cv_prog_as_underscore = yes; then
|
||||
USER_LABEL_PREFIX=_
|
||||
else
|
||||
USER_LABEL_PREFIX=
|
||||
fi
|
||||
AC_DEFINE_UNQUOTED([USER_LABEL_PREFIX], [$USER_LABEL_PREFIX],
|
||||
[Define to the prefix of C symbols at the assembler and linker level,
|
||||
either an underscore or empty.])
|
||||
ASM_SYMBOL_PREFIX='"'${USER_LABEL_PREFIX}'"'
|
||||
AC_SUBST([ASM_SYMBOL_PREFIX])
|
||||
])
|
||||
|
||||
# gl_C_ASM
|
||||
# Determines how to produce an assembly language file from C source code.
|
||||
# Sets the variables:
|
||||
# gl_asmext - the extension of assembly language output,
|
||||
# gl_c_asm_opt - the C compiler option that produces assembly language output.
|
||||
|
||||
AC_DEFUN([gl_C_ASM],
|
||||
[
|
||||
AC_EGREP_CPP([MicrosoftCompiler],
|
||||
[
|
||||
#ifdef _MSC_VER
|
||||
MicrosoftCompiler
|
||||
#endif
|
||||
],
|
||||
[dnl Microsoft's 'cl' and 'clang-cl' produce an .asm file, whereas 'clang'
|
||||
dnl produces a .s file. Need to distinguish 'clang' and 'clang-cl'.
|
||||
rm -f conftest*
|
||||
echo 'int dummy;' > conftest.c
|
||||
AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS -c conftest.c) >/dev/null 2>&1
|
||||
if test -f conftest.o; then
|
||||
gl_asmext='s'
|
||||
gl_c_asm_opt='-S'
|
||||
else
|
||||
gl_asmext='asm'
|
||||
gl_c_asm_opt='-c -Fa'
|
||||
fi
|
||||
rm -f conftest*
|
||||
],
|
||||
[gl_asmext='s'
|
||||
gl_c_asm_opt='-S'
|
||||
])
|
||||
])
|
||||
116
m4/exponentd.m4
Normal file
116
m4/exponentd.m4
Normal file
|
|
@ -0,0 +1,116 @@
|
|||
# exponentd.m4 serial 3
|
||||
dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
AC_DEFUN([gl_DOUBLE_EXPONENT_LOCATION],
|
||||
[
|
||||
AC_CACHE_CHECK([where to find the exponent in a 'double'],
|
||||
[gl_cv_cc_double_expbit0],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#define NWORDS \
|
||||
((sizeof (double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { double value; unsigned int word[NWORDS]; } memory_double;
|
||||
static unsigned int ored_words[NWORDS];
|
||||
static unsigned int anded_words[NWORDS];
|
||||
static void add_to_ored_words (double x)
|
||||
{
|
||||
memory_double m;
|
||||
size_t i;
|
||||
/* Clear it first, in case sizeof (double) < sizeof (memory_double). */
|
||||
memset (&m, 0, sizeof (memory_double));
|
||||
m.value = x;
|
||||
for (i = 0; i < NWORDS; i++)
|
||||
{
|
||||
ored_words[i] |= m.word[i];
|
||||
anded_words[i] &= m.word[i];
|
||||
}
|
||||
}
|
||||
int main ()
|
||||
{
|
||||
size_t j;
|
||||
FILE *fp = fopen ("conftest.out", "w");
|
||||
if (fp == NULL)
|
||||
return 1;
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
anded_words[j] = ~ (unsigned int) 0;
|
||||
add_to_ored_words (0.25);
|
||||
add_to_ored_words (0.5);
|
||||
add_to_ored_words (1.0);
|
||||
add_to_ored_words (2.0);
|
||||
add_to_ored_words (4.0);
|
||||
/* Remove bits that are common (e.g. if representation of the first mantissa
|
||||
bit is explicit). */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
ored_words[j] &= ~anded_words[j];
|
||||
/* Now find the nonzero word. */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
if (ored_words[j] != 0)
|
||||
break;
|
||||
if (j < NWORDS)
|
||||
{
|
||||
size_t i;
|
||||
for (i = j + 1; i < NWORDS; i++)
|
||||
if (ored_words[i] != 0)
|
||||
{
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
for (i = 0; ; i++)
|
||||
if ((ored_words[j] >> i) & 1)
|
||||
{
|
||||
fprintf (fp, "word %d bit %d", (int) j, (int) i);
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
}
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
]])],
|
||||
[gl_cv_cc_double_expbit0=`cat conftest.out`],
|
||||
[gl_cv_cc_double_expbit0="unknown"],
|
||||
[
|
||||
dnl On ARM, there are two 'double' floating-point formats, used by
|
||||
dnl different sets of instructions: The older FPA instructions assume
|
||||
dnl that they are stored in big-endian word order, while the words
|
||||
dnl (like integer types) are stored in little-endian byte order.
|
||||
dnl The newer VFP instructions assume little-endian order
|
||||
dnl consistently.
|
||||
AC_EGREP_CPP([mixed_endianness], [
|
||||
#if defined arm || defined __arm || defined __arm__
|
||||
mixed_endianness
|
||||
#endif
|
||||
],
|
||||
[gl_cv_cc_double_expbit0="unknown"],
|
||||
[
|
||||
pushdef([AC_MSG_CHECKING],[:])dnl
|
||||
pushdef([AC_MSG_RESULT],[:])dnl
|
||||
pushdef([AC_MSG_RESULT_UNQUOTED],[:])dnl
|
||||
AC_C_BIGENDIAN(
|
||||
[gl_cv_cc_double_expbit0="word 0 bit 20"],
|
||||
[gl_cv_cc_double_expbit0="word 1 bit 20"],
|
||||
[gl_cv_cc_double_expbit0="unknown"])
|
||||
popdef([AC_MSG_RESULT_UNQUOTED])dnl
|
||||
popdef([AC_MSG_RESULT])dnl
|
||||
popdef([AC_MSG_CHECKING])dnl
|
||||
])
|
||||
])
|
||||
rm -f conftest.out
|
||||
])
|
||||
case "$gl_cv_cc_double_expbit0" in
|
||||
word*bit*)
|
||||
word=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
|
||||
bit=`echo "$gl_cv_cc_double_expbit0" | sed -e 's/word.*bit //'`
|
||||
AC_DEFINE_UNQUOTED([DBL_EXPBIT0_WORD], [$word],
|
||||
[Define as the word index where to find the exponent of 'double'.])
|
||||
AC_DEFINE_UNQUOTED([DBL_EXPBIT0_BIT], [$bit],
|
||||
[Define as the bit index in the word where to find bit 0 of the exponent of 'double'.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
92
m4/exponentf.m4
Normal file
92
m4/exponentf.m4
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
# exponentf.m4 serial 2
|
||||
dnl Copyright (C) 2007-2008, 2010-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
AC_DEFUN([gl_FLOAT_EXPONENT_LOCATION],
|
||||
[
|
||||
AC_CACHE_CHECK([where to find the exponent in a 'float'],
|
||||
[gl_cv_cc_float_expbit0],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#define NWORDS \
|
||||
((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { float value; unsigned int word[NWORDS]; } memory_float;
|
||||
static unsigned int ored_words[NWORDS];
|
||||
static unsigned int anded_words[NWORDS];
|
||||
static void add_to_ored_words (float x)
|
||||
{
|
||||
memory_float m;
|
||||
size_t i;
|
||||
/* Clear it first, in case
|
||||
sizeof (float) < sizeof (memory_float). */
|
||||
memset (&m, 0, sizeof (memory_float));
|
||||
m.value = x;
|
||||
for (i = 0; i < NWORDS; i++)
|
||||
{
|
||||
ored_words[i] |= m.word[i];
|
||||
anded_words[i] &= m.word[i];
|
||||
}
|
||||
}
|
||||
int main ()
|
||||
{
|
||||
size_t j;
|
||||
FILE *fp = fopen ("conftest.out", "w");
|
||||
if (fp == NULL)
|
||||
return 1;
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
anded_words[j] = ~ (unsigned int) 0;
|
||||
add_to_ored_words (0.25f);
|
||||
add_to_ored_words (0.5f);
|
||||
add_to_ored_words (1.0f);
|
||||
add_to_ored_words (2.0f);
|
||||
add_to_ored_words (4.0f);
|
||||
/* Remove bits that are common (e.g. if representation of the first mantissa
|
||||
bit is explicit). */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
ored_words[j] &= ~anded_words[j];
|
||||
/* Now find the nonzero word. */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
if (ored_words[j] != 0)
|
||||
break;
|
||||
if (j < NWORDS)
|
||||
{
|
||||
size_t i;
|
||||
for (i = j + 1; i < NWORDS; i++)
|
||||
if (ored_words[i] != 0)
|
||||
{
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
for (i = 0; ; i++)
|
||||
if ((ored_words[j] >> i) & 1)
|
||||
{
|
||||
fprintf (fp, "word %d bit %d", (int) j, (int) i);
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
}
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
]])],
|
||||
[gl_cv_cc_float_expbit0=`cat conftest.out`],
|
||||
[gl_cv_cc_float_expbit0="unknown"],
|
||||
[gl_cv_cc_float_expbit0="word 0 bit 23"])
|
||||
rm -f conftest.out
|
||||
])
|
||||
case "$gl_cv_cc_float_expbit0" in
|
||||
word*bit*)
|
||||
word=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
|
||||
bit=`echo "$gl_cv_cc_float_expbit0" | sed -e 's/word.*bit //'`
|
||||
AC_DEFINE_UNQUOTED([FLT_EXPBIT0_WORD], [$word],
|
||||
[Define as the word index where to find the exponent of 'float'.])
|
||||
AC_DEFINE_UNQUOTED([FLT_EXPBIT0_BIT], [$bit],
|
||||
[Define as the bit index in the word where to find bit 0 of the exponent of 'float'.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
112
m4/exponentl.m4
Normal file
112
m4/exponentl.m4
Normal file
|
|
@ -0,0 +1,112 @@
|
|||
# exponentl.m4 serial 5
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
AC_DEFUN([gl_LONG_DOUBLE_EXPONENT_LOCATION],
|
||||
[
|
||||
AC_REQUIRE([gl_BIGENDIAN])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_CACHE_CHECK([where to find the exponent in a 'long double'],
|
||||
[gl_cv_cc_long_double_expbit0],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#define NWORDS \
|
||||
((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { long double value; unsigned int word[NWORDS]; }
|
||||
memory_long_double;
|
||||
static unsigned int ored_words[NWORDS];
|
||||
static unsigned int anded_words[NWORDS];
|
||||
static void add_to_ored_words (long double *x)
|
||||
{
|
||||
memory_long_double m;
|
||||
size_t i;
|
||||
/* Clear it first, in case
|
||||
sizeof (long double) < sizeof (memory_long_double). */
|
||||
memset (&m, 0, sizeof (memory_long_double));
|
||||
m.value = *x;
|
||||
for (i = 0; i < NWORDS; i++)
|
||||
{
|
||||
ored_words[i] |= m.word[i];
|
||||
anded_words[i] &= m.word[i];
|
||||
}
|
||||
}
|
||||
int main ()
|
||||
{
|
||||
static long double samples[5] = { 0.25L, 0.5L, 1.0L, 2.0L, 4.0L };
|
||||
size_t j;
|
||||
FILE *fp = fopen ("conftest.out", "w");
|
||||
if (fp == NULL)
|
||||
return 1;
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
anded_words[j] = ~ (unsigned int) 0;
|
||||
for (j = 0; j < 5; j++)
|
||||
add_to_ored_words (&samples[j]);
|
||||
/* Remove bits that are common (e.g. if representation of the first mantissa
|
||||
bit is explicit). */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
ored_words[j] &= ~anded_words[j];
|
||||
/* Now find the nonzero word. */
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
if (ored_words[j] != 0)
|
||||
break;
|
||||
if (j < NWORDS)
|
||||
{
|
||||
size_t i;
|
||||
for (i = j + 1; i < NWORDS; i++)
|
||||
if (ored_words[i] != 0)
|
||||
{
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
for (i = 0; ; i++)
|
||||
if ((ored_words[j] >> i) & 1)
|
||||
{
|
||||
fprintf (fp, "word %d bit %d", (int) j, (int) i);
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
}
|
||||
fprintf (fp, "unknown");
|
||||
return (fclose (fp) != 0);
|
||||
}
|
||||
]])],
|
||||
[gl_cv_cc_long_double_expbit0=`cat conftest.out`],
|
||||
[gl_cv_cc_long_double_expbit0="unknown"],
|
||||
[
|
||||
dnl When cross-compiling, in general we don't know. It depends on the
|
||||
dnl ABI and compiler version. There are too many cases.
|
||||
gl_cv_cc_long_double_expbit0="unknown"
|
||||
case "$host_os" in
|
||||
mingw*) # On native Windows (little-endian), we know the result
|
||||
# in two cases: mingw, MSVC.
|
||||
AC_EGREP_CPP([Known], [
|
||||
#ifdef __MINGW32__
|
||||
Known
|
||||
#endif
|
||||
], [gl_cv_cc_long_double_expbit0="word 2 bit 0"])
|
||||
AC_EGREP_CPP([Known], [
|
||||
#ifdef _MSC_VER
|
||||
Known
|
||||
#endif
|
||||
], [gl_cv_cc_long_double_expbit0="word 1 bit 20"])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
rm -f conftest.out
|
||||
])
|
||||
case "$gl_cv_cc_long_double_expbit0" in
|
||||
word*bit*)
|
||||
word=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word //' -e 's/ bit.*//'`
|
||||
bit=`echo "$gl_cv_cc_long_double_expbit0" | sed -e 's/word.*bit //'`
|
||||
AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_WORD], [$word],
|
||||
[Define as the word index where to find the exponent of 'long double'.])
|
||||
AC_DEFINE_UNQUOTED([LDBL_EXPBIT0_BIT], [$bit],
|
||||
[Define as the bit index in the word where to find bit 0 of the exponent of 'long double'.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
106
m4/float_h.m4
Normal file
106
m4/float_h.m4
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# float_h.m4 serial 13
|
||||
dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FLOAT_H],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
GL_GENERATE_FLOAT_H=false
|
||||
REPLACE_FLOAT_LDBL=0
|
||||
case "$host_os" in
|
||||
aix* | beos* | openbsd* | mirbsd* | irix*)
|
||||
GL_GENERATE_FLOAT_H=true
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_cpu" in
|
||||
changequote(,)dnl
|
||||
i[34567]86 )
|
||||
changequote([,])dnl
|
||||
GL_GENERATE_FLOAT_H=true
|
||||
;;
|
||||
x86_64 )
|
||||
# On x86_64 systems, the C compiler may still be generating
|
||||
# 32-bit code.
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_SOURCE(
|
||||
[[#if defined __LP64__ || defined __x86_64__ || defined __amd64__
|
||||
int ok;
|
||||
#else
|
||||
error fail
|
||||
#endif
|
||||
]])],
|
||||
[],
|
||||
[GL_GENERATE_FLOAT_H=true])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*)
|
||||
case "$host_cpu" in
|
||||
powerpc*)
|
||||
GL_GENERATE_FLOAT_H=true
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
case "$host_os" in
|
||||
aix* | freebsd* | dragonfly* | linux*)
|
||||
if $GL_GENERATE_FLOAT_H; then
|
||||
REPLACE_FLOAT_LDBL=1
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl Test against glibc-2.7 Linux/SPARC64 bug.
|
||||
REPLACE_ITOLD=0
|
||||
AC_CACHE_CHECK([whether conversion from 'int' to 'long double' works],
|
||||
[gl_cv_func_itold_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
int i = -1;
|
||||
volatile long double ld;
|
||||
int main ()
|
||||
{
|
||||
ld += i * 1.0L;
|
||||
if (ld > 0)
|
||||
return 1;
|
||||
return 0;
|
||||
}]])],
|
||||
[gl_cv_func_itold_works=yes],
|
||||
[gl_cv_func_itold_works=no],
|
||||
[case "$host" in
|
||||
sparc*-*-linux*)
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_SOURCE(
|
||||
[[#if defined __LP64__ || defined __arch64__
|
||||
int ok;
|
||||
#else
|
||||
error fail
|
||||
#endif
|
||||
]])],
|
||||
[gl_cv_func_itold_works="guessing no"],
|
||||
[gl_cv_func_itold_works="guessing yes"])
|
||||
;;
|
||||
# Guess yes on native Windows.
|
||||
mingw*) gl_cv_func_itold_works="guessing yes" ;;
|
||||
*) gl_cv_func_itold_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
case "$gl_cv_func_itold_works" in
|
||||
*no)
|
||||
REPLACE_ITOLD=1
|
||||
dnl We add the workaround to <float.h> but also to <math.h>,
|
||||
dnl to increase the chances that the fix function gets pulled in.
|
||||
GL_GENERATE_FLOAT_H=true
|
||||
;;
|
||||
esac
|
||||
|
||||
if $GL_GENERATE_FLOAT_H; then
|
||||
gl_NEXT_HEADERS([float.h])
|
||||
fi
|
||||
AC_SUBST([REPLACE_ITOLD])
|
||||
])
|
||||
181
m4/frexp.m4
Normal file
181
m4/frexp.m4
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
# frexp.m4 serial 16
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FREXP],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
|
||||
FREXP_LIBM=
|
||||
if test $gl_cv_func_frexp_no_libm = no; then
|
||||
AC_CACHE_CHECK([whether frexp() can be used with libm],
|
||||
[gl_cv_func_frexp_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
double x;]],
|
||||
[[int e; return frexp (x, &e) > 0;]])],
|
||||
[gl_cv_func_frexp_in_libm=yes],
|
||||
[gl_cv_func_frexp_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
if test $gl_cv_func_frexp_in_libm = yes; then
|
||||
FREXP_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
if test $gl_cv_func_frexp_no_libm = yes \
|
||||
|| test $gl_cv_func_frexp_in_libm = yes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $FREXP_LIBM"
|
||||
gl_FUNC_FREXP_WORKS
|
||||
LIBS="$save_LIBS"
|
||||
case "$gl_cv_func_frexp_works" in
|
||||
*yes) gl_func_frexp=yes ;;
|
||||
*) gl_func_frexp=no; REPLACE_FREXP=1; FREXP_LIBM= ;;
|
||||
esac
|
||||
else
|
||||
gl_func_frexp=no
|
||||
fi
|
||||
if test $gl_func_frexp = yes; then
|
||||
AC_DEFINE([HAVE_FREXP], [1],
|
||||
[Define if the frexp() function is available and works.])
|
||||
fi
|
||||
AC_SUBST([FREXP_LIBM])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FUNC_FREXP_NO_LIBM],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
|
||||
if test $gl_cv_func_frexp_no_libm = yes; then
|
||||
gl_FUNC_FREXP_WORKS
|
||||
case "$gl_cv_func_frexp_works" in
|
||||
*yes) gl_func_frexp_no_libm=yes ;;
|
||||
*) gl_func_frexp_no_libm=no; REPLACE_FREXP=1 ;;
|
||||
esac
|
||||
else
|
||||
gl_func_frexp_no_libm=no
|
||||
dnl Set REPLACE_FREXP here because the system may have frexp in libm.
|
||||
REPLACE_FREXP=1
|
||||
fi
|
||||
if test $gl_func_frexp_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
|
||||
[Define if the frexp() function is available in libc.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Test whether frexp() can be used without linking with libm.
|
||||
dnl Set gl_cv_func_frexp_no_libm to 'yes' or 'no' accordingly.
|
||||
AC_DEFUN([gl_CHECK_FREXP_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether frexp() can be used without linking with libm],
|
||||
[gl_cv_func_frexp_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
double x;]],
|
||||
[[int e; return frexp (x, &e) > 0;]])],
|
||||
[gl_cv_func_frexp_no_libm=yes],
|
||||
[gl_cv_func_frexp_no_libm=no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether frexp() works also on denormalized numbers (this fails e.g. on
|
||||
dnl NetBSD 3.0), on infinite numbers (this fails e.g. on IRIX 6.5 and mingw),
|
||||
dnl and on negative zero (this fails e.g. on NetBSD 4.99 and mingw).
|
||||
AC_DEFUN([gl_FUNC_FREXP_WORKS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_CHECK_DECLS_ONCE([alarm])
|
||||
AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
#if HAVE_DECL_ALARM
|
||||
# include <signal.h>
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
|
||||
ICC 10.0 has a bug when optimizing the expression -zero.
|
||||
The expression -DBL_MIN * DBL_MIN does not work when cross-compiling
|
||||
to PowerPC on Mac OS X 10.5. */
|
||||
#if defined __hpux || defined __sgi || defined __ICC
|
||||
static double
|
||||
compute_minus_zero (void)
|
||||
{
|
||||
return -DBL_MIN * DBL_MIN;
|
||||
}
|
||||
# define minus_zero compute_minus_zero ()
|
||||
#else
|
||||
double minus_zero = -0.0;
|
||||
#endif
|
||||
int main()
|
||||
{
|
||||
int result = 0;
|
||||
int i;
|
||||
volatile double x;
|
||||
double zero = 0.0;
|
||||
#if HAVE_DECL_ALARM
|
||||
/* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
|
||||
number. Let the test fail in this case. */
|
||||
signal (SIGALRM, SIG_DFL);
|
||||
alarm (5);
|
||||
#endif
|
||||
/* Test on denormalized numbers. */
|
||||
for (i = 1, x = 1.0; i >= DBL_MIN_EXP; i--, x *= 0.5)
|
||||
;
|
||||
if (x > 0.0)
|
||||
{
|
||||
int exp;
|
||||
double y = frexp (x, &exp);
|
||||
/* On machines with IEEE754 arithmetic: x = 1.11254e-308, exp = -1022.
|
||||
On NetBSD: y = 0.75. Correct: y = 0.5. */
|
||||
if (y != 0.5)
|
||||
result |= 1;
|
||||
}
|
||||
/* Test on infinite numbers. */
|
||||
x = 1.0 / zero;
|
||||
{
|
||||
int exp;
|
||||
double y = frexp (x, &exp);
|
||||
if (y != x)
|
||||
result |= 2;
|
||||
}
|
||||
/* Test on negative zero. */
|
||||
x = minus_zero;
|
||||
{
|
||||
int exp;
|
||||
double y = frexp (x, &exp);
|
||||
if (memcmp (&y, &x, sizeof x))
|
||||
result |= 4;
|
||||
}
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_frexp_works=yes],
|
||||
[gl_cv_func_frexp_works=no],
|
||||
[case "$host_os" in
|
||||
netbsd* | irix*) gl_cv_func_frexp_works="guessing no" ;;
|
||||
mingw*) # Guess yes with MSVC, no with mingw.
|
||||
AC_EGREP_CPP([Good], [
|
||||
#ifdef _MSC_VER
|
||||
Good
|
||||
#endif
|
||||
],
|
||||
[gl_cv_func_frexp_works="guessing yes"],
|
||||
[gl_cv_func_frexp_works="guessing no"])
|
||||
;;
|
||||
*) gl_cv_func_frexp_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
])
|
||||
233
m4/frexpl.m4
Normal file
233
m4/frexpl.m4
Normal file
|
|
@ -0,0 +1,233 @@
|
|||
# frexpl.m4 serial 22
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FREXPL],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
|
||||
dnl Persuade glibc <math.h> to declare frexpl().
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
|
||||
dnl Check whether it's declared.
|
||||
dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
|
||||
AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
|
||||
|
||||
FREXPL_LIBM=
|
||||
if test $HAVE_DECL_FREXPL = 1; then
|
||||
gl_CHECK_FREXPL_NO_LIBM
|
||||
if test $gl_cv_func_frexpl_no_libm = no; then
|
||||
AC_CACHE_CHECK([whether frexpl() can be used with libm],
|
||||
[gl_cv_func_frexpl_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
long double x;]],
|
||||
[[int e; return frexpl (x, &e) > 0;]])],
|
||||
[gl_cv_func_frexpl_in_libm=yes],
|
||||
[gl_cv_func_frexpl_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
if test $gl_cv_func_frexpl_in_libm = yes; then
|
||||
FREXPL_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
if test $gl_cv_func_frexpl_no_libm = yes \
|
||||
|| test $gl_cv_func_frexpl_in_libm = yes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $FREXPL_LIBM"
|
||||
gl_FUNC_FREXPL_WORKS
|
||||
LIBS="$save_LIBS"
|
||||
case "$gl_cv_func_frexpl_works" in
|
||||
*yes) gl_func_frexpl=yes ;;
|
||||
*) gl_func_frexpl=no; REPLACE_FREXPL=1 ;;
|
||||
esac
|
||||
else
|
||||
gl_func_frexpl=no
|
||||
fi
|
||||
if test $gl_func_frexpl = yes; then
|
||||
AC_DEFINE([HAVE_FREXPL], [1],
|
||||
[Define if the frexpl() function is available.])
|
||||
fi
|
||||
fi
|
||||
if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl = no; then
|
||||
dnl Find libraries needed to link lib/frexpl.c.
|
||||
if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
|
||||
AC_REQUIRE([gl_FUNC_FREXP])
|
||||
FREXPL_LIBM="$FREXP_LIBM"
|
||||
else
|
||||
FREXPL_LIBM=
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([FREXPL_LIBM])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FUNC_FREXPL_NO_LIBM],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
dnl Check whether it's declared.
|
||||
dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
|
||||
AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
|
||||
if test $HAVE_DECL_FREXPL = 1; then
|
||||
gl_CHECK_FREXPL_NO_LIBM
|
||||
if test $gl_cv_func_frexpl_no_libm = yes; then
|
||||
gl_FUNC_FREXPL_WORKS
|
||||
case "$gl_cv_func_frexpl_works" in
|
||||
*yes) gl_func_frexpl_no_libm=yes ;;
|
||||
*) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
|
||||
esac
|
||||
else
|
||||
gl_func_frexpl_no_libm=no
|
||||
dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
|
||||
REPLACE_FREXPL=1
|
||||
fi
|
||||
if test $gl_func_frexpl_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
|
||||
[Define if the frexpl() function is available in libc.])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Test whether frexpl() can be used without linking with libm.
|
||||
dnl Set gl_cv_func_frexpl_no_libm to 'yes' or 'no' accordingly.
|
||||
AC_DEFUN([gl_CHECK_FREXPL_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether frexpl() can be used without linking with libm],
|
||||
[gl_cv_func_frexpl_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
long double x;]],
|
||||
[[int e; return frexpl (x, &e) > 0;]])],
|
||||
[gl_cv_func_frexpl_no_libm=yes],
|
||||
[gl_cv_func_frexpl_no_libm=no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether frexpl() works on finite numbers (this fails on
|
||||
dnl Mac OS X 10.4/PowerPC, on AIX 5.1, and on BeOS), on denormalized numbers
|
||||
dnl (this fails on Mac OS X 10.5/i386), and also on infinite numbers (this
|
||||
dnl fails e.g. on IRIX 6.5 and mingw).
|
||||
AC_DEFUN([gl_FUNC_FREXPL_WORKS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_CACHE_CHECK([whether frexpl works], [gl_cv_func_frexpl_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <math.h>
|
||||
/* Override the values of <float.h>, like done in float.in.h. */
|
||||
#if defined __i386__ && (defined __BEOS__ || defined __OpenBSD__)
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP (-16381)
|
||||
#endif
|
||||
#if defined __i386__ && (defined __FreeBSD__ || defined __DragonFly__)
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP (-16381)
|
||||
#endif
|
||||
#if (defined _ARCH_PPC || defined _POWER) && defined _AIX && (LDBL_MANT_DIG == 106) && defined __GNUC__
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP DBL_MIN_EXP
|
||||
#endif
|
||||
#if defined __sgi && (LDBL_MANT_DIG >= 106)
|
||||
# if defined __GNUC__
|
||||
# undef LDBL_MIN_EXP
|
||||
# define LDBL_MIN_EXP DBL_MIN_EXP
|
||||
# endif
|
||||
#endif
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
long double frexpl (long double, int *);
|
||||
long double zero = 0.0L;
|
||||
int main()
|
||||
{
|
||||
int result = 0;
|
||||
volatile long double x;
|
||||
/* Test on finite numbers that fails on AIX 5.1. */
|
||||
x = 16.0L;
|
||||
{
|
||||
int exp = -9999;
|
||||
frexpl (x, &exp);
|
||||
if (exp != 5)
|
||||
result |= 1;
|
||||
}
|
||||
/* Test on finite numbers that fails on Mac OS X 10.4, because its frexpl
|
||||
function returns an invalid (incorrectly normalized) value: it returns
|
||||
y = { 0x3fe028f5, 0xc28f5c28, 0x3c9eb851, 0xeb851eb8 }
|
||||
but the correct result is
|
||||
0.505L = { 0x3fe028f5, 0xc28f5c29, 0xbc547ae1, 0x47ae1480 } */
|
||||
x = 1.01L;
|
||||
{
|
||||
int exp = -9999;
|
||||
long double y = frexpl (x, &exp);
|
||||
if (!(exp == 1 && y == 0.505L))
|
||||
result |= 2;
|
||||
}
|
||||
/* Test on large finite numbers. This fails on BeOS at i = 16322, while
|
||||
LDBL_MAX_EXP = 16384.
|
||||
In the loop end test, we test x against Infinity, rather than comparing
|
||||
i with LDBL_MAX_EXP, because BeOS <float.h> has a wrong LDBL_MAX_EXP. */
|
||||
{
|
||||
int i;
|
||||
for (i = 1, x = 1.0L; x != x + x; i++, x *= 2.0L)
|
||||
{
|
||||
int exp = -9999;
|
||||
frexpl (x, &exp);
|
||||
if (exp != i)
|
||||
{
|
||||
result |= 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Test on denormalized numbers. */
|
||||
{
|
||||
int i;
|
||||
for (i = 1, x = 1.0L; i >= LDBL_MIN_EXP; i--, x *= 0.5L)
|
||||
;
|
||||
if (x > 0.0L)
|
||||
{
|
||||
int exp;
|
||||
long double y = frexpl (x, &exp);
|
||||
/* On machines with IEEE854 arithmetic: x = 1.68105e-4932,
|
||||
exp = -16382, y = 0.5. On Mac OS X 10.5: exp = -16384, y = 0.5. */
|
||||
if (exp != LDBL_MIN_EXP - 1)
|
||||
result |= 8;
|
||||
}
|
||||
}
|
||||
/* Test on infinite numbers. */
|
||||
/* The Microsoft MSVC 14 compiler chokes on the expression 1.0 / 0.0. */
|
||||
x = 1.0L / zero;
|
||||
{
|
||||
int exp;
|
||||
long double y = frexpl (x, &exp);
|
||||
if (y != x)
|
||||
result |= 16;
|
||||
}
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_frexpl_works=yes],
|
||||
[gl_cv_func_frexpl_works=no],
|
||||
[
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
aix | aix[3-6]* | beos* | darwin* | irix* | mingw* | pw*)
|
||||
gl_cv_func_frexpl_works="guessing no";;
|
||||
*) gl_cv_func_frexpl_works="guessing yes";;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
])
|
||||
])
|
||||
])
|
||||
13
m4/fseterr.m4
Normal file
13
m4/fseterr.m4
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
# fseterr.m4 serial 2
|
||||
dnl Copyright (C) 2012-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_FSETERR],
|
||||
[
|
||||
gl_CHECK_FUNCS_ANDROID([__fseterr],
|
||||
[[#include <stdio.h>
|
||||
#include <stdio_ext.h>
|
||||
]])
|
||||
])
|
||||
|
|
@ -95,10 +95,15 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module filename:
|
||||
# Code from module filevercmp:
|
||||
# Code from module flexmember:
|
||||
# Code from module float:
|
||||
# Code from module fpending:
|
||||
# Code from module fpieee:
|
||||
AC_REQUIRE([gl_FP_IEEE])
|
||||
# Code from module fpucw:
|
||||
# Code from module free-posix:
|
||||
# Code from module frexp-nolibm:
|
||||
# Code from module frexpl-nolibm:
|
||||
# Code from module fseterr:
|
||||
# Code from module fstatat:
|
||||
# Code from module fsusage:
|
||||
# Code from module fsync:
|
||||
|
|
@ -125,6 +130,9 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module include_next:
|
||||
# Code from module intprops:
|
||||
# Code from module inttypes-incomplete:
|
||||
# Code from module isnand-nolibm:
|
||||
# Code from module isnanf-nolibm:
|
||||
# Code from module isnanl-nolibm:
|
||||
# Code from module largefile:
|
||||
AC_REQUIRE([AC_SYS_LARGEFILE])
|
||||
# Code from module lchmod:
|
||||
|
|
@ -135,6 +143,7 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module malloc-gnu:
|
||||
# Code from module malloc-posix:
|
||||
# Code from module manywarnings:
|
||||
# Code from module math:
|
||||
# Code from module memmem-simple:
|
||||
# Code from module mempcpy:
|
||||
# Code from module memrchr:
|
||||
|
|
@ -152,6 +161,10 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module openat-h:
|
||||
# Code from module pathmax:
|
||||
# Code from module pipe2:
|
||||
# Code from module printf-frexp:
|
||||
# Code from module printf-frexpl:
|
||||
# Code from module printf-posix:
|
||||
# Code from module printf-safe:
|
||||
# Code from module pselect:
|
||||
# Code from module pthread_sigmask:
|
||||
# Code from module qcopy-acl:
|
||||
|
|
@ -165,6 +178,8 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module sig2str:
|
||||
# Code from module sigdescr_np:
|
||||
# Code from module signal-h:
|
||||
# Code from module signbit:
|
||||
# Code from module size_max:
|
||||
# Code from module snippet/_Noreturn:
|
||||
# Code from module snippet/arg-nonnull:
|
||||
# Code from module snippet/c++defs:
|
||||
|
|
@ -208,10 +223,15 @@ AC_DEFUN([gl_EARLY],
|
|||
# Code from module utimens:
|
||||
# Code from module utimensat:
|
||||
# Code from module vararrays:
|
||||
# Code from module vasnprintf:
|
||||
# Code from module vasprintf:
|
||||
# Code from module vasprintf-posix:
|
||||
# Code from module verify:
|
||||
# Code from module vfprintf-posix:
|
||||
# Code from module vla:
|
||||
# Code from module warnings:
|
||||
# Code from module xalloc-oversized:
|
||||
# Code from module xsize:
|
||||
])
|
||||
|
||||
# This macro should be invoked from .//configure.ac, in the section
|
||||
|
|
@ -319,6 +339,11 @@ AC_DEFUN([gl_INIT],
|
|||
gl_FILE_HAS_ACL
|
||||
gl_FILEMODE
|
||||
AC_C_FLEXIBLE_ARRAY_MEMBER
|
||||
gl_FLOAT_H
|
||||
gl_CONDITIONAL_HEADER([float.h])
|
||||
AC_PROG_MKDIR_P
|
||||
gl_CONDITIONAL([GL_COND_OBJ_FLOAT], [test $REPLACE_FLOAT_LDBL = 1])
|
||||
gl_CONDITIONAL([GL_COND_OBJ_ITOLD], [test $REPLACE_ITOLD = 1])
|
||||
gl_FUNC_FPENDING
|
||||
gl_CONDITIONAL([GL_COND_OBJ_FPENDING], [test $gl_cv_func___fpending = no])
|
||||
gl_FUNC_FREE
|
||||
|
|
@ -327,6 +352,16 @@ AC_DEFUN([gl_INIT],
|
|||
gl_PREREQ_FREE
|
||||
])
|
||||
gl_STDLIB_MODULE_INDICATOR([free-posix])
|
||||
gl_FUNC_FREXP_NO_LIBM
|
||||
if test $gl_func_frexp_no_libm != yes; then
|
||||
AC_LIBOBJ([frexp])
|
||||
fi
|
||||
gl_MATH_MODULE_INDICATOR([frexp])
|
||||
gl_FUNC_FREXPL_NO_LIBM
|
||||
if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
|
||||
AC_LIBOBJ([frexpl])
|
||||
fi
|
||||
gl_MATH_MODULE_INDICATOR([frexpl])
|
||||
gl_FUNC_FSTATAT
|
||||
gl_CONDITIONAL([GL_COND_OBJ_FSTATAT],
|
||||
[test $HAVE_FSTATAT = 0 || test $REPLACE_FSTATAT = 1])
|
||||
|
|
@ -394,6 +429,16 @@ AC_DEFUN([gl_INIT],
|
|||
gl_INTTYPES_INCOMPLETE
|
||||
gl_INTTYPES_H_REQUIRE_DEFAULTS
|
||||
AC_PROG_MKDIR_P
|
||||
gl_FUNC_ISNAND_NO_LIBM
|
||||
if test $gl_func_isnand_no_libm != yes; then
|
||||
AC_LIBOBJ([isnand])
|
||||
gl_PREREQ_ISNAND
|
||||
fi
|
||||
gl_FUNC_ISNANL_NO_LIBM
|
||||
if test $gl_func_isnanl_no_libm != yes; then
|
||||
AC_LIBOBJ([isnanl])
|
||||
gl_PREREQ_ISNANL
|
||||
fi
|
||||
AC_REQUIRE([gl_LARGEFILE])
|
||||
gl___INLINE
|
||||
gl_LIBGMP
|
||||
|
|
@ -409,6 +454,9 @@ AC_DEFUN([gl_INIT],
|
|||
gl_PREREQ_LSTAT
|
||||
])
|
||||
gl_SYS_STAT_MODULE_INDICATOR([lstat])
|
||||
gl_MATH_H
|
||||
gl_MATH_H_REQUIRE_DEFAULTS
|
||||
AC_PROG_MKDIR_P
|
||||
gl_FUNC_MEMMEM_SIMPLE
|
||||
if test $HAVE_MEMMEM = 0 || test $REPLACE_MEMMEM = 1; then
|
||||
AC_LIBOBJ([memmem])
|
||||
|
|
@ -458,6 +506,11 @@ AC_DEFUN([gl_INIT],
|
|||
gl_PATHMAX
|
||||
gl_FUNC_PIPE2
|
||||
gl_UNISTD_MODULE_INDICATOR([pipe2])
|
||||
gl_FUNC_PRINTF_FREXP
|
||||
gl_FUNC_PRINTF_FREXPL
|
||||
gl_FUNC_PRINTF_POSIX
|
||||
gl_STDIO_MODULE_INDICATOR([printf-posix])
|
||||
m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
|
||||
gl_FUNC_PSELECT
|
||||
gl_CONDITIONAL([GL_COND_OBJ_PSELECT],
|
||||
[test $HAVE_PSELECT = 0 || test $REPLACE_PSELECT = 1])
|
||||
|
|
@ -504,6 +557,9 @@ AC_DEFUN([gl_INIT],
|
|||
gl_SIGNAL_H
|
||||
gl_SIGNAL_H_REQUIRE_DEFAULTS
|
||||
AC_PROG_MKDIR_P
|
||||
gl_SIGNBIT
|
||||
gl_CONDITIONAL([GL_COND_OBJ_SIGNBIT3], [test $REPLACE_SIGNBIT = 1])
|
||||
gl_MATH_MODULE_INDICATOR([signbit])
|
||||
gl_TYPE_SOCKLEN_T
|
||||
gt_TYPE_SSIZE_T
|
||||
gl_STAT_TIME
|
||||
|
|
@ -646,11 +702,18 @@ AC_DEFUN([gl_INIT],
|
|||
[test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1])
|
||||
gl_SYS_STAT_MODULE_INDICATOR([utimensat])
|
||||
AC_C_VARARRAYS
|
||||
gl_FUNC_VASPRINTF
|
||||
gl_STDIO_MODULE_INDICATOR([vasprintf])
|
||||
m4_ifdef([AM_XGETTEXT_OPTION],
|
||||
[AM_][XGETTEXT_OPTION([--flag=asprintf:2:c-format])
|
||||
AM_][XGETTEXT_OPTION([--flag=vasprintf:2:c-format])])
|
||||
gl_FUNC_VASPRINTF_POSIX
|
||||
gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b=false
|
||||
gl_gnulib_enabled_cloexec=false
|
||||
gl_gnulib_enabled_dirfd=false
|
||||
gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c=false
|
||||
gl_gnulib_enabled_euidaccess=false
|
||||
gl_gnulib_enabled_fseterr=false
|
||||
gl_gnulib_enabled_getdelim=false
|
||||
gl_gnulib_enabled_getdtablesize=false
|
||||
gl_gnulib_enabled_getgroups=false
|
||||
|
|
@ -658,6 +721,7 @@ AC_DEFUN([gl_INIT],
|
|||
gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c=false
|
||||
gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9=false
|
||||
gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1=false
|
||||
gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66=false
|
||||
gl_gnulib_enabled_lchmod=false
|
||||
gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b=false
|
||||
gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866=false
|
||||
|
|
@ -668,9 +732,13 @@ AC_DEFUN([gl_INIT],
|
|||
gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b=false
|
||||
gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4=false
|
||||
gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=false
|
||||
gl_gnulib_enabled_size_max=false
|
||||
gl_gnulib_enabled_strtoll=false
|
||||
gl_gnulib_enabled_utimens=false
|
||||
gl_gnulib_enabled_vasnprintf=false
|
||||
gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b=false
|
||||
gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=false
|
||||
gl_gnulib_enabled_xsize=false
|
||||
func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b; then
|
||||
|
|
@ -723,6 +791,14 @@ AC_DEFUN([gl_INIT],
|
|||
func_gl_gnulib_m4code_6099e9737f757db36c47fa9d9f02e88c
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_fseterr ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_fseterr; then
|
||||
gl_FUNC_FSETERR
|
||||
gl_CONDITIONAL([GL_COND_OBJ_FSETERR], [test $ac_cv_func___fseterr = no])
|
||||
gl_gnulib_enabled_fseterr=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_getdelim ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_getdelim; then
|
||||
|
|
@ -804,6 +880,17 @@ AC_DEFUN([gl_INIT],
|
|||
fi
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_3f0e593033d1fc2c127581960f641b66 ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66; then
|
||||
gl_FUNC_ISNANF_NO_LIBM
|
||||
if test $gl_func_isnanf_no_libm != yes; then
|
||||
AC_LIBOBJ([isnanf])
|
||||
gl_PREREQ_ISNANF
|
||||
fi
|
||||
gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_lchmod ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_lchmod; then
|
||||
|
|
@ -930,6 +1017,13 @@ AC_DEFUN([gl_INIT],
|
|||
gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_size_max ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_size_max; then
|
||||
gl_SIZE_MAX
|
||||
gl_gnulib_enabled_size_max=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_strtoll ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_strtoll; then
|
||||
|
|
@ -950,12 +1044,44 @@ AC_DEFUN([gl_INIT],
|
|||
gl_gnulib_enabled_utimens=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_vasnprintf ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_vasnprintf; then
|
||||
AC_REQUIRE([AC_C_RESTRICT])
|
||||
gl_FUNC_VASNPRINTF
|
||||
gl_gnulib_enabled_vasnprintf=true
|
||||
func_gl_gnulib_m4code_xsize
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_ed5616be3593d355b981ffab56b9f37b ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b; then
|
||||
gl_FUNC_VFPRINTF_POSIX
|
||||
gl_STDIO_MODULE_INDICATOR([vfprintf-posix])
|
||||
gl_MODULE_INDICATOR([vfprintf-posix])
|
||||
gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b=true
|
||||
if test $REPLACE_VFPRINTF = 1; then
|
||||
func_gl_gnulib_m4code_fseterr
|
||||
fi
|
||||
if test $REPLACE_VFPRINTF = 1; then
|
||||
func_gl_gnulib_m4code_vasnprintf
|
||||
fi
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_682e609604ccaac6be382e4ee3a4eaec ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec; then
|
||||
gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec=true
|
||||
fi
|
||||
}
|
||||
func_gl_gnulib_m4code_xsize ()
|
||||
{
|
||||
if ! $gl_gnulib_enabled_xsize; then
|
||||
gl_XSIZE
|
||||
gl_gnulib_enabled_xsize=true
|
||||
func_gl_gnulib_m4code_size_max
|
||||
fi
|
||||
}
|
||||
if test $HAVE_CANONICALIZE_FILE_NAME = 0 || test $REPLACE_CANONICALIZE_FILE_NAME = 1; then
|
||||
func_gl_gnulib_m4code_925677f0343de64b89a9f0c790b4104c
|
||||
fi
|
||||
|
|
@ -1013,6 +1139,9 @@ AC_DEFUN([gl_INIT],
|
|||
if case $host_os in mingw*) false;; *) test $HAVE_GETRANDOM = 0 || test $REPLACE_GETRANDOM = 1;; esac; then
|
||||
func_gl_gnulib_m4code_open
|
||||
fi
|
||||
if test $REPLACE_PRINTF = 1; then
|
||||
func_gl_gnulib_m4code_ed5616be3593d355b981ffab56b9f37b
|
||||
fi
|
||||
if test $HAVE_READLINKAT = 0 || test $REPLACE_READLINKAT = 1; then
|
||||
func_gl_gnulib_m4code_260941c0e5dc67ec9e87d1fb321c300b
|
||||
fi
|
||||
|
|
@ -1022,6 +1151,9 @@ AC_DEFUN([gl_INIT],
|
|||
if test $ac_use_included_regex = yes; then
|
||||
func_gl_gnulib_m4code_fd38c7e463b54744b77b98aeafb4fa7c
|
||||
fi
|
||||
if test $REPLACE_SIGNBIT = 1; then
|
||||
func_gl_gnulib_m4code_3f0e593033d1fc2c127581960f641b66
|
||||
fi
|
||||
if { test $HAVE_DECL_STRTOIMAX = 0 || test $REPLACE_STRTOIMAX = 1; } && test $ac_cv_type_long_long_int = yes; then
|
||||
func_gl_gnulib_m4code_strtoll
|
||||
fi
|
||||
|
|
@ -1037,12 +1169,19 @@ AC_DEFUN([gl_INIT],
|
|||
if test $HAVE_UTIMENSAT = 0 || test $REPLACE_UTIMENSAT = 1; then
|
||||
func_gl_gnulib_m4code_utimens
|
||||
fi
|
||||
if test $HAVE_VASPRINTF = 0 || test $REPLACE_VASPRINTF = 1; then
|
||||
func_gl_gnulib_m4code_vasnprintf
|
||||
fi
|
||||
if test $HAVE_VASPRINTF = 0 || test $REPLACE_VASPRINTF = 1; then
|
||||
func_gl_gnulib_m4code_vasnprintf
|
||||
fi
|
||||
m4_pattern_allow([^gl_GNULIB_ENABLED_])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_260941c0e5dc67ec9e87d1fb321c300b], [$gl_gnulib_enabled_260941c0e5dc67ec9e87d1fb321c300b])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_cloexec], [$gl_gnulib_enabled_cloexec])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_dirfd], [$gl_gnulib_enabled_dirfd])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_925677f0343de64b89a9f0c790b4104c], [$gl_gnulib_enabled_925677f0343de64b89a9f0c790b4104c])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_euidaccess], [$gl_gnulib_enabled_euidaccess])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_fseterr], [$gl_gnulib_enabled_fseterr])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_getdelim], [$gl_gnulib_enabled_getdelim])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_getdtablesize], [$gl_gnulib_enabled_getdtablesize])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_getgroups], [$gl_gnulib_enabled_getgroups])
|
||||
|
|
@ -1050,6 +1189,7 @@ AC_DEFUN([gl_INIT],
|
|||
AM_CONDITIONAL([gl_GNULIB_ENABLED_fd38c7e463b54744b77b98aeafb4fa7c], [$gl_gnulib_enabled_fd38c7e463b54744b77b98aeafb4fa7c])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_8444034ea779b88768865bb60b4fb8c9], [$gl_gnulib_enabled_8444034ea779b88768865bb60b4fb8c9])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_a9786850e999ae65a836a6041e8e5ed1], [$gl_gnulib_enabled_a9786850e999ae65a836a6041e8e5ed1])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_3f0e593033d1fc2c127581960f641b66], [$gl_gnulib_enabled_3f0e593033d1fc2c127581960f641b66])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_lchmod], [$gl_gnulib_enabled_lchmod])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_e80bf6f757095d2e5fc94dafb8f8fc8b], [$gl_gnulib_enabled_e80bf6f757095d2e5fc94dafb8f8fc8b])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_ef455225c00f5049c808c2eda3e76866], [$gl_gnulib_enabled_ef455225c00f5049c808c2eda3e76866])
|
||||
|
|
@ -1060,9 +1200,13 @@ AC_DEFUN([gl_INIT],
|
|||
AM_CONDITIONAL([gl_GNULIB_ENABLED_d3b2383720ee0e541357aa2aac598e2b], [$gl_gnulib_enabled_d3b2383720ee0e541357aa2aac598e2b])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_61bcaca76b3e6f9ae55d57a1c3193bc4], [$gl_gnulib_enabled_61bcaca76b3e6f9ae55d57a1c3193bc4])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_6099e9737f757db36c47fa9d9f02e88c], [$gl_gnulib_enabled_6099e9737f757db36c47fa9d9f02e88c])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_size_max], [$gl_gnulib_enabled_size_max])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_strtoll], [$gl_gnulib_enabled_strtoll])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_utimens], [$gl_gnulib_enabled_utimens])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_vasnprintf], [$gl_gnulib_enabled_vasnprintf])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_ed5616be3593d355b981ffab56b9f37b], [$gl_gnulib_enabled_ed5616be3593d355b981ffab56b9f37b])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_682e609604ccaac6be382e4ee3a4eaec], [$gl_gnulib_enabled_682e609604ccaac6be382e4ee3a4eaec])
|
||||
AM_CONDITIONAL([gl_GNULIB_ENABLED_xsize], [$gl_gnulib_enabled_xsize])
|
||||
# End of code from modules
|
||||
m4_ifval(gl_LIBSOURCES_LIST, [
|
||||
m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
|
||||
|
|
@ -1248,6 +1392,8 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/allocator.c
|
||||
lib/allocator.h
|
||||
lib/arg-nonnull.h
|
||||
lib/asnprintf.c
|
||||
lib/asprintf.c
|
||||
lib/assert.in.h
|
||||
lib/at-func.c
|
||||
lib/attribute.h
|
||||
|
|
@ -1299,9 +1445,17 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/filevercmp.c
|
||||
lib/filevercmp.h
|
||||
lib/flexmember.h
|
||||
lib/float+.h
|
||||
lib/float.c
|
||||
lib/float.in.h
|
||||
lib/fpending.c
|
||||
lib/fpending.h
|
||||
lib/fpucw.h
|
||||
lib/free.c
|
||||
lib/frexp.c
|
||||
lib/frexpl.c
|
||||
lib/fseterr.c
|
||||
lib/fseterr.h
|
||||
lib/fstatat.c
|
||||
lib/fsusage.c
|
||||
lib/fsusage.h
|
||||
|
|
@ -1336,6 +1490,14 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/intprops-internal.h
|
||||
lib/intprops.h
|
||||
lib/inttypes.in.h
|
||||
lib/isnan.c
|
||||
lib/isnand-nolibm.h
|
||||
lib/isnand.c
|
||||
lib/isnanf-nolibm.h
|
||||
lib/isnanf.c
|
||||
lib/isnanl-nolibm.h
|
||||
lib/isnanl.c
|
||||
lib/itold.c
|
||||
lib/lchmod.c
|
||||
lib/libc-config.h
|
||||
lib/limits.in.h
|
||||
|
|
@ -1352,6 +1514,8 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/malloc/scratch_buffer_grow.c
|
||||
lib/malloc/scratch_buffer_grow_preserve.c
|
||||
lib/malloc/scratch_buffer_set_array_size.c
|
||||
lib/math.c
|
||||
lib/math.in.h
|
||||
lib/md5-stream.c
|
||||
lib/md5.c
|
||||
lib/md5.h
|
||||
|
|
@ -1376,6 +1540,15 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/openat.h
|
||||
lib/pathmax.h
|
||||
lib/pipe2.c
|
||||
lib/printf-args.c
|
||||
lib/printf-args.h
|
||||
lib/printf-frexp.c
|
||||
lib/printf-frexp.h
|
||||
lib/printf-frexpl.c
|
||||
lib/printf-frexpl.h
|
||||
lib/printf-parse.c
|
||||
lib/printf-parse.h
|
||||
lib/printf.c
|
||||
lib/pselect.c
|
||||
lib/pthread_sigmask.c
|
||||
lib/qcopy-acl.c
|
||||
|
|
@ -1403,6 +1576,10 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/sig2str.h
|
||||
lib/sigdescr_np.c
|
||||
lib/signal.in.h
|
||||
lib/signbitd.c
|
||||
lib/signbitf.c
|
||||
lib/signbitl.c
|
||||
lib/size_max.h
|
||||
lib/stat-time.c
|
||||
lib/stat-time.h
|
||||
lib/stdalign.in.h
|
||||
|
|
@ -1447,15 +1624,22 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
lib/utimens.c
|
||||
lib/utimens.h
|
||||
lib/utimensat.c
|
||||
lib/vasnprintf.c
|
||||
lib/vasnprintf.h
|
||||
lib/vasprintf.c
|
||||
lib/verify.h
|
||||
lib/vfprintf.c
|
||||
lib/vla.h
|
||||
lib/warn-on-use.h
|
||||
lib/xalloc-oversized.h
|
||||
lib/xsize.c
|
||||
lib/xsize.h
|
||||
m4/00gnulib.m4
|
||||
m4/__inline.m4
|
||||
m4/absolute-header.m4
|
||||
m4/acl.m4
|
||||
m4/alloca.m4
|
||||
m4/asm-underscore.m4
|
||||
m4/assert_h.m4
|
||||
m4/builtin-expect.m4
|
||||
m4/byteswap.m4
|
||||
|
|
@ -1473,6 +1657,9 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/errno_h.m4
|
||||
m4/euidaccess.m4
|
||||
m4/execinfo.m4
|
||||
m4/exponentd.m4
|
||||
m4/exponentf.m4
|
||||
m4/exponentl.m4
|
||||
m4/extensions.m4
|
||||
m4/extern-inline.m4
|
||||
m4/faccessat.m4
|
||||
|
|
@ -1483,9 +1670,13 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/fdopendir.m4
|
||||
m4/filemode.m4
|
||||
m4/flexmember.m4
|
||||
m4/float_h.m4
|
||||
m4/fpending.m4
|
||||
m4/fpieee.m4
|
||||
m4/free.m4
|
||||
m4/frexp.m4
|
||||
m4/frexpl.m4
|
||||
m4/fseterr.m4
|
||||
m4/fstatat.m4
|
||||
m4/fsusage.m4
|
||||
m4/fsync.m4
|
||||
|
|
@ -1504,15 +1695,22 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/group-member.m4
|
||||
m4/ieee754-h.m4
|
||||
m4/include_next.m4
|
||||
m4/intmax_t.m4
|
||||
m4/inttypes.m4
|
||||
m4/inttypes_h.m4
|
||||
m4/isnand.m4
|
||||
m4/isnanf.m4
|
||||
m4/isnanl.m4
|
||||
m4/largefile.m4
|
||||
m4/lchmod.m4
|
||||
m4/ldexpl.m4
|
||||
m4/libgmp.m4
|
||||
m4/limits-h.m4
|
||||
m4/lstat.m4
|
||||
m4/malloc.m4
|
||||
m4/manywarnings-c++.m4
|
||||
m4/manywarnings.m4
|
||||
m4/math_h.m4
|
||||
m4/mbstate_t.m4
|
||||
m4/md5.m4
|
||||
m4/memmem.m4
|
||||
|
|
@ -1535,6 +1733,10 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/pathmax.m4
|
||||
m4/pid_t.m4
|
||||
m4/pipe2.m4
|
||||
m4/printf-frexp.m4
|
||||
m4/printf-frexpl.m4
|
||||
m4/printf-posix-rpl.m4
|
||||
m4/printf.m4
|
||||
m4/pselect.m4
|
||||
m4/pthread_sigmask.m4
|
||||
m4/rawmemchr.m4
|
||||
|
|
@ -1548,6 +1750,8 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/sig2str.m4
|
||||
m4/sigdescr_np.m4
|
||||
m4/signal_h.m4
|
||||
m4/signbit.m4
|
||||
m4/size_max.m4
|
||||
m4/socklen.m4
|
||||
m4/ssize_t.m4
|
||||
m4/stat-time.m4
|
||||
|
|
@ -1555,6 +1759,7 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/stdalign.m4
|
||||
m4/stddef_h.m4
|
||||
m4/stdint.m4
|
||||
m4/stdint_h.m4
|
||||
m4/stdio_h.m4
|
||||
m4/stdlib_h.m4
|
||||
m4/stpcpy.m4
|
||||
|
|
@ -1583,10 +1788,15 @@ AC_DEFUN([gl_FILE_LIST], [
|
|||
m4/utimensat.m4
|
||||
m4/utimes.m4
|
||||
m4/vararrays.m4
|
||||
m4/vasnprintf.m4
|
||||
m4/vasprintf-posix.m4
|
||||
m4/vasprintf.m4
|
||||
m4/vfprintf-posix.m4
|
||||
m4/warn-on-use.m4
|
||||
m4/warnings.m4
|
||||
m4/wchar_t.m4
|
||||
m4/wint_t.m4
|
||||
m4/xattr.m4
|
||||
m4/xsize.m4
|
||||
m4/zzgnulib.m4
|
||||
])
|
||||
|
|
|
|||
59
m4/intmax_t.m4
Normal file
59
m4/intmax_t.m4
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# intmax_t.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006-2007, 2009-2023 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
AC_PREREQ([2.53])
|
||||
|
||||
# Define intmax_t to 'long' or 'long long'
|
||||
# if it is not already defined in <stdint.h> or <inttypes.h>.
|
||||
|
||||
AC_DEFUN([gl_AC_TYPE_INTMAX_T],
|
||||
[
|
||||
dnl For simplicity, we assume that a header file defines 'intmax_t' if and
|
||||
dnl only if it defines 'uintmax_t'.
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
|
||||
AC_DEFINE_UNQUOTED([intmax_t], [long long],
|
||||
[Define to long or long long if <inttypes.h> and <stdint.h> don't define.])
|
||||
else
|
||||
AC_DEFINE([HAVE_INTMAX_T], [1],
|
||||
[Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl An alternative would be to explicitly test for 'intmax_t'.
|
||||
|
||||
AC_DEFUN([gt_AC_TYPE_INTMAX_T],
|
||||
[
|
||||
AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
|
||||
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
|
||||
AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <stddef.h>
|
||||
#include <stdlib.h>
|
||||
#if HAVE_STDINT_H_WITH_UINTMAX
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#if HAVE_INTTYPES_H_WITH_UINTMAX
|
||||
#include <inttypes.h>
|
||||
#endif
|
||||
]],
|
||||
[[intmax_t x = -1; return !x;]])],
|
||||
[gt_cv_c_intmax_t=yes],
|
||||
[gt_cv_c_intmax_t=no])])
|
||||
if test $gt_cv_c_intmax_t = yes; then
|
||||
AC_DEFINE([HAVE_INTMAX_T], [1],
|
||||
[Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
|
||||
else
|
||||
AC_DEFINE_UNQUOTED([intmax_t], [long long],
|
||||
[Define to long or long long if <stdint.h> and <inttypes.h> don't define.])
|
||||
fi
|
||||
])
|
||||
29
m4/inttypes_h.m4
Normal file
29
m4/inttypes_h.m4
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# inttypes_h.m4 serial 10
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
|
||||
# doesn't clash with <sys/types.h>, and declares uintmax_t.
|
||||
|
||||
AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
#include <sys/types.h>
|
||||
#include <inttypes.h>
|
||||
]],
|
||||
[[uintmax_t i = (uintmax_t) -1; return !i;]])],
|
||||
[gl_cv_header_inttypes_h=yes],
|
||||
[gl_cv_header_inttypes_h=no])])
|
||||
if test $gl_cv_header_inttypes_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
|
||||
[Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
|
||||
and declares uintmax_t. ])
|
||||
fi
|
||||
])
|
||||
96
m4/isnand.m4
Normal file
96
m4/isnand.m4
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
# isnand.m4 serial 12
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Check how to get or define isnand().
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNAND],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
ISNAND_LIBM=
|
||||
gl_HAVE_ISNAND_NO_LIBM
|
||||
if test $gl_cv_func_isnand_no_libm = no; then
|
||||
gl_HAVE_ISNAND_IN_LIBM
|
||||
if test $gl_cv_func_isnand_in_libm = yes; then
|
||||
ISNAND_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
dnl The variable gl_func_isnand set here is used by isnan.m4.
|
||||
if test $gl_cv_func_isnand_no_libm = yes \
|
||||
|| test $gl_cv_func_isnand_in_libm = yes; then
|
||||
gl_func_isnand=yes
|
||||
else
|
||||
gl_func_isnand=no
|
||||
HAVE_ISNAND=0
|
||||
fi
|
||||
AC_SUBST([ISNAND_LIBM])
|
||||
])
|
||||
|
||||
dnl Check how to get or define isnand() without linking with libm.
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNAND_NO_LIBM],
|
||||
[
|
||||
gl_HAVE_ISNAND_NO_LIBM
|
||||
gl_func_isnand_no_libm=$gl_cv_func_isnand_no_libm
|
||||
if test $gl_cv_func_isnand_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_ISNAND_IN_LIBC], [1],
|
||||
[Define if the isnan(double) function is available in libc.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Prerequisites of replacement isnand definition. It does not need -lm.
|
||||
AC_DEFUN([gl_PREREQ_ISNAND],
|
||||
[
|
||||
AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
|
||||
])
|
||||
|
||||
dnl Test whether isnand() can be used with libm.
|
||||
|
||||
AC_DEFUN([gl_HAVE_ISNAND_IN_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(double) can be used with libm],
|
||||
[gl_cv_func_isnand_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnand
|
||||
# define isnand(x) __builtin_isnan ((double)(x))
|
||||
#elif defined isnan
|
||||
# undef isnand
|
||||
# define isnand(x) isnan ((double)(x))
|
||||
#endif
|
||||
double x;]],
|
||||
[[return isnand (x);]])],
|
||||
[gl_cv_func_isnand_in_libm=yes],
|
||||
[gl_cv_func_isnand_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_HAVE_ISNAND_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(double) can be used without linking with libm],
|
||||
[gl_cv_func_isnand_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnand
|
||||
# define isnand(x) __builtin_isnan ((double)(x))
|
||||
#else
|
||||
# undef isnand
|
||||
# define isnand(x) isnan ((double)(x))
|
||||
#endif
|
||||
double x;]],
|
||||
[[return isnand (x);]])],
|
||||
[gl_cv_func_isnand_no_libm=yes],
|
||||
[gl_cv_func_isnand_no_libm=no])
|
||||
])
|
||||
])
|
||||
197
m4/isnanf.m4
Normal file
197
m4/isnanf.m4
Normal file
|
|
@ -0,0 +1,197 @@
|
|||
# isnanf.m4 serial 18
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Check how to get or define isnanf().
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNANF],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
ISNANF_LIBM=
|
||||
gl_HAVE_ISNANF_NO_LIBM
|
||||
if test $gl_cv_func_isnanf_no_libm = no; then
|
||||
gl_HAVE_ISNANF_IN_LIBM
|
||||
if test $gl_cv_func_isnanf_in_libm = yes; then
|
||||
ISNANF_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
dnl The variable gl_func_isnanf set here is used by isnan.m4.
|
||||
if test $gl_cv_func_isnanf_no_libm = yes \
|
||||
|| test $gl_cv_func_isnanf_in_libm = yes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $ISNANF_LIBM"
|
||||
gl_ISNANF_WORKS
|
||||
LIBS="$save_LIBS"
|
||||
case "$gl_cv_func_isnanf_works" in
|
||||
*yes) gl_func_isnanf=yes ;;
|
||||
*) gl_func_isnanf=no; ISNANF_LIBM= ;;
|
||||
esac
|
||||
else
|
||||
gl_func_isnanf=no
|
||||
fi
|
||||
if test $gl_func_isnanf != yes; then
|
||||
HAVE_ISNANF=0
|
||||
fi
|
||||
AC_SUBST([ISNANF_LIBM])
|
||||
])
|
||||
|
||||
dnl Check how to get or define isnanf() without linking with libm.
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNANF_NO_LIBM],
|
||||
[
|
||||
gl_HAVE_ISNANF_NO_LIBM
|
||||
if test $gl_cv_func_isnanf_no_libm = yes; then
|
||||
gl_ISNANF_WORKS
|
||||
fi
|
||||
if test $gl_cv_func_isnanf_no_libm = yes \
|
||||
&& { case "$gl_cv_func_isnanf_works" in
|
||||
*yes) true;;
|
||||
*) false;;
|
||||
esac
|
||||
}; then
|
||||
gl_func_isnanf_no_libm=yes
|
||||
AC_DEFINE([HAVE_ISNANF_IN_LIBC], [1],
|
||||
[Define if the isnan(float) function is available in libc.])
|
||||
else
|
||||
gl_func_isnanf_no_libm=no
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Prerequisites of replacement isnanf definition. It does not need -lm.
|
||||
AC_DEFUN([gl_PREREQ_ISNANF],
|
||||
[
|
||||
gl_FLOAT_EXPONENT_LOCATION
|
||||
])
|
||||
|
||||
dnl Test whether isnanf() can be used without libm.
|
||||
AC_DEFUN([gl_HAVE_ISNANF_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(float) can be used without linking with libm],
|
||||
[gl_cv_func_isnanf_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnan ((float)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanf
|
||||
# define isnanf(x) isnan ((float)(x))
|
||||
#endif
|
||||
float x;]],
|
||||
[[return isnanf (x);]])],
|
||||
[gl_cv_func_isnanf_no_libm=yes],
|
||||
[gl_cv_func_isnanf_no_libm=no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether isnanf() can be used with libm.
|
||||
AC_DEFUN([gl_HAVE_ISNANF_IN_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(float) can be used with libm],
|
||||
[gl_cv_func_isnanf_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnan ((float)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanf
|
||||
# define isnanf(x) isnan ((float)(x))
|
||||
#endif
|
||||
float x;]],
|
||||
[[return isnanf (x);]])],
|
||||
[gl_cv_func_isnanf_in_libm=yes],
|
||||
[gl_cv_func_isnanf_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether isnanf() rejects Infinity (this fails on Solaris 2.5.1),
|
||||
dnl recognizes a NaN (this fails on IRIX 6.5 with cc), and recognizes a NaN
|
||||
dnl with in-memory representation 0x7fbfffff (this fails on IRIX 6.5).
|
||||
AC_DEFUN([gl_ISNANF_WORKS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_REQUIRE([gl_FLOAT_EXPONENT_LOCATION])
|
||||
AC_CACHE_CHECK([whether isnan(float) works], [gl_cv_func_isnanf_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnan ((float)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanf
|
||||
# define isnanf(x) isnan ((float)(x))
|
||||
#endif
|
||||
/* The Compaq (ex-DEC) C 6.4 compiler chokes on the expression 0.0 / 0.0. */
|
||||
#ifdef __DECC
|
||||
static float
|
||||
NaN ()
|
||||
{
|
||||
static float zero = 0.0f;
|
||||
return zero / zero;
|
||||
}
|
||||
#else
|
||||
# define NaN() (0.0f / 0.0f)
|
||||
#endif
|
||||
#define NWORDS \
|
||||
((sizeof (float) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { unsigned int word[NWORDS]; float value; } memory_float;
|
||||
int main()
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
if (isnanf (1.0f / 0.0f))
|
||||
result |= 1;
|
||||
|
||||
if (!isnanf (NaN ()))
|
||||
result |= 2;
|
||||
|
||||
#if defined FLT_EXPBIT0_WORD && defined FLT_EXPBIT0_BIT
|
||||
/* The isnanf function should be immune against changes in the sign bit and
|
||||
in the mantissa bits. The xor operation twiddles a bit that can only be
|
||||
a sign bit or a mantissa bit. */
|
||||
if (FLT_EXPBIT0_WORD == 0 && FLT_EXPBIT0_BIT > 0)
|
||||
{
|
||||
memory_float m;
|
||||
|
||||
m.value = NaN ();
|
||||
/* Set the bits below the exponent to 01111...111. */
|
||||
m.word[0] &= -1U << FLT_EXPBIT0_BIT;
|
||||
m.word[0] |= (1U << (FLT_EXPBIT0_BIT - 1)) - 1;
|
||||
if (!isnanf (m.value))
|
||||
result |= 4;
|
||||
}
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_isnanf_works=yes],
|
||||
[gl_cv_func_isnanf_works=no],
|
||||
[case "$host_os" in
|
||||
irix* | solaris*) gl_cv_func_isnanf_works="guessing no" ;;
|
||||
mingw*) # Guess yes on mingw, no on MSVC.
|
||||
AC_EGREP_CPP([Known], [
|
||||
#ifdef __MINGW32__
|
||||
Known
|
||||
#endif
|
||||
],
|
||||
[gl_cv_func_isnanf_works="guessing yes"],
|
||||
[gl_cv_func_isnanf_works="guessing no"])
|
||||
;;
|
||||
*) gl_cv_func_isnanf_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
])
|
||||
248
m4/isnanl.m4
Normal file
248
m4/isnanl.m4
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
# isnanl.m4 serial 22
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNANL],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
ISNANL_LIBM=
|
||||
gl_HAVE_ISNANL_NO_LIBM
|
||||
if test $gl_cv_func_isnanl_no_libm = no; then
|
||||
gl_HAVE_ISNANL_IN_LIBM
|
||||
if test $gl_cv_func_isnanl_in_libm = yes; then
|
||||
ISNANL_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
dnl The variable gl_func_isnanl set here is used by isnan.m4.
|
||||
if test $gl_cv_func_isnanl_no_libm = yes \
|
||||
|| test $gl_cv_func_isnanl_in_libm = yes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $ISNANL_LIBM"
|
||||
gl_FUNC_ISNANL_WORKS
|
||||
LIBS="$save_LIBS"
|
||||
case "$gl_cv_func_isnanl_works" in
|
||||
*yes) gl_func_isnanl=yes ;;
|
||||
*) gl_func_isnanl=no; ISNANL_LIBM= ;;
|
||||
esac
|
||||
else
|
||||
gl_func_isnanl=no
|
||||
fi
|
||||
if test $gl_func_isnanl != yes; then
|
||||
HAVE_ISNANL=0
|
||||
fi
|
||||
AC_SUBST([ISNANL_LIBM])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FUNC_ISNANL_NO_LIBM],
|
||||
[
|
||||
gl_HAVE_ISNANL_NO_LIBM
|
||||
gl_func_isnanl_no_libm=$gl_cv_func_isnanl_no_libm
|
||||
if test $gl_func_isnanl_no_libm = yes; then
|
||||
gl_FUNC_ISNANL_WORKS
|
||||
case "$gl_cv_func_isnanl_works" in
|
||||
*yes) ;;
|
||||
*) gl_func_isnanl_no_libm=no ;;
|
||||
esac
|
||||
fi
|
||||
if test $gl_func_isnanl_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_ISNANL_IN_LIBC], [1],
|
||||
[Define if the isnan(long double) function is available in libc.])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Prerequisites of replacement isnanl definition. It does not need -lm.
|
||||
AC_DEFUN([gl_PREREQ_ISNANL],
|
||||
[
|
||||
gl_LONG_DOUBLE_EXPONENT_LOCATION
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
])
|
||||
|
||||
dnl Test whether isnanl() can be used without libm.
|
||||
AC_DEFUN([gl_HAVE_ISNANL_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(long double) can be used without linking with libm],
|
||||
[gl_cv_func_isnanl_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnan ((long double)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanl
|
||||
# define isnanl(x) isnan ((long double)(x))
|
||||
#endif
|
||||
long double x;]],
|
||||
[[return isnanl (x);]])],
|
||||
[gl_cv_func_isnanl_no_libm=yes],
|
||||
[gl_cv_func_isnanl_no_libm=no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether isnanl() can be used with libm.
|
||||
AC_DEFUN([gl_HAVE_ISNANL_IN_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether isnan(long double) can be used with libm],
|
||||
[gl_cv_func_isnanl_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnan ((long double)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanl
|
||||
# define isnanl(x) isnan ((long double)(x))
|
||||
#endif
|
||||
long double x;]],
|
||||
[[return isnanl (x);]])],
|
||||
[gl_cv_func_isnanl_in_libm=yes],
|
||||
[gl_cv_func_isnanl_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether isnanl() recognizes all canonical numbers which are neither
|
||||
dnl finite nor infinite.
|
||||
AC_DEFUN([gl_FUNC_ISNANL_WORKS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([gl_BIGENDIAN])
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_CACHE_CHECK([whether isnanl works], [gl_cv_func_isnanl_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <float.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnan ((long double)(x))
|
||||
#elif defined isnan
|
||||
# undef isnanl
|
||||
# define isnanl(x) isnan ((long double)(x))
|
||||
#endif
|
||||
#define NWORDS \
|
||||
((sizeof (long double) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { unsigned int word[NWORDS]; long double value; }
|
||||
memory_long_double;
|
||||
/* On Irix 6.5, gcc 3.4.3 can't compute compile-time NaN, and needs the
|
||||
runtime type conversion. */
|
||||
#ifdef __sgi
|
||||
static long double NaNl ()
|
||||
{
|
||||
double zero = 0.0;
|
||||
return zero / zero;
|
||||
}
|
||||
#else
|
||||
# define NaNl() (0.0L / 0.0L)
|
||||
#endif
|
||||
int main ()
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
if (!isnanl (NaNl ()))
|
||||
result |= 1;
|
||||
|
||||
{
|
||||
memory_long_double m;
|
||||
unsigned int i;
|
||||
|
||||
/* The isnanl function should be immune against changes in the sign bit and
|
||||
in the mantissa bits. The xor operation twiddles a bit that can only be
|
||||
a sign bit or a mantissa bit (since the exponent never extends to
|
||||
bit 31). */
|
||||
m.value = NaNl ();
|
||||
m.word[NWORDS / 2] ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1);
|
||||
for (i = 0; i < NWORDS; i++)
|
||||
m.word[i] |= 1;
|
||||
if (!isnanl (m.value))
|
||||
result |= 1;
|
||||
}
|
||||
|
||||
#if ((defined __ia64 && LDBL_MANT_DIG == 64) || (defined __x86_64__ || defined __amd64__) || (defined __i386 || defined __i386__ || defined _I386 || defined _M_IX86 || defined _X86_)) && !HAVE_SAME_LONG_DOUBLE_AS_DOUBLE
|
||||
/* Representation of an 80-bit 'long double' as an initializer for a sequence
|
||||
of 'unsigned int' words. */
|
||||
# ifdef WORDS_BIGENDIAN
|
||||
# define LDBL80_WORDS(exponent,manthi,mantlo) \
|
||||
{ ((unsigned int) (exponent) << 16) | ((unsigned int) (manthi) >> 16), \
|
||||
((unsigned int) (manthi) << 16) | ((unsigned int) (mantlo) >> 16), \
|
||||
(unsigned int) (mantlo) << 16 \
|
||||
}
|
||||
# else
|
||||
# define LDBL80_WORDS(exponent,manthi,mantlo) \
|
||||
{ mantlo, manthi, exponent }
|
||||
# endif
|
||||
{ /* Quiet NaN. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0xFFFF, 0xC3333333, 0x00000000) };
|
||||
if (!isnanl (x.value))
|
||||
result |= 2;
|
||||
}
|
||||
{
|
||||
/* Signalling NaN. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0xFFFF, 0x83333333, 0x00000000) };
|
||||
if (!isnanl (x.value))
|
||||
result |= 2;
|
||||
}
|
||||
/* isnanl should return something even for noncanonical values. */
|
||||
{ /* Pseudo-NaN. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0xFFFF, 0x40000001, 0x00000000) };
|
||||
if (isnanl (x.value) && !isnanl (x.value))
|
||||
result |= 4;
|
||||
}
|
||||
{ /* Pseudo-Infinity. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0xFFFF, 0x00000000, 0x00000000) };
|
||||
if (isnanl (x.value) && !isnanl (x.value))
|
||||
result |= 8;
|
||||
}
|
||||
{ /* Pseudo-Zero. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0x4004, 0x00000000, 0x00000000) };
|
||||
if (isnanl (x.value) && !isnanl (x.value))
|
||||
result |= 16;
|
||||
}
|
||||
{ /* Unnormalized number. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0x4000, 0x63333333, 0x00000000) };
|
||||
if (isnanl (x.value) && !isnanl (x.value))
|
||||
result |= 32;
|
||||
}
|
||||
{ /* Pseudo-Denormal. */
|
||||
static memory_long_double x =
|
||||
{ LDBL80_WORDS (0x0000, 0x83333333, 0x00000000) };
|
||||
if (isnanl (x.value) && !isnanl (x.value))
|
||||
result |= 64;
|
||||
}
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_isnanl_works=yes],
|
||||
[gl_cv_func_isnanl_works=no],
|
||||
[case "$host_os" in
|
||||
mingw*) # Guess yes on mingw, no on MSVC.
|
||||
AC_EGREP_CPP([Known], [
|
||||
#ifdef __MINGW32__
|
||||
Known
|
||||
#endif
|
||||
],
|
||||
[gl_cv_func_isnanl_works="guessing yes"],
|
||||
[gl_cv_func_isnanl_works="guessing no"])
|
||||
;;
|
||||
*) gl_cv_func_isnanl_works="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
])
|
||||
135
m4/ldexpl.m4
Normal file
135
m4/ldexpl.m4
Normal file
|
|
@ -0,0 +1,135 @@
|
|||
# ldexpl.m4 serial 17
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_LDEXPL],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
AC_REQUIRE([gl_FUNC_ISNANL]) dnl for ISNANL_LIBM
|
||||
|
||||
dnl Persuade glibc <math.h> to declare ldexpl().
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
|
||||
dnl Check whether it's declared.
|
||||
dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
|
||||
AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
|
||||
|
||||
LDEXPL_LIBM=
|
||||
if test $HAVE_DECL_LDEXPL = 1; then
|
||||
gl_CHECK_LDEXPL_NO_LIBM
|
||||
if test $gl_cv_func_ldexpl_no_libm = no; then
|
||||
AC_CACHE_CHECK([whether ldexpl() can be used with libm],
|
||||
[gl_cv_func_ldexpl_in_libm],
|
||||
[
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS -lm"
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
long double x;]],
|
||||
[[return ldexpl (x, -1) > 0;]])],
|
||||
[gl_cv_func_ldexpl_in_libm=yes],
|
||||
[gl_cv_func_ldexpl_in_libm=no])
|
||||
LIBS="$save_LIBS"
|
||||
])
|
||||
if test $gl_cv_func_ldexpl_in_libm = yes; then
|
||||
LDEXPL_LIBM=-lm
|
||||
fi
|
||||
fi
|
||||
if test $gl_cv_func_ldexpl_no_libm = yes \
|
||||
|| test $gl_cv_func_ldexpl_in_libm = yes; then
|
||||
save_LIBS="$LIBS"
|
||||
LIBS="$LIBS $LDEXPL_LIBM"
|
||||
gl_FUNC_LDEXPL_WORKS
|
||||
LIBS="$save_LIBS"
|
||||
case "$gl_cv_func_ldexpl_works" in
|
||||
*yes) gl_func_ldexpl=yes ;;
|
||||
*) gl_func_ldexpl=no; REPLACE_LDEXPL=1 ;;
|
||||
esac
|
||||
else
|
||||
gl_func_ldexpl=no
|
||||
fi
|
||||
if test $gl_func_ldexpl = yes; then
|
||||
AC_DEFINE([HAVE_LDEXPL], [1],
|
||||
[Define if the ldexpl() function is available.])
|
||||
fi
|
||||
fi
|
||||
if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
|
||||
dnl Find libraries needed to link lib/ldexpl.c.
|
||||
if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then
|
||||
AC_REQUIRE([gl_FUNC_LDEXP])
|
||||
LDEXPL_LIBM="$LDEXP_LIBM"
|
||||
else
|
||||
LDEXPL_LIBM="$ISNANL_LIBM"
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([LDEXPL_LIBM])
|
||||
])
|
||||
|
||||
dnl Test whether ldexpl() can be used without linking with libm.
|
||||
dnl Set gl_cv_func_ldexpl_no_libm to 'yes' or 'no' accordingly.
|
||||
AC_DEFUN([gl_CHECK_LDEXPL_NO_LIBM],
|
||||
[
|
||||
AC_CACHE_CHECK([whether ldexpl() can be used without linking with libm],
|
||||
[gl_cv_func_ldexpl_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
long double x;]],
|
||||
[[return ldexpl (x, -1) > 0;]])],
|
||||
[gl_cv_func_ldexpl_no_libm=yes],
|
||||
[gl_cv_func_ldexpl_no_libm=no])
|
||||
])
|
||||
])
|
||||
|
||||
dnl Test whether ldexpl() works on finite numbers (this fails on AIX 5.1
|
||||
dnl and Mac OS X 10.4/PowerPC).
|
||||
AC_DEFUN([gl_FUNC_LDEXPL_WORKS],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
AC_CACHE_CHECK([whether ldexpl works], [gl_cv_func_ldexpl_works],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <math.h>
|
||||
extern
|
||||
#ifdef __cplusplus
|
||||
"C"
|
||||
#endif
|
||||
long double ldexpl (long double, int);
|
||||
int main()
|
||||
{
|
||||
int result = 0;
|
||||
{
|
||||
volatile long double x = 1.0;
|
||||
volatile long double y = ldexpl (x, -1);
|
||||
if (y != 0.5L)
|
||||
result |= 1;
|
||||
}
|
||||
{
|
||||
volatile long double x = 1.73205L;
|
||||
volatile long double y = ldexpl (x, 0);
|
||||
if (y != x)
|
||||
result |= 2;
|
||||
}
|
||||
return result;
|
||||
}]])],
|
||||
[gl_cv_func_ldexpl_works=yes],
|
||||
[gl_cv_func_ldexpl_works=no],
|
||||
[
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
aix | aix[3-6]*) gl_cv_func_ldexpl_works="guessing no" ;;
|
||||
# Guess yes on native Windows.
|
||||
mingw*) gl_cv_func_ldexpl_works="guessing yes" ;;
|
||||
*) gl_cv_func_ldexpl_works="guessing yes" ;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
])
|
||||
])
|
||||
])
|
||||
391
m4/math_h.m4
Normal file
391
m4/math_h.m4
Normal file
|
|
@ -0,0 +1,391 @@
|
|||
# math_h.m4 serial 125
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN_ONCE([gl_MATH_H],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
gl_CHECK_NEXT_HEADERS([math.h])
|
||||
|
||||
AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
|
||||
[[/* Solaris 10 has a broken definition of NAN. Other platforms
|
||||
fail to provide NAN, or provide it only in C99 mode; this
|
||||
test only needs to fail when NAN is provided but wrong. */
|
||||
float f = 1.0f;
|
||||
#ifdef NAN
|
||||
f = NAN;
|
||||
#endif
|
||||
return f == 0;]])],
|
||||
[gl_cv_header_math_nan_works=yes],
|
||||
[gl_cv_header_math_nan_works=no])])
|
||||
if test $gl_cv_header_math_nan_works = no; then
|
||||
REPLACE_NAN=1
|
||||
fi
|
||||
AC_CACHE_CHECK([whether HUGE_VAL works], [gl_cv_header_math_huge_val_works],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]],
|
||||
[[/* Solaris 10 has a broken definition of HUGE_VAL. */
|
||||
double d = HUGE_VAL;
|
||||
return d == 0;]])],
|
||||
[gl_cv_header_math_huge_val_works=yes],
|
||||
[gl_cv_header_math_huge_val_works=no])])
|
||||
if test $gl_cv_header_math_huge_val_works = no; then
|
||||
REPLACE_HUGE_VAL=1
|
||||
fi
|
||||
|
||||
dnl Check for declarations of anything we want to poison if the
|
||||
dnl corresponding gnulib module is not in use.
|
||||
gl_WARN_ON_USE_PREPARE([[#include <math.h>]],
|
||||
[acosf acosl asinf asinl atanf atanl
|
||||
cbrt cbrtf cbrtl ceilf ceill copysign copysignf copysignl cosf cosl coshf
|
||||
expf expl exp2 exp2f exp2l expm1 expm1f expm1l
|
||||
fabsf fabsl floorf floorl fma fmaf fmal
|
||||
fmod fmodf fmodl frexpf frexpl hypotf hypotl
|
||||
ilogb ilogbf ilogbl
|
||||
ldexpf ldexpl
|
||||
log logf logl log10 log10f log10l log1p log1pf log1pl log2 log2f log2l
|
||||
logb logbf logbl
|
||||
modf modff modfl powf
|
||||
remainder remainderf remainderl
|
||||
rint rintf rintl round roundf roundl sinf sinl sinhf sqrtf sqrtl
|
||||
tanf tanl tanhf trunc truncf truncl])
|
||||
])
|
||||
|
||||
# gl_MATH_MODULE_INDICATOR([modulename])
|
||||
# sets the shell variable that indicates the presence of the given module
|
||||
# to a C preprocessor expression that will evaluate to 1.
|
||||
# This macro invocation must not occur in macros that are AC_REQUIREd.
|
||||
AC_DEFUN([gl_MATH_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Ensure to expand the default settings once only.
|
||||
gl_MATH_H_REQUIRE_DEFAULTS
|
||||
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||||
dnl Define it also as a C macro, for the benefit of the unit tests.
|
||||
gl_MODULE_INDICATOR_FOR_TESTS([$1])
|
||||
])
|
||||
|
||||
# Initializes the default values for AC_SUBSTed shell variables.
|
||||
# This macro must not be AC_REQUIREd. It must only be invoked, and only
|
||||
# outside of macros or in macros that are not AC_REQUIREd.
|
||||
AC_DEFUN([gl_MATH_H_REQUIRE_DEFAULTS],
|
||||
[
|
||||
m4_defun(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS], [
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ACOSL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ASINL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATANL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ATAN2F])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRT])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CBRTL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEIL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_CEILL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGN])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COPYSIGNL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_COSHF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2F])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXP2L])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1F])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_EXPM1L])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FABSL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOOR])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FLOORL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMA])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMAL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMOD])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FMODL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXP])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_FREXPL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOT])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_HYPOTL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGB])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ILOGBL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISFINITE])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISINF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAN])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNAND])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ISNANL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LDEXPL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10F])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG10L])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1P])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG1PL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2F])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOG2L])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGB])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_LOGBL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MODFL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_POWF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDER])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_REMAINDERL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINT])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_RINTL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUND])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_ROUNDL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SIGNBIT])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SINHF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_SQRTL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANL])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TANHF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNC])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCF])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_TRUNCL])
|
||||
dnl Support Microsoft deprecated alias function names by default.
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J0], [1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_J1], [1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_JN], [1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y0], [1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_Y1], [1])
|
||||
gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_YN], [1])
|
||||
])
|
||||
m4_require(GL_MODULE_INDICATOR_PREFIX[_MATH_H_MODULE_INDICATOR_DEFAULTS])
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_MATH_H_DEFAULTS],
|
||||
[
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_ACOSF=1; AC_SUBST([HAVE_ACOSF])
|
||||
HAVE_ACOSL=1; AC_SUBST([HAVE_ACOSL])
|
||||
HAVE_ASINF=1; AC_SUBST([HAVE_ASINF])
|
||||
HAVE_ASINL=1; AC_SUBST([HAVE_ASINL])
|
||||
HAVE_ATANF=1; AC_SUBST([HAVE_ATANF])
|
||||
HAVE_ATANL=1; AC_SUBST([HAVE_ATANL])
|
||||
HAVE_ATAN2F=1; AC_SUBST([HAVE_ATAN2F])
|
||||
HAVE_CBRT=1; AC_SUBST([HAVE_CBRT])
|
||||
HAVE_CBRTF=1; AC_SUBST([HAVE_CBRTF])
|
||||
HAVE_CBRTL=1; AC_SUBST([HAVE_CBRTL])
|
||||
HAVE_COPYSIGN=1; AC_SUBST([HAVE_COPYSIGN])
|
||||
HAVE_COPYSIGNL=1; AC_SUBST([HAVE_COPYSIGNL])
|
||||
HAVE_COSF=1; AC_SUBST([HAVE_COSF])
|
||||
HAVE_COSL=1; AC_SUBST([HAVE_COSL])
|
||||
HAVE_COSHF=1; AC_SUBST([HAVE_COSHF])
|
||||
HAVE_EXPF=1; AC_SUBST([HAVE_EXPF])
|
||||
HAVE_EXPL=1; AC_SUBST([HAVE_EXPL])
|
||||
HAVE_EXPM1=1; AC_SUBST([HAVE_EXPM1])
|
||||
HAVE_EXPM1F=1; AC_SUBST([HAVE_EXPM1F])
|
||||
HAVE_FABSF=1; AC_SUBST([HAVE_FABSF])
|
||||
HAVE_FABSL=1; AC_SUBST([HAVE_FABSL])
|
||||
HAVE_FMA=1; AC_SUBST([HAVE_FMA])
|
||||
HAVE_FMAF=1; AC_SUBST([HAVE_FMAF])
|
||||
HAVE_FMAL=1; AC_SUBST([HAVE_FMAL])
|
||||
HAVE_FMODF=1; AC_SUBST([HAVE_FMODF])
|
||||
HAVE_FMODL=1; AC_SUBST([HAVE_FMODL])
|
||||
HAVE_FREXPF=1; AC_SUBST([HAVE_FREXPF])
|
||||
HAVE_HYPOTF=1; AC_SUBST([HAVE_HYPOTF])
|
||||
HAVE_HYPOTL=1; AC_SUBST([HAVE_HYPOTL])
|
||||
HAVE_ILOGB=1; AC_SUBST([HAVE_ILOGB])
|
||||
HAVE_ILOGBF=1; AC_SUBST([HAVE_ILOGBF])
|
||||
HAVE_ILOGBL=1; AC_SUBST([HAVE_ILOGBL])
|
||||
HAVE_ISNANF=1; AC_SUBST([HAVE_ISNANF])
|
||||
HAVE_ISNAND=1; AC_SUBST([HAVE_ISNAND])
|
||||
HAVE_ISNANL=1; AC_SUBST([HAVE_ISNANL])
|
||||
HAVE_LDEXPF=1; AC_SUBST([HAVE_LDEXPF])
|
||||
HAVE_LOGF=1; AC_SUBST([HAVE_LOGF])
|
||||
HAVE_LOGL=1; AC_SUBST([HAVE_LOGL])
|
||||
HAVE_LOG10F=1; AC_SUBST([HAVE_LOG10F])
|
||||
HAVE_LOG10L=1; AC_SUBST([HAVE_LOG10L])
|
||||
HAVE_LOG1P=1; AC_SUBST([HAVE_LOG1P])
|
||||
HAVE_LOG1PF=1; AC_SUBST([HAVE_LOG1PF])
|
||||
HAVE_LOG1PL=1; AC_SUBST([HAVE_LOG1PL])
|
||||
HAVE_LOGBF=1; AC_SUBST([HAVE_LOGBF])
|
||||
HAVE_LOGBL=1; AC_SUBST([HAVE_LOGBL])
|
||||
HAVE_MODFF=1; AC_SUBST([HAVE_MODFF])
|
||||
HAVE_MODFL=1; AC_SUBST([HAVE_MODFL])
|
||||
HAVE_POWF=1; AC_SUBST([HAVE_POWF])
|
||||
HAVE_REMAINDER=1; AC_SUBST([HAVE_REMAINDER])
|
||||
HAVE_REMAINDERF=1; AC_SUBST([HAVE_REMAINDERF])
|
||||
HAVE_RINT=1; AC_SUBST([HAVE_RINT])
|
||||
HAVE_RINTL=1; AC_SUBST([HAVE_RINTL])
|
||||
HAVE_SINF=1; AC_SUBST([HAVE_SINF])
|
||||
HAVE_SINL=1; AC_SUBST([HAVE_SINL])
|
||||
HAVE_SINHF=1; AC_SUBST([HAVE_SINHF])
|
||||
HAVE_SQRTF=1; AC_SUBST([HAVE_SQRTF])
|
||||
HAVE_SQRTL=1; AC_SUBST([HAVE_SQRTL])
|
||||
HAVE_TANF=1; AC_SUBST([HAVE_TANF])
|
||||
HAVE_TANL=1; AC_SUBST([HAVE_TANL])
|
||||
HAVE_TANHF=1; AC_SUBST([HAVE_TANHF])
|
||||
HAVE_DECL_ACOSL=1; AC_SUBST([HAVE_DECL_ACOSL])
|
||||
HAVE_DECL_ASINL=1; AC_SUBST([HAVE_DECL_ASINL])
|
||||
HAVE_DECL_ATANL=1; AC_SUBST([HAVE_DECL_ATANL])
|
||||
HAVE_DECL_CBRTF=1; AC_SUBST([HAVE_DECL_CBRTF])
|
||||
HAVE_DECL_CBRTL=1; AC_SUBST([HAVE_DECL_CBRTL])
|
||||
HAVE_DECL_CEILF=1; AC_SUBST([HAVE_DECL_CEILF])
|
||||
HAVE_DECL_CEILL=1; AC_SUBST([HAVE_DECL_CEILL])
|
||||
HAVE_DECL_COPYSIGNF=1; AC_SUBST([HAVE_DECL_COPYSIGNF])
|
||||
HAVE_DECL_COSL=1; AC_SUBST([HAVE_DECL_COSL])
|
||||
HAVE_DECL_EXPL=1; AC_SUBST([HAVE_DECL_EXPL])
|
||||
HAVE_DECL_EXP2=1; AC_SUBST([HAVE_DECL_EXP2])
|
||||
HAVE_DECL_EXP2F=1; AC_SUBST([HAVE_DECL_EXP2F])
|
||||
HAVE_DECL_EXP2L=1; AC_SUBST([HAVE_DECL_EXP2L])
|
||||
HAVE_DECL_EXPM1L=1; AC_SUBST([HAVE_DECL_EXPM1L])
|
||||
HAVE_DECL_FLOORF=1; AC_SUBST([HAVE_DECL_FLOORF])
|
||||
HAVE_DECL_FLOORL=1; AC_SUBST([HAVE_DECL_FLOORL])
|
||||
HAVE_DECL_FREXPL=1; AC_SUBST([HAVE_DECL_FREXPL])
|
||||
HAVE_DECL_LDEXPL=1; AC_SUBST([HAVE_DECL_LDEXPL])
|
||||
HAVE_DECL_LOGL=1; AC_SUBST([HAVE_DECL_LOGL])
|
||||
HAVE_DECL_LOG10L=1; AC_SUBST([HAVE_DECL_LOG10L])
|
||||
HAVE_DECL_LOG2=1; AC_SUBST([HAVE_DECL_LOG2])
|
||||
HAVE_DECL_LOG2F=1; AC_SUBST([HAVE_DECL_LOG2F])
|
||||
HAVE_DECL_LOG2L=1; AC_SUBST([HAVE_DECL_LOG2L])
|
||||
HAVE_DECL_LOGB=1; AC_SUBST([HAVE_DECL_LOGB])
|
||||
HAVE_DECL_REMAINDER=1; AC_SUBST([HAVE_DECL_REMAINDER])
|
||||
HAVE_DECL_REMAINDERL=1; AC_SUBST([HAVE_DECL_REMAINDERL])
|
||||
HAVE_DECL_RINTF=1; AC_SUBST([HAVE_DECL_RINTF])
|
||||
HAVE_DECL_ROUND=1; AC_SUBST([HAVE_DECL_ROUND])
|
||||
HAVE_DECL_ROUNDF=1; AC_SUBST([HAVE_DECL_ROUNDF])
|
||||
HAVE_DECL_ROUNDL=1; AC_SUBST([HAVE_DECL_ROUNDL])
|
||||
HAVE_DECL_SINL=1; AC_SUBST([HAVE_DECL_SINL])
|
||||
HAVE_DECL_SQRTL=1; AC_SUBST([HAVE_DECL_SQRTL])
|
||||
HAVE_DECL_TANL=1; AC_SUBST([HAVE_DECL_TANL])
|
||||
HAVE_DECL_TRUNC=1; AC_SUBST([HAVE_DECL_TRUNC])
|
||||
HAVE_DECL_TRUNCF=1; AC_SUBST([HAVE_DECL_TRUNCF])
|
||||
HAVE_DECL_TRUNCL=1; AC_SUBST([HAVE_DECL_TRUNCL])
|
||||
REPLACE_ACOSF=0; AC_SUBST([REPLACE_ACOSF])
|
||||
REPLACE_ASINF=0; AC_SUBST([REPLACE_ASINF])
|
||||
REPLACE_ATANF=0; AC_SUBST([REPLACE_ATANF])
|
||||
REPLACE_ATAN2F=0; AC_SUBST([REPLACE_ATAN2F])
|
||||
REPLACE_CBRTF=0; AC_SUBST([REPLACE_CBRTF])
|
||||
REPLACE_CBRTL=0; AC_SUBST([REPLACE_CBRTL])
|
||||
REPLACE_CEIL=0; AC_SUBST([REPLACE_CEIL])
|
||||
REPLACE_CEILF=0; AC_SUBST([REPLACE_CEILF])
|
||||
REPLACE_CEILL=0; AC_SUBST([REPLACE_CEILL])
|
||||
REPLACE_COSF=0; AC_SUBST([REPLACE_COSF])
|
||||
REPLACE_COSHF=0; AC_SUBST([REPLACE_COSHF])
|
||||
REPLACE_EXPF=0; AC_SUBST([REPLACE_EXPF])
|
||||
REPLACE_EXPL=0; AC_SUBST([REPLACE_EXPL])
|
||||
REPLACE_EXPM1=0; AC_SUBST([REPLACE_EXPM1])
|
||||
REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F])
|
||||
REPLACE_EXPM1L=0; AC_SUBST([REPLACE_EXPM1L])
|
||||
REPLACE_EXP2=0; AC_SUBST([REPLACE_EXP2])
|
||||
REPLACE_EXP2L=0; AC_SUBST([REPLACE_EXP2L])
|
||||
REPLACE_FABSL=0; AC_SUBST([REPLACE_FABSL])
|
||||
REPLACE_FLOOR=0; AC_SUBST([REPLACE_FLOOR])
|
||||
REPLACE_FLOORF=0; AC_SUBST([REPLACE_FLOORF])
|
||||
REPLACE_FLOORL=0; AC_SUBST([REPLACE_FLOORL])
|
||||
REPLACE_FMA=0; AC_SUBST([REPLACE_FMA])
|
||||
REPLACE_FMAF=0; AC_SUBST([REPLACE_FMAF])
|
||||
REPLACE_FMAL=0; AC_SUBST([REPLACE_FMAL])
|
||||
REPLACE_FMOD=0; AC_SUBST([REPLACE_FMOD])
|
||||
REPLACE_FMODF=0; AC_SUBST([REPLACE_FMODF])
|
||||
REPLACE_FMODL=0; AC_SUBST([REPLACE_FMODL])
|
||||
REPLACE_FREXPF=0; AC_SUBST([REPLACE_FREXPF])
|
||||
REPLACE_FREXP=0; AC_SUBST([REPLACE_FREXP])
|
||||
REPLACE_FREXPL=0; AC_SUBST([REPLACE_FREXPL])
|
||||
REPLACE_HUGE_VAL=0; AC_SUBST([REPLACE_HUGE_VAL])
|
||||
REPLACE_HYPOT=0; AC_SUBST([REPLACE_HYPOT])
|
||||
REPLACE_HYPOTF=0; AC_SUBST([REPLACE_HYPOTF])
|
||||
REPLACE_HYPOTL=0; AC_SUBST([REPLACE_HYPOTL])
|
||||
REPLACE_ILOGB=0; AC_SUBST([REPLACE_ILOGB])
|
||||
REPLACE_ILOGBF=0; AC_SUBST([REPLACE_ILOGBF])
|
||||
REPLACE_ILOGBL=0; AC_SUBST([REPLACE_ILOGBL])
|
||||
REPLACE_ISFINITE=0; AC_SUBST([REPLACE_ISFINITE])
|
||||
REPLACE_ISINF=0; AC_SUBST([REPLACE_ISINF])
|
||||
REPLACE_ISNAN=0; AC_SUBST([REPLACE_ISNAN])
|
||||
REPLACE_LDEXPL=0; AC_SUBST([REPLACE_LDEXPL])
|
||||
REPLACE_LOG=0; AC_SUBST([REPLACE_LOG])
|
||||
REPLACE_LOGF=0; AC_SUBST([REPLACE_LOGF])
|
||||
REPLACE_LOGL=0; AC_SUBST([REPLACE_LOGL])
|
||||
REPLACE_LOG10=0; AC_SUBST([REPLACE_LOG10])
|
||||
REPLACE_LOG10F=0; AC_SUBST([REPLACE_LOG10F])
|
||||
REPLACE_LOG10L=0; AC_SUBST([REPLACE_LOG10L])
|
||||
REPLACE_LOG1P=0; AC_SUBST([REPLACE_LOG1P])
|
||||
REPLACE_LOG1PF=0; AC_SUBST([REPLACE_LOG1PF])
|
||||
REPLACE_LOG1PL=0; AC_SUBST([REPLACE_LOG1PL])
|
||||
REPLACE_LOG2=0; AC_SUBST([REPLACE_LOG2])
|
||||
REPLACE_LOG2F=0; AC_SUBST([REPLACE_LOG2F])
|
||||
REPLACE_LOG2L=0; AC_SUBST([REPLACE_LOG2L])
|
||||
REPLACE_LOGB=0; AC_SUBST([REPLACE_LOGB])
|
||||
REPLACE_LOGBF=0; AC_SUBST([REPLACE_LOGBF])
|
||||
REPLACE_LOGBL=0; AC_SUBST([REPLACE_LOGBL])
|
||||
REPLACE_MODF=0; AC_SUBST([REPLACE_MODF])
|
||||
REPLACE_MODFF=0; AC_SUBST([REPLACE_MODFF])
|
||||
REPLACE_MODFL=0; AC_SUBST([REPLACE_MODFL])
|
||||
REPLACE_NAN=0; AC_SUBST([REPLACE_NAN])
|
||||
REPLACE_REMAINDER=0; AC_SUBST([REPLACE_REMAINDER])
|
||||
REPLACE_REMAINDERF=0; AC_SUBST([REPLACE_REMAINDERF])
|
||||
REPLACE_REMAINDERL=0; AC_SUBST([REPLACE_REMAINDERL])
|
||||
REPLACE_RINTL=0; AC_SUBST([REPLACE_RINTL])
|
||||
REPLACE_ROUND=0; AC_SUBST([REPLACE_ROUND])
|
||||
REPLACE_ROUNDF=0; AC_SUBST([REPLACE_ROUNDF])
|
||||
REPLACE_ROUNDL=0; AC_SUBST([REPLACE_ROUNDL])
|
||||
REPLACE_SIGNBIT=0; AC_SUBST([REPLACE_SIGNBIT])
|
||||
REPLACE_SIGNBIT_USING_BUILTINS=0; AC_SUBST([REPLACE_SIGNBIT_USING_BUILTINS])
|
||||
REPLACE_SINF=0; AC_SUBST([REPLACE_SINF])
|
||||
REPLACE_SINHF=0; AC_SUBST([REPLACE_SINHF])
|
||||
REPLACE_SQRTF=0; AC_SUBST([REPLACE_SQRTF])
|
||||
REPLACE_SQRTL=0; AC_SUBST([REPLACE_SQRTL])
|
||||
REPLACE_TANF=0; AC_SUBST([REPLACE_TANF])
|
||||
REPLACE_TANHF=0; AC_SUBST([REPLACE_TANHF])
|
||||
REPLACE_TRUNC=0; AC_SUBST([REPLACE_TRUNC])
|
||||
REPLACE_TRUNCF=0; AC_SUBST([REPLACE_TRUNCF])
|
||||
REPLACE_TRUNCL=0; AC_SUBST([REPLACE_TRUNCL])
|
||||
])
|
||||
|
||||
# gl_LONG_DOUBLE_VS_DOUBLE
|
||||
# determines whether 'long double' and 'double' have the same representation.
|
||||
# Sets variable HAVE_SAME_LONG_DOUBLE_AS_DOUBLE to 0 or 1, and defines
|
||||
# HAVE_SAME_LONG_DOUBLE_AS_DOUBLE accordingly.
|
||||
# The currently known platforms where this is the case are:
|
||||
# Linux/HPPA, Minix 3.1.8, AIX 5, AIX 6 and 7 with xlc, MSVC 9.
|
||||
AC_DEFUN([gl_LONG_DOUBLE_VS_DOUBLE],
|
||||
[
|
||||
AC_CACHE_CHECK([whether long double and double are the same],
|
||||
[gl_cv_long_double_equals_double],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <float.h>]],
|
||||
[[typedef int check[sizeof (long double) == sizeof (double)
|
||||
&& LDBL_MANT_DIG == DBL_MANT_DIG
|
||||
&& LDBL_MAX_EXP == DBL_MAX_EXP
|
||||
&& LDBL_MIN_EXP == DBL_MIN_EXP
|
||||
? 1 : -1];
|
||||
]])],
|
||||
[gl_cv_long_double_equals_double=yes],
|
||||
[gl_cv_long_double_equals_double=no])
|
||||
])
|
||||
if test $gl_cv_long_double_equals_double = yes; then
|
||||
AC_DEFINE([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE], [1],
|
||||
[Define to 1 if 'long double' and 'double' have the same representation.])
|
||||
HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=1
|
||||
else
|
||||
HAVE_SAME_LONG_DOUBLE_AS_DOUBLE=0
|
||||
fi
|
||||
AC_SUBST([HAVE_SAME_LONG_DOUBLE_AS_DOUBLE])
|
||||
])
|
||||
38
m4/printf-frexp.m4
Normal file
38
m4/printf-frexp.m4
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# printf-frexp.m4 serial 5
|
||||
dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Check how to define printf_frexp() without linking with libm.
|
||||
|
||||
AC_DEFUN([gl_FUNC_PRINTF_FREXP],
|
||||
[
|
||||
AC_REQUIRE([gl_CHECK_FREXP_NO_LIBM])
|
||||
if test $gl_cv_func_frexp_no_libm = yes; then
|
||||
gl_FUNC_FREXP_WORKS
|
||||
case "$gl_cv_func_frexp_works" in
|
||||
*yes)
|
||||
AC_DEFINE([HAVE_FREXP_IN_LIBC], [1],
|
||||
[Define if the frexp function is available in libc.])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([whether ldexp can be used without linking with libm],
|
||||
[gl_cv_func_ldexp_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
double x;
|
||||
int y;]],
|
||||
[[return ldexp (x, y) < 1;]])],
|
||||
[gl_cv_func_ldexp_no_libm=yes],
|
||||
[gl_cv_func_ldexp_no_libm=no])
|
||||
])
|
||||
if test $gl_cv_func_ldexp_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_LDEXP_IN_LIBC], [1],
|
||||
[Define if the ldexp function is available in libc.])
|
||||
fi
|
||||
])
|
||||
48
m4/printf-frexpl.m4
Normal file
48
m4/printf-frexpl.m4
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# printf-frexpl.m4 serial 10
|
||||
dnl Copyright (C) 2007, 2009-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl Check how to define printf_frexpl() without linking with libm.
|
||||
|
||||
AC_DEFUN([gl_FUNC_PRINTF_FREXPL],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE])
|
||||
|
||||
dnl Subset of gl_FUNC_FREXPL_NO_LIBM.
|
||||
gl_CHECK_FREXPL_NO_LIBM
|
||||
if test $gl_cv_func_frexpl_no_libm = yes; then
|
||||
gl_FUNC_FREXPL_WORKS
|
||||
case "$gl_cv_func_frexpl_works" in
|
||||
*yes) gl_func_frexpl_no_libm=yes ;;
|
||||
*) gl_func_frexpl_no_libm=no; REPLACE_FREXPL=1 ;;
|
||||
esac
|
||||
else
|
||||
gl_func_frexpl_no_libm=no
|
||||
dnl Set REPLACE_FREXPL here because the system may have frexpl in libm.
|
||||
REPLACE_FREXPL=1
|
||||
fi
|
||||
if test $gl_func_frexpl_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_FREXPL_IN_LIBC], [1],
|
||||
[Define if the frexpl function is available in libc.])
|
||||
dnl Also check whether it's declared.
|
||||
dnl Mac OS X 10.3 has frexpl() in libc but doesn't declare it in <math.h>.
|
||||
AC_CHECK_DECL([frexpl], , [HAVE_DECL_FREXPL=0], [[#include <math.h>]])
|
||||
fi
|
||||
|
||||
gl_CHECK_LDEXPL_NO_LIBM
|
||||
if test $gl_cv_func_ldexpl_no_libm = yes; then
|
||||
gl_FUNC_LDEXPL_WORKS
|
||||
case "$gl_cv_func_ldexpl_works" in
|
||||
*yes)
|
||||
AC_DEFINE([HAVE_LDEXPL_IN_LIBC], [1],
|
||||
[Define if the ldexpl function is available in libc.])
|
||||
dnl Also check whether it's declared.
|
||||
dnl Mac OS X 10.3 has ldexpl() in libc but doesn't declare it in <math.h>.
|
||||
AC_CHECK_DECL([ldexpl], , [HAVE_DECL_LDEXPL=0], [[#include <math.h>]])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
26
m4/printf-posix-rpl.m4
Normal file
26
m4/printf-posix-rpl.m4
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
# printf-posix-rpl.m4 serial 4
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_PRINTF_POSIX],
|
||||
[
|
||||
AC_REQUIRE([gl_FUNC_VFPRINTF_POSIX])
|
||||
if test $gl_cv_func_vfprintf_posix = no; then
|
||||
gl_REPLACE_PRINTF
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_REPLACE_PRINTF],
|
||||
[
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_ASM_SYMBOL_PREFIX])
|
||||
AC_LIBOBJ([printf])
|
||||
REPLACE_PRINTF=1
|
||||
AC_DEFINE([REPLACE_PRINTF_POSIX], [1],
|
||||
[Define if printf is overridden by a POSIX compliant gnulib implementation.])
|
||||
gl_PREREQ_PRINTF
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_PREREQ_PRINTF], [:])
|
||||
1728
m4/printf.m4
Normal file
1728
m4/printf.m4
Normal file
File diff suppressed because it is too large
Load diff
393
m4/signbit.m4
Normal file
393
m4/signbit.m4
Normal file
|
|
@ -0,0 +1,393 @@
|
|||
# signbit.m4 serial 20
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_SIGNBIT],
|
||||
[
|
||||
AC_REQUIRE([gl_MATH_H_DEFAULTS])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_CACHE_CHECK([for signbit macro], [gl_cv_func_signbit],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <math.h>
|
||||
/* If signbit is defined as a function, don't use it, since calling it for
|
||||
'float' or 'long double' arguments would involve conversions.
|
||||
If signbit is not declared at all but exists as a library function, don't
|
||||
use it, since the prototype may not match.
|
||||
If signbit is not declared at all but exists as a compiler built-in, don't
|
||||
use it, since it's preferable to use __builtin_signbit* (no warnings,
|
||||
no conversions). */
|
||||
#ifndef signbit
|
||||
# error "signbit should be a macro"
|
||||
#endif
|
||||
#include <string.h>
|
||||
]gl_SIGNBIT_TEST_PROGRAM
|
||||
])],
|
||||
[gl_cv_func_signbit=yes],
|
||||
[gl_cv_func_signbit=no],
|
||||
[case "$host_os" in
|
||||
# Guess yes on glibc systems.
|
||||
*-gnu* | gnu*) gl_cv_func_signbit="guessing yes" ;;
|
||||
# Guess yes on musl systems.
|
||||
*-musl*) gl_cv_func_signbit="guessing yes" ;;
|
||||
# Guess yes on native Windows.
|
||||
mingw*) gl_cv_func_signbit="guessing yes" ;;
|
||||
# If we don't know, obey --enable-cross-guesses.
|
||||
*) gl_cv_func_signbit="$gl_cross_guess_normal" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
dnl GCC >= 4.0 and clang provide three built-ins for signbit.
|
||||
dnl They can be used without warnings, also in C++, regardless of <math.h>.
|
||||
dnl But they may expand to calls to functions, which may or may not be in
|
||||
dnl libc.
|
||||
AC_CACHE_CHECK([for signbit compiler built-ins],
|
||||
[gl_cv_func_signbit_builtins],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#if (__GNUC__ >= 4) || (__clang_major__ >= 4)
|
||||
# define signbit(x) \
|
||||
(sizeof (x) == sizeof (long double) ? __builtin_signbitl (x) : \
|
||||
sizeof (x) == sizeof (double) ? __builtin_signbit (x) : \
|
||||
__builtin_signbitf (x))
|
||||
#else
|
||||
# error "signbit should be three compiler built-ins"
|
||||
#endif
|
||||
#include <string.h>
|
||||
]gl_SIGNBIT_TEST_PROGRAM
|
||||
])],
|
||||
[gl_cv_func_signbit_builtins=yes],
|
||||
[gl_cv_func_signbit_builtins=no],
|
||||
[case "$host_os" in
|
||||
# Guess yes on glibc systems.
|
||||
*-gnu* | gnu*) gl_cv_func_signbit_builtins="guessing yes" ;;
|
||||
# Guess yes on musl systems.
|
||||
*-musl*) gl_cv_func_signbit_builtins="guessing yes" ;;
|
||||
# Guess yes on mingw, no on MSVC.
|
||||
mingw*) if test -n "$GCC"; then
|
||||
gl_cv_func_signbit_builtins="guessing yes"
|
||||
else
|
||||
gl_cv_func_signbit_builtins="guessing no"
|
||||
fi
|
||||
;;
|
||||
# If we don't know, obey --enable-cross-guesses.
|
||||
*) gl_cv_func_signbit_builtins="$gl_cross_guess_normal" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
dnl Use the compiler built-ins whenever possible, because they are more
|
||||
dnl efficient than the system library functions (if they exist).
|
||||
case "$gl_cv_func_signbit_builtins" in
|
||||
*yes)
|
||||
REPLACE_SIGNBIT_USING_BUILTINS=1
|
||||
;;
|
||||
*)
|
||||
case "$gl_cv_func_signbit" in
|
||||
*yes) ;;
|
||||
*)
|
||||
dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get built.
|
||||
REPLACE_SIGNBIT=1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
dnl On Solaris 10, with CC in C++ mode, signbit is not available although
|
||||
dnl is with cc in C mode. This cannot be worked around by defining
|
||||
dnl _XOPEN_SOURCE=600, because the latter does not work in C++ mode on
|
||||
dnl Solaris 11.0. Therefore use the replacement functions on Solaris.
|
||||
case "$host_os" in
|
||||
solaris*)
|
||||
REPLACE_SIGNBIT=1
|
||||
;;
|
||||
esac
|
||||
if test $REPLACE_SIGNBIT = 1; then
|
||||
gl_FLOAT_SIGN_LOCATION
|
||||
gl_DOUBLE_SIGN_LOCATION
|
||||
gl_LONG_DOUBLE_SIGN_LOCATION
|
||||
if test "$gl_cv_cc_float_signbit" = unknown; then
|
||||
dnl Test whether copysignf() is declared.
|
||||
AC_CHECK_DECLS([copysignf], , , [[#include <math.h>]])
|
||||
if test "$ac_cv_have_decl_copysignf" = yes; then
|
||||
dnl Test whether copysignf() can be used without libm.
|
||||
AC_CACHE_CHECK([whether copysignf can be used without linking with libm],
|
||||
[gl_cv_func_copysignf_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
float x, y;]],
|
||||
[[return copysignf (x, y) < 0;]])],
|
||||
[gl_cv_func_copysignf_no_libm=yes],
|
||||
[gl_cv_func_copysignf_no_libm=no])
|
||||
])
|
||||
if test $gl_cv_func_copysignf_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_COPYSIGNF_IN_LIBC], [1],
|
||||
[Define if the copysignf function is declared in <math.h> and available in libc.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$gl_cv_cc_double_signbit" = unknown; then
|
||||
dnl Test whether copysign() is declared.
|
||||
AC_CHECK_DECLS([copysign], , , [[#include <math.h>]])
|
||||
if test "$ac_cv_have_decl_copysign" = yes; then
|
||||
dnl Test whether copysign() can be used without libm.
|
||||
AC_CACHE_CHECK([whether copysign can be used without linking with libm],
|
||||
[gl_cv_func_copysign_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
double x, y;]],
|
||||
[[return copysign (x, y) < 0;]])],
|
||||
[gl_cv_func_copysign_no_libm=yes],
|
||||
[gl_cv_func_copysign_no_libm=no])
|
||||
])
|
||||
if test $gl_cv_func_copysign_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_COPYSIGN_IN_LIBC], [1],
|
||||
[Define if the copysign function is declared in <math.h> and available in libc.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
if test "$gl_cv_cc_long_double_signbit" = unknown; then
|
||||
dnl Test whether copysignl() is declared.
|
||||
AC_CHECK_DECLS([copysignl], , , [[#include <math.h>]])
|
||||
if test "$ac_cv_have_decl_copysignl" = yes; then
|
||||
dnl Test whether copysignl() can be used without libm.
|
||||
AC_CACHE_CHECK([whether copysignl can be used without linking with libm],
|
||||
[gl_cv_func_copysignl_no_libm],
|
||||
[
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <math.h>
|
||||
long double x, y;]],
|
||||
[[return copysignl (x, y) < 0;]])],
|
||||
[gl_cv_func_copysignl_no_libm=yes],
|
||||
[gl_cv_func_copysignl_no_libm=no])
|
||||
])
|
||||
if test $gl_cv_func_copysignl_no_libm = yes; then
|
||||
AC_DEFINE([HAVE_COPYSIGNL_IN_LIBC], [1],
|
||||
[Define if the copysignl function is declared in <math.h> and available in libc.])
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SIGNBIT_TEST_PROGRAM], [[
|
||||
/* Global variables.
|
||||
Needed because GCC 4 constant-folds __builtin_signbitl (literal)
|
||||
but cannot constant-fold __builtin_signbitl (variable). */
|
||||
float vf;
|
||||
double vd;
|
||||
long double vl;
|
||||
int main ()
|
||||
{
|
||||
/* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
|
||||
So we use -p0f and -p0d instead. */
|
||||
float p0f = 0.0f;
|
||||
float m0f = -p0f;
|
||||
double p0d = 0.0;
|
||||
double m0d = -p0d;
|
||||
/* On HP-UX 10.20, negating 0.0L does not yield -0.0L.
|
||||
So we use another constant expression instead.
|
||||
But that expression does not work on other platforms, such as when
|
||||
cross-compiling to PowerPC on Mac OS X 10.5. */
|
||||
long double p0l = 0.0L;
|
||||
#if defined __hpux || defined __sgi
|
||||
long double m0l = -LDBL_MIN * LDBL_MIN;
|
||||
#else
|
||||
long double m0l = -p0l;
|
||||
#endif
|
||||
int result = 0;
|
||||
if (signbit (vf)) /* link check */
|
||||
vf++;
|
||||
{
|
||||
float plus_inf = 1.0f / p0f;
|
||||
float minus_inf = -1.0f / p0f;
|
||||
if (!(!signbit (255.0f)
|
||||
&& signbit (-255.0f)
|
||||
&& !signbit (p0f)
|
||||
&& (memcmp (&m0f, &p0f, sizeof (float)) == 0 || signbit (m0f))
|
||||
&& !signbit (plus_inf)
|
||||
&& signbit (minus_inf)))
|
||||
result |= 1;
|
||||
}
|
||||
if (signbit (vd)) /* link check */
|
||||
vd++;
|
||||
{
|
||||
double plus_inf = 1.0 / p0d;
|
||||
double minus_inf = -1.0 / p0d;
|
||||
if (!(!signbit (255.0)
|
||||
&& signbit (-255.0)
|
||||
&& !signbit (p0d)
|
||||
&& (memcmp (&m0d, &p0d, sizeof (double)) == 0 || signbit (m0d))
|
||||
&& !signbit (plus_inf)
|
||||
&& signbit (minus_inf)))
|
||||
result |= 2;
|
||||
}
|
||||
if (signbit (vl)) /* link check */
|
||||
vl++;
|
||||
{
|
||||
long double plus_inf = 1.0L / p0l;
|
||||
long double minus_inf = -1.0L / p0l;
|
||||
if (signbit (255.0L))
|
||||
result |= 4;
|
||||
if (!signbit (-255.0L))
|
||||
result |= 4;
|
||||
if (signbit (p0l))
|
||||
result |= 8;
|
||||
if (!(memcmp (&m0l, &p0l, sizeof (long double)) == 0 || signbit (m0l)))
|
||||
result |= 16;
|
||||
if (signbit (plus_inf))
|
||||
result |= 32;
|
||||
if (!signbit (minus_inf))
|
||||
result |= 64;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
]])
|
||||
|
||||
AC_DEFUN([gl_FLOAT_SIGN_LOCATION],
|
||||
[
|
||||
gl_FLOATTYPE_SIGN_LOCATION([float], [gl_cv_cc_float_signbit], [f], [FLT])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_DOUBLE_SIGN_LOCATION],
|
||||
[
|
||||
gl_FLOATTYPE_SIGN_LOCATION([double], [gl_cv_cc_double_signbit], [], [DBL])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_LONG_DOUBLE_SIGN_LOCATION],
|
||||
[
|
||||
gl_FLOATTYPE_SIGN_LOCATION([long double], [gl_cv_cc_long_double_signbit], [L], [LDBL])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FLOATTYPE_SIGN_LOCATION],
|
||||
[
|
||||
AC_CACHE_CHECK([where to find the sign bit in a '$1'],
|
||||
[$2],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#define NWORDS \
|
||||
((sizeof ($1) + sizeof (unsigned int) - 1) / sizeof (unsigned int))
|
||||
typedef union { $1 value; unsigned int word[NWORDS]; }
|
||||
memory_float;
|
||||
static memory_float plus = { 1.0$3 };
|
||||
static memory_float minus = { -1.0$3 };
|
||||
int main ()
|
||||
{
|
||||
size_t j, k, i;
|
||||
unsigned int m;
|
||||
FILE *fp = fopen ("conftest.out", "w");
|
||||
if (fp == NULL)
|
||||
return 1;
|
||||
/* Find the different bit. */
|
||||
k = 0; m = 0;
|
||||
for (j = 0; j < NWORDS; j++)
|
||||
{
|
||||
unsigned int x = plus.word[j] ^ minus.word[j];
|
||||
if ((x & (x - 1)) || (x && m))
|
||||
{
|
||||
/* More than one bit difference. */
|
||||
fprintf (fp, "unknown");
|
||||
fclose (fp);
|
||||
return 2;
|
||||
}
|
||||
if (x)
|
||||
{
|
||||
k = j;
|
||||
m = x;
|
||||
}
|
||||
}
|
||||
if (m == 0)
|
||||
{
|
||||
/* No difference. */
|
||||
fprintf (fp, "unknown");
|
||||
fclose (fp);
|
||||
return 3;
|
||||
}
|
||||
/* Now m = plus.word[k] ^ ~minus.word[k]. */
|
||||
if (plus.word[k] & ~minus.word[k])
|
||||
{
|
||||
/* Oh? The sign bit is set in the positive and cleared in the negative
|
||||
numbers? */
|
||||
fprintf (fp, "unknown");
|
||||
fclose (fp);
|
||||
return 4;
|
||||
}
|
||||
for (i = 0; ; i++)
|
||||
if ((m >> i) & 1)
|
||||
break;
|
||||
fprintf (fp, "word %d bit %d", (int) k, (int) i);
|
||||
if (fclose (fp) != 0)
|
||||
return 5;
|
||||
return 0;
|
||||
}
|
||||
]])],
|
||||
[$2=`cat conftest.out`],
|
||||
[$2="unknown"],
|
||||
[
|
||||
dnl When cross-compiling, we don't know. It depends on the
|
||||
dnl ABI and compiler version. There are too many cases.
|
||||
$2="unknown"
|
||||
])
|
||||
rm -f conftest.out
|
||||
])
|
||||
case "$]$2[" in
|
||||
word*bit*)
|
||||
word=`echo "$]$2[" | sed -e 's/word //' -e 's/ bit.*//'`
|
||||
bit=`echo "$]$2[" | sed -e 's/word.*bit //'`
|
||||
AC_DEFINE_UNQUOTED([$4][_SIGNBIT_WORD], [$word],
|
||||
[Define as the word index where to find the sign of '$1'.])
|
||||
AC_DEFINE_UNQUOTED([$4][_SIGNBIT_BIT], [$bit],
|
||||
[Define as the bit index in the word where to find the sign of '$1'.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Expands to code that defines a function signbitf(float).
|
||||
# It extracts the sign bit of a non-NaN value.
|
||||
AC_DEFUN([gl_FLOAT_SIGNBIT_CODE],
|
||||
[
|
||||
gl_FLOATTYPE_SIGNBIT_CODE([float], [f], [f])
|
||||
])
|
||||
|
||||
# Expands to code that defines a function signbitd(double).
|
||||
# It extracts the sign bit of a non-NaN value.
|
||||
AC_DEFUN([gl_DOUBLE_SIGNBIT_CODE],
|
||||
[
|
||||
gl_FLOATTYPE_SIGNBIT_CODE([double], [d], [])
|
||||
])
|
||||
|
||||
# Expands to code that defines a function signbitl(long double).
|
||||
# It extracts the sign bit of a non-NaN value.
|
||||
AC_DEFUN([gl_LONG_DOUBLE_SIGNBIT_CODE],
|
||||
[
|
||||
gl_FLOATTYPE_SIGNBIT_CODE([long double], [l], [L])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_FLOATTYPE_SIGNBIT_CODE],
|
||||
[[
|
||||
static int
|
||||
signbit$2 ($1 value)
|
||||
{
|
||||
typedef union { $1 f; unsigned char b[sizeof ($1)]; } float_union;
|
||||
static float_union plus_one = { 1.0$3 }; /* unused bits are zero here */
|
||||
static float_union minus_one = { -1.0$3 }; /* unused bits are zero here */
|
||||
/* Compute the sign bit mask as the XOR of plus_one and minus_one. */
|
||||
float_union u;
|
||||
unsigned int i;
|
||||
u.f = value;
|
||||
for (i = 0; i < sizeof ($1); i++)
|
||||
if (u.b[i] & (plus_one.b[i] ^ minus_one.b[i]))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
]])
|
||||
75
m4/size_max.m4
Normal file
75
m4/size_max.m4
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
# size_max.m4 serial 12
|
||||
dnl Copyright (C) 2003, 2005-2006, 2008-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ([2.61])
|
||||
|
||||
AC_DEFUN([gl_SIZE_MAX],
|
||||
[
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
dnl First test whether the system already has SIZE_MAX.
|
||||
AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
|
||||
gl_cv_size_max=no
|
||||
AC_EGREP_CPP([Found it], [
|
||||
#include <limits.h>
|
||||
#if HAVE_STDINT_H
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#ifdef SIZE_MAX
|
||||
Found it
|
||||
#endif
|
||||
], [gl_cv_size_max=yes])
|
||||
if test $gl_cv_size_max != yes; then
|
||||
dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
|
||||
dnl than the type 'unsigned long'. Try hard to find a definition that can
|
||||
dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
|
||||
AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
|
||||
[#include <stddef.h>
|
||||
#include <limits.h>], [size_t_bits_minus_1=])
|
||||
AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
|
||||
[#include <stddef.h>], [fits_in_uint=])
|
||||
if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
|
||||
if test $fits_in_uint = 1; then
|
||||
dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
|
||||
dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stddef.h>
|
||||
extern size_t foo;
|
||||
extern unsigned long foo;
|
||||
]],
|
||||
[[]])],
|
||||
[fits_in_uint=0])
|
||||
fi
|
||||
dnl We cannot use 'expr' to simplify this expression, because 'expr'
|
||||
dnl works only with 'long' integers in the host environment, while we
|
||||
dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
|
||||
if test $fits_in_uint = 1; then
|
||||
gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
|
||||
else
|
||||
gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
|
||||
fi
|
||||
else
|
||||
dnl Shouldn't happen, but who knows...
|
||||
gl_cv_size_max='((size_t)~(size_t)0)'
|
||||
fi
|
||||
fi
|
||||
])
|
||||
if test "$gl_cv_size_max" != yes; then
|
||||
AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
|
||||
[Define as the maximum value of type 'size_t', if the system doesn't define it.])
|
||||
fi
|
||||
dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
|
||||
dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
|
||||
dnl #define by AC_DEFINE_UNQUOTED.
|
||||
AH_VERBATIM([SIZE_MAX],
|
||||
[/* Define as the maximum value of type 'size_t', if the system doesn't define
|
||||
it. */
|
||||
#ifndef SIZE_MAX
|
||||
# undef SIZE_MAX
|
||||
#endif])
|
||||
])
|
||||
27
m4/stdint_h.m4
Normal file
27
m4/stdint_h.m4
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# stdint_h.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Paul Eggert.
|
||||
|
||||
# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
|
||||
# doesn't clash with <sys/types.h>, and declares uintmax_t.
|
||||
|
||||
AC_DEFUN([gl_AC_HEADER_STDINT_H],
|
||||
[
|
||||
AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>
|
||||
#include <stdint.h>]],
|
||||
[[uintmax_t i = (uintmax_t) -1; return !i;]])],
|
||||
[gl_cv_header_stdint_h=yes],
|
||||
[gl_cv_header_stdint_h=no])])
|
||||
if test $gl_cv_header_stdint_h = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
|
||||
[Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
|
||||
and declares uintmax_t. ])
|
||||
fi
|
||||
])
|
||||
298
m4/vasnprintf.m4
Normal file
298
m4/vasnprintf.m4
Normal file
|
|
@ -0,0 +1,298 @@
|
|||
# vasnprintf.m4 serial 39
|
||||
dnl Copyright (C) 2002-2004, 2006-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_VASNPRINTF],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([vasnprintf])
|
||||
if test $ac_cv_func_vasnprintf = no; then
|
||||
gl_REPLACE_VASNPRINTF
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_REPLACE_VASNPRINTF],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([vasnprintf])
|
||||
AC_LIBOBJ([vasnprintf])
|
||||
AC_LIBOBJ([printf-args])
|
||||
AC_LIBOBJ([printf-parse])
|
||||
AC_LIBOBJ([asnprintf])
|
||||
if test $ac_cv_func_vasnprintf = yes; then
|
||||
AC_DEFINE([REPLACE_VASNPRINTF], [1],
|
||||
[Define if vasnprintf exists but is overridden by gnulib.])
|
||||
fi
|
||||
gl_PREREQ_PRINTF_ARGS
|
||||
gl_PREREQ_PRINTF_PARSE
|
||||
gl_PREREQ_VASNPRINTF
|
||||
gl_PREREQ_ASNPRINTF
|
||||
])
|
||||
|
||||
# Prerequisites of lib/printf-args.h, lib/printf-args.c.
|
||||
AC_DEFUN([gl_PREREQ_PRINTF_ARGS],
|
||||
[
|
||||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||||
])
|
||||
|
||||
# Prerequisites of lib/printf-parse.h, lib/printf-parse.c.
|
||||
AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
|
||||
[
|
||||
AC_REQUIRE([gl_FEATURES_H])
|
||||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||||
AC_REQUIRE([AC_TYPE_SIZE_T])
|
||||
AC_CHECK_TYPE([ptrdiff_t], ,
|
||||
[AC_DEFINE([ptrdiff_t], [long],
|
||||
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
|
||||
])
|
||||
AC_REQUIRE([gt_AC_TYPE_INTMAX_T])
|
||||
])
|
||||
|
||||
# Prerequisites of lib/vasnprintf.c.
|
||||
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
|
||||
[
|
||||
AC_REQUIRE([AC_FUNC_ALLOCA])
|
||||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||||
AC_CHECK_FUNCS([snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
|
||||
dnl Use the _snprintf function only if it is declared (because on NetBSD it
|
||||
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
|
||||
AC_CHECK_DECLS([_snprintf], , , [[#include <stdio.h>]])
|
||||
dnl Knowing DBL_EXPBIT0_WORD and DBL_EXPBIT0_BIT enables an optimization
|
||||
dnl in the code for NEED_PRINTF_LONG_DOUBLE || NEED_PRINTF_DOUBLE.
|
||||
AC_REQUIRE([gl_DOUBLE_EXPONENT_LOCATION])
|
||||
dnl We can avoid a lot of code by assuming that snprintf's return value
|
||||
dnl conforms to ISO C99. So check that.
|
||||
AC_REQUIRE([gl_SNPRINTF_RETVAL_C99])
|
||||
case "$gl_cv_func_snprintf_retval_c99" in
|
||||
*yes)
|
||||
AC_DEFINE([HAVE_SNPRINTF_RETVAL_C99], [1],
|
||||
[Define if the return value of the snprintf function is the number of
|
||||
of bytes (excluding the terminating NUL) that would have been produced
|
||||
if the buffer had been large enough.])
|
||||
;;
|
||||
esac
|
||||
dnl Additionally, the use of %n can be eliminated by assuming that snprintf
|
||||
dnl always produces NUL-terminated strings (no truncation).
|
||||
AC_REQUIRE([gl_SNPRINTF_TRUNCATION_C99])
|
||||
case "$gl_cv_func_snprintf_truncation_c99" in
|
||||
*yes)
|
||||
AC_DEFINE([HAVE_SNPRINTF_TRUNCATION_C99], [1],
|
||||
[Define if the string produced by the snprintf function is always NUL
|
||||
terminated.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting 'long double'
|
||||
# arguments.
|
||||
AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
||||
case "$gl_cv_func_printf_long_double" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
'long double' arguments.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'double'
|
||||
# arguments.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE])
|
||||
case "$gl_cv_func_printf_infinite" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_INFINITE_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
infinite 'double' arguments.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting infinite 'long double'
|
||||
# arguments.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
|
||||
dnl There is no need to set NEED_PRINTF_INFINITE_LONG_DOUBLE if
|
||||
dnl NEED_PRINTF_LONG_DOUBLE is already set.
|
||||
AC_REQUIRE([gl_PREREQ_VASNPRINTF_LONG_DOUBLE])
|
||||
case "$gl_cv_func_printf_long_double" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_infinite_long_double" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_INFINITE_LONG_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
infinite 'long double' arguments.])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the 'a' directive.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_A],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
|
||||
case "$gl_cv_func_printf_directive_a" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_DIRECTIVE_A], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
the 'a' and 'A' directives.])
|
||||
gl_CHECK_FUNCS_ANDROID([nl_langinfo], [[#include <langinfo.h>]])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the 'F' directive.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_F],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
|
||||
case "$gl_cv_func_printf_directive_f" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_DIRECTIVE_F], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
the 'F' directive.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the 'ls' directive.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_DIRECTIVE_LS],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
|
||||
case "$gl_cv_func_printf_directive_ls" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_DIRECTIVE_LS], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
the 'ls' directive.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the ' flag.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_GROUPING],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
|
||||
case "$gl_cv_func_printf_flag_grouping" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_FLAG_GROUPING], [1],
|
||||
[Define if the vasnprintf implementation needs special code for the
|
||||
' flag.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the '-' flag.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
|
||||
case "$gl_cv_func_printf_flag_leftadjust" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_FLAG_LEFTADJUST], [1],
|
||||
[Define if the vasnprintf implementation needs special code for the
|
||||
'-' flag.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting the 0 flag.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_FLAG_ZERO],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
|
||||
case "$gl_cv_func_printf_flag_zero" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_FLAG_ZERO], [1],
|
||||
[Define if the vasnprintf implementation needs special code for the
|
||||
0 flag.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for supporting large precisions.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_PRECISION],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_PRECISION])
|
||||
case "$gl_cv_func_printf_precision" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_UNBOUNDED_PRECISION], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
supporting large precisions without arbitrary bounds.])
|
||||
AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
'double' arguments.])
|
||||
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
'long double' arguments.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Extra prerequisites of lib/vasnprintf.c for surviving out-of-memory
|
||||
# conditions.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_ENOMEM],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_ENOMEM])
|
||||
case "$gl_cv_func_printf_enomem" in
|
||||
*yes)
|
||||
;;
|
||||
*)
|
||||
AC_DEFINE([NEED_PRINTF_ENOMEM], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
surviving out-of-memory conditions.])
|
||||
AC_DEFINE([NEED_PRINTF_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
'double' arguments.])
|
||||
AC_DEFINE([NEED_PRINTF_LONG_DOUBLE], [1],
|
||||
[Define if the vasnprintf implementation needs special code for
|
||||
'long double' arguments.])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
# Prerequisites of lib/vasnprintf.c including all extras for POSIX compliance.
|
||||
AC_DEFUN([gl_PREREQ_VASNPRINTF_WITH_EXTRAS],
|
||||
[
|
||||
AC_REQUIRE([gl_PREREQ_VASNPRINTF])
|
||||
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
|
||||
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
|
||||
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
|
||||
gl_PREREQ_VASNPRINTF_FLAG_ZERO
|
||||
gl_PREREQ_VASNPRINTF_PRECISION
|
||||
gl_PREREQ_VASNPRINTF_ENOMEM
|
||||
])
|
||||
|
||||
# Prerequisites of lib/asnprintf.c.
|
||||
AC_DEFUN([gl_PREREQ_ASNPRINTF],
|
||||
[
|
||||
])
|
||||
101
m4/vasprintf-posix.m4
Normal file
101
m4/vasprintf-posix.m4
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
# vasprintf-posix.m4 serial 13
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_VASPRINTF_POSIX],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_SIZES_C99])
|
||||
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE])
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
|
||||
AC_REQUIRE([gl_PRINTF_POSITIONS])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
|
||||
AC_REQUIRE([gl_PRINTF_PRECISION])
|
||||
AC_REQUIRE([gl_PRINTF_ENOMEM])
|
||||
gl_cv_func_vasprintf_posix=no
|
||||
AC_CHECK_FUNCS([vasprintf])
|
||||
case "$gl_cv_func_printf_sizes_c99" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_long_double" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_infinite" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_infinite_long_double" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_a" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_f" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_n" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_ls" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_positions" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_grouping" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_leftadjust" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_zero" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_precision" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_enomem" in
|
||||
*yes)
|
||||
if test $ac_cv_func_vasprintf = yes; then
|
||||
# vasprintf exists and is
|
||||
# already POSIX compliant.
|
||||
gl_cv_func_vasprintf_posix=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
if test $gl_cv_func_vasprintf_posix = no; then
|
||||
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
|
||||
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
|
||||
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
|
||||
gl_PREREQ_VASNPRINTF_FLAG_ZERO
|
||||
gl_PREREQ_VASNPRINTF_PRECISION
|
||||
gl_PREREQ_VASNPRINTF_ENOMEM
|
||||
gl_REPLACE_VASNPRINTF
|
||||
gl_REPLACE_VASPRINTF
|
||||
fi
|
||||
])
|
||||
46
m4/vasprintf.m4
Normal file
46
m4/vasprintf.m4
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# vasprintf.m4 serial 6
|
||||
dnl Copyright (C) 2002-2003, 2006-2007, 2009-2023 Free Software Foundation,
|
||||
dnl Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_VASPRINTF],
|
||||
[
|
||||
AC_CHECK_FUNCS([vasprintf])
|
||||
if test $ac_cv_func_vasprintf = no; then
|
||||
gl_REPLACE_VASPRINTF
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_REPLACE_VASPRINTF],
|
||||
[
|
||||
AC_LIBOBJ([vasprintf])
|
||||
AC_LIBOBJ([asprintf])
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
if test $ac_cv_func_vasprintf = yes; then
|
||||
REPLACE_VASPRINTF=1
|
||||
else
|
||||
HAVE_VASPRINTF=0
|
||||
fi
|
||||
gl_PREREQ_VASPRINTF_H
|
||||
gl_PREREQ_VASPRINTF
|
||||
gl_PREREQ_ASPRINTF
|
||||
])
|
||||
|
||||
# Prerequisites of the vasprintf portion of lib/stdio.h.
|
||||
AC_DEFUN([gl_PREREQ_VASPRINTF_H],
|
||||
[
|
||||
dnl Persuade glibc <stdio.h> to declare asprintf() and vasprintf().
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
])
|
||||
|
||||
# Prerequisites of lib/vasprintf.c.
|
||||
AC_DEFUN([gl_PREREQ_VASPRINTF],
|
||||
[
|
||||
])
|
||||
|
||||
# Prerequisites of lib/asprintf.c.
|
||||
AC_DEFUN([gl_PREREQ_ASPRINTF],
|
||||
[
|
||||
])
|
||||
110
m4/vfprintf-posix.m4
Normal file
110
m4/vfprintf-posix.m4
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# vfprintf-posix.m4 serial 14
|
||||
dnl Copyright (C) 2007-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_FUNC_VFPRINTF_POSIX],
|
||||
[
|
||||
AC_REQUIRE([gl_PRINTF_SIZES_C99])
|
||||
AC_REQUIRE([gl_PRINTF_LONG_DOUBLE])
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE])
|
||||
AC_REQUIRE([gl_PRINTF_INFINITE_LONG_DOUBLE])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_A])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_F])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_N])
|
||||
AC_REQUIRE([gl_PRINTF_DIRECTIVE_LS])
|
||||
AC_REQUIRE([gl_PRINTF_POSITIONS])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_GROUPING])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_LEFTADJUST])
|
||||
AC_REQUIRE([gl_PRINTF_FLAG_ZERO])
|
||||
AC_REQUIRE([gl_PRINTF_PRECISION])
|
||||
AC_REQUIRE([gl_PRINTF_ENOMEM])
|
||||
gl_cv_func_vfprintf_posix=no
|
||||
case "$gl_cv_func_printf_sizes_c99" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_long_double" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_infinite" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_infinite_long_double" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_a" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_f" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_n" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_directive_ls" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_positions" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_grouping" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_leftadjust" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_flag_zero" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_precision" in
|
||||
*yes)
|
||||
case "$gl_cv_func_printf_enomem" in
|
||||
*yes)
|
||||
# vfprintf exists and is
|
||||
# already POSIX compliant.
|
||||
gl_cv_func_vfprintf_posix=yes
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
if test $gl_cv_func_vfprintf_posix = no; then
|
||||
gl_PREREQ_VASNPRINTF_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_INFINITE_LONG_DOUBLE
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_A
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_F
|
||||
gl_PREREQ_VASNPRINTF_DIRECTIVE_LS
|
||||
gl_PREREQ_VASNPRINTF_FLAG_GROUPING
|
||||
gl_PREREQ_VASNPRINTF_FLAG_LEFTADJUST
|
||||
gl_PREREQ_VASNPRINTF_FLAG_ZERO
|
||||
gl_PREREQ_VASNPRINTF_PRECISION
|
||||
gl_PREREQ_VASNPRINTF_ENOMEM
|
||||
gl_REPLACE_VASNPRINTF
|
||||
gl_REPLACE_VFPRINTF
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_REPLACE_VFPRINTF],
|
||||
[
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
AC_LIBOBJ([vfprintf])
|
||||
REPLACE_VFPRINTF=1
|
||||
AC_DEFINE([REPLACE_VFPRINTF_POSIX], [1],
|
||||
[Define if vfprintf is overridden by a POSIX compliant gnulib implementation.])
|
||||
gl_PREREQ_VFPRINTF
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_PREREQ_VFPRINTF], [:])
|
||||
12
m4/xsize.m4
Normal file
12
m4/xsize.m4
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# xsize.m4 serial 5
|
||||
dnl Copyright (C) 2003-2004, 2008-2023 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
AC_DEFUN([gl_XSIZE],
|
||||
[
|
||||
dnl Prerequisites of lib/xsize.h.
|
||||
AC_REQUIRE([gl_SIZE_MAX])
|
||||
AC_CHECK_HEADERS([stdint.h])
|
||||
])
|
||||
Loading…
Add table
Add a link
Reference in a new issue