Make LTL2BA compile on Windows.
This commit is contained in:
parent
92bed4de11
commit
c17d2bbc13
118 changed files with 27778 additions and 51 deletions
46
m4/00gnulib.m4
Normal file
46
m4/00gnulib.m4
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
# 00gnulib.m4 serial 3
|
||||
dnl Copyright (C) 2009-2018 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 This file must be named something that sorts before all other
|
||||
dnl gnulib-provided .m4 files. It is needed until such time as we can
|
||||
dnl assume Autoconf 2.64, with its improved AC_DEFUN_ONCE and
|
||||
dnl m4_divert semantics.
|
||||
|
||||
# Until autoconf 2.63, handling of the diversion stack required m4_init
|
||||
# to be called first; but this does not happen with aclocal. Wrapping
|
||||
# the entire execution in another layer of the diversion stack fixes this.
|
||||
# Worse, prior to autoconf 2.62, m4_wrap depended on the underlying m4
|
||||
# for whether it was FIFO or LIFO; in order to properly balance with
|
||||
# m4_init, we need to undo our push just before anything wrapped within
|
||||
# the m4_init body. The way to ensure this is to wrap both sides of
|
||||
# m4_init with a one-shot macro that does the pop at the right time.
|
||||
m4_ifndef([_m4_divert_diversion],
|
||||
[m4_divert_push([KILL])
|
||||
m4_define([gl_divert_fixup], [m4_divert_pop()m4_define([$0])])
|
||||
m4_define([m4_init],
|
||||
[gl_divert_fixup()]m4_defn([m4_init])[gl_divert_fixup()])])
|
||||
|
||||
|
||||
# AC_DEFUN_ONCE([NAME], VALUE)
|
||||
# ----------------------------
|
||||
# Define NAME to expand to VALUE on the first use (whether by direct
|
||||
# expansion, or by AC_REQUIRE), and to nothing on all subsequent uses.
|
||||
# Avoid bugs in AC_REQUIRE in Autoconf 2.63 and earlier. This
|
||||
# definition is slower than the version in Autoconf 2.64, because it
|
||||
# can only use interfaces that existed since 2.59; but it achieves the
|
||||
# same effect. Quoting is necessary to avoid confusing Automake.
|
||||
m4_version_prereq([2.63.263], [],
|
||||
[m4_define([AC][_DEFUN_ONCE],
|
||||
[AC][_DEFUN([$1],
|
||||
[AC_REQUIRE([_gl_DEFUN_ONCE([$1])],
|
||||
[m4_indir([_gl_DEFUN_ONCE([$1])])])])]dnl
|
||||
[AC][_DEFUN([_gl_DEFUN_ONCE([$1])], [$2])])])
|
||||
|
||||
# gl_00GNULIB
|
||||
# -----------
|
||||
# Witness macro that this file has been included. Needed to force
|
||||
# Automake to include this file prior to all other gnulib .m4 files.
|
||||
AC_DEFUN([gl_00GNULIB])
|
||||
102
m4/absolute-header.m4
Normal file
102
m4/absolute-header.m4
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
# absolute-header.m4 serial 16
|
||||
dnl Copyright (C) 2006-2018 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 Derek Price.
|
||||
|
||||
# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
|
||||
# ---------------------------------------
|
||||
# Find the absolute name of a header file, testing first if the header exists.
|
||||
# If the header were sys/inttypes.h, this macro would define
|
||||
# ABSOLUTE_SYS_INTTYPES_H to the '""' quoted absolute name of sys/inttypes.h
|
||||
# in config.h
|
||||
# (e.g. '#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
|
||||
# The three "///" are to pacify Sun C 5.8, which otherwise would say
|
||||
# "warning: #include of /usr/include/... may be non-portable".
|
||||
# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
|
||||
# Note: This macro assumes that the header file is not empty after
|
||||
# preprocessing, i.e. it does not only define preprocessor macros but also
|
||||
# provides some type/enum definitions or function/variable declarations.
|
||||
AC_DEFUN([gl_ABSOLUTE_HEADER],
|
||||
[AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_PREPROC_REQUIRE()dnl
|
||||
dnl FIXME: gl_absolute_header and ac_header_exists must be used unquoted
|
||||
dnl until we can assume autoconf 2.64 or newer.
|
||||
m4_foreach_w([gl_HEADER_NAME], [$1],
|
||||
[AS_VAR_PUSHDEF([gl_absolute_header],
|
||||
[gl_cv_absolute_]m4_defn([gl_HEADER_NAME]))dnl
|
||||
AC_CACHE_CHECK([absolute name of <]m4_defn([gl_HEADER_NAME])[>],
|
||||
m4_defn([gl_absolute_header]),
|
||||
[AS_VAR_PUSHDEF([ac_header_exists],
|
||||
[ac_cv_header_]m4_defn([gl_HEADER_NAME]))dnl
|
||||
AC_CHECK_HEADERS_ONCE(m4_defn([gl_HEADER_NAME]))dnl
|
||||
if test AS_VAR_GET(ac_header_exists) = yes; then
|
||||
gl_ABSOLUTE_HEADER_ONE(m4_defn([gl_HEADER_NAME]))
|
||||
fi
|
||||
AS_VAR_POPDEF([ac_header_exists])dnl
|
||||
])dnl
|
||||
AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_defn([gl_HEADER_NAME])),
|
||||
["AS_VAR_GET(gl_absolute_header)"],
|
||||
[Define this to an absolute name of <]m4_defn([gl_HEADER_NAME])[>.])
|
||||
AS_VAR_POPDEF([gl_absolute_header])dnl
|
||||
])dnl
|
||||
])# gl_ABSOLUTE_HEADER
|
||||
|
||||
# gl_ABSOLUTE_HEADER_ONE(HEADER)
|
||||
# ------------------------------
|
||||
# Like gl_ABSOLUTE_HEADER, except that:
|
||||
# - it assumes that the header exists,
|
||||
# - it uses the current CPPFLAGS,
|
||||
# - it does not cache the result,
|
||||
# - it is silent.
|
||||
AC_DEFUN([gl_ABSOLUTE_HEADER_ONE],
|
||||
[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote([$1])[[>]])])
|
||||
dnl AIX "xlc -E" and "cc -E" omit #line directives for header files
|
||||
dnl that contain only a #include of other header files and no
|
||||
dnl non-comment tokens of their own. This leads to a failure to
|
||||
dnl detect the absolute name of <dirent.h>, <signal.h>, <poll.h>
|
||||
dnl and others. The workaround is to force preservation of comments
|
||||
dnl through option -C. This ensures all necessary #line directives
|
||||
dnl are present. GCC supports option -C as well.
|
||||
case "$host_os" in
|
||||
aix*) gl_absname_cpp="$ac_cpp -C" ;;
|
||||
*) gl_absname_cpp="$ac_cpp" ;;
|
||||
esac
|
||||
changequote(,)
|
||||
case "$host_os" in
|
||||
mingw*)
|
||||
dnl For the sake of native Windows compilers (excluding gcc),
|
||||
dnl treat backslash as a directory separator, like /.
|
||||
dnl Actually, these compilers use a double-backslash as
|
||||
dnl directory separator, inside the
|
||||
dnl # line "filename"
|
||||
dnl directives.
|
||||
gl_dirsep_regex='[/\\]'
|
||||
;;
|
||||
*)
|
||||
gl_dirsep_regex='\/'
|
||||
;;
|
||||
esac
|
||||
dnl A sed expression that turns a string into a basic regular
|
||||
dnl expression, for use within "/.../".
|
||||
gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
|
||||
gl_header_literal_regex=`echo '$1' \
|
||||
| sed -e "$gl_make_literal_regex_sed"`
|
||||
gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
|
||||
s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
|
||||
s|^/[^/]|//&|
|
||||
p
|
||||
q
|
||||
}'
|
||||
changequote([,])
|
||||
dnl eval is necessary to expand gl_absname_cpp.
|
||||
dnl Ultrix and Pyramid sh refuse to redirect output of eval,
|
||||
dnl so use subshell.
|
||||
AS_VAR_SET([gl_cv_absolute_]AS_TR_SH([[$1]]),
|
||||
[`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
|
||||
sed -n "$gl_absolute_header_sed"`])
|
||||
])
|
||||
121
m4/alloca.m4
Normal file
121
m4/alloca.m4
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
# alloca.m4 serial 14
|
||||
dnl Copyright (C) 2002-2004, 2006-2007, 2009-2018 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_ALLOCA],
|
||||
[
|
||||
AC_REQUIRE([AC_FUNC_ALLOCA])
|
||||
if test $ac_cv_func_alloca_works = no; then
|
||||
gl_PREREQ_ALLOCA
|
||||
fi
|
||||
|
||||
# Define an additional variable used in the Makefile substitution.
|
||||
if test $ac_cv_working_alloca_h = yes; then
|
||||
AC_CACHE_CHECK([for alloca as a compiler built-in], [gl_cv_rpl_alloca], [
|
||||
AC_EGREP_CPP([Need own alloca], [
|
||||
#if defined __GNUC__ || defined _AIX || defined _MSC_VER
|
||||
Need own alloca
|
||||
#endif
|
||||
], [gl_cv_rpl_alloca=yes], [gl_cv_rpl_alloca=no])
|
||||
])
|
||||
if test $gl_cv_rpl_alloca = yes; then
|
||||
dnl OK, alloca can be implemented through a compiler built-in.
|
||||
AC_DEFINE([HAVE_ALLOCA], [1],
|
||||
[Define to 1 if you have 'alloca' after including <alloca.h>,
|
||||
a header that may be supplied by this distribution.])
|
||||
ALLOCA_H=alloca.h
|
||||
else
|
||||
dnl alloca exists as a library function, i.e. it is slow and probably
|
||||
dnl a memory leak. Don't define HAVE_ALLOCA in this case.
|
||||
ALLOCA_H=
|
||||
fi
|
||||
else
|
||||
ALLOCA_H=alloca.h
|
||||
fi
|
||||
AC_SUBST([ALLOCA_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_ALLOCA_H], [test -n "$ALLOCA_H"])
|
||||
])
|
||||
|
||||
# Prerequisites of lib/alloca.c.
|
||||
# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
|
||||
AC_DEFUN([gl_PREREQ_ALLOCA], [:])
|
||||
|
||||
# This works around a bug in autoconf <= 2.68.
|
||||
# See <https://lists.gnu.org/r/bug-gnulib/2011-06/msg00277.html>.
|
||||
|
||||
m4_version_prereq([2.69], [] ,[
|
||||
|
||||
# This is taken from the following Autoconf patch:
|
||||
# https://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=6cd9f12520b0d6f76d3230d7565feba1ecf29497
|
||||
|
||||
# _AC_LIBOBJ_ALLOCA
|
||||
# -----------------
|
||||
# Set up the LIBOBJ replacement of 'alloca'. Well, not exactly
|
||||
# AC_LIBOBJ since we actually set the output variable 'ALLOCA'.
|
||||
# Nevertheless, for Automake, AC_LIBSOURCES it.
|
||||
m4_define([_AC_LIBOBJ_ALLOCA],
|
||||
[# The SVR3 libPW and SVR4 libucb both contain incompatible functions
|
||||
# that cause trouble. Some versions do not even contain alloca or
|
||||
# contain a buggy version. If you still want to use their alloca,
|
||||
# use ar to extract alloca.o from them instead of compiling alloca.c.
|
||||
AC_LIBSOURCES(alloca.c)
|
||||
AC_SUBST([ALLOCA], [\${LIBOBJDIR}alloca.$ac_objext])dnl
|
||||
AC_DEFINE(C_ALLOCA, 1, [Define to 1 if using 'alloca.c'.])
|
||||
|
||||
AC_CACHE_CHECK(whether 'alloca.c' needs Cray hooks, ac_cv_os_cray,
|
||||
[AC_EGREP_CPP(webecray,
|
||||
[#if defined CRAY && ! defined CRAY2
|
||||
webecray
|
||||
#else
|
||||
wenotbecray
|
||||
#endif
|
||||
], ac_cv_os_cray=yes, ac_cv_os_cray=no)])
|
||||
if test $ac_cv_os_cray = yes; then
|
||||
for ac_func in _getb67 GETB67 getb67; do
|
||||
AC_CHECK_FUNC($ac_func,
|
||||
[AC_DEFINE_UNQUOTED(CRAY_STACKSEG_END, $ac_func,
|
||||
[Define to one of '_getb67', 'GETB67',
|
||||
'getb67' for Cray-2 and Cray-YMP
|
||||
systems. This function is required for
|
||||
'alloca.c' support on those systems.])
|
||||
break])
|
||||
done
|
||||
fi
|
||||
|
||||
AC_CACHE_CHECK([stack direction for C alloca],
|
||||
[ac_cv_c_stack_direction],
|
||||
[AC_RUN_IFELSE([AC_LANG_SOURCE(
|
||||
[AC_INCLUDES_DEFAULT
|
||||
int
|
||||
find_stack_direction (int *addr, int depth)
|
||||
{
|
||||
int dir, dummy = 0;
|
||||
if (! addr)
|
||||
addr = &dummy;
|
||||
*addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1;
|
||||
dir = depth ? find_stack_direction (addr, depth - 1) : 0;
|
||||
return dir + dummy;
|
||||
}
|
||||
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
return find_stack_direction (0, argc + !argv + 20) < 0;
|
||||
}])],
|
||||
[ac_cv_c_stack_direction=1],
|
||||
[ac_cv_c_stack_direction=-1],
|
||||
[ac_cv_c_stack_direction=0])])
|
||||
AH_VERBATIM([STACK_DIRECTION],
|
||||
[/* If using the C implementation of alloca, define if you know the
|
||||
direction of stack growth for your system; otherwise it will be
|
||||
automatically deduced at runtime.
|
||||
STACK_DIRECTION > 0 => grows toward higher addresses
|
||||
STACK_DIRECTION < 0 => grows toward lower addresses
|
||||
STACK_DIRECTION = 0 => direction of growth unknown */
|
||||
@%:@undef STACK_DIRECTION])dnl
|
||||
AC_DEFINE_UNQUOTED(STACK_DIRECTION, $ac_cv_c_stack_direction)
|
||||
])# _AC_LIBOBJ_ALLOCA
|
||||
])
|
||||
137
m4/errno_h.m4
Normal file
137
m4/errno_h.m4
Normal file
|
|
@ -0,0 +1,137 @@
|
|||
# errno_h.m4 serial 12
|
||||
dnl Copyright (C) 2004, 2006, 2008-2018 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_HEADER_ERRNO_H],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_CACHE_CHECK([for complete errno.h], [gl_cv_header_errno_h_complete], [
|
||||
AC_EGREP_CPP([booboo],[
|
||||
#include <errno.h>
|
||||
#if !defined ETXTBSY
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ENOMSG
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EIDRM
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ENOLINK
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EPROTO
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EMULTIHOP
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EBADMSG
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EOVERFLOW
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ENOTSUP
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ENETRESET
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ECONNABORTED
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ESTALE
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EDQUOT
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ECANCELED
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EOWNERDEAD
|
||||
booboo
|
||||
#endif
|
||||
#if !defined ENOTRECOVERABLE
|
||||
booboo
|
||||
#endif
|
||||
#if !defined EILSEQ
|
||||
booboo
|
||||
#endif
|
||||
],
|
||||
[gl_cv_header_errno_h_complete=no],
|
||||
[gl_cv_header_errno_h_complete=yes])
|
||||
])
|
||||
if test $gl_cv_header_errno_h_complete = yes; then
|
||||
ERRNO_H=''
|
||||
else
|
||||
gl_NEXT_HEADERS([errno.h])
|
||||
ERRNO_H='errno.h'
|
||||
fi
|
||||
AC_SUBST([ERRNO_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_ERRNO_H], [test -n "$ERRNO_H"])
|
||||
gl_REPLACE_ERRNO_VALUE([EMULTIHOP])
|
||||
gl_REPLACE_ERRNO_VALUE([ENOLINK])
|
||||
gl_REPLACE_ERRNO_VALUE([EOVERFLOW])
|
||||
])
|
||||
|
||||
# Assuming $1 = EOVERFLOW.
|
||||
# The EOVERFLOW errno value ought to be defined in <errno.h>, according to
|
||||
# POSIX. But some systems (like OpenBSD 4.0 or AIX 3) don't define it, and
|
||||
# some systems (like OSF/1) define it when _XOPEN_SOURCE_EXTENDED is defined.
|
||||
# Check for the value of EOVERFLOW.
|
||||
# Set the variables EOVERFLOW_HIDDEN and EOVERFLOW_VALUE.
|
||||
AC_DEFUN([gl_REPLACE_ERRNO_VALUE],
|
||||
[
|
||||
if test -n "$ERRNO_H"; then
|
||||
AC_CACHE_CHECK([for ]$1[ value], [gl_cv_header_errno_h_]$1, [
|
||||
AC_EGREP_CPP([yes],[
|
||||
#include <errno.h>
|
||||
#ifdef ]$1[
|
||||
yes
|
||||
#endif
|
||||
],
|
||||
[gl_cv_header_errno_h_]$1[=yes],
|
||||
[gl_cv_header_errno_h_]$1[=no])
|
||||
if test $gl_cv_header_errno_h_]$1[ = no; then
|
||||
AC_EGREP_CPP([yes],[
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#include <errno.h>
|
||||
#ifdef ]$1[
|
||||
yes
|
||||
#endif
|
||||
], [gl_cv_header_errno_h_]$1[=hidden])
|
||||
if test $gl_cv_header_errno_h_]$1[ = hidden; then
|
||||
dnl The macro exists but is hidden.
|
||||
dnl Define it to the same value.
|
||||
AC_COMPUTE_INT([gl_cv_header_errno_h_]$1, $1, [
|
||||
#define _XOPEN_SOURCE_EXTENDED 1
|
||||
#include <errno.h>
|
||||
/* The following two lines are a workaround against an autoconf-2.52 bug. */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
case $gl_cv_header_errno_h_]$1[ in
|
||||
yes | no)
|
||||
]$1[_HIDDEN=0; ]$1[_VALUE=
|
||||
;;
|
||||
*)
|
||||
]$1[_HIDDEN=1; ]$1[_VALUE="$gl_cv_header_errno_h_]$1["
|
||||
;;
|
||||
esac
|
||||
AC_SUBST($1[_HIDDEN])
|
||||
AC_SUBST($1[_VALUE])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
|
||||
dnl Remove this when we can assume autoconf >= 2.61.
|
||||
m4_ifdef([AC_COMPUTE_INT], [], [
|
||||
AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
|
||||
])
|
||||
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-2018 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-2018 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
|
||||
])
|
||||
114
m4/exponentl.m4
Normal file
114
m4/exponentl.m4
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
# exponentl.m4 serial 4
|
||||
dnl Copyright (C) 2007-2018 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 ()
|
||||
{
|
||||
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.25L);
|
||||
add_to_ored_words (0.5L);
|
||||
add_to_ored_words (1.0L);
|
||||
add_to_ored_words (2.0L);
|
||||
add_to_ored_words (4.0L);
|
||||
/* 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
|
||||
])
|
||||
189
m4/extensions.m4
Normal file
189
m4/extensions.m4
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
# serial 18 -*- Autoconf -*-
|
||||
# Enable extensions on systems that normally disable them.
|
||||
|
||||
# Copyright (C) 2003, 2006-2018 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from git
|
||||
# Autoconf. Perhaps we can remove this once we can assume Autoconf
|
||||
# 2.70 or later everywhere, but since Autoconf mutates rapidly
|
||||
# enough in this area it's likely we'll need to redefine
|
||||
# AC_USE_SYSTEM_EXTENSIONS for quite some time.
|
||||
|
||||
# If autoconf reports a warning
|
||||
# warning: AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
|
||||
# or warning: AC_RUN_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS
|
||||
# the fix is
|
||||
# 1) to ensure that AC_USE_SYSTEM_EXTENSIONS is never directly invoked
|
||||
# but always AC_REQUIREd,
|
||||
# 2) to ensure that for each occurrence of
|
||||
# AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
# or
|
||||
# AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
# the corresponding gnulib module description has 'extensions' among
|
||||
# its dependencies. This will ensure that the gl_USE_SYSTEM_EXTENSIONS
|
||||
# invocation occurs in gl_EARLY, not in gl_INIT.
|
||||
|
||||
# AC_USE_SYSTEM_EXTENSIONS
|
||||
# ------------------------
|
||||
# Enable extensions on systems that normally disable them,
|
||||
# typically due to standards-conformance issues.
|
||||
#
|
||||
# Remember that #undef in AH_VERBATIM gets replaced with #define by
|
||||
# AC_DEFINE. The goal here is to define all known feature-enabling
|
||||
# macros, then, if reports of conflicts are made, disable macros that
|
||||
# cause problems on some platforms (such as __EXTENSIONS__).
|
||||
AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
|
||||
[AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
|
||||
AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
|
||||
|
||||
AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
|
||||
if test "$MINIX" = yes; then
|
||||
AC_DEFINE([_POSIX_SOURCE], [1],
|
||||
[Define to 1 if you need to in order for 'stat' and other
|
||||
things to work.])
|
||||
AC_DEFINE([_POSIX_1_SOURCE], [2],
|
||||
[Define to 2 if the system does not provide POSIX.1 features
|
||||
except with this defined.])
|
||||
AC_DEFINE([_MINIX], [1],
|
||||
[Define to 1 if on MINIX.])
|
||||
AC_DEFINE([_NETBSD_SOURCE], [1],
|
||||
[Define to 1 to make NetBSD features available. MINIX 3 needs this.])
|
||||
fi
|
||||
|
||||
dnl Use a different key than __EXTENSIONS__, as that name broke existing
|
||||
dnl configure.ac when using autoheader 2.62.
|
||||
AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
|
||||
[/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on macOS. */
|
||||
#ifndef _DARWIN_C_SOURCE
|
||||
# undef _DARWIN_C_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable NetBSD extensions on NetBSD. */
|
||||
#ifndef _NETBSD_SOURCE
|
||||
# undef _NETBSD_SOURCE
|
||||
#endif
|
||||
/* Enable OpenBSD extensions on NetBSD. */
|
||||
#ifndef _OPENBSD_SOURCE
|
||||
# undef _OPENBSD_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TS 18661-5:2014. */
|
||||
#ifndef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
|
||||
# undef __STDC_WANT_IEC_60559_ATTRIBS_EXT__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TS 18661-1:2014. */
|
||||
#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
# undef __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TS 18661-2:2015. */
|
||||
#ifndef __STDC_WANT_IEC_60559_DFP_EXT__
|
||||
# undef __STDC_WANT_IEC_60559_DFP_EXT__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TS 18661-4:2015. */
|
||||
#ifndef __STDC_WANT_IEC_60559_FUNCS_EXT__
|
||||
# undef __STDC_WANT_IEC_60559_FUNCS_EXT__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TS 18661-3:2015. */
|
||||
#ifndef __STDC_WANT_IEC_60559_TYPES_EXT__
|
||||
# undef __STDC_WANT_IEC_60559_TYPES_EXT__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC TR 24731-2:2010. */
|
||||
#ifndef __STDC_WANT_LIB_EXT2__
|
||||
# undef __STDC_WANT_LIB_EXT2__
|
||||
#endif
|
||||
/* Enable extensions specified by ISO/IEC 24747:2009. */
|
||||
#ifndef __STDC_WANT_MATH_SPEC_FUNCS__
|
||||
# undef __STDC_WANT_MATH_SPEC_FUNCS__
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable X/Open extensions if necessary. HP-UX 11.11 defines
|
||||
mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
|
||||
whether compiling with -Ae or -D_HPUX_SOURCE=1. */
|
||||
#ifndef _XOPEN_SOURCE
|
||||
# undef _XOPEN_SOURCE
|
||||
#endif
|
||||
/* Enable X/Open compliant socket functions that do not require linking
|
||||
with -lxnet on HP-UX 11.11. */
|
||||
#ifndef _HPUX_ALT_XOPEN_SOCKET_API
|
||||
# undef _HPUX_ALT_XOPEN_SOCKET_API
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
])
|
||||
AC_CACHE_CHECK([whether it is safe to define __EXTENSIONS__],
|
||||
[ac_cv_safe_to_define___extensions__],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[
|
||||
# define __EXTENSIONS__ 1
|
||||
]AC_INCLUDES_DEFAULT])],
|
||||
[ac_cv_safe_to_define___extensions__=yes],
|
||||
[ac_cv_safe_to_define___extensions__=no])])
|
||||
test $ac_cv_safe_to_define___extensions__ = yes &&
|
||||
AC_DEFINE([__EXTENSIONS__])
|
||||
AC_DEFINE([_ALL_SOURCE])
|
||||
AC_DEFINE([_DARWIN_C_SOURCE])
|
||||
AC_DEFINE([_GNU_SOURCE])
|
||||
AC_DEFINE([_NETBSD_SOURCE])
|
||||
AC_DEFINE([_OPENBSD_SOURCE])
|
||||
AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
|
||||
AC_DEFINE([__STDC_WANT_IEC_60559_ATTRIBS_EXT__])
|
||||
AC_DEFINE([__STDC_WANT_IEC_60559_BFP_EXT__])
|
||||
AC_DEFINE([__STDC_WANT_IEC_60559_DFP_EXT__])
|
||||
AC_DEFINE([__STDC_WANT_IEC_60559_FUNCS_EXT__])
|
||||
AC_DEFINE([__STDC_WANT_IEC_60559_TYPES_EXT__])
|
||||
AC_DEFINE([__STDC_WANT_LIB_EXT2__])
|
||||
AC_DEFINE([__STDC_WANT_MATH_SPEC_FUNCS__])
|
||||
AC_DEFINE([_TANDEM_SOURCE])
|
||||
AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined],
|
||||
[ac_cv_should_define__xopen_source],
|
||||
[ac_cv_should_define__xopen_source=no
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[
|
||||
#include <wchar.h>
|
||||
mbstate_t x;]])],
|
||||
[],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[
|
||||
#define _XOPEN_SOURCE 500
|
||||
#include <wchar.h>
|
||||
mbstate_t x;]])],
|
||||
[ac_cv_should_define__xopen_source=yes])])])
|
||||
test $ac_cv_should_define__xopen_source = yes &&
|
||||
AC_DEFINE([_XOPEN_SOURCE], [500])
|
||||
AC_DEFINE([_HPUX_ALT_XOPEN_SOCKET_API])
|
||||
])# AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
# gl_USE_SYSTEM_EXTENSIONS
|
||||
# ------------------------
|
||||
# Enable extensions on systems that normally disable them,
|
||||
# typically due to standards-conformance issues.
|
||||
AC_DEFUN_ONCE([gl_USE_SYSTEM_EXTENSIONS],
|
||||
[
|
||||
dnl Require this macro before AC_USE_SYSTEM_EXTENSIONS.
|
||||
dnl gnulib does not need it. But if it gets required by third-party macros
|
||||
dnl after AC_USE_SYSTEM_EXTENSIONS is required, autoconf 2.62..2.63 emit a
|
||||
dnl warning: "AC_COMPILE_IFELSE was called before AC_USE_SYSTEM_EXTENSIONS".
|
||||
dnl Note: We can do this only for one of the macros AC_AIX, AC_GNU_SOURCE,
|
||||
dnl AC_MINIX. If people still use AC_AIX or AC_MINIX, they are out of luck.
|
||||
AC_REQUIRE([AC_GNU_SOURCE])
|
||||
|
||||
AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
|
||||
])
|
||||
102
m4/extern-inline.m4
Normal file
102
m4/extern-inline.m4
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
dnl 'extern inline' a la ISO C99.
|
||||
|
||||
dnl Copyright 2012-2018 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_EXTERN_INLINE],
|
||||
[
|
||||
AH_VERBATIM([extern_inline],
|
||||
[/* Please see the Gnulib manual for how to use these macros.
|
||||
|
||||
Suppress extern inline with HP-UX cc, as it appears to be broken; see
|
||||
<https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
|
||||
|
||||
Suppress extern inline with Sun C in standards-conformance mode, as it
|
||||
mishandles inline functions that call each other. E.g., for 'inline void f
|
||||
(void) { } inline void g (void) { f (); }', c99 incorrectly complains
|
||||
'reference to static identifier "f" in extern inline function'.
|
||||
This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
|
||||
|
||||
Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
|
||||
on configurations that mistakenly use 'static inline' to implement
|
||||
functions or macros in standard C headers like <ctype.h>. For example,
|
||||
if isdigit is mistakenly implemented via a static inline function,
|
||||
a program containing an extern inline function that calls isdigit
|
||||
may not work since the C standard prohibits extern inline functions
|
||||
from calling static functions. This bug is known to occur on:
|
||||
|
||||
OS X 10.8 and earlier; see:
|
||||
https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
|
||||
|
||||
DragonFly; see
|
||||
http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
|
||||
|
||||
FreeBSD; see:
|
||||
https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
|
||||
|
||||
OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
|
||||
for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
|
||||
Assume DragonFly and FreeBSD will be similar. */
|
||||
#if (((defined __APPLE__ && defined __MACH__) \
|
||||
|| defined __DragonFly__ || defined __FreeBSD__) \
|
||||
&& (defined __header_inline \
|
||||
? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
|
||||
&& ! defined __clang__) \
|
||||
: ((! defined _DONT_USE_CTYPE_INLINE_ \
|
||||
&& (defined __GNUC__ || defined __cplusplus)) \
|
||||
|| (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
|
||||
&& defined __GNUC__ && ! defined __cplusplus))))
|
||||
# define _GL_EXTERN_INLINE_STDHEADER_BUG
|
||||
#endif
|
||||
#if ((__GNUC__ \
|
||||
? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
|
||||
: (199901L <= __STDC_VERSION__ \
|
||||
&& !defined __HP_cc \
|
||||
&& !defined __PGI \
|
||||
&& !(defined __SUNPRO_C && __STDC__))) \
|
||||
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
|
||||
# define _GL_INLINE inline
|
||||
# define _GL_EXTERN_INLINE extern inline
|
||||
# define _GL_EXTERN_INLINE_IN_USE
|
||||
#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
|
||||
&& !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
|
||||
# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
|
||||
/* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
|
||||
# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
|
||||
# else
|
||||
# define _GL_INLINE extern inline
|
||||
# endif
|
||||
# define _GL_EXTERN_INLINE extern
|
||||
# define _GL_EXTERN_INLINE_IN_USE
|
||||
#else
|
||||
# define _GL_INLINE static _GL_UNUSED
|
||||
# define _GL_EXTERN_INLINE static _GL_UNUSED
|
||||
#endif
|
||||
|
||||
/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
|
||||
suppress bogus "no previous prototype for 'FOO'"
|
||||
and "no previous declaration for 'FOO'" diagnostics,
|
||||
when FOO is an inline function in the header; see
|
||||
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
|
||||
<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
|
||||
#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
|
||||
# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
|
||||
# define _GL_INLINE_HEADER_CONST_PRAGMA
|
||||
# else
|
||||
# define _GL_INLINE_HEADER_CONST_PRAGMA \
|
||||
_Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
|
||||
# endif
|
||||
# define _GL_INLINE_HEADER_BEGIN \
|
||||
_Pragma ("GCC diagnostic push") \
|
||||
_Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
|
||||
_Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
|
||||
_GL_INLINE_HEADER_CONST_PRAGMA
|
||||
# define _GL_INLINE_HEADER_END \
|
||||
_Pragma ("GCC diagnostic pop")
|
||||
#else
|
||||
# define _GL_INLINE_HEADER_BEGIN
|
||||
# define _GL_INLINE_HEADER_END
|
||||
#endif])
|
||||
])
|
||||
108
m4/float_h.m4
Normal file
108
m4/float_h.m4
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
# float_h.m4 serial 12
|
||||
dnl Copyright (C) 2007, 2009-2018 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])
|
||||
FLOAT_H=
|
||||
REPLACE_FLOAT_LDBL=0
|
||||
case "$host_os" in
|
||||
aix* | beos* | openbsd* | mirbsd* | irix*)
|
||||
FLOAT_H=float.h
|
||||
;;
|
||||
freebsd* | dragonfly*)
|
||||
case "$host_cpu" in
|
||||
changequote(,)dnl
|
||||
i[34567]86 )
|
||||
changequote([,])dnl
|
||||
FLOAT_H=float.h
|
||||
;;
|
||||
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
|
||||
]])],
|
||||
[],
|
||||
[FLOAT_H=float.h])
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
linux*)
|
||||
case "$host_cpu" in
|
||||
powerpc*)
|
||||
FLOAT_H=float.h
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
case "$host_os" in
|
||||
aix* | freebsd* | dragonfly* | linux*)
|
||||
if test -n "$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.
|
||||
FLOAT_H=float.h
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -n "$FLOAT_H"; then
|
||||
gl_NEXT_HEADERS([float.h])
|
||||
fi
|
||||
AC_SUBST([FLOAT_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_FLOAT_H], [test -n "$FLOAT_H"])
|
||||
AC_SUBST([REPLACE_ITOLD])
|
||||
])
|
||||
54
m4/fpieee.m4
Normal file
54
m4/fpieee.m4
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# fpieee.m4 serial 2 -*- coding: utf-8 -*-
|
||||
dnl Copyright (C) 2007, 2009-2018 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 IEEE 754 standardized three items:
|
||||
dnl - The formats of single-float and double-float - nowadays commonly
|
||||
dnl available as 'float' and 'double' in C and C++.
|
||||
dnl No autoconf test needed.
|
||||
dnl - The overflow and division by zero behaviour: The result are values
|
||||
dnl '±Inf' and 'NaN', rather than exceptions as it was before.
|
||||
dnl This file provides an autoconf macro for ensuring this behaviour of
|
||||
dnl floating-point operations.
|
||||
dnl - A set of conditions (overflow, underflow, inexact, etc.) which can
|
||||
dnl be configured to trigger an exception.
|
||||
dnl This cannot be done in a portable way: it depends on the compiler,
|
||||
dnl libc, kernel, and CPU. No autoconf macro is provided for this.
|
||||
|
||||
dnl Ensure non-trapping behaviour of floating-point overflow and
|
||||
dnl floating-point division by zero.
|
||||
dnl (For integer overflow, see gcc's -ftrapv option; for integer division by
|
||||
dnl zero, see the autoconf macro in intdiv0.m4.)
|
||||
|
||||
AC_DEFUN([gl_FP_IEEE],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
# IEEE behaviour is the default on all CPUs except Alpha and SH
|
||||
# (according to the test results of Bruno Haible's ieeefp/fenv_default.m4
|
||||
# and the GCC 4.1.2 manual).
|
||||
case "$host_cpu" in
|
||||
alpha*)
|
||||
# On Alpha systems, a compiler option provides the behaviour.
|
||||
# See the ieee(3) manual page, also available at
|
||||
# <https://backdrift.org/man/tru64/man3/ieee.3.html>
|
||||
if test -n "$GCC"; then
|
||||
# GCC has the option -mieee.
|
||||
# For full IEEE compliance (rarely needed), use option -mieee-with-inexact.
|
||||
CPPFLAGS="$CPPFLAGS -mieee"
|
||||
else
|
||||
# Compaq (ex-DEC) C has the option -ieee, equivalent to -ieee_with_no_inexact.
|
||||
# For full IEEE compliance (rarely needed), use option -ieee_with_inexact.
|
||||
CPPFLAGS="$CPPFLAGS -ieee"
|
||||
fi
|
||||
;;
|
||||
sh*)
|
||||
if test -n "$GCC"; then
|
||||
# GCC has the option -mieee.
|
||||
CPPFLAGS="$CPPFLAGS -mieee"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
])
|
||||
110
m4/fprintf-posix.m4
Normal file
110
m4/fprintf-posix.m4
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# fprintf-posix.m4 serial 14
|
||||
dnl Copyright (C) 2007-2018 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_FPRINTF_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_fprintf_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)
|
||||
# fprintf exists and is
|
||||
# already POSIX compliant.
|
||||
gl_cv_func_fprintf_posix=yes
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
if test $gl_cv_func_fprintf_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_FPRINTF
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_REPLACE_FPRINTF],
|
||||
[
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
AC_LIBOBJ([fprintf])
|
||||
REPLACE_FPRINTF=1
|
||||
AC_DEFINE([REPLACE_FPRINTF_POSIX], [1],
|
||||
[Define if fprintf is overridden by a POSIX compliant gnulib implementation.])
|
||||
gl_PREREQ_FPRINTF
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_PREREQ_FPRINTF], [:])
|
||||
181
m4/frexp.m4
Normal file
181
m4/frexp.m4
Normal file
|
|
@ -0,0 +1,181 @@
|
|||
# frexp.m4 serial 16
|
||||
dnl Copyright (C) 2007-2018 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
|
||||
])
|
||||
])
|
||||
])
|
||||
231
m4/frexpl.m4
Normal file
231
m4/frexpl.m4
Normal file
|
|
@ -0,0 +1,231 @@
|
|||
# frexpl.m4 serial 21
|
||||
dnl Copyright (C) 2007-2018 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 *);
|
||||
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. */
|
||||
x = 1.0L / 0.0L;
|
||||
{
|
||||
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
|
||||
])
|
||||
])
|
||||
])
|
||||
10
m4/fseterr.m4
Normal file
10
m4/fseterr.m4
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
# fseterr.m4 serial 1
|
||||
dnl Copyright (C) 2012-2018 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],
|
||||
[
|
||||
AC_CHECK_FUNCS_ONCE([__fseterr])
|
||||
])
|
||||
14
m4/getrusage.m4
Normal file
14
m4/getrusage.m4
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
# getrusage.m4 serial 1
|
||||
dnl Copyright (C) 2012-2018 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_GETRUSAGE],
|
||||
[
|
||||
AC_REQUIRE([gl_SYS_RESOURCE_H_DEFAULTS])
|
||||
AC_CHECK_FUNCS_ONCE([getrusage])
|
||||
if test $ac_cv_func_getrusage = no; then
|
||||
HAVE_GETRUSAGE=0
|
||||
fi
|
||||
])
|
||||
52
m4/gnulib-cache.m4
Normal file
52
m4/gnulib-cache.m4
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This file is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this file. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License,
|
||||
# this file may be distributed as part of a program that
|
||||
# contains a configuration script generated by Autoconf, under
|
||||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
#
|
||||
# This file represents the specification of how gnulib-tool is used.
|
||||
# It acts as a cache: It is written and read by gnulib-tool.
|
||||
# In projects that use version control, this file is meant to be put under
|
||||
# version control, like the configure.ac and various Makefile.am files.
|
||||
|
||||
|
||||
# Specification in the form of a command-line invocation:
|
||||
# gnulib-tool --import --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=autotools --no-conditional-dependencies --libtool --macro-prefix=gl --no-vc-files fprintf-posix getrusage sys_resource sys_time
|
||||
|
||||
# Specification in the form of a few gnulib-tool.m4 macro invocations:
|
||||
gl_LOCAL_DIR([])
|
||||
gl_MODULES([
|
||||
fprintf-posix
|
||||
getrusage
|
||||
sys_resource
|
||||
sys_time
|
||||
])
|
||||
gl_AVOID([])
|
||||
gl_SOURCE_BASE([lib])
|
||||
gl_M4_BASE([m4])
|
||||
gl_PO_BASE([])
|
||||
gl_DOC_BASE([doc])
|
||||
gl_TESTS_BASE([tests])
|
||||
gl_LIB([libgnu])
|
||||
gl_MAKEFILE_NAME([])
|
||||
gl_LIBTOOL
|
||||
gl_MACRO_PREFIX([gl])
|
||||
gl_PO_DOMAIN([])
|
||||
gl_WITNESS_C_MACRO([])
|
||||
gl_VC_FILES([false])
|
||||
474
m4/gnulib-common.m4
Normal file
474
m4/gnulib-common.m4
Normal file
|
|
@ -0,0 +1,474 @@
|
|||
# gnulib-common.m4 serial 39
|
||||
dnl Copyright (C) 2007-2018 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.
|
||||
|
||||
# gl_COMMON
|
||||
# is expanded unconditionally through gnulib-tool magic.
|
||||
AC_DEFUN([gl_COMMON], [
|
||||
dnl Use AC_REQUIRE here, so that the code is expanded once only.
|
||||
AC_REQUIRE([gl_00GNULIB])
|
||||
AC_REQUIRE([gl_COMMON_BODY])
|
||||
])
|
||||
AC_DEFUN([gl_COMMON_BODY], [
|
||||
AH_VERBATIM([_Noreturn],
|
||||
[/* The _Noreturn keyword of C11. */
|
||||
#if ! (defined _Noreturn \
|
||||
|| (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
|
||||
# if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \
|
||||
|| 0x5110 <= __SUNPRO_C)
|
||||
# define _Noreturn __attribute__ ((__noreturn__))
|
||||
# elif defined _MSC_VER && 1200 <= _MSC_VER
|
||||
# define _Noreturn __declspec (noreturn)
|
||||
# else
|
||||
# define _Noreturn
|
||||
# endif
|
||||
#endif
|
||||
])
|
||||
AH_VERBATIM([isoc99_inline],
|
||||
[/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
|
||||
the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
|
||||
earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
|
||||
__APPLE__ && __MACH__ test for Mac OS X.
|
||||
__APPLE_CC__ tests for the Apple compiler and its version.
|
||||
__STDC_VERSION__ tests for the C99 mode. */
|
||||
#if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
|
||||
# define __GNUC_STDC_INLINE__ 1
|
||||
#endif])
|
||||
AH_VERBATIM([unused_parameter],
|
||||
[/* Define as a marker that can be attached to declarations that might not
|
||||
be used. This helps to reduce warnings, such as from
|
||||
GCC -Wunused-parameter. */
|
||||
#if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
|
||||
# define _GL_UNUSED __attribute__ ((__unused__))
|
||||
#else
|
||||
# define _GL_UNUSED
|
||||
#endif
|
||||
/* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name
|
||||
is a misnomer outside of parameter lists. */
|
||||
#define _UNUSED_PARAMETER_ _GL_UNUSED
|
||||
|
||||
/* gcc supports the "unused" attribute on possibly unused labels, and
|
||||
g++ has since version 4.5. Note to support C++ as well as C,
|
||||
_GL_UNUSED_LABEL should be used with a trailing ; */
|
||||
#if !defined __cplusplus || __GNUC__ > 4 \
|
||||
|| (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
|
||||
# define _GL_UNUSED_LABEL _GL_UNUSED
|
||||
#else
|
||||
# define _GL_UNUSED_LABEL
|
||||
#endif
|
||||
|
||||
/* The __pure__ attribute was added in gcc 2.96. */
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
|
||||
# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
|
||||
#else
|
||||
# define _GL_ATTRIBUTE_PURE /* empty */
|
||||
#endif
|
||||
|
||||
/* The __const__ attribute was added in gcc 2.95. */
|
||||
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
|
||||
# define _GL_ATTRIBUTE_CONST __attribute__ ((__const__))
|
||||
#else
|
||||
# define _GL_ATTRIBUTE_CONST /* empty */
|
||||
#endif
|
||||
|
||||
/* The __malloc__ attribute was added in gcc 3. */
|
||||
#if 3 <= __GNUC__
|
||||
# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
|
||||
#else
|
||||
# define _GL_ATTRIBUTE_MALLOC /* empty */
|
||||
#endif
|
||||
])
|
||||
dnl Preparation for running test programs:
|
||||
dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not
|
||||
dnl to /dev/tty, so they can be redirected to log files. Such diagnostics
|
||||
dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N.
|
||||
LIBC_FATAL_STDERR_=1
|
||||
export LIBC_FATAL_STDERR_
|
||||
])
|
||||
|
||||
# gl_MODULE_INDICATOR_CONDITION
|
||||
# expands to a C preprocessor expression that evaluates to 1 or 0, depending
|
||||
# whether a gnulib module that has been requested shall be considered present
|
||||
# or not.
|
||||
m4_define([gl_MODULE_INDICATOR_CONDITION], [1])
|
||||
|
||||
# gl_MODULE_INDICATOR_SET_VARIABLE([modulename])
|
||||
# sets the shell variable that indicates the presence of the given module to
|
||||
# a C preprocessor expression that will evaluate to 1.
|
||||
AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE],
|
||||
[
|
||||
gl_MODULE_INDICATOR_SET_VARIABLE_AUX(
|
||||
[GNULIB_[]m4_translit([[$1]],
|
||||
[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])],
|
||||
[gl_MODULE_INDICATOR_CONDITION])
|
||||
])
|
||||
|
||||
# gl_MODULE_INDICATOR_SET_VARIABLE_AUX([variable])
|
||||
# modifies the shell variable to include the gl_MODULE_INDICATOR_CONDITION.
|
||||
# The shell variable's value is a C preprocessor expression that evaluates
|
||||
# to 0 or 1.
|
||||
AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX],
|
||||
[
|
||||
m4_if(m4_defn([gl_MODULE_INDICATOR_CONDITION]), [1],
|
||||
[
|
||||
dnl Simplify the expression VALUE || 1 to 1.
|
||||
$1=1
|
||||
],
|
||||
[gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([$1],
|
||||
[gl_MODULE_INDICATOR_CONDITION])])
|
||||
])
|
||||
|
||||
# gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR([variable], [condition])
|
||||
# modifies the shell variable to include the given condition. The shell
|
||||
# variable's value is a C preprocessor expression that evaluates to 0 or 1.
|
||||
AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE_AUX_OR],
|
||||
[
|
||||
dnl Simplify the expression 1 || CONDITION to 1.
|
||||
if test "$[]$1" != 1; then
|
||||
dnl Simplify the expression 0 || CONDITION to CONDITION.
|
||||
if test "$[]$1" = 0; then
|
||||
$1=$2
|
||||
else
|
||||
$1="($[]$1 || $2)"
|
||||
fi
|
||||
fi
|
||||
])
|
||||
|
||||
# gl_MODULE_INDICATOR([modulename])
|
||||
# defines a C macro indicating the presence of the given module
|
||||
# in a location where it can be used.
|
||||
# | Value | Value |
|
||||
# | in lib/ | in tests/ |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module present among main modules: | 1 | 1 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module present among tests-related modules: | 0 | 1 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module not present at all: | 0 | 0 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
AC_DEFUN([gl_MODULE_INDICATOR],
|
||||
[
|
||||
AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]],
|
||||
[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]),
|
||||
[gl_MODULE_INDICATOR_CONDITION],
|
||||
[Define to a C preprocessor expression that evaluates to 1 or 0,
|
||||
depending whether the gnulib module $1 shall be considered present.])
|
||||
])
|
||||
|
||||
# gl_MODULE_INDICATOR_FOR_TESTS([modulename])
|
||||
# defines a C macro indicating the presence of the given module
|
||||
# in lib or tests. This is useful to determine whether the module
|
||||
# should be tested.
|
||||
# | Value | Value |
|
||||
# | in lib/ | in tests/ |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module present among main modules: | 1 | 1 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module present among tests-related modules: | 1 | 1 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
# Module not present at all: | 0 | 0 |
|
||||
# --------------------------------------------+---------+-----------+
|
||||
AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS],
|
||||
[
|
||||
AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]],
|
||||
[abcdefghijklmnopqrstuvwxyz./-],
|
||||
[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
|
||||
[Define to 1 when the gnulib module $1 should be tested.])
|
||||
])
|
||||
|
||||
# gl_ASSERT_NO_GNULIB_POSIXCHECK
|
||||
# asserts that there will never be a need to #define GNULIB_POSIXCHECK.
|
||||
# and thereby enables an optimization of configure and config.h.
|
||||
# Used by Emacs.
|
||||
AC_DEFUN([gl_ASSERT_NO_GNULIB_POSIXCHECK],
|
||||
[
|
||||
dnl Override gl_WARN_ON_USE_PREPARE.
|
||||
dnl But hide this definition from 'aclocal'.
|
||||
AC_DEFUN([gl_W][ARN_ON_USE_PREPARE], [])
|
||||
])
|
||||
|
||||
# gl_ASSERT_NO_GNULIB_TESTS
|
||||
# asserts that there will be no gnulib tests in the scope of the configure.ac
|
||||
# and thereby enables an optimization of config.h.
|
||||
# Used by Emacs.
|
||||
AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS],
|
||||
[
|
||||
dnl Override gl_MODULE_INDICATOR_FOR_TESTS.
|
||||
AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], [])
|
||||
])
|
||||
|
||||
# Test whether <features.h> exists.
|
||||
# Set HAVE_FEATURES_H.
|
||||
AC_DEFUN([gl_FEATURES_H],
|
||||
[
|
||||
AC_CHECK_HEADERS_ONCE([features.h])
|
||||
if test $ac_cv_header_features_h = yes; then
|
||||
HAVE_FEATURES_H=1
|
||||
else
|
||||
HAVE_FEATURES_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_FEATURES_H])
|
||||
])
|
||||
|
||||
# m4_foreach_w
|
||||
# is a backport of autoconf-2.59c's m4_foreach_w.
|
||||
# Remove this macro when we can assume autoconf >= 2.60.
|
||||
m4_ifndef([m4_foreach_w],
|
||||
[m4_define([m4_foreach_w],
|
||||
[m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
|
||||
|
||||
# AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH])
|
||||
# ----------------------------------------------------
|
||||
# Backport of autoconf-2.63b's macro.
|
||||
# Remove this macro when we can assume autoconf >= 2.64.
|
||||
m4_ifndef([AS_VAR_IF],
|
||||
[m4_define([AS_VAR_IF],
|
||||
[AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])])
|
||||
|
||||
# gl_PROG_CC_C99
|
||||
# Modifies the value of the shell variable CC in an attempt to make $CC
|
||||
# understand ISO C99 source code.
|
||||
# This is like AC_PROG_CC_C99, except that
|
||||
# - AC_PROG_CC_C99 did not exist in Autoconf versions < 2.60,
|
||||
# - AC_PROG_CC_C99 does not mix well with AC_PROG_CC_STDC
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00367.html>,
|
||||
# but many more packages use AC_PROG_CC_STDC than AC_PROG_CC_C99
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00441.html>.
|
||||
# Remaining problems:
|
||||
# - When AC_PROG_CC_STDC is invoked twice, it adds the C99 enabling options
|
||||
# to CC twice
|
||||
# <https://lists.gnu.org/r/bug-gnulib/2011-09/msg00431.html>.
|
||||
# - AC_PROG_CC_STDC is likely to change now that C11 is an ISO standard.
|
||||
AC_DEFUN([gl_PROG_CC_C99],
|
||||
[
|
||||
dnl Change that version number to the minimum Autoconf version that supports
|
||||
dnl mixing AC_PROG_CC_C99 calls with AC_PROG_CC_STDC calls.
|
||||
m4_version_prereq([9.0],
|
||||
[AC_REQUIRE([AC_PROG_CC_C99])],
|
||||
[AC_REQUIRE([AC_PROG_CC_STDC])])
|
||||
])
|
||||
|
||||
# gl_PROG_AR_RANLIB
|
||||
# Determines the values for AR, ARFLAGS, RANLIB that fit with the compiler.
|
||||
# The user can set the variables AR, ARFLAGS, RANLIB if he wants to override
|
||||
# the values.
|
||||
AC_DEFUN([gl_PROG_AR_RANLIB],
|
||||
[
|
||||
dnl Minix 3 comes with two toolchains: The Amsterdam Compiler Kit compiler
|
||||
dnl as "cc", and GCC as "gcc". They have different object file formats and
|
||||
dnl library formats. In particular, the GNU binutils programs ar and ranlib
|
||||
dnl produce libraries that work only with gcc, not with cc.
|
||||
AC_REQUIRE([AC_PROG_CC])
|
||||
dnl The '][' hides this use from 'aclocal'.
|
||||
AC_BEFORE([$0], [A][M_PROG_AR])
|
||||
AC_CACHE_CHECK([for Minix Amsterdam compiler], [gl_cv_c_amsterdam_compiler],
|
||||
[
|
||||
AC_EGREP_CPP([Amsterdam],
|
||||
[
|
||||
#ifdef __ACK__
|
||||
Amsterdam
|
||||
#endif
|
||||
],
|
||||
[gl_cv_c_amsterdam_compiler=yes],
|
||||
[gl_cv_c_amsterdam_compiler=no])
|
||||
])
|
||||
|
||||
dnl Don't compete with AM_PROG_AR's decision about AR/ARFLAGS if we are not
|
||||
dnl building with __ACK__.
|
||||
if test $gl_cv_c_amsterdam_compiler = yes; then
|
||||
if test -z "$AR"; then
|
||||
AR='cc -c.a'
|
||||
fi
|
||||
if test -z "$ARFLAGS"; then
|
||||
ARFLAGS='-o'
|
||||
fi
|
||||
else
|
||||
dnl AM_PROG_AR was added in automake v1.11.2. AM_PROG_AR does not AC_SUBST
|
||||
dnl ARFLAGS variable (it is filed into Makefile.in directly by automake
|
||||
dnl script on-demand, if not specified by ./configure of course).
|
||||
dnl Don't AC_REQUIRE the AM_PROG_AR otherwise the code for __ACK__ above
|
||||
dnl will be ignored. Also, pay attention to call AM_PROG_AR in else block
|
||||
dnl because AM_PROG_AR is written so it could re-set AR variable even for
|
||||
dnl __ACK__. It may seem like its easier to avoid calling the macro here,
|
||||
dnl but we need to AC_SUBST both AR/ARFLAGS (thus those must have some good
|
||||
dnl default value and automake should usually know them).
|
||||
dnl
|
||||
dnl The '][' hides this use from 'aclocal'.
|
||||
m4_ifdef([A][M_PROG_AR], [A][M_PROG_AR], [:])
|
||||
fi
|
||||
|
||||
dnl In case the code above has not helped with setting AR/ARFLAGS, use
|
||||
dnl Automake-documented default values for AR and ARFLAGS, but prefer
|
||||
dnl ${host}-ar over ar (useful for cross-compiling).
|
||||
AC_CHECK_TOOL([AR], [ar], [ar])
|
||||
if test -z "$ARFLAGS"; then
|
||||
ARFLAGS='cr'
|
||||
fi
|
||||
|
||||
AC_SUBST([AR])
|
||||
AC_SUBST([ARFLAGS])
|
||||
if test -z "$RANLIB"; then
|
||||
if test $gl_cv_c_amsterdam_compiler = yes; then
|
||||
RANLIB=':'
|
||||
else
|
||||
dnl Use the ranlib program if it is available.
|
||||
AC_PROG_RANLIB
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([RANLIB])
|
||||
])
|
||||
|
||||
# AC_PROG_MKDIR_P
|
||||
# is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix
|
||||
# for interoperability with automake-1.9.6 from autoconf-2.62.
|
||||
# Remove this macro when we can assume autoconf >= 2.62 or
|
||||
# autoconf >= 2.60 && automake >= 1.10.
|
||||
# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],[
|
||||
m4_ifdef([AC_PROG_MKDIR_P], [
|
||||
dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
|
||||
m4_define([AC_PROG_MKDIR_P],
|
||||
m4_defn([AC_PROG_MKDIR_P])[
|
||||
AC_SUBST([MKDIR_P])])], [
|
||||
dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P.
|
||||
AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
|
||||
[AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
|
||||
MKDIR_P='$(mkdir_p)'
|
||||
AC_SUBST([MKDIR_P])])])
|
||||
])
|
||||
|
||||
# AC_C_RESTRICT
|
||||
# This definition is copied from post-2.69 Autoconf and overrides the
|
||||
# AC_C_RESTRICT macro from autoconf 2.60..2.69. It can be removed
|
||||
# once autoconf >= 2.70 can be assumed. It's painful to check version
|
||||
# numbers, and in practice this macro is more up-to-date than Autoconf
|
||||
# is, so override Autoconf unconditionally.
|
||||
AC_DEFUN([AC_C_RESTRICT],
|
||||
[AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
|
||||
[ac_cv_c_restrict=no
|
||||
# The order here caters to the fact that C++ does not require restrict.
|
||||
for ac_kw in __restrict __restrict__ _Restrict restrict; do
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[typedef int *int_ptr;
|
||||
int foo (int_ptr $ac_kw ip) { return ip[0]; }
|
||||
int bar (int [$ac_kw]); /* Catch GCC bug 14050. */
|
||||
int bar (int ip[$ac_kw]) { return ip[0]; }
|
||||
]],
|
||||
[[int s[1];
|
||||
int *$ac_kw t = s;
|
||||
t[0] = 0;
|
||||
return foo (t) + bar (t);
|
||||
]])],
|
||||
[ac_cv_c_restrict=$ac_kw])
|
||||
test "$ac_cv_c_restrict" != no && break
|
||||
done
|
||||
])
|
||||
AH_VERBATIM([restrict],
|
||||
[/* Define to the equivalent of the C99 'restrict' keyword, or to
|
||||
nothing if this is not supported. Do not define if restrict is
|
||||
supported directly. */
|
||||
#undef restrict
|
||||
/* Work around a bug in Sun C++: it does not support _Restrict or
|
||||
__restrict__, even though the corresponding Sun C compiler ends up with
|
||||
"#define restrict _Restrict" or "#define restrict __restrict__" in the
|
||||
previous line. Perhaps some future version of Sun C++ will work with
|
||||
restrict; if so, hopefully it defines __RESTRICT like Sun C does. */
|
||||
#if defined __SUNPRO_CC && !defined __RESTRICT
|
||||
# define _Restrict
|
||||
# define __restrict__
|
||||
#endif])
|
||||
case $ac_cv_c_restrict in
|
||||
restrict) ;;
|
||||
no) AC_DEFINE([restrict], []) ;;
|
||||
*) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
|
||||
esac
|
||||
])# AC_C_RESTRICT
|
||||
|
||||
# gl_BIGENDIAN
|
||||
# is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
|
||||
# Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
|
||||
# macros invoke AC_C_BIGENDIAN with arguments.
|
||||
AC_DEFUN([gl_BIGENDIAN],
|
||||
[
|
||||
AC_C_BIGENDIAN
|
||||
])
|
||||
|
||||
# gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
|
||||
# is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
|
||||
# output a spurious "(cached)" mark in the midst of other configure output.
|
||||
# This macro should be used instead of AC_CACHE_VAL when it is not surrounded
|
||||
# by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
|
||||
AC_DEFUN([gl_CACHE_VAL_SILENT],
|
||||
[
|
||||
saved_as_echo_n="$as_echo_n"
|
||||
as_echo_n=':'
|
||||
AC_CACHE_VAL([$1], [$2])
|
||||
as_echo_n="$saved_as_echo_n"
|
||||
])
|
||||
|
||||
# AS_VAR_COPY was added in autoconf 2.63b
|
||||
m4_define_default([AS_VAR_COPY],
|
||||
[AS_LITERAL_IF([$1[]$2], [$1=$$2], [eval $1=\$$2])])
|
||||
|
||||
# AC_PROG_SED was added in autoconf 2.59b
|
||||
m4_ifndef([AC_PROG_SED],
|
||||
[AC_DEFUN([AC_PROG_SED],
|
||||
[AC_CACHE_CHECK([for a sed that does not truncate output], ac_cv_path_SED,
|
||||
[dnl ac_script should not contain more than 99 commands (for HP-UX sed),
|
||||
dnl but more than about 7000 bytes, to catch a limit in Solaris 8 /usr/ucb/sed.
|
||||
ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
|
||||
for ac_i in 1 2 3 4 5 6 7; do
|
||||
ac_script="$ac_script$as_nl$ac_script"
|
||||
done
|
||||
echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
|
||||
AS_UNSET([ac_script])
|
||||
if test -z "$SED"; then
|
||||
ac_path_SED_found=false
|
||||
_AS_PATH_WALK([], [
|
||||
for ac_prog in sed gsed; do
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
|
||||
AS_EXECUTABLE_P(["$ac_path_SED"]) || continue
|
||||
case `"$ac_path_SED" --version 2>&1` in
|
||||
*GNU*) ac_cv_path_SED=$ac_path_SED ac_path_SED_found=:;;
|
||||
*)
|
||||
ac_count=0
|
||||
_AS_ECHO_N([0123456789]) >conftest.in
|
||||
while :
|
||||
do
|
||||
cat conftest.in conftest.in >conftest.tmp
|
||||
mv conftest.tmp conftest.in
|
||||
cp conftest.in conftest.nl
|
||||
echo >> conftest.nl
|
||||
"$ac_path_SED" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
|
||||
diff conftest.out conftest.nl >/dev/null 2>&1 || break
|
||||
ac_count=`expr $ac_count + 1`
|
||||
if test $ac_count -gt ${ac_path_SED_max-0}; then
|
||||
# Best so far, but keep looking for better
|
||||
ac_cv_path_SED=$ac_path_SED
|
||||
ac_path_SED_max=$ac_count
|
||||
fi
|
||||
test $ac_count -gt 10 && break
|
||||
done
|
||||
rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
|
||||
esac
|
||||
$ac_path_SED_found && break 3
|
||||
done
|
||||
done])
|
||||
if test -z "$ac_cv_path_SED"; then
|
||||
AC_ERROR([no acceptable sed could be found in \$PATH])
|
||||
fi
|
||||
else
|
||||
ac_cv_path_SED=$SED
|
||||
fi
|
||||
])
|
||||
SED="$ac_cv_path_SED"
|
||||
AC_SUBST([SED])dnl
|
||||
rm -f conftest.sed
|
||||
])
|
||||
])
|
||||
428
m4/gnulib-comp.m4
Normal file
428
m4/gnulib-comp.m4
Normal file
|
|
@ -0,0 +1,428 @@
|
|||
# DO NOT EDIT! GENERATED AUTOMATICALLY!
|
||||
# Copyright (C) 2002-2018 Free Software Foundation, Inc.
|
||||
#
|
||||
# This file is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This file is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this file. If not, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License,
|
||||
# this file may be distributed as part of a program that
|
||||
# contains a configuration script generated by Autoconf, under
|
||||
# the same distribution terms as the rest of that program.
|
||||
#
|
||||
# Generated by gnulib-tool.
|
||||
#
|
||||
# This file represents the compiled summary of the specification in
|
||||
# gnulib-cache.m4. It lists the computed macro invocations that need
|
||||
# to be invoked from configure.ac.
|
||||
# In projects that use version control, this file can be treated like
|
||||
# other built files.
|
||||
|
||||
|
||||
# This macro should be invoked from ./configure.ac, in the section
|
||||
# "Checks for programs", right after AC_PROG_CC, and certainly before
|
||||
# any checks for libraries, header files, types and library functions.
|
||||
AC_DEFUN([gl_EARLY],
|
||||
[
|
||||
m4_pattern_forbid([^gl_[A-Z]])dnl the gnulib macro namespace
|
||||
m4_pattern_allow([^gl_ES$])dnl a valid locale name
|
||||
m4_pattern_allow([^gl_LIBOBJS$])dnl a variable
|
||||
m4_pattern_allow([^gl_LTLIBOBJS$])dnl a variable
|
||||
|
||||
# Pre-early section.
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
AC_REQUIRE([gl_PROG_AR_RANLIB])
|
||||
|
||||
# Code from module absolute-header:
|
||||
# Code from module alloca-opt:
|
||||
# Code from module errno:
|
||||
# Code from module extensions:
|
||||
# Code from module extern-inline:
|
||||
# Code from module float:
|
||||
# Code from module fpieee:
|
||||
AC_REQUIRE([gl_FP_IEEE])
|
||||
# Code from module fprintf-posix:
|
||||
# Code from module fpucw:
|
||||
# Code from module frexp-nolibm:
|
||||
# Code from module frexpl-nolibm:
|
||||
# Code from module fseterr:
|
||||
# Code from module getrusage:
|
||||
# Code from module include_next:
|
||||
# Code from module isnand-nolibm:
|
||||
# Code from module isnanf-nolibm:
|
||||
# Code from module isnanl-nolibm:
|
||||
# Code from module limits-h:
|
||||
# Code from module math:
|
||||
# Code from module memchr:
|
||||
# Code from module multiarch:
|
||||
# Code from module nocrash:
|
||||
# Code from module printf-frexp:
|
||||
# Code from module printf-frexpl:
|
||||
# Code from module printf-safe:
|
||||
# Code from module signbit:
|
||||
# Code from module size_max:
|
||||
# Code from module snippet/arg-nonnull:
|
||||
# Code from module snippet/c++defs:
|
||||
# Code from module snippet/warn-on-use:
|
||||
# Code from module ssize_t:
|
||||
# Code from module stddef:
|
||||
# Code from module stdint:
|
||||
# Code from module stdio:
|
||||
# Code from module string:
|
||||
# Code from module sys_resource:
|
||||
# Code from module sys_time:
|
||||
# Code from module sys_types:
|
||||
# Code from module vasnprintf:
|
||||
# Code from module verify:
|
||||
# Code from module wchar:
|
||||
# Code from module xsize:
|
||||
])
|
||||
|
||||
# This macro should be invoked from ./configure.ac, in the section
|
||||
# "Check for header files, types and library functions".
|
||||
AC_DEFUN([gl_INIT],
|
||||
[
|
||||
AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
|
||||
gl_cond_libtool=true
|
||||
gl_m4_base='m4'
|
||||
m4_pushdef([AC_LIBOBJ], m4_defn([gl_LIBOBJ]))
|
||||
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gl_REPLACE_FUNCS]))
|
||||
m4_pushdef([AC_LIBSOURCES], m4_defn([gl_LIBSOURCES]))
|
||||
m4_pushdef([gl_LIBSOURCES_LIST], [])
|
||||
m4_pushdef([gl_LIBSOURCES_DIR], [])
|
||||
gl_COMMON
|
||||
gl_source_base='lib'
|
||||
gl_FUNC_ALLOCA
|
||||
gl_HEADER_ERRNO_H
|
||||
AC_REQUIRE([gl_EXTERN_INLINE])
|
||||
gl_FLOAT_H
|
||||
if test $REPLACE_FLOAT_LDBL = 1; then
|
||||
AC_LIBOBJ([float])
|
||||
fi
|
||||
if test $REPLACE_ITOLD = 1; then
|
||||
AC_LIBOBJ([itold])
|
||||
fi
|
||||
gl_FUNC_FPRINTF_POSIX
|
||||
gl_STDIO_MODULE_INDICATOR([fprintf-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_FSETERR
|
||||
if test $ac_cv_func___fseterr = no; then
|
||||
AC_LIBOBJ([fseterr])
|
||||
fi
|
||||
gl_FUNC_GETRUSAGE
|
||||
if test $HAVE_GETRUSAGE = 0; then
|
||||
AC_LIBOBJ([getrusage])
|
||||
fi
|
||||
gl_SYS_RESOURCE_MODULE_INDICATOR([getrusage])
|
||||
gl_FUNC_ISNAND_NO_LIBM
|
||||
if test $gl_func_isnand_no_libm != yes; then
|
||||
AC_LIBOBJ([isnand])
|
||||
gl_PREREQ_ISNAND
|
||||
fi
|
||||
gl_FUNC_ISNANF_NO_LIBM
|
||||
if test $gl_func_isnanf_no_libm != yes; then
|
||||
AC_LIBOBJ([isnanf])
|
||||
gl_PREREQ_ISNANF
|
||||
fi
|
||||
gl_FUNC_ISNANL_NO_LIBM
|
||||
if test $gl_func_isnanl_no_libm != yes; then
|
||||
AC_LIBOBJ([isnanl])
|
||||
gl_PREREQ_ISNANL
|
||||
fi
|
||||
gl_LIMITS_H
|
||||
gl_MATH_H
|
||||
gl_FUNC_MEMCHR
|
||||
if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
|
||||
AC_LIBOBJ([memchr])
|
||||
gl_PREREQ_MEMCHR
|
||||
fi
|
||||
gl_STRING_MODULE_INDICATOR([memchr])
|
||||
gl_MULTIARCH
|
||||
gl_FUNC_PRINTF_FREXP
|
||||
gl_FUNC_PRINTF_FREXPL
|
||||
m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
|
||||
gl_SIGNBIT
|
||||
if test $REPLACE_SIGNBIT = 1; then
|
||||
AC_LIBOBJ([signbitf])
|
||||
AC_LIBOBJ([signbitd])
|
||||
AC_LIBOBJ([signbitl])
|
||||
fi
|
||||
gl_MATH_MODULE_INDICATOR([signbit])
|
||||
gl_SIZE_MAX
|
||||
gt_TYPE_SSIZE_T
|
||||
gl_STDDEF_H
|
||||
gl_STDINT_H
|
||||
gl_STDIO_H
|
||||
gl_HEADER_STRING_H
|
||||
gl_HEADER_SYS_RESOURCE
|
||||
AC_PROG_MKDIR_P
|
||||
gl_HEADER_SYS_TIME_H
|
||||
AC_PROG_MKDIR_P
|
||||
gl_SYS_TYPES_H
|
||||
AC_PROG_MKDIR_P
|
||||
gl_FUNC_VASNPRINTF
|
||||
gl_WCHAR_H
|
||||
gl_XSIZE
|
||||
# End of code from modules
|
||||
m4_ifval(gl_LIBSOURCES_LIST, [
|
||||
m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
|
||||
for gl_file in ]gl_LIBSOURCES_LIST[ ; do
|
||||
if test ! -r ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file ; then
|
||||
echo "missing file ]m4_defn([gl_LIBSOURCES_DIR])[/$gl_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
done])dnl
|
||||
m4_if(m4_sysval, [0], [],
|
||||
[AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
|
||||
])
|
||||
m4_popdef([gl_LIBSOURCES_DIR])
|
||||
m4_popdef([gl_LIBSOURCES_LIST])
|
||||
m4_popdef([AC_LIBSOURCES])
|
||||
m4_popdef([AC_REPLACE_FUNCS])
|
||||
m4_popdef([AC_LIBOBJ])
|
||||
AC_CONFIG_COMMANDS_PRE([
|
||||
gl_libobjs=
|
||||
gl_ltlibobjs=
|
||||
if test -n "$gl_LIBOBJS"; then
|
||||
# Remove the extension.
|
||||
sed_drop_objext='s/\.o$//;s/\.obj$//'
|
||||
for i in `for i in $gl_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
|
||||
gl_libobjs="$gl_libobjs $i.$ac_objext"
|
||||
gl_ltlibobjs="$gl_ltlibobjs $i.lo"
|
||||
done
|
||||
fi
|
||||
AC_SUBST([gl_LIBOBJS], [$gl_libobjs])
|
||||
AC_SUBST([gl_LTLIBOBJS], [$gl_ltlibobjs])
|
||||
])
|
||||
gltests_libdeps=
|
||||
gltests_ltlibdeps=
|
||||
m4_pushdef([AC_LIBOBJ], m4_defn([gltests_LIBOBJ]))
|
||||
m4_pushdef([AC_REPLACE_FUNCS], m4_defn([gltests_REPLACE_FUNCS]))
|
||||
m4_pushdef([AC_LIBSOURCES], m4_defn([gltests_LIBSOURCES]))
|
||||
m4_pushdef([gltests_LIBSOURCES_LIST], [])
|
||||
m4_pushdef([gltests_LIBSOURCES_DIR], [])
|
||||
gl_COMMON
|
||||
gl_source_base='tests'
|
||||
changequote(,)dnl
|
||||
gltests_WITNESS=IN_`echo "${PACKAGE-$PACKAGE_TARNAME}" | LC_ALL=C tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ | LC_ALL=C sed -e 's/[^A-Z0-9_]/_/g'`_GNULIB_TESTS
|
||||
changequote([, ])dnl
|
||||
AC_SUBST([gltests_WITNESS])
|
||||
gl_module_indicator_condition=$gltests_WITNESS
|
||||
m4_pushdef([gl_MODULE_INDICATOR_CONDITION], [$gl_module_indicator_condition])
|
||||
m4_popdef([gl_MODULE_INDICATOR_CONDITION])
|
||||
m4_ifval(gltests_LIBSOURCES_LIST, [
|
||||
m4_syscmd([test ! -d ]m4_defn([gltests_LIBSOURCES_DIR])[ ||
|
||||
for gl_file in ]gltests_LIBSOURCES_LIST[ ; do
|
||||
if test ! -r ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file ; then
|
||||
echo "missing file ]m4_defn([gltests_LIBSOURCES_DIR])[/$gl_file" >&2
|
||||
exit 1
|
||||
fi
|
||||
done])dnl
|
||||
m4_if(m4_sysval, [0], [],
|
||||
[AC_FATAL([expected source file, required through AC_LIBSOURCES, not found])])
|
||||
])
|
||||
m4_popdef([gltests_LIBSOURCES_DIR])
|
||||
m4_popdef([gltests_LIBSOURCES_LIST])
|
||||
m4_popdef([AC_LIBSOURCES])
|
||||
m4_popdef([AC_REPLACE_FUNCS])
|
||||
m4_popdef([AC_LIBOBJ])
|
||||
AC_CONFIG_COMMANDS_PRE([
|
||||
gltests_libobjs=
|
||||
gltests_ltlibobjs=
|
||||
if test -n "$gltests_LIBOBJS"; then
|
||||
# Remove the extension.
|
||||
sed_drop_objext='s/\.o$//;s/\.obj$//'
|
||||
for i in `for i in $gltests_LIBOBJS; do echo "$i"; done | sed -e "$sed_drop_objext" | sort | uniq`; do
|
||||
gltests_libobjs="$gltests_libobjs $i.$ac_objext"
|
||||
gltests_ltlibobjs="$gltests_ltlibobjs $i.lo"
|
||||
done
|
||||
fi
|
||||
AC_SUBST([gltests_LIBOBJS], [$gltests_libobjs])
|
||||
AC_SUBST([gltests_LTLIBOBJS], [$gltests_ltlibobjs])
|
||||
])
|
||||
])
|
||||
|
||||
# Like AC_LIBOBJ, except that the module name goes
|
||||
# into gl_LIBOBJS instead of into LIBOBJS.
|
||||
AC_DEFUN([gl_LIBOBJ], [
|
||||
AS_LITERAL_IF([$1], [gl_LIBSOURCES([$1.c])])dnl
|
||||
gl_LIBOBJS="$gl_LIBOBJS $1.$ac_objext"
|
||||
])
|
||||
|
||||
# Like AC_REPLACE_FUNCS, except that the module name goes
|
||||
# into gl_LIBOBJS instead of into LIBOBJS.
|
||||
AC_DEFUN([gl_REPLACE_FUNCS], [
|
||||
m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
|
||||
AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])
|
||||
])
|
||||
|
||||
# Like AC_LIBSOURCES, except the directory where the source file is
|
||||
# expected is derived from the gnulib-tool parameterization,
|
||||
# and alloca is special cased (for the alloca-opt module).
|
||||
# We could also entirely rely on EXTRA_lib..._SOURCES.
|
||||
AC_DEFUN([gl_LIBSOURCES], [
|
||||
m4_foreach([_gl_NAME], [$1], [
|
||||
m4_if(_gl_NAME, [alloca.c], [], [
|
||||
m4_define([gl_LIBSOURCES_DIR], [lib])
|
||||
m4_append([gl_LIBSOURCES_LIST], _gl_NAME, [ ])
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
# Like AC_LIBOBJ, except that the module name goes
|
||||
# into gltests_LIBOBJS instead of into LIBOBJS.
|
||||
AC_DEFUN([gltests_LIBOBJ], [
|
||||
AS_LITERAL_IF([$1], [gltests_LIBSOURCES([$1.c])])dnl
|
||||
gltests_LIBOBJS="$gltests_LIBOBJS $1.$ac_objext"
|
||||
])
|
||||
|
||||
# Like AC_REPLACE_FUNCS, except that the module name goes
|
||||
# into gltests_LIBOBJS instead of into LIBOBJS.
|
||||
AC_DEFUN([gltests_REPLACE_FUNCS], [
|
||||
m4_foreach_w([gl_NAME], [$1], [AC_LIBSOURCES(gl_NAME[.c])])dnl
|
||||
AC_CHECK_FUNCS([$1], , [gltests_LIBOBJ($ac_func)])
|
||||
])
|
||||
|
||||
# Like AC_LIBSOURCES, except the directory where the source file is
|
||||
# expected is derived from the gnulib-tool parameterization,
|
||||
# and alloca is special cased (for the alloca-opt module).
|
||||
# We could also entirely rely on EXTRA_lib..._SOURCES.
|
||||
AC_DEFUN([gltests_LIBSOURCES], [
|
||||
m4_foreach([_gl_NAME], [$1], [
|
||||
m4_if(_gl_NAME, [alloca.c], [], [
|
||||
m4_define([gltests_LIBSOURCES_DIR], [tests])
|
||||
m4_append([gltests_LIBSOURCES_LIST], _gl_NAME, [ ])
|
||||
])
|
||||
])
|
||||
])
|
||||
|
||||
# This macro records the list of files which have been installed by
|
||||
# gnulib-tool and may be removed by future gnulib-tool invocations.
|
||||
AC_DEFUN([gl_FILE_LIST], [
|
||||
lib/alloca.in.h
|
||||
lib/arg-nonnull.h
|
||||
lib/asnprintf.c
|
||||
lib/c++defs.h
|
||||
lib/errno.in.h
|
||||
lib/float+.h
|
||||
lib/float.c
|
||||
lib/float.in.h
|
||||
lib/fprintf.c
|
||||
lib/fpucw.h
|
||||
lib/frexp.c
|
||||
lib/frexpl.c
|
||||
lib/fseterr.c
|
||||
lib/fseterr.h
|
||||
lib/getrusage.c
|
||||
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/limits.in.h
|
||||
lib/math.c
|
||||
lib/math.in.h
|
||||
lib/memchr.c
|
||||
lib/memchr.valgrind
|
||||
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/signbitd.c
|
||||
lib/signbitf.c
|
||||
lib/signbitl.c
|
||||
lib/size_max.h
|
||||
lib/stddef.in.h
|
||||
lib/stdint.in.h
|
||||
lib/stdio-impl.h
|
||||
lib/stdio.in.h
|
||||
lib/string.in.h
|
||||
lib/sys_resource.in.h
|
||||
lib/sys_time.in.h
|
||||
lib/sys_types.in.h
|
||||
lib/vasnprintf.c
|
||||
lib/vasnprintf.h
|
||||
lib/verify.h
|
||||
lib/warn-on-use.h
|
||||
lib/wchar.in.h
|
||||
lib/xsize.c
|
||||
lib/xsize.h
|
||||
m4/00gnulib.m4
|
||||
m4/absolute-header.m4
|
||||
m4/alloca.m4
|
||||
m4/errno_h.m4
|
||||
m4/exponentd.m4
|
||||
m4/exponentf.m4
|
||||
m4/exponentl.m4
|
||||
m4/extensions.m4
|
||||
m4/extern-inline.m4
|
||||
m4/float_h.m4
|
||||
m4/fpieee.m4
|
||||
m4/fprintf-posix.m4
|
||||
m4/frexp.m4
|
||||
m4/frexpl.m4
|
||||
m4/fseterr.m4
|
||||
m4/getrusage.m4
|
||||
m4/gnulib-common.m4
|
||||
m4/include_next.m4
|
||||
m4/intmax_t.m4
|
||||
m4/inttypes_h.m4
|
||||
m4/isnand.m4
|
||||
m4/isnanf.m4
|
||||
m4/isnanl.m4
|
||||
m4/ldexpl.m4
|
||||
m4/limits-h.m4
|
||||
m4/longlong.m4
|
||||
m4/math_h.m4
|
||||
m4/memchr.m4
|
||||
m4/mmap-anon.m4
|
||||
m4/multiarch.m4
|
||||
m4/nocrash.m4
|
||||
m4/off_t.m4
|
||||
m4/printf-frexp.m4
|
||||
m4/printf-frexpl.m4
|
||||
m4/printf.m4
|
||||
m4/signbit.m4
|
||||
m4/size_max.m4
|
||||
m4/ssize_t.m4
|
||||
m4/stddef_h.m4
|
||||
m4/stdint.m4
|
||||
m4/stdint_h.m4
|
||||
m4/stdio_h.m4
|
||||
m4/string_h.m4
|
||||
m4/sys_resource_h.m4
|
||||
m4/sys_socket_h.m4
|
||||
m4/sys_time_h.m4
|
||||
m4/sys_types_h.m4
|
||||
m4/vasnprintf.m4
|
||||
m4/warn-on-use.m4
|
||||
m4/wchar_h.m4
|
||||
m4/wchar_t.m4
|
||||
m4/wint_t.m4
|
||||
m4/xsize.m4
|
||||
])
|
||||
57
m4/gnulib-tool.m4
Normal file
57
m4/gnulib-tool.m4
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# gnulib-tool.m4 serial 2
|
||||
dnl Copyright (C) 2004-2005, 2009-2018 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 The following macros need not be invoked explicitly.
|
||||
dnl Invoking them does nothing except to declare default arguments
|
||||
dnl for "gnulib-tool --import".
|
||||
|
||||
dnl Usage: gl_LOCAL_DIR([DIR])
|
||||
AC_DEFUN([gl_LOCAL_DIR], [])
|
||||
|
||||
dnl Usage: gl_MODULES([module1 module2 ...])
|
||||
AC_DEFUN([gl_MODULES], [])
|
||||
|
||||
dnl Usage: gl_AVOID([module1 module2 ...])
|
||||
AC_DEFUN([gl_AVOID], [])
|
||||
|
||||
dnl Usage: gl_SOURCE_BASE([DIR])
|
||||
AC_DEFUN([gl_SOURCE_BASE], [])
|
||||
|
||||
dnl Usage: gl_M4_BASE([DIR])
|
||||
AC_DEFUN([gl_M4_BASE], [])
|
||||
|
||||
dnl Usage: gl_PO_BASE([DIR])
|
||||
AC_DEFUN([gl_PO_BASE], [])
|
||||
|
||||
dnl Usage: gl_DOC_BASE([DIR])
|
||||
AC_DEFUN([gl_DOC_BASE], [])
|
||||
|
||||
dnl Usage: gl_TESTS_BASE([DIR])
|
||||
AC_DEFUN([gl_TESTS_BASE], [])
|
||||
|
||||
dnl Usage: gl_WITH_TESTS
|
||||
AC_DEFUN([gl_WITH_TESTS], [])
|
||||
|
||||
dnl Usage: gl_LIB([LIBNAME])
|
||||
AC_DEFUN([gl_LIB], [])
|
||||
|
||||
dnl Usage: gl_LGPL or gl_LGPL([VERSION])
|
||||
AC_DEFUN([gl_LGPL], [])
|
||||
|
||||
dnl Usage: gl_MAKEFILE_NAME([FILENAME])
|
||||
AC_DEFUN([gl_MAKEFILE_NAME], [])
|
||||
|
||||
dnl Usage: gl_LIBTOOL
|
||||
AC_DEFUN([gl_LIBTOOL], [])
|
||||
|
||||
dnl Usage: gl_MACRO_PREFIX([PREFIX])
|
||||
AC_DEFUN([gl_MACRO_PREFIX], [])
|
||||
|
||||
dnl Usage: gl_PO_DOMAIN([DOMAIN])
|
||||
AC_DEFUN([gl_PO_DOMAIN], [])
|
||||
|
||||
dnl Usage: gl_VC_FILES([BOOLEAN])
|
||||
AC_DEFUN([gl_VC_FILES], [])
|
||||
224
m4/include_next.m4
Normal file
224
m4/include_next.m4
Normal file
|
|
@ -0,0 +1,224 @@
|
|||
# include_next.m4 serial 24
|
||||
dnl Copyright (C) 2006-2018 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 and Derek Price.
|
||||
|
||||
dnl Sets INCLUDE_NEXT, INCLUDE_NEXT_AS_FIRST_DIRECTIVE, PRAGMA_SYSTEM_HEADER,
|
||||
dnl and PRAGMA_COLUMNS.
|
||||
dnl
|
||||
dnl INCLUDE_NEXT expands to 'include_next' if the compiler supports it, or to
|
||||
dnl 'include' otherwise.
|
||||
dnl
|
||||
dnl INCLUDE_NEXT_AS_FIRST_DIRECTIVE expands to 'include_next' if the compiler
|
||||
dnl supports it in the special case that it is the first include directive in
|
||||
dnl the given file, or to 'include' otherwise.
|
||||
dnl
|
||||
dnl PRAGMA_SYSTEM_HEADER can be used in files that contain #include_next,
|
||||
dnl so as to avoid GCC warnings when the gcc option -pedantic is used.
|
||||
dnl '#pragma GCC system_header' has the same effect as if the file was found
|
||||
dnl through the include search path specified with '-isystem' options (as
|
||||
dnl opposed to the search path specified with '-I' options). Namely, gcc
|
||||
dnl does not warn about some things, and on some systems (Solaris and Interix)
|
||||
dnl __STDC__ evaluates to 0 instead of to 1. The latter is an undesired side
|
||||
dnl effect; we are therefore careful to use 'defined __STDC__' or '1' instead
|
||||
dnl of plain '__STDC__'.
|
||||
dnl
|
||||
dnl PRAGMA_COLUMNS can be used in files that override system header files, so
|
||||
dnl as to avoid compilation errors on HP NonStop systems when the gnulib file
|
||||
dnl is included by a system header file that does a "#pragma COLUMNS 80" (which
|
||||
dnl has the effect of truncating the lines of that file and all files that it
|
||||
dnl includes to 80 columns) and the gnulib file has lines longer than 80
|
||||
dnl columns.
|
||||
|
||||
AC_DEFUN([gl_INCLUDE_NEXT],
|
||||
[
|
||||
AC_LANG_PREPROC_REQUIRE()
|
||||
AC_CACHE_CHECK([whether the preprocessor supports include_next],
|
||||
[gl_cv_have_include_next],
|
||||
[rm -rf conftestd1a conftestd1b conftestd2
|
||||
mkdir conftestd1a conftestd1b conftestd2
|
||||
dnl IBM C 9.0, 10.1 (original versions, prior to the 2009-01 updates) on
|
||||
dnl AIX 6.1 support include_next when used as first preprocessor directive
|
||||
dnl in a file, but not when preceded by another include directive. Check
|
||||
dnl for this bug by including <stdio.h>.
|
||||
dnl Additionally, with this same compiler, include_next is a no-op when
|
||||
dnl used in a header file that was included by specifying its absolute
|
||||
dnl file name. Despite these two bugs, include_next is used in the
|
||||
dnl compiler's <math.h>. By virtue of the second bug, we need to use
|
||||
dnl include_next as well in this case.
|
||||
cat <<EOF > conftestd1a/conftest.h
|
||||
#define DEFINED_IN_CONFTESTD1
|
||||
#include_next <conftest.h>
|
||||
#ifdef DEFINED_IN_CONFTESTD2
|
||||
int foo;
|
||||
#else
|
||||
#error "include_next doesn't work"
|
||||
#endif
|
||||
EOF
|
||||
cat <<EOF > conftestd1b/conftest.h
|
||||
#define DEFINED_IN_CONFTESTD1
|
||||
#include <stdio.h>
|
||||
#include_next <conftest.h>
|
||||
#ifdef DEFINED_IN_CONFTESTD2
|
||||
int foo;
|
||||
#else
|
||||
#error "include_next doesn't work"
|
||||
#endif
|
||||
EOF
|
||||
cat <<EOF > conftestd2/conftest.h
|
||||
#ifndef DEFINED_IN_CONFTESTD1
|
||||
#error "include_next test doesn't work"
|
||||
#endif
|
||||
#define DEFINED_IN_CONFTESTD2
|
||||
EOF
|
||||
gl_save_CPPFLAGS="$CPPFLAGS"
|
||||
CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1b -Iconftestd2"
|
||||
dnl We intentionally avoid using AC_LANG_SOURCE here.
|
||||
AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
|
||||
[gl_cv_have_include_next=yes],
|
||||
[CPPFLAGS="$gl_save_CPPFLAGS -Iconftestd1a -Iconftestd2"
|
||||
AC_COMPILE_IFELSE([AC_LANG_DEFINES_PROVIDED[#include <conftest.h>]],
|
||||
[gl_cv_have_include_next=buggy],
|
||||
[gl_cv_have_include_next=no])
|
||||
])
|
||||
CPPFLAGS="$gl_save_CPPFLAGS"
|
||||
rm -rf conftestd1a conftestd1b conftestd2
|
||||
])
|
||||
PRAGMA_SYSTEM_HEADER=
|
||||
if test $gl_cv_have_include_next = yes; then
|
||||
INCLUDE_NEXT=include_next
|
||||
INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
|
||||
if test -n "$GCC"; then
|
||||
PRAGMA_SYSTEM_HEADER='#pragma GCC system_header'
|
||||
fi
|
||||
else
|
||||
if test $gl_cv_have_include_next = buggy; then
|
||||
INCLUDE_NEXT=include
|
||||
INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include_next
|
||||
else
|
||||
INCLUDE_NEXT=include
|
||||
INCLUDE_NEXT_AS_FIRST_DIRECTIVE=include
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([INCLUDE_NEXT])
|
||||
AC_SUBST([INCLUDE_NEXT_AS_FIRST_DIRECTIVE])
|
||||
AC_SUBST([PRAGMA_SYSTEM_HEADER])
|
||||
AC_CACHE_CHECK([whether system header files limit the line length],
|
||||
[gl_cv_pragma_columns],
|
||||
[dnl HP NonStop systems, which define __TANDEM, have this misfeature.
|
||||
AC_EGREP_CPP([choke me],
|
||||
[
|
||||
#ifdef __TANDEM
|
||||
choke me
|
||||
#endif
|
||||
],
|
||||
[gl_cv_pragma_columns=yes],
|
||||
[gl_cv_pragma_columns=no])
|
||||
])
|
||||
if test $gl_cv_pragma_columns = yes; then
|
||||
PRAGMA_COLUMNS="#pragma COLUMNS 10000"
|
||||
else
|
||||
PRAGMA_COLUMNS=
|
||||
fi
|
||||
AC_SUBST([PRAGMA_COLUMNS])
|
||||
])
|
||||
|
||||
# gl_CHECK_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
||||
# ------------------------------------------
|
||||
# For each arg foo.h, if #include_next works, define NEXT_FOO_H to be
|
||||
# '<foo.h>'; otherwise define it to be
|
||||
# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
|
||||
# Also, if #include_next works as first preprocessing directive in a file,
|
||||
# define NEXT_AS_FIRST_DIRECTIVE_FOO_H to be '<foo.h>'; otherwise define it to
|
||||
# be
|
||||
# '"///usr/include/foo.h"', or whatever other absolute file name is suitable.
|
||||
# That way, a header file with the following line:
|
||||
# #@INCLUDE_NEXT@ @NEXT_FOO_H@
|
||||
# or
|
||||
# #@INCLUDE_NEXT_AS_FIRST_DIRECTIVE@ @NEXT_AS_FIRST_DIRECTIVE_FOO_H@
|
||||
# behaves (after sed substitution) as if it contained
|
||||
# #include_next <foo.h>
|
||||
# even if the compiler does not support include_next.
|
||||
# The three "///" are to pacify Sun C 5.8, which otherwise would say
|
||||
# "warning: #include of /usr/include/... may be non-portable".
|
||||
# Use '""', not '<>', so that the /// cannot be confused with a C99 comment.
|
||||
# Note: This macro assumes that the header file is not empty after
|
||||
# preprocessing, i.e. it does not only define preprocessor macros but also
|
||||
# provides some type/enum definitions or function/variable declarations.
|
||||
#
|
||||
# This macro also checks whether each header exists, by invoking
|
||||
# AC_CHECK_HEADERS_ONCE or AC_CHECK_HEADERS on each argument.
|
||||
AC_DEFUN([gl_CHECK_NEXT_HEADERS],
|
||||
[
|
||||
gl_NEXT_HEADERS_INTERNAL([$1], [check])
|
||||
])
|
||||
|
||||
# gl_NEXT_HEADERS(HEADER1 HEADER2 ...)
|
||||
# ------------------------------------
|
||||
# Like gl_CHECK_NEXT_HEADERS, except do not check whether the headers exist.
|
||||
# This is suitable for headers like <stddef.h> that are standardized by C89
|
||||
# and therefore can be assumed to exist.
|
||||
AC_DEFUN([gl_NEXT_HEADERS],
|
||||
[
|
||||
gl_NEXT_HEADERS_INTERNAL([$1], [assume])
|
||||
])
|
||||
|
||||
# The guts of gl_CHECK_NEXT_HEADERS and gl_NEXT_HEADERS.
|
||||
AC_DEFUN([gl_NEXT_HEADERS_INTERNAL],
|
||||
[
|
||||
AC_REQUIRE([gl_INCLUDE_NEXT])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
m4_if([$2], [check],
|
||||
[AC_CHECK_HEADERS_ONCE([$1])
|
||||
])
|
||||
|
||||
dnl FIXME: gl_next_header and gl_header_exists must be used unquoted
|
||||
dnl until we can assume autoconf 2.64 or newer.
|
||||
m4_foreach_w([gl_HEADER_NAME], [$1],
|
||||
[AS_VAR_PUSHDEF([gl_next_header],
|
||||
[gl_cv_next_]m4_defn([gl_HEADER_NAME]))
|
||||
if test $gl_cv_have_include_next = yes; then
|
||||
AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
|
||||
else
|
||||
AC_CACHE_CHECK(
|
||||
[absolute name of <]m4_defn([gl_HEADER_NAME])[>],
|
||||
m4_defn([gl_next_header]),
|
||||
[m4_if([$2], [check],
|
||||
[AS_VAR_PUSHDEF([gl_header_exists],
|
||||
[ac_cv_header_]m4_defn([gl_HEADER_NAME]))
|
||||
if test AS_VAR_GET(gl_header_exists) = yes; then
|
||||
AS_VAR_POPDEF([gl_header_exists])
|
||||
])
|
||||
gl_ABSOLUTE_HEADER_ONE(gl_HEADER_NAME)
|
||||
AS_VAR_COPY([gl_header], [gl_cv_absolute_]AS_TR_SH(gl_HEADER_NAME))
|
||||
AS_VAR_SET(gl_next_header, ['"'$gl_header'"'])
|
||||
m4_if([$2], [check],
|
||||
[else
|
||||
AS_VAR_SET(gl_next_header, ['<'gl_HEADER_NAME'>'])
|
||||
fi
|
||||
])
|
||||
])
|
||||
fi
|
||||
AC_SUBST(
|
||||
AS_TR_CPP([NEXT_]m4_defn([gl_HEADER_NAME])),
|
||||
[AS_VAR_GET(gl_next_header)])
|
||||
if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
|
||||
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
|
||||
gl_next_as_first_directive='<'gl_HEADER_NAME'>'
|
||||
else
|
||||
# INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
|
||||
gl_next_as_first_directive=AS_VAR_GET(gl_next_header)
|
||||
fi
|
||||
AC_SUBST(
|
||||
AS_TR_CPP([NEXT_AS_FIRST_DIRECTIVE_]m4_defn([gl_HEADER_NAME])),
|
||||
[$gl_next_as_first_directive])
|
||||
AS_VAR_POPDEF([gl_next_header])])
|
||||
])
|
||||
|
||||
# Autoconf 2.68 added warnings for our use of AC_COMPILE_IFELSE;
|
||||
# this fallback is safe for all earlier autoconf versions.
|
||||
m4_define_default([AC_LANG_DEFINES_PROVIDED])
|
||||
67
m4/intmax_t.m4
Normal file
67
m4/intmax_t.m4
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# intmax_t.m4 serial 8
|
||||
dnl Copyright (C) 1997-2004, 2006-2007, 2009-2018 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_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||||
test $ac_cv_type_long_long_int = yes \
|
||||
&& ac_type='long long' \
|
||||
|| ac_type='long'
|
||||
AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
|
||||
[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_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||||
test $ac_cv_type_long_long_int = yes \
|
||||
&& ac_type='long long' \
|
||||
|| ac_type='long'
|
||||
AC_DEFINE_UNQUOTED([intmax_t], [$ac_type],
|
||||
[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-2018 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 11
|
||||
dnl Copyright (C) 2007-2018 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
|
||||
# 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
|
||||
# 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 15
|
||||
dnl Copyright (C) 2007-2018 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
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnanf ((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
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnanf ((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
|
||||
# undef isnanf
|
||||
# define isnanf(x) __builtin_isnanf ((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 20
|
||||
dnl Copyright (C) 2007-2018 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
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnanl ((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
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnanl ((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
|
||||
# undef isnanl
|
||||
# define isnanl(x) __builtin_isnanl ((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-2018 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
|
||||
])
|
||||
])
|
||||
])
|
||||
31
m4/limits-h.m4
Normal file
31
m4/limits-h.m4
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
dnl Check whether limits.h has needed features.
|
||||
|
||||
dnl Copyright 2016-2018 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.
|
||||
|
||||
AC_DEFUN_ONCE([gl_LIMITS_H],
|
||||
[
|
||||
gl_CHECK_NEXT_HEADERS([limits.h])
|
||||
|
||||
AC_CACHE_CHECK([whether limits.h has ULLONG_WIDTH etc.],
|
||||
[gl_cv_header_limits_width],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
|
||||
#endif
|
||||
#include <limits.h>
|
||||
int ullw = ULLONG_WIDTH;]])],
|
||||
[gl_cv_header_limits_width=yes],
|
||||
[gl_cv_header_limits_width=no])])
|
||||
if test "$gl_cv_header_limits_width" = yes; then
|
||||
LIMITS_H=
|
||||
else
|
||||
LIMITS_H=limits.h
|
||||
fi
|
||||
AC_SUBST([LIMITS_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
|
||||
])
|
||||
113
m4/longlong.m4
Normal file
113
m4/longlong.m4
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
# longlong.m4 serial 17
|
||||
dnl Copyright (C) 1999-2007, 2009-2018 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_LONG_LONG_INT if 'long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, and can be faster
|
||||
# than what's in Autoconf 2.62 through 2.68.
|
||||
|
||||
# Note: If the type 'long long int' exists but is only 32 bits large
|
||||
# (as on some very old compilers), HAVE_LONG_LONG_INT will not be
|
||||
# defined. In this case you can treat 'long long int' like 'long int'.
|
||||
|
||||
AC_DEFUN([AC_TYPE_LONG_LONG_INT],
|
||||
[
|
||||
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
|
||||
AC_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
|
||||
[ac_cv_type_long_long_int=yes
|
||||
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||||
ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
dnl Catch a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
|
||||
dnl If cross compiling, assume the bug is not important, since
|
||||
dnl nobody cross compiles for this platform as far as we know.
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[@%:@include <limits.h>
|
||||
@%:@ifndef LLONG_MAX
|
||||
@%:@ define HALF \
|
||||
(1LL << (sizeof (long long int) * CHAR_BIT - 2))
|
||||
@%:@ define LLONG_MAX (HALF - 1 + HALF)
|
||||
@%:@endif]],
|
||||
[[long long int n = 1;
|
||||
int i;
|
||||
for (i = 0; ; i++)
|
||||
{
|
||||
long long int m = n << i;
|
||||
if (m >> i != n)
|
||||
return 1;
|
||||
if (LLONG_MAX / 2 < m)
|
||||
break;
|
||||
}
|
||||
return 0;]])],
|
||||
[],
|
||||
[ac_cv_type_long_long_int=no],
|
||||
[:])
|
||||
fi
|
||||
fi])
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type 'long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
# Define HAVE_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
|
||||
# This fixes a bug in Autoconf 2.61, and can be faster
|
||||
# than what's in Autoconf 2.62 through 2.68.
|
||||
|
||||
# Note: If the type 'unsigned long long int' exists but is only 32 bits
|
||||
# large (as on some very old compilers), AC_TYPE_UNSIGNED_LONG_LONG_INT
|
||||
# will not be defined. In this case you can treat 'unsigned long long int'
|
||||
# like 'unsigned long int'.
|
||||
|
||||
AC_DEFUN([AC_TYPE_UNSIGNED_LONG_LONG_INT],
|
||||
[
|
||||
AC_CACHE_CHECK([for unsigned long long int],
|
||||
[ac_cv_type_unsigned_long_long_int],
|
||||
[ac_cv_type_unsigned_long_long_int=yes
|
||||
if test "x${ac_cv_prog_cc_c99-no}" = xno; then
|
||||
AC_LINK_IFELSE(
|
||||
[_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[],
|
||||
[ac_cv_type_unsigned_long_long_int=no])
|
||||
fi])
|
||||
if test $ac_cv_type_unsigned_long_long_int = yes; then
|
||||
AC_DEFINE([HAVE_UNSIGNED_LONG_LONG_INT], [1],
|
||||
[Define to 1 if the system has the type 'unsigned long long int'.])
|
||||
fi
|
||||
])
|
||||
|
||||
# Expands to a C program that can be used to test for simultaneous support
|
||||
# of 'long long' and 'unsigned long long'. We don't want to say that
|
||||
# 'long long' is available if 'unsigned long long' is not, or vice versa,
|
||||
# because too many programs rely on the symmetry between signed and unsigned
|
||||
# integer types (excluding 'bool').
|
||||
AC_DEFUN([_AC_TYPE_LONG_LONG_SNIPPET],
|
||||
[
|
||||
AC_LANG_PROGRAM(
|
||||
[[/* For now, do not test the preprocessor; as of 2007 there are too many
|
||||
implementations with broken preprocessors. Perhaps this can
|
||||
be revisited in 2012. In the meantime, code should not expect
|
||||
#if to work with literals wider than 32 bits. */
|
||||
/* Test literals. */
|
||||
long long int ll = 9223372036854775807ll;
|
||||
long long int nll = -9223372036854775807LL;
|
||||
unsigned long long int ull = 18446744073709551615ULL;
|
||||
/* Test constant expressions. */
|
||||
typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
|
||||
? 1 : -1)];
|
||||
typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
|
||||
? 1 : -1)];
|
||||
int i = 63;]],
|
||||
[[/* Test availability of runtime routines for shift and division. */
|
||||
long long int llmax = 9223372036854775807ll;
|
||||
unsigned long long int ullmax = 18446744073709551615ull;
|
||||
return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
|
||||
| (llmax / ll) | (llmax % ll)
|
||||
| (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
|
||||
| (ullmax / ull) | (ullmax % ull));]])
|
||||
])
|
||||
366
m4/math_h.m4
Normal file
366
m4/math_h.m4
Normal file
|
|
@ -0,0 +1,366 @@
|
|||
# math_h.m4 serial 116
|
||||
dnl Copyright (C) 2007-2018 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_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_MATH_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_MATH_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_MATH_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_ACOSF=0; AC_SUBST([GNULIB_ACOSF])
|
||||
GNULIB_ACOSL=0; AC_SUBST([GNULIB_ACOSL])
|
||||
GNULIB_ASINF=0; AC_SUBST([GNULIB_ASINF])
|
||||
GNULIB_ASINL=0; AC_SUBST([GNULIB_ASINL])
|
||||
GNULIB_ATANF=0; AC_SUBST([GNULIB_ATANF])
|
||||
GNULIB_ATANL=0; AC_SUBST([GNULIB_ATANL])
|
||||
GNULIB_ATAN2F=0; AC_SUBST([GNULIB_ATAN2F])
|
||||
GNULIB_CBRT=0; AC_SUBST([GNULIB_CBRT])
|
||||
GNULIB_CBRTF=0; AC_SUBST([GNULIB_CBRTF])
|
||||
GNULIB_CBRTL=0; AC_SUBST([GNULIB_CBRTL])
|
||||
GNULIB_CEIL=0; AC_SUBST([GNULIB_CEIL])
|
||||
GNULIB_CEILF=0; AC_SUBST([GNULIB_CEILF])
|
||||
GNULIB_CEILL=0; AC_SUBST([GNULIB_CEILL])
|
||||
GNULIB_COPYSIGN=0; AC_SUBST([GNULIB_COPYSIGN])
|
||||
GNULIB_COPYSIGNF=0; AC_SUBST([GNULIB_COPYSIGNF])
|
||||
GNULIB_COPYSIGNL=0; AC_SUBST([GNULIB_COPYSIGNL])
|
||||
GNULIB_COSF=0; AC_SUBST([GNULIB_COSF])
|
||||
GNULIB_COSL=0; AC_SUBST([GNULIB_COSL])
|
||||
GNULIB_COSHF=0; AC_SUBST([GNULIB_COSHF])
|
||||
GNULIB_EXPF=0; AC_SUBST([GNULIB_EXPF])
|
||||
GNULIB_EXPL=0; AC_SUBST([GNULIB_EXPL])
|
||||
GNULIB_EXP2=0; AC_SUBST([GNULIB_EXP2])
|
||||
GNULIB_EXP2F=0; AC_SUBST([GNULIB_EXP2F])
|
||||
GNULIB_EXP2L=0; AC_SUBST([GNULIB_EXP2L])
|
||||
GNULIB_EXPM1=0; AC_SUBST([GNULIB_EXPM1])
|
||||
GNULIB_EXPM1F=0; AC_SUBST([GNULIB_EXPM1F])
|
||||
GNULIB_EXPM1L=0; AC_SUBST([GNULIB_EXPM1L])
|
||||
GNULIB_FABSF=0; AC_SUBST([GNULIB_FABSF])
|
||||
GNULIB_FABSL=0; AC_SUBST([GNULIB_FABSL])
|
||||
GNULIB_FLOOR=0; AC_SUBST([GNULIB_FLOOR])
|
||||
GNULIB_FLOORF=0; AC_SUBST([GNULIB_FLOORF])
|
||||
GNULIB_FLOORL=0; AC_SUBST([GNULIB_FLOORL])
|
||||
GNULIB_FMA=0; AC_SUBST([GNULIB_FMA])
|
||||
GNULIB_FMAF=0; AC_SUBST([GNULIB_FMAF])
|
||||
GNULIB_FMAL=0; AC_SUBST([GNULIB_FMAL])
|
||||
GNULIB_FMOD=0; AC_SUBST([GNULIB_FMOD])
|
||||
GNULIB_FMODF=0; AC_SUBST([GNULIB_FMODF])
|
||||
GNULIB_FMODL=0; AC_SUBST([GNULIB_FMODL])
|
||||
GNULIB_FREXPF=0; AC_SUBST([GNULIB_FREXPF])
|
||||
GNULIB_FREXP=0; AC_SUBST([GNULIB_FREXP])
|
||||
GNULIB_FREXPL=0; AC_SUBST([GNULIB_FREXPL])
|
||||
GNULIB_HYPOT=0; AC_SUBST([GNULIB_HYPOT])
|
||||
GNULIB_HYPOTF=0; AC_SUBST([GNULIB_HYPOTF])
|
||||
GNULIB_HYPOTL=0; AC_SUBST([GNULIB_HYPOTL])
|
||||
GNULIB_ILOGB=0; AC_SUBST([GNULIB_ILOGB])
|
||||
GNULIB_ILOGBF=0; AC_SUBST([GNULIB_ILOGBF])
|
||||
GNULIB_ILOGBL=0; AC_SUBST([GNULIB_ILOGBL])
|
||||
GNULIB_ISFINITE=0; AC_SUBST([GNULIB_ISFINITE])
|
||||
GNULIB_ISINF=0; AC_SUBST([GNULIB_ISINF])
|
||||
GNULIB_ISNAN=0; AC_SUBST([GNULIB_ISNAN])
|
||||
GNULIB_ISNANF=0; AC_SUBST([GNULIB_ISNANF])
|
||||
GNULIB_ISNAND=0; AC_SUBST([GNULIB_ISNAND])
|
||||
GNULIB_ISNANL=0; AC_SUBST([GNULIB_ISNANL])
|
||||
GNULIB_LDEXPF=0; AC_SUBST([GNULIB_LDEXPF])
|
||||
GNULIB_LDEXPL=0; AC_SUBST([GNULIB_LDEXPL])
|
||||
GNULIB_LOG=0; AC_SUBST([GNULIB_LOG])
|
||||
GNULIB_LOGF=0; AC_SUBST([GNULIB_LOGF])
|
||||
GNULIB_LOGL=0; AC_SUBST([GNULIB_LOGL])
|
||||
GNULIB_LOG10=0; AC_SUBST([GNULIB_LOG10])
|
||||
GNULIB_LOG10F=0; AC_SUBST([GNULIB_LOG10F])
|
||||
GNULIB_LOG10L=0; AC_SUBST([GNULIB_LOG10L])
|
||||
GNULIB_LOG1P=0; AC_SUBST([GNULIB_LOG1P])
|
||||
GNULIB_LOG1PF=0; AC_SUBST([GNULIB_LOG1PF])
|
||||
GNULIB_LOG1PL=0; AC_SUBST([GNULIB_LOG1PL])
|
||||
GNULIB_LOG2=0; AC_SUBST([GNULIB_LOG2])
|
||||
GNULIB_LOG2F=0; AC_SUBST([GNULIB_LOG2F])
|
||||
GNULIB_LOG2L=0; AC_SUBST([GNULIB_LOG2L])
|
||||
GNULIB_LOGB=0; AC_SUBST([GNULIB_LOGB])
|
||||
GNULIB_LOGBF=0; AC_SUBST([GNULIB_LOGBF])
|
||||
GNULIB_LOGBL=0; AC_SUBST([GNULIB_LOGBL])
|
||||
GNULIB_MODF=0; AC_SUBST([GNULIB_MODF])
|
||||
GNULIB_MODFF=0; AC_SUBST([GNULIB_MODFF])
|
||||
GNULIB_MODFL=0; AC_SUBST([GNULIB_MODFL])
|
||||
GNULIB_POWF=0; AC_SUBST([GNULIB_POWF])
|
||||
GNULIB_REMAINDER=0; AC_SUBST([GNULIB_REMAINDER])
|
||||
GNULIB_REMAINDERF=0; AC_SUBST([GNULIB_REMAINDERF])
|
||||
GNULIB_REMAINDERL=0; AC_SUBST([GNULIB_REMAINDERL])
|
||||
GNULIB_RINT=0; AC_SUBST([GNULIB_RINT])
|
||||
GNULIB_RINTF=0; AC_SUBST([GNULIB_RINTF])
|
||||
GNULIB_RINTL=0; AC_SUBST([GNULIB_RINTL])
|
||||
GNULIB_ROUND=0; AC_SUBST([GNULIB_ROUND])
|
||||
GNULIB_ROUNDF=0; AC_SUBST([GNULIB_ROUNDF])
|
||||
GNULIB_ROUNDL=0; AC_SUBST([GNULIB_ROUNDL])
|
||||
GNULIB_SIGNBIT=0; AC_SUBST([GNULIB_SIGNBIT])
|
||||
GNULIB_SINF=0; AC_SUBST([GNULIB_SINF])
|
||||
GNULIB_SINL=0; AC_SUBST([GNULIB_SINL])
|
||||
GNULIB_SINHF=0; AC_SUBST([GNULIB_SINHF])
|
||||
GNULIB_SQRTF=0; AC_SUBST([GNULIB_SQRTF])
|
||||
GNULIB_SQRTL=0; AC_SUBST([GNULIB_SQRTL])
|
||||
GNULIB_TANF=0; AC_SUBST([GNULIB_TANF])
|
||||
GNULIB_TANL=0; AC_SUBST([GNULIB_TANL])
|
||||
GNULIB_TANHF=0; AC_SUBST([GNULIB_TANHF])
|
||||
GNULIB_TRUNC=0; AC_SUBST([GNULIB_TRUNC])
|
||||
GNULIB_TRUNCF=0; AC_SUBST([GNULIB_TRUNCF])
|
||||
GNULIB_TRUNCL=0; AC_SUBST([GNULIB_TRUNCL])
|
||||
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_EXPM1=0; AC_SUBST([REPLACE_EXPM1])
|
||||
REPLACE_EXPM1F=0; AC_SUBST([REPLACE_EXPM1F])
|
||||
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_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_GCC=0; AC_SUBST([REPLACE_SIGNBIT_USING_GCC])
|
||||
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])
|
||||
])
|
||||
99
m4/memchr.m4
Normal file
99
m4/memchr.m4
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
# memchr.m4 serial 13
|
||||
dnl Copyright (C) 2002-2004, 2009-2018 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_FUNC_MEMCHR],
|
||||
[
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
|
||||
dnl Check for prerequisites for memory fence checks.
|
||||
gl_FUNC_MMAP_ANON
|
||||
AC_CHECK_HEADERS_ONCE([sys/mman.h])
|
||||
AC_CHECK_FUNCS_ONCE([mprotect])
|
||||
|
||||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||||
m4_ifdef([gl_FUNC_MEMCHR_OBSOLETE], [
|
||||
dnl These days, we assume memchr is present. But if support for old
|
||||
dnl platforms is desired:
|
||||
AC_CHECK_FUNCS_ONCE([memchr])
|
||||
if test $ac_cv_func_memchr = no; then
|
||||
HAVE_MEMCHR=0
|
||||
fi
|
||||
])
|
||||
if test $HAVE_MEMCHR = 1; then
|
||||
# Detect platform-specific bugs in some versions of glibc:
|
||||
# memchr should not dereference anything with length 0
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=499689
|
||||
# memchr should not dereference overestimated length after a match
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=521737
|
||||
# https://sourceware.org/bugzilla/show_bug.cgi?id=10162
|
||||
# Assume that memchr works on platforms that lack mprotect.
|
||||
AC_CACHE_CHECK([whether memchr works], [gl_cv_func_memchr_works],
|
||||
[AC_RUN_IFELSE([AC_LANG_PROGRAM([[
|
||||
#include <string.h>
|
||||
#if HAVE_SYS_MMAN_H
|
||||
# include <fcntl.h>
|
||||
# include <unistd.h>
|
||||
# include <sys/types.h>
|
||||
# include <sys/mman.h>
|
||||
# ifndef MAP_FILE
|
||||
# define MAP_FILE 0
|
||||
# endif
|
||||
#endif
|
||||
]], [[
|
||||
int result = 0;
|
||||
char *fence = NULL;
|
||||
#if HAVE_SYS_MMAN_H && HAVE_MPROTECT
|
||||
# if HAVE_MAP_ANONYMOUS
|
||||
const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
|
||||
const int fd = -1;
|
||||
# else /* !HAVE_MAP_ANONYMOUS */
|
||||
const int flags = MAP_FILE | MAP_PRIVATE;
|
||||
int fd = open ("/dev/zero", O_RDONLY, 0666);
|
||||
if (fd >= 0)
|
||||
# endif
|
||||
{
|
||||
int pagesize = getpagesize ();
|
||||
char *two_pages =
|
||||
(char *) mmap (NULL, 2 * pagesize, PROT_READ | PROT_WRITE,
|
||||
flags, fd, 0);
|
||||
if (two_pages != (char *)(-1)
|
||||
&& mprotect (two_pages + pagesize, pagesize, PROT_NONE) == 0)
|
||||
fence = two_pages + pagesize;
|
||||
}
|
||||
#endif
|
||||
if (fence)
|
||||
{
|
||||
if (memchr (fence, 0, 0))
|
||||
result |= 1;
|
||||
strcpy (fence - 9, "12345678");
|
||||
if (memchr (fence - 9, 0, 79) != fence - 1)
|
||||
result |= 2;
|
||||
if (memchr (fence - 1, 0, 3) != fence - 1)
|
||||
result |= 4;
|
||||
}
|
||||
return result;
|
||||
]])],
|
||||
[gl_cv_func_memchr_works=yes],
|
||||
[gl_cv_func_memchr_works=no],
|
||||
[case "$host_os" in
|
||||
# Guess yes on native Windows.
|
||||
mingw*) gl_cv_func_memchr_works="guessing yes" ;;
|
||||
# Be pessimistic for now.
|
||||
*) gl_cv_func_memchr_works="guessing no" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
case "$gl_cv_func_memchr_works" in
|
||||
*yes) ;;
|
||||
*) REPLACE_MEMCHR=1 ;;
|
||||
esac
|
||||
fi
|
||||
])
|
||||
|
||||
# Prerequisites of lib/memchr.c.
|
||||
AC_DEFUN([gl_PREREQ_MEMCHR], [
|
||||
AC_CHECK_HEADERS([bp-sym.h])
|
||||
])
|
||||
55
m4/mmap-anon.m4
Normal file
55
m4/mmap-anon.m4
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# mmap-anon.m4 serial 10
|
||||
dnl Copyright (C) 2005, 2007, 2009-2018 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.
|
||||
|
||||
# Detect how mmap can be used to create anonymous (not file-backed) memory
|
||||
# mappings.
|
||||
# - On Linux, AIX, OSF/1, Solaris, Cygwin, Interix, Haiku, both MAP_ANONYMOUS
|
||||
# and MAP_ANON exist and have the same value.
|
||||
# - On HP-UX, only MAP_ANONYMOUS exists.
|
||||
# - On Mac OS X, FreeBSD, NetBSD, OpenBSD, only MAP_ANON exists.
|
||||
# - On IRIX, neither exists, and a file descriptor opened to /dev/zero must be
|
||||
# used.
|
||||
|
||||
AC_DEFUN([gl_FUNC_MMAP_ANON],
|
||||
[
|
||||
dnl Persuade glibc <sys/mman.h> to define MAP_ANONYMOUS.
|
||||
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
|
||||
|
||||
# Check for mmap(). Don't use AC_FUNC_MMAP, because it checks too much: it
|
||||
# fails on HP-UX 11, because MAP_FIXED mappings do not work. But this is
|
||||
# irrelevant for anonymous mappings.
|
||||
AC_CHECK_FUNC([mmap], [gl_have_mmap=yes], [gl_have_mmap=no])
|
||||
|
||||
# Try to allow MAP_ANONYMOUS.
|
||||
gl_have_mmap_anonymous=no
|
||||
if test $gl_have_mmap = yes; then
|
||||
AC_MSG_CHECKING([for MAP_ANONYMOUS])
|
||||
AC_EGREP_CPP([I cannot identify this map], [
|
||||
#include <sys/mman.h>
|
||||
#ifdef MAP_ANONYMOUS
|
||||
I cannot identify this map
|
||||
#endif
|
||||
],
|
||||
[gl_have_mmap_anonymous=yes])
|
||||
if test $gl_have_mmap_anonymous != yes; then
|
||||
AC_EGREP_CPP([I cannot identify this map], [
|
||||
#include <sys/mman.h>
|
||||
#ifdef MAP_ANON
|
||||
I cannot identify this map
|
||||
#endif
|
||||
],
|
||||
[AC_DEFINE([MAP_ANONYMOUS], [MAP_ANON],
|
||||
[Define to a substitute value for mmap()'s MAP_ANONYMOUS flag.])
|
||||
gl_have_mmap_anonymous=yes])
|
||||
fi
|
||||
AC_MSG_RESULT([$gl_have_mmap_anonymous])
|
||||
if test $gl_have_mmap_anonymous = yes; then
|
||||
AC_DEFINE([HAVE_MAP_ANONYMOUS], [1],
|
||||
[Define to 1 if mmap()'s MAP_ANONYMOUS flag is available after including
|
||||
config.h and <sys/mman.h>.])
|
||||
fi
|
||||
fi
|
||||
])
|
||||
62
m4/multiarch.m4
Normal file
62
m4/multiarch.m4
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
# multiarch.m4 serial 7
|
||||
dnl Copyright (C) 2008-2018 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.
|
||||
|
||||
# Determine whether the compiler is or may be producing universal binaries.
|
||||
#
|
||||
# On Mac OS X 10.5 and later systems, the user can create libraries and
|
||||
# executables that work on multiple system types--known as "fat" or
|
||||
# "universal" binaries--by specifying multiple '-arch' options to the
|
||||
# compiler but only a single '-arch' option to the preprocessor. Like
|
||||
# this:
|
||||
#
|
||||
# ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
# CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
# CPP="gcc -E" CXXCPP="g++ -E"
|
||||
#
|
||||
# Detect this situation and set APPLE_UNIVERSAL_BUILD accordingly.
|
||||
|
||||
AC_DEFUN_ONCE([gl_MULTIARCH],
|
||||
[
|
||||
dnl Code similar to autoconf-2.63 AC_C_BIGENDIAN.
|
||||
gl_cv_c_multiarch=no
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_SOURCE(
|
||||
[[#ifndef __APPLE_CC__
|
||||
not a universal capable compiler
|
||||
#endif
|
||||
typedef int dummy;
|
||||
]])],
|
||||
[
|
||||
dnl Check for potential -arch flags. It is not universal unless
|
||||
dnl there are at least two -arch flags with different values.
|
||||
arch=
|
||||
prev=
|
||||
for word in ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}; do
|
||||
if test -n "$prev"; then
|
||||
case $word in
|
||||
i?86 | x86_64 | ppc | ppc64)
|
||||
if test -z "$arch" || test "$arch" = "$word"; then
|
||||
arch="$word"
|
||||
else
|
||||
gl_cv_c_multiarch=yes
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
prev=
|
||||
else
|
||||
if test "x$word" = "x-arch"; then
|
||||
prev=arch
|
||||
fi
|
||||
fi
|
||||
done
|
||||
])
|
||||
if test $gl_cv_c_multiarch = yes; then
|
||||
APPLE_UNIVERSAL_BUILD=1
|
||||
else
|
||||
APPLE_UNIVERSAL_BUILD=0
|
||||
fi
|
||||
AC_SUBST([APPLE_UNIVERSAL_BUILD])
|
||||
])
|
||||
131
m4/nocrash.m4
Normal file
131
m4/nocrash.m4
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
# nocrash.m4 serial 5
|
||||
dnl Copyright (C) 2005, 2009-2018 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 Based on libsigsegv, from Bruno Haible and Paolo Bonzini.
|
||||
|
||||
AC_PREREQ([2.13])
|
||||
|
||||
dnl Expands to some code for use in .c programs that will cause the configure
|
||||
dnl test to exit instead of crashing. This is useful to avoid triggering
|
||||
dnl action from a background debugger and to avoid core dumps.
|
||||
dnl Usage: ...
|
||||
dnl ]GL_NOCRASH[
|
||||
dnl ...
|
||||
dnl int main() { nocrash_init(); ... }
|
||||
AC_DEFUN([GL_NOCRASH],[[
|
||||
#include <stdlib.h>
|
||||
#if defined __MACH__ && defined __APPLE__
|
||||
/* Avoid a crash on Mac OS X. */
|
||||
#include <mach/mach.h>
|
||||
#include <mach/mach_error.h>
|
||||
#include <mach/thread_status.h>
|
||||
#include <mach/exception.h>
|
||||
#include <mach/task.h>
|
||||
#include <pthread.h>
|
||||
/* The exception port on which our thread listens. */
|
||||
static mach_port_t our_exception_port;
|
||||
/* The main function of the thread listening for exceptions of type
|
||||
EXC_BAD_ACCESS. */
|
||||
static void *
|
||||
mach_exception_thread (void *arg)
|
||||
{
|
||||
/* Buffer for a message to be received. */
|
||||
struct {
|
||||
mach_msg_header_t head;
|
||||
mach_msg_body_t msgh_body;
|
||||
char data[1024];
|
||||
} msg;
|
||||
mach_msg_return_t retval;
|
||||
/* Wait for a message on the exception port. */
|
||||
retval = mach_msg (&msg.head, MACH_RCV_MSG | MACH_RCV_LARGE, 0, sizeof (msg),
|
||||
our_exception_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL);
|
||||
if (retval != MACH_MSG_SUCCESS)
|
||||
abort ();
|
||||
exit (1);
|
||||
}
|
||||
static void
|
||||
nocrash_init (void)
|
||||
{
|
||||
mach_port_t self = mach_task_self ();
|
||||
/* Allocate a port on which the thread shall listen for exceptions. */
|
||||
if (mach_port_allocate (self, MACH_PORT_RIGHT_RECEIVE, &our_exception_port)
|
||||
== KERN_SUCCESS) {
|
||||
/* See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/mach_port_insert_right.html. */
|
||||
if (mach_port_insert_right (self, our_exception_port, our_exception_port,
|
||||
MACH_MSG_TYPE_MAKE_SEND)
|
||||
== KERN_SUCCESS) {
|
||||
/* The exceptions we want to catch. Only EXC_BAD_ACCESS is interesting
|
||||
for us. */
|
||||
exception_mask_t mask = EXC_MASK_BAD_ACCESS;
|
||||
/* Create the thread listening on the exception port. */
|
||||
pthread_attr_t attr;
|
||||
pthread_t thread;
|
||||
if (pthread_attr_init (&attr) == 0
|
||||
&& pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED) == 0
|
||||
&& pthread_create (&thread, &attr, mach_exception_thread, NULL) == 0) {
|
||||
pthread_attr_destroy (&attr);
|
||||
/* Replace the exception port info for these exceptions with our own.
|
||||
Note that we replace the exception port for the entire task, not only
|
||||
for a particular thread. This has the effect that when our exception
|
||||
port gets the message, the thread specific exception port has already
|
||||
been asked, and we don't need to bother about it.
|
||||
See http://web.mit.edu/darwin/src/modules/xnu/osfmk/man/task_set_exception_ports.html. */
|
||||
task_set_exception_ports (self, mask, our_exception_port,
|
||||
EXCEPTION_DEFAULT, MACHINE_THREAD_STATE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#elif defined _WIN32 && ! defined __CYGWIN__
|
||||
/* Avoid a crash on native Windows. */
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <winerror.h>
|
||||
static LONG WINAPI
|
||||
exception_filter (EXCEPTION_POINTERS *ExceptionInfo)
|
||||
{
|
||||
switch (ExceptionInfo->ExceptionRecord->ExceptionCode)
|
||||
{
|
||||
case EXCEPTION_ACCESS_VIOLATION:
|
||||
case EXCEPTION_IN_PAGE_ERROR:
|
||||
case EXCEPTION_STACK_OVERFLOW:
|
||||
case EXCEPTION_GUARD_PAGE:
|
||||
case EXCEPTION_PRIV_INSTRUCTION:
|
||||
case EXCEPTION_ILLEGAL_INSTRUCTION:
|
||||
case EXCEPTION_DATATYPE_MISALIGNMENT:
|
||||
case EXCEPTION_ARRAY_BOUNDS_EXCEEDED:
|
||||
case EXCEPTION_NONCONTINUABLE_EXCEPTION:
|
||||
exit (1);
|
||||
}
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
static void
|
||||
nocrash_init (void)
|
||||
{
|
||||
SetUnhandledExceptionFilter ((LPTOP_LEVEL_EXCEPTION_FILTER) exception_filter);
|
||||
}
|
||||
#else
|
||||
/* Avoid a crash on POSIX systems. */
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
/* A POSIX signal handler. */
|
||||
static void
|
||||
exception_handler (int sig)
|
||||
{
|
||||
_exit (1);
|
||||
}
|
||||
static void
|
||||
nocrash_init (void)
|
||||
{
|
||||
#ifdef SIGSEGV
|
||||
signal (SIGSEGV, exception_handler);
|
||||
#endif
|
||||
#ifdef SIGBUS
|
||||
signal (SIGBUS, exception_handler);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
]])
|
||||
18
m4/off_t.m4
Normal file
18
m4/off_t.m4
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# off_t.m4 serial 1
|
||||
dnl Copyright (C) 2012-2018 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 whether to override the 'off_t' type.
|
||||
dnl Set WINDOWS_64_BIT_OFF_T.
|
||||
|
||||
AC_DEFUN([gl_TYPE_OFF_T],
|
||||
[
|
||||
m4_ifdef([gl_LARGEFILE], [
|
||||
AC_REQUIRE([gl_LARGEFILE])
|
||||
], [
|
||||
WINDOWS_64_BIT_OFF_T=0
|
||||
])
|
||||
AC_SUBST([WINDOWS_64_BIT_OFF_T])
|
||||
])
|
||||
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-2018 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-2018 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
|
||||
])
|
||||
1631
m4/printf.m4
Normal file
1631
m4/printf.m4
Normal file
File diff suppressed because it is too large
Load diff
377
m4/signbit.m4
Normal file
377
m4/signbit.m4
Normal file
|
|
@ -0,0 +1,377 @@
|
|||
# signbit.m4 serial 16
|
||||
dnl Copyright (C) 2007-2018 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]) dnl for cross-compiles
|
||||
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 native Windows.
|
||||
mingw*) gl_cv_func_signbit="guessing yes" ;;
|
||||
# If we don't know, assume the worst.
|
||||
*) gl_cv_func_signbit="guessing no" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
dnl GCC 4.0 and newer provides 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_gcc],
|
||||
[
|
||||
AC_RUN_IFELSE(
|
||||
[AC_LANG_SOURCE([[
|
||||
#if __GNUC__ >= 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_gcc=yes],
|
||||
[gl_cv_func_signbit_gcc=no],
|
||||
[case "$host_os" in
|
||||
# Guess yes on glibc systems.
|
||||
*-gnu* | gnu*) gl_cv_func_signbit_gcc="guessing yes" ;;
|
||||
# Guess yes on mingw, no on MSVC.
|
||||
mingw*) if test -n "$GCC"; then
|
||||
gl_cv_func_signbit_gcc="guessing yes"
|
||||
else
|
||||
gl_cv_func_signbit_gcc="guessing no"
|
||||
fi
|
||||
;;
|
||||
# If we don't know, assume the worst.
|
||||
*) gl_cv_func_signbit_gcc="guessing no" ;;
|
||||
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_gcc" in
|
||||
*yes)
|
||||
REPLACE_SIGNBIT_USING_GCC=1
|
||||
;;
|
||||
*)
|
||||
case "$gl_cv_func_signbit" in
|
||||
*yes) ;;
|
||||
*)
|
||||
dnl REPLACE_SIGNBIT=1 makes sure the signbit[fdl] functions get built.
|
||||
REPLACE_SIGNBIT=1
|
||||
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
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
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;
|
||||
}
|
||||
]])
|
||||
79
m4/size_max.m4
Normal file
79
m4/size_max.m4
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
# size_max.m4 serial 10
|
||||
dnl Copyright (C) 2003, 2005-2006, 2008-2018 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_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=
|
||||
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 -z "$gl_cv_size_max"; 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])
|
||||
])
|
||||
|
||||
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
|
||||
dnl Remove this when we can assume autoconf >= 2.61.
|
||||
m4_ifdef([AC_COMPUTE_INT], [], [
|
||||
AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
|
||||
])
|
||||
23
m4/ssize_t.m4
Normal file
23
m4/ssize_t.m4
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# ssize_t.m4 serial 5 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2001-2003, 2006, 2010-2018 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.
|
||||
dnl Test whether ssize_t is defined.
|
||||
|
||||
AC_DEFUN([gt_TYPE_SSIZE_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for ssize_t], [gt_cv_ssize_t],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <sys/types.h>]],
|
||||
[[int x = sizeof (ssize_t *) + sizeof (ssize_t);
|
||||
return !x;]])],
|
||||
[gt_cv_ssize_t=yes], [gt_cv_ssize_t=no])])
|
||||
if test $gt_cv_ssize_t = no; then
|
||||
AC_DEFINE([ssize_t], [int],
|
||||
[Define as a signed type of the same size as size_t.])
|
||||
fi
|
||||
])
|
||||
51
m4/stddef_h.m4
Normal file
51
m4/stddef_h.m4
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
dnl A placeholder for <stddef.h>, for platforms that have issues.
|
||||
# stddef_h.m4 serial 5
|
||||
dnl Copyright (C) 2009-2018 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_STDDEF_H],
|
||||
[
|
||||
AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
|
||||
AC_REQUIRE([gt_TYPE_WCHAR_T])
|
||||
STDDEF_H=
|
||||
AC_CHECK_TYPE([max_align_t], [], [HAVE_MAX_ALIGN_T=0; STDDEF_H=stddef.h],
|
||||
[[#include <stddef.h>
|
||||
]])
|
||||
if test $gt_cv_c_wchar_t = no; then
|
||||
HAVE_WCHAR_T=0
|
||||
STDDEF_H=stddef.h
|
||||
fi
|
||||
AC_CACHE_CHECK([whether NULL can be used in arbitrary expressions],
|
||||
[gl_cv_decl_null_works],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stddef.h>
|
||||
int test[2 * (sizeof NULL == sizeof (void *)) -1];
|
||||
]])],
|
||||
[gl_cv_decl_null_works=yes],
|
||||
[gl_cv_decl_null_works=no])])
|
||||
if test $gl_cv_decl_null_works = no; then
|
||||
REPLACE_NULL=1
|
||||
STDDEF_H=stddef.h
|
||||
fi
|
||||
AC_SUBST([STDDEF_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_STDDEF_H], [test -n "$STDDEF_H"])
|
||||
if test -n "$STDDEF_H"; then
|
||||
gl_NEXT_HEADERS([stddef.h])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_STDDEF_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_STDDEF_H_DEFAULTS])
|
||||
gl_MODULE_INDICATOR_SET_VARIABLE([$1])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_STDDEF_H_DEFAULTS],
|
||||
[
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
REPLACE_NULL=0; AC_SUBST([REPLACE_NULL])
|
||||
HAVE_MAX_ALIGN_T=1; AC_SUBST([HAVE_MAX_ALIGN_T])
|
||||
HAVE_WCHAR_T=1; AC_SUBST([HAVE_WCHAR_T])
|
||||
])
|
||||
549
m4/stdint.m4
Normal file
549
m4/stdint.m4
Normal file
|
|
@ -0,0 +1,549 @@
|
|||
# stdint.m4 serial 51
|
||||
dnl Copyright (C) 2001-2018 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 and Bruno Haible.
|
||||
dnl Test whether <stdint.h> is supported or must be substituted.
|
||||
|
||||
AC_DEFUN_ONCE([gl_STDINT_H],
|
||||
[
|
||||
AC_PREREQ([2.59])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
|
||||
|
||||
AC_REQUIRE([gl_LIMITS_H])
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||||
|
||||
dnl Check for long long int and unsigned long long int.
|
||||
AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
|
||||
if test $ac_cv_type_long_long_int = yes; then
|
||||
HAVE_LONG_LONG_INT=1
|
||||
else
|
||||
HAVE_LONG_LONG_INT=0
|
||||
fi
|
||||
AC_SUBST([HAVE_LONG_LONG_INT])
|
||||
AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
|
||||
if test $ac_cv_type_unsigned_long_long_int = yes; then
|
||||
HAVE_UNSIGNED_LONG_LONG_INT=1
|
||||
else
|
||||
HAVE_UNSIGNED_LONG_LONG_INT=0
|
||||
fi
|
||||
AC_SUBST([HAVE_UNSIGNED_LONG_LONG_INT])
|
||||
|
||||
dnl Check for <wchar.h>, in the same way as gl_WCHAR_H does.
|
||||
AC_CHECK_HEADERS_ONCE([wchar.h])
|
||||
if test $ac_cv_header_wchar_h = yes; then
|
||||
HAVE_WCHAR_H=1
|
||||
else
|
||||
HAVE_WCHAR_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_WCHAR_H])
|
||||
|
||||
dnl Check for <inttypes.h>.
|
||||
dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
|
||||
if test $ac_cv_header_inttypes_h = yes; then
|
||||
HAVE_INTTYPES_H=1
|
||||
else
|
||||
HAVE_INTTYPES_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_INTTYPES_H])
|
||||
|
||||
dnl Check for <sys/types.h>.
|
||||
dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_sys_types_h.
|
||||
if test $ac_cv_header_sys_types_h = yes; then
|
||||
HAVE_SYS_TYPES_H=1
|
||||
else
|
||||
HAVE_SYS_TYPES_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_SYS_TYPES_H])
|
||||
|
||||
gl_CHECK_NEXT_HEADERS([stdint.h])
|
||||
if test $ac_cv_header_stdint_h = yes; then
|
||||
HAVE_STDINT_H=1
|
||||
else
|
||||
HAVE_STDINT_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_STDINT_H])
|
||||
|
||||
dnl Now see whether we need a substitute <stdint.h>.
|
||||
if test $ac_cv_header_stdint_h = yes; then
|
||||
AC_CACHE_CHECK([whether stdint.h conforms to C99],
|
||||
[gl_cv_header_working_stdint_h],
|
||||
[gl_cv_header_working_stdint_h=no
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
|
||||
#define __STDC_CONSTANT_MACROS 1
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
#include <stdint.h>
|
||||
/* Dragonfly defines WCHAR_MIN, WCHAR_MAX only in <wchar.h>. */
|
||||
#if !(defined WCHAR_MIN && defined WCHAR_MAX)
|
||||
#error "WCHAR_MIN, WCHAR_MAX not defined in <stdint.h>"
|
||||
#endif
|
||||
]
|
||||
gl_STDINT_INCLUDES
|
||||
[
|
||||
#ifdef INT8_MAX
|
||||
int8_t a1 = INT8_MAX;
|
||||
int8_t a1min = INT8_MIN;
|
||||
#endif
|
||||
#ifdef INT16_MAX
|
||||
int16_t a2 = INT16_MAX;
|
||||
int16_t a2min = INT16_MIN;
|
||||
#endif
|
||||
#ifdef INT32_MAX
|
||||
int32_t a3 = INT32_MAX;
|
||||
int32_t a3min = INT32_MIN;
|
||||
#endif
|
||||
#ifdef INT64_MAX
|
||||
int64_t a4 = INT64_MAX;
|
||||
int64_t a4min = INT64_MIN;
|
||||
#endif
|
||||
#ifdef UINT8_MAX
|
||||
uint8_t b1 = UINT8_MAX;
|
||||
#else
|
||||
typedef int b1[(unsigned char) -1 != 255 ? 1 : -1];
|
||||
#endif
|
||||
#ifdef UINT16_MAX
|
||||
uint16_t b2 = UINT16_MAX;
|
||||
#endif
|
||||
#ifdef UINT32_MAX
|
||||
uint32_t b3 = UINT32_MAX;
|
||||
#endif
|
||||
#ifdef UINT64_MAX
|
||||
uint64_t b4 = UINT64_MAX;
|
||||
#endif
|
||||
int_least8_t c1 = INT8_C (0x7f);
|
||||
int_least8_t c1max = INT_LEAST8_MAX;
|
||||
int_least8_t c1min = INT_LEAST8_MIN;
|
||||
int_least16_t c2 = INT16_C (0x7fff);
|
||||
int_least16_t c2max = INT_LEAST16_MAX;
|
||||
int_least16_t c2min = INT_LEAST16_MIN;
|
||||
int_least32_t c3 = INT32_C (0x7fffffff);
|
||||
int_least32_t c3max = INT_LEAST32_MAX;
|
||||
int_least32_t c3min = INT_LEAST32_MIN;
|
||||
int_least64_t c4 = INT64_C (0x7fffffffffffffff);
|
||||
int_least64_t c4max = INT_LEAST64_MAX;
|
||||
int_least64_t c4min = INT_LEAST64_MIN;
|
||||
uint_least8_t d1 = UINT8_C (0xff);
|
||||
uint_least8_t d1max = UINT_LEAST8_MAX;
|
||||
uint_least16_t d2 = UINT16_C (0xffff);
|
||||
uint_least16_t d2max = UINT_LEAST16_MAX;
|
||||
uint_least32_t d3 = UINT32_C (0xffffffff);
|
||||
uint_least32_t d3max = UINT_LEAST32_MAX;
|
||||
uint_least64_t d4 = UINT64_C (0xffffffffffffffff);
|
||||
uint_least64_t d4max = UINT_LEAST64_MAX;
|
||||
int_fast8_t e1 = INT_FAST8_MAX;
|
||||
int_fast8_t e1min = INT_FAST8_MIN;
|
||||
int_fast16_t e2 = INT_FAST16_MAX;
|
||||
int_fast16_t e2min = INT_FAST16_MIN;
|
||||
int_fast32_t e3 = INT_FAST32_MAX;
|
||||
int_fast32_t e3min = INT_FAST32_MIN;
|
||||
int_fast64_t e4 = INT_FAST64_MAX;
|
||||
int_fast64_t e4min = INT_FAST64_MIN;
|
||||
uint_fast8_t f1 = UINT_FAST8_MAX;
|
||||
uint_fast16_t f2 = UINT_FAST16_MAX;
|
||||
uint_fast32_t f3 = UINT_FAST32_MAX;
|
||||
uint_fast64_t f4 = UINT_FAST64_MAX;
|
||||
#ifdef INTPTR_MAX
|
||||
intptr_t g = INTPTR_MAX;
|
||||
intptr_t gmin = INTPTR_MIN;
|
||||
#endif
|
||||
#ifdef UINTPTR_MAX
|
||||
uintptr_t h = UINTPTR_MAX;
|
||||
#endif
|
||||
intmax_t i = INTMAX_MAX;
|
||||
uintmax_t j = UINTMAX_MAX;
|
||||
|
||||
/* Check that SIZE_MAX has the correct type, if possible. */
|
||||
#if 201112 <= __STDC_VERSION__
|
||||
int k = _Generic (SIZE_MAX, size_t: 0);
|
||||
#elif (2 <= __GNUC__ || defined __IBM__TYPEOF__ \
|
||||
|| (0x5110 <= __SUNPRO_C && !__STDC__))
|
||||
extern size_t k;
|
||||
extern __typeof__ (SIZE_MAX) k;
|
||||
#endif
|
||||
|
||||
#include <limits.h> /* for CHAR_BIT */
|
||||
#define TYPE_MINIMUM(t) \
|
||||
((t) ((t) 0 < (t) -1 ? (t) 0 : ~ TYPE_MAXIMUM (t)))
|
||||
#define TYPE_MAXIMUM(t) \
|
||||
((t) ((t) 0 < (t) -1 \
|
||||
? (t) -1 \
|
||||
: ((((t) 1 << (sizeof (t) * CHAR_BIT - 2)) - 1) * 2 + 1)))
|
||||
struct s {
|
||||
int check_PTRDIFF:
|
||||
PTRDIFF_MIN == TYPE_MINIMUM (ptrdiff_t)
|
||||
&& PTRDIFF_MAX == TYPE_MAXIMUM (ptrdiff_t)
|
||||
? 1 : -1;
|
||||
/* Detect bug in FreeBSD 6.0 / ia64. */
|
||||
int check_SIG_ATOMIC:
|
||||
SIG_ATOMIC_MIN == TYPE_MINIMUM (sig_atomic_t)
|
||||
&& SIG_ATOMIC_MAX == TYPE_MAXIMUM (sig_atomic_t)
|
||||
? 1 : -1;
|
||||
int check_SIZE: SIZE_MAX == TYPE_MAXIMUM (size_t) ? 1 : -1;
|
||||
int check_WCHAR:
|
||||
WCHAR_MIN == TYPE_MINIMUM (wchar_t)
|
||||
&& WCHAR_MAX == TYPE_MAXIMUM (wchar_t)
|
||||
? 1 : -1;
|
||||
/* Detect bug in mingw. */
|
||||
int check_WINT:
|
||||
WINT_MIN == TYPE_MINIMUM (wint_t)
|
||||
&& WINT_MAX == TYPE_MAXIMUM (wint_t)
|
||||
? 1 : -1;
|
||||
|
||||
/* Detect bugs in glibc 2.4 and Solaris 10 stdint.h, among others. */
|
||||
int check_UINT8_C:
|
||||
(-1 < UINT8_C (0)) == (-1 < (uint_least8_t) 0) ? 1 : -1;
|
||||
int check_UINT16_C:
|
||||
(-1 < UINT16_C (0)) == (-1 < (uint_least16_t) 0) ? 1 : -1;
|
||||
|
||||
/* Detect bugs in OpenBSD 3.9 stdint.h. */
|
||||
#ifdef UINT8_MAX
|
||||
int check_uint8: (uint8_t) -1 == UINT8_MAX ? 1 : -1;
|
||||
#endif
|
||||
#ifdef UINT16_MAX
|
||||
int check_uint16: (uint16_t) -1 == UINT16_MAX ? 1 : -1;
|
||||
#endif
|
||||
#ifdef UINT32_MAX
|
||||
int check_uint32: (uint32_t) -1 == UINT32_MAX ? 1 : -1;
|
||||
#endif
|
||||
#ifdef UINT64_MAX
|
||||
int check_uint64: (uint64_t) -1 == UINT64_MAX ? 1 : -1;
|
||||
#endif
|
||||
int check_uint_least8: (uint_least8_t) -1 == UINT_LEAST8_MAX ? 1 : -1;
|
||||
int check_uint_least16: (uint_least16_t) -1 == UINT_LEAST16_MAX ? 1 : -1;
|
||||
int check_uint_least32: (uint_least32_t) -1 == UINT_LEAST32_MAX ? 1 : -1;
|
||||
int check_uint_least64: (uint_least64_t) -1 == UINT_LEAST64_MAX ? 1 : -1;
|
||||
int check_uint_fast8: (uint_fast8_t) -1 == UINT_FAST8_MAX ? 1 : -1;
|
||||
int check_uint_fast16: (uint_fast16_t) -1 == UINT_FAST16_MAX ? 1 : -1;
|
||||
int check_uint_fast32: (uint_fast32_t) -1 == UINT_FAST32_MAX ? 1 : -1;
|
||||
int check_uint_fast64: (uint_fast64_t) -1 == UINT_FAST64_MAX ? 1 : -1;
|
||||
int check_uintptr: (uintptr_t) -1 == UINTPTR_MAX ? 1 : -1;
|
||||
int check_uintmax: (uintmax_t) -1 == UINTMAX_MAX ? 1 : -1;
|
||||
int check_size: (size_t) -1 == SIZE_MAX ? 1 : -1;
|
||||
};
|
||||
]])],
|
||||
[dnl Determine whether the various *_MIN, *_MAX macros are usable
|
||||
dnl in preprocessor expression. We could do it by compiling a test
|
||||
dnl program for each of these macros. It is faster to run a program
|
||||
dnl that inspects the macro expansion.
|
||||
dnl This detects a bug on HP-UX 11.23/ia64.
|
||||
AC_RUN_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
|
||||
#define __STDC_CONSTANT_MACROS 1
|
||||
#define __STDC_LIMIT_MACROS 1
|
||||
#include <stdint.h>
|
||||
]
|
||||
gl_STDINT_INCLUDES
|
||||
[
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#define MVAL(macro) MVAL1(macro)
|
||||
#define MVAL1(expression) #expression
|
||||
static const char *macro_values[] =
|
||||
{
|
||||
#ifdef INT8_MAX
|
||||
MVAL (INT8_MAX),
|
||||
#endif
|
||||
#ifdef INT16_MAX
|
||||
MVAL (INT16_MAX),
|
||||
#endif
|
||||
#ifdef INT32_MAX
|
||||
MVAL (INT32_MAX),
|
||||
#endif
|
||||
#ifdef INT64_MAX
|
||||
MVAL (INT64_MAX),
|
||||
#endif
|
||||
#ifdef UINT8_MAX
|
||||
MVAL (UINT8_MAX),
|
||||
#endif
|
||||
#ifdef UINT16_MAX
|
||||
MVAL (UINT16_MAX),
|
||||
#endif
|
||||
#ifdef UINT32_MAX
|
||||
MVAL (UINT32_MAX),
|
||||
#endif
|
||||
#ifdef UINT64_MAX
|
||||
MVAL (UINT64_MAX),
|
||||
#endif
|
||||
NULL
|
||||
};
|
||||
]], [[
|
||||
const char **mv;
|
||||
for (mv = macro_values; *mv != NULL; mv++)
|
||||
{
|
||||
const char *value = *mv;
|
||||
/* Test whether it looks like a cast expression. */
|
||||
if (strncmp (value, "((unsigned int)"/*)*/, 15) == 0
|
||||
|| strncmp (value, "((unsigned short)"/*)*/, 17) == 0
|
||||
|| strncmp (value, "((unsigned char)"/*)*/, 16) == 0
|
||||
|| strncmp (value, "((int)"/*)*/, 6) == 0
|
||||
|| strncmp (value, "((signed short)"/*)*/, 15) == 0
|
||||
|| strncmp (value, "((signed char)"/*)*/, 14) == 0)
|
||||
return mv - macro_values + 1;
|
||||
}
|
||||
return 0;
|
||||
]])],
|
||||
[gl_cv_header_working_stdint_h=yes],
|
||||
[],
|
||||
[case "$host_os" in
|
||||
# Guess yes on native Windows.
|
||||
mingw*) gl_cv_header_working_stdint_h="guessing yes" ;;
|
||||
# In general, assume it works.
|
||||
*) gl_cv_header_working_stdint_h="guessing yes" ;;
|
||||
esac
|
||||
])
|
||||
])
|
||||
])
|
||||
fi
|
||||
|
||||
HAVE_C99_STDINT_H=0
|
||||
HAVE_SYS_BITYPES_H=0
|
||||
HAVE_SYS_INTTYPES_H=0
|
||||
STDINT_H=stdint.h
|
||||
case "$gl_cv_header_working_stdint_h" in
|
||||
*yes)
|
||||
HAVE_C99_STDINT_H=1
|
||||
dnl Now see whether the system <stdint.h> works without
|
||||
dnl __STDC_CONSTANT_MACROS/__STDC_LIMIT_MACROS defined.
|
||||
AC_CACHE_CHECK([whether stdint.h predates C++11],
|
||||
[gl_cv_header_stdint_predates_cxx11_h],
|
||||
[gl_cv_header_stdint_predates_cxx11_h=yes
|
||||
AC_COMPILE_IFELSE([
|
||||
AC_LANG_PROGRAM([[
|
||||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1 /* work if build isn't clean */
|
||||
#include <stdint.h>
|
||||
]
|
||||
gl_STDINT_INCLUDES
|
||||
[
|
||||
intmax_t im = INTMAX_MAX;
|
||||
int32_t i32 = INT32_C (0x7fffffff);
|
||||
]])],
|
||||
[gl_cv_header_stdint_predates_cxx11_h=no])])
|
||||
|
||||
if test "$gl_cv_header_stdint_predates_cxx11_h" = yes; then
|
||||
AC_DEFINE([__STDC_CONSTANT_MACROS], [1],
|
||||
[Define to 1 if the system <stdint.h> predates C++11.])
|
||||
AC_DEFINE([__STDC_LIMIT_MACROS], [1],
|
||||
[Define to 1 if the system <stdint.h> predates C++11.])
|
||||
fi
|
||||
AC_CACHE_CHECK([whether stdint.h has UINTMAX_WIDTH etc.],
|
||||
[gl_cv_header_stdint_width],
|
||||
[gl_cv_header_stdint_width=no
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[
|
||||
/* Work if build is not clean. */
|
||||
#define _GL_JUST_INCLUDE_SYSTEM_STDINT_H 1
|
||||
#ifndef __STDC_WANT_IEC_60559_BFP_EXT__
|
||||
#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
|
||||
#endif
|
||||
#include <stdint.h>
|
||||
]gl_STDINT_INCLUDES[
|
||||
int iw = UINTMAX_WIDTH;
|
||||
]])],
|
||||
[gl_cv_header_stdint_width=yes])])
|
||||
if test "$gl_cv_header_stdint_width" = yes; then
|
||||
STDINT_H=
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
dnl Check for <sys/inttypes.h>, and for
|
||||
dnl <sys/bitypes.h> (used in Linux libc4 >= 4.6.7 and libc5).
|
||||
AC_CHECK_HEADERS([sys/inttypes.h sys/bitypes.h])
|
||||
if test $ac_cv_header_sys_inttypes_h = yes; then
|
||||
HAVE_SYS_INTTYPES_H=1
|
||||
fi
|
||||
if test $ac_cv_header_sys_bitypes_h = yes; then
|
||||
HAVE_SYS_BITYPES_H=1
|
||||
fi
|
||||
gl_STDINT_TYPE_PROPERTIES
|
||||
;;
|
||||
esac
|
||||
|
||||
dnl The substitute stdint.h needs the substitute limit.h's _GL_INTEGER_WIDTH.
|
||||
LIMITS_H=limits.h
|
||||
AM_CONDITIONAL([GL_GENERATE_LIMITS_H], [test -n "$LIMITS_H"])
|
||||
|
||||
AC_SUBST([HAVE_C99_STDINT_H])
|
||||
AC_SUBST([HAVE_SYS_BITYPES_H])
|
||||
AC_SUBST([HAVE_SYS_INTTYPES_H])
|
||||
AC_SUBST([STDINT_H])
|
||||
AM_CONDITIONAL([GL_GENERATE_STDINT_H], [test -n "$STDINT_H"])
|
||||
])
|
||||
|
||||
dnl gl_STDINT_BITSIZEOF(TYPES, INCLUDES)
|
||||
dnl Determine the size of each of the given types in bits.
|
||||
AC_DEFUN([gl_STDINT_BITSIZEOF],
|
||||
[
|
||||
dnl Use a shell loop, to avoid bloating configure, and
|
||||
dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
|
||||
dnl config.h.in,
|
||||
dnl - extra AC_SUBST calls, so that the right substitutions are made.
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AH_TEMPLATE([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
|
||||
[Define to the number of bits in type ']gltype['.])])
|
||||
for gltype in $1 ; do
|
||||
AC_CACHE_CHECK([for bit size of $gltype], [gl_cv_bitsizeof_${gltype}],
|
||||
[AC_COMPUTE_INT([result], [sizeof ($gltype) * CHAR_BIT],
|
||||
[$2
|
||||
#include <limits.h>], [result=unknown])
|
||||
eval gl_cv_bitsizeof_${gltype}=\$result
|
||||
])
|
||||
eval result=\$gl_cv_bitsizeof_${gltype}
|
||||
if test $result = unknown; then
|
||||
dnl Use a nonempty default, because some compilers, such as IRIX 5 cc,
|
||||
dnl do a syntax check even on unused #if conditions and give an error
|
||||
dnl on valid C code like this:
|
||||
dnl #if 0
|
||||
dnl # if > 32
|
||||
dnl # endif
|
||||
dnl #endif
|
||||
result=0
|
||||
fi
|
||||
GLTYPE=`echo "$gltype" | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
|
||||
AC_DEFINE_UNQUOTED([BITSIZEOF_${GLTYPE}], [$result])
|
||||
eval BITSIZEOF_${GLTYPE}=\$result
|
||||
done
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AC_SUBST([BITSIZEOF_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
|
||||
])
|
||||
|
||||
dnl gl_CHECK_TYPES_SIGNED(TYPES, INCLUDES)
|
||||
dnl Determine the signedness of each of the given types.
|
||||
dnl Define HAVE_SIGNED_TYPE if type is signed.
|
||||
AC_DEFUN([gl_CHECK_TYPES_SIGNED],
|
||||
[
|
||||
dnl Use a shell loop, to avoid bloating configure, and
|
||||
dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
|
||||
dnl config.h.in,
|
||||
dnl - extra AC_SUBST calls, so that the right substitutions are made.
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AH_TEMPLATE([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]),
|
||||
[Define to 1 if ']gltype[' is a signed integer type.])])
|
||||
for gltype in $1 ; do
|
||||
AC_CACHE_CHECK([whether $gltype is signed], [gl_cv_type_${gltype}_signed],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([$2[
|
||||
int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];]])],
|
||||
result=yes, result=no)
|
||||
eval gl_cv_type_${gltype}_signed=\$result
|
||||
])
|
||||
eval result=\$gl_cv_type_${gltype}_signed
|
||||
GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
|
||||
if test "$result" = yes; then
|
||||
AC_DEFINE_UNQUOTED([HAVE_SIGNED_${GLTYPE}], [1])
|
||||
eval HAVE_SIGNED_${GLTYPE}=1
|
||||
else
|
||||
eval HAVE_SIGNED_${GLTYPE}=0
|
||||
fi
|
||||
done
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AC_SUBST([HAVE_SIGNED_]m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_]))])
|
||||
])
|
||||
|
||||
dnl gl_INTEGER_TYPE_SUFFIX(TYPES, INCLUDES)
|
||||
dnl Determine the suffix to use for integer constants of the given types.
|
||||
dnl Define t_SUFFIX for each such type.
|
||||
AC_DEFUN([gl_INTEGER_TYPE_SUFFIX],
|
||||
[
|
||||
dnl Use a shell loop, to avoid bloating configure, and
|
||||
dnl - extra AH_TEMPLATE calls, so that autoheader knows what to put into
|
||||
dnl config.h.in,
|
||||
dnl - extra AC_SUBST calls, so that the right substitutions are made.
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AH_TEMPLATE(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX],
|
||||
[Define to l, ll, u, ul, ull, etc., as suitable for
|
||||
constants of type ']gltype['.])])
|
||||
for gltype in $1 ; do
|
||||
AC_CACHE_CHECK([for $gltype integer literal suffix],
|
||||
[gl_cv_type_${gltype}_suffix],
|
||||
[eval gl_cv_type_${gltype}_suffix=no
|
||||
eval result=\$gl_cv_type_${gltype}_signed
|
||||
if test "$result" = yes; then
|
||||
glsufu=
|
||||
else
|
||||
glsufu=u
|
||||
fi
|
||||
for glsuf in "$glsufu" ${glsufu}l ${glsufu}ll ${glsufu}i64; do
|
||||
case $glsuf in
|
||||
'') gltype1='int';;
|
||||
l) gltype1='long int';;
|
||||
ll) gltype1='long long int';;
|
||||
i64) gltype1='__int64';;
|
||||
u) gltype1='unsigned int';;
|
||||
ul) gltype1='unsigned long int';;
|
||||
ull) gltype1='unsigned long long int';;
|
||||
ui64)gltype1='unsigned __int64';;
|
||||
esac
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([$2[
|
||||
extern $gltype foo;
|
||||
extern $gltype1 foo;]])],
|
||||
[eval gl_cv_type_${gltype}_suffix=\$glsuf])
|
||||
eval result=\$gl_cv_type_${gltype}_suffix
|
||||
test "$result" != no && break
|
||||
done])
|
||||
GLTYPE=`echo $gltype | tr 'abcdefghijklmnopqrstuvwxyz ' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_'`
|
||||
eval result=\$gl_cv_type_${gltype}_suffix
|
||||
test "$result" = no && result=
|
||||
eval ${GLTYPE}_SUFFIX=\$result
|
||||
AC_DEFINE_UNQUOTED([${GLTYPE}_SUFFIX], [$result])
|
||||
done
|
||||
m4_foreach_w([gltype], [$1],
|
||||
[AC_SUBST(m4_translit(gltype,[abcdefghijklmnopqrstuvwxyz ],[ABCDEFGHIJKLMNOPQRSTUVWXYZ_])[_SUFFIX])])
|
||||
])
|
||||
|
||||
dnl gl_STDINT_INCLUDES
|
||||
AC_DEFUN([gl_STDINT_INCLUDES],
|
||||
[[
|
||||
/* BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||
included before <wchar.h>. */
|
||||
#include <stddef.h>
|
||||
#include <signal.h>
|
||||
#if HAVE_WCHAR_H
|
||||
# include <stdio.h>
|
||||
# include <time.h>
|
||||
# include <wchar.h>
|
||||
#endif
|
||||
]])
|
||||
|
||||
dnl gl_STDINT_TYPE_PROPERTIES
|
||||
dnl Compute HAVE_SIGNED_t, BITSIZEOF_t and t_SUFFIX, for all the types t
|
||||
dnl of interest to stdint.in.h.
|
||||
AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
|
||||
[
|
||||
AC_REQUIRE([gl_MULTIARCH])
|
||||
if test $APPLE_UNIVERSAL_BUILD = 0; then
|
||||
gl_STDINT_BITSIZEOF([ptrdiff_t size_t],
|
||||
[gl_STDINT_INCLUDES])
|
||||
fi
|
||||
gl_STDINT_BITSIZEOF([sig_atomic_t wchar_t wint_t],
|
||||
[gl_STDINT_INCLUDES])
|
||||
gl_CHECK_TYPES_SIGNED([sig_atomic_t wchar_t wint_t],
|
||||
[gl_STDINT_INCLUDES])
|
||||
gl_cv_type_ptrdiff_t_signed=yes
|
||||
gl_cv_type_size_t_signed=no
|
||||
if test $APPLE_UNIVERSAL_BUILD = 0; then
|
||||
gl_INTEGER_TYPE_SUFFIX([ptrdiff_t size_t],
|
||||
[gl_STDINT_INCLUDES])
|
||||
fi
|
||||
gl_INTEGER_TYPE_SUFFIX([sig_atomic_t wchar_t wint_t],
|
||||
[gl_STDINT_INCLUDES])
|
||||
|
||||
dnl If wint_t is smaller than 'int', it cannot satisfy the ISO C 99
|
||||
dnl requirement that wint_t is "unchanged by default argument promotions".
|
||||
dnl In this case gnulib's <wchar.h> and <wctype.h> override wint_t.
|
||||
dnl Set the variable BITSIZEOF_WINT_T accordingly.
|
||||
if test $GNULIB_OVERRIDES_WINT_T = 1; then
|
||||
BITSIZEOF_WINT_T=32
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Autoconf >= 2.61 has AC_COMPUTE_INT built-in.
|
||||
dnl Remove this when we can assume autoconf >= 2.61.
|
||||
m4_ifdef([AC_COMPUTE_INT], [], [
|
||||
AC_DEFUN([AC_COMPUTE_INT], [_AC_COMPUTE_INT([$2],[$1],[$3],[$4])])
|
||||
])
|
||||
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-2018 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
|
||||
])
|
||||
225
m4/stdio_h.m4
Normal file
225
m4/stdio_h.m4
Normal file
|
|
@ -0,0 +1,225 @@
|
|||
# stdio_h.m4 serial 49
|
||||
dnl Copyright (C) 2007-2018 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_STDIO_H],
|
||||
[
|
||||
AH_VERBATIM([MINGW_ANSI_STDIO],
|
||||
[/* Use GNU style printf and scanf. */
|
||||
#ifndef __USE_MINGW_ANSI_STDIO
|
||||
# undef __USE_MINGW_ANSI_STDIO
|
||||
#endif
|
||||
])
|
||||
AC_DEFINE([__USE_MINGW_ANSI_STDIO])
|
||||
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
|
||||
gl_NEXT_HEADERS([stdio.h])
|
||||
|
||||
dnl Determine whether __USE_MINGW_ANSI_STDIO makes printf and
|
||||
dnl inttypes.h behave like gnu instead of system; we must give our
|
||||
dnl printf wrapper the right attribute to match.
|
||||
AC_CACHE_CHECK([which flavor of printf attribute matches inttypes macros],
|
||||
[gl_cv_func_printf_attribute_flavor],
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
||||
#define __STDC_FORMAT_MACROS 1
|
||||
#include <stdio.h>
|
||||
#include <inttypes.h>
|
||||
/* For non-mingw systems, compilation will trivially succeed.
|
||||
For mingw, compilation will succeed for older mingw (system
|
||||
printf, "I64d") and fail for newer mingw (gnu printf, "lld"). */
|
||||
#if (defined _WIN32 && ! defined __CYGWIN__) && \
|
||||
(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 4))
|
||||
extern char PRIdMAX_probe[sizeof PRIdMAX == sizeof "I64d" ? 1 : -1];
|
||||
#endif
|
||||
]])], [gl_cv_func_printf_attribute_flavor=system],
|
||||
[gl_cv_func_printf_attribute_flavor=gnu])])
|
||||
if test "$gl_cv_func_printf_attribute_flavor" = gnu; then
|
||||
AC_DEFINE([GNULIB_PRINTF_ATTRIBUTE_FLAVOR_GNU], [1],
|
||||
[Define to 1 if printf and friends should be labeled with
|
||||
attribute "__gnu_printf__" instead of "__printf__"])
|
||||
fi
|
||||
|
||||
dnl No need to create extra modules for these functions. Everyone who uses
|
||||
dnl <stdio.h> likely needs them.
|
||||
GNULIB_FSCANF=1
|
||||
gl_MODULE_INDICATOR([fscanf])
|
||||
GNULIB_SCANF=1
|
||||
gl_MODULE_INDICATOR([scanf])
|
||||
GNULIB_FGETC=1
|
||||
GNULIB_GETC=1
|
||||
GNULIB_GETCHAR=1
|
||||
GNULIB_FGETS=1
|
||||
GNULIB_FREAD=1
|
||||
dnl This ifdef is necessary to avoid an error "missing file lib/stdio-read.c"
|
||||
dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||||
dnl also an optimization, to avoid performing a configure check whose result
|
||||
dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
|
||||
dnl or GNULIB_NONBLOCKING redundant.
|
||||
m4_ifdef([gl_NONBLOCKING_IO], [
|
||||
gl_NONBLOCKING_IO
|
||||
if test $gl_cv_have_nonblocking != yes; then
|
||||
REPLACE_STDIO_READ_FUNCS=1
|
||||
AC_LIBOBJ([stdio-read])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl No need to create extra modules for these functions. Everyone who uses
|
||||
dnl <stdio.h> likely needs them.
|
||||
GNULIB_FPRINTF=1
|
||||
GNULIB_PRINTF=1
|
||||
GNULIB_VFPRINTF=1
|
||||
GNULIB_VPRINTF=1
|
||||
GNULIB_FPUTC=1
|
||||
GNULIB_PUTC=1
|
||||
GNULIB_PUTCHAR=1
|
||||
GNULIB_FPUTS=1
|
||||
GNULIB_PUTS=1
|
||||
GNULIB_FWRITE=1
|
||||
dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
|
||||
dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||||
dnl also an optimization, to avoid performing a configure check whose result
|
||||
dnl is not used. But it does not make the test of GNULIB_STDIO_H_SIGPIPE or
|
||||
dnl GNULIB_SIGPIPE redundant.
|
||||
m4_ifdef([gl_SIGNAL_SIGPIPE], [
|
||||
gl_SIGNAL_SIGPIPE
|
||||
if test $gl_cv_header_signal_h_SIGPIPE != yes; then
|
||||
REPLACE_STDIO_WRITE_FUNCS=1
|
||||
AC_LIBOBJ([stdio-write])
|
||||
fi
|
||||
])
|
||||
dnl This ifdef is necessary to avoid an error "missing file lib/stdio-write.c"
|
||||
dnl "expected source file, required through AC_LIBSOURCES, not found". It is
|
||||
dnl also an optimization, to avoid performing a configure check whose result
|
||||
dnl is not used. But it does not make the test of GNULIB_STDIO_H_NONBLOCKING
|
||||
dnl or GNULIB_NONBLOCKING redundant.
|
||||
m4_ifdef([gl_NONBLOCKING_IO], [
|
||||
gl_NONBLOCKING_IO
|
||||
if test $gl_cv_have_nonblocking != yes; then
|
||||
REPLACE_STDIO_WRITE_FUNCS=1
|
||||
AC_LIBOBJ([stdio-write])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl Check for declarations of anything we want to poison if the
|
||||
dnl corresponding gnulib module is not in use, and which is not
|
||||
dnl guaranteed by both C89 and C11.
|
||||
gl_WARN_ON_USE_PREPARE([[#include <stdio.h>
|
||||
]], [dprintf fpurge fseeko ftello getdelim getline gets pclose popen
|
||||
renameat snprintf tmpfile vdprintf vsnprintf])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_STDIO_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_STDIO_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_STDIO_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_DPRINTF=0; AC_SUBST([GNULIB_DPRINTF])
|
||||
GNULIB_FCLOSE=0; AC_SUBST([GNULIB_FCLOSE])
|
||||
GNULIB_FDOPEN=0; AC_SUBST([GNULIB_FDOPEN])
|
||||
GNULIB_FFLUSH=0; AC_SUBST([GNULIB_FFLUSH])
|
||||
GNULIB_FGETC=0; AC_SUBST([GNULIB_FGETC])
|
||||
GNULIB_FGETS=0; AC_SUBST([GNULIB_FGETS])
|
||||
GNULIB_FOPEN=0; AC_SUBST([GNULIB_FOPEN])
|
||||
GNULIB_FPRINTF=0; AC_SUBST([GNULIB_FPRINTF])
|
||||
GNULIB_FPRINTF_POSIX=0; AC_SUBST([GNULIB_FPRINTF_POSIX])
|
||||
GNULIB_FPURGE=0; AC_SUBST([GNULIB_FPURGE])
|
||||
GNULIB_FPUTC=0; AC_SUBST([GNULIB_FPUTC])
|
||||
GNULIB_FPUTS=0; AC_SUBST([GNULIB_FPUTS])
|
||||
GNULIB_FREAD=0; AC_SUBST([GNULIB_FREAD])
|
||||
GNULIB_FREOPEN=0; AC_SUBST([GNULIB_FREOPEN])
|
||||
GNULIB_FSCANF=0; AC_SUBST([GNULIB_FSCANF])
|
||||
GNULIB_FSEEK=0; AC_SUBST([GNULIB_FSEEK])
|
||||
GNULIB_FSEEKO=0; AC_SUBST([GNULIB_FSEEKO])
|
||||
GNULIB_FTELL=0; AC_SUBST([GNULIB_FTELL])
|
||||
GNULIB_FTELLO=0; AC_SUBST([GNULIB_FTELLO])
|
||||
GNULIB_FWRITE=0; AC_SUBST([GNULIB_FWRITE])
|
||||
GNULIB_GETC=0; AC_SUBST([GNULIB_GETC])
|
||||
GNULIB_GETCHAR=0; AC_SUBST([GNULIB_GETCHAR])
|
||||
GNULIB_GETDELIM=0; AC_SUBST([GNULIB_GETDELIM])
|
||||
GNULIB_GETLINE=0; AC_SUBST([GNULIB_GETLINE])
|
||||
GNULIB_OBSTACK_PRINTF=0; AC_SUBST([GNULIB_OBSTACK_PRINTF])
|
||||
GNULIB_OBSTACK_PRINTF_POSIX=0; AC_SUBST([GNULIB_OBSTACK_PRINTF_POSIX])
|
||||
GNULIB_PCLOSE=0; AC_SUBST([GNULIB_PCLOSE])
|
||||
GNULIB_PERROR=0; AC_SUBST([GNULIB_PERROR])
|
||||
GNULIB_POPEN=0; AC_SUBST([GNULIB_POPEN])
|
||||
GNULIB_PRINTF=0; AC_SUBST([GNULIB_PRINTF])
|
||||
GNULIB_PRINTF_POSIX=0; AC_SUBST([GNULIB_PRINTF_POSIX])
|
||||
GNULIB_PUTC=0; AC_SUBST([GNULIB_PUTC])
|
||||
GNULIB_PUTCHAR=0; AC_SUBST([GNULIB_PUTCHAR])
|
||||
GNULIB_PUTS=0; AC_SUBST([GNULIB_PUTS])
|
||||
GNULIB_REMOVE=0; AC_SUBST([GNULIB_REMOVE])
|
||||
GNULIB_RENAME=0; AC_SUBST([GNULIB_RENAME])
|
||||
GNULIB_RENAMEAT=0; AC_SUBST([GNULIB_RENAMEAT])
|
||||
GNULIB_SCANF=0; AC_SUBST([GNULIB_SCANF])
|
||||
GNULIB_SNPRINTF=0; AC_SUBST([GNULIB_SNPRINTF])
|
||||
GNULIB_SPRINTF_POSIX=0; AC_SUBST([GNULIB_SPRINTF_POSIX])
|
||||
GNULIB_STDIO_H_NONBLOCKING=0; AC_SUBST([GNULIB_STDIO_H_NONBLOCKING])
|
||||
GNULIB_STDIO_H_SIGPIPE=0; AC_SUBST([GNULIB_STDIO_H_SIGPIPE])
|
||||
GNULIB_TMPFILE=0; AC_SUBST([GNULIB_TMPFILE])
|
||||
GNULIB_VASPRINTF=0; AC_SUBST([GNULIB_VASPRINTF])
|
||||
GNULIB_VFSCANF=0; AC_SUBST([GNULIB_VFSCANF])
|
||||
GNULIB_VSCANF=0; AC_SUBST([GNULIB_VSCANF])
|
||||
GNULIB_VDPRINTF=0; AC_SUBST([GNULIB_VDPRINTF])
|
||||
GNULIB_VFPRINTF=0; AC_SUBST([GNULIB_VFPRINTF])
|
||||
GNULIB_VFPRINTF_POSIX=0; AC_SUBST([GNULIB_VFPRINTF_POSIX])
|
||||
GNULIB_VPRINTF=0; AC_SUBST([GNULIB_VPRINTF])
|
||||
GNULIB_VPRINTF_POSIX=0; AC_SUBST([GNULIB_VPRINTF_POSIX])
|
||||
GNULIB_VSNPRINTF=0; AC_SUBST([GNULIB_VSNPRINTF])
|
||||
GNULIB_VSPRINTF_POSIX=0; AC_SUBST([GNULIB_VSPRINTF_POSIX])
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_DECL_FPURGE=1; AC_SUBST([HAVE_DECL_FPURGE])
|
||||
HAVE_DECL_FSEEKO=1; AC_SUBST([HAVE_DECL_FSEEKO])
|
||||
HAVE_DECL_FTELLO=1; AC_SUBST([HAVE_DECL_FTELLO])
|
||||
HAVE_DECL_GETDELIM=1; AC_SUBST([HAVE_DECL_GETDELIM])
|
||||
HAVE_DECL_GETLINE=1; AC_SUBST([HAVE_DECL_GETLINE])
|
||||
HAVE_DECL_OBSTACK_PRINTF=1; AC_SUBST([HAVE_DECL_OBSTACK_PRINTF])
|
||||
HAVE_DECL_SNPRINTF=1; AC_SUBST([HAVE_DECL_SNPRINTF])
|
||||
HAVE_DECL_VSNPRINTF=1; AC_SUBST([HAVE_DECL_VSNPRINTF])
|
||||
HAVE_DPRINTF=1; AC_SUBST([HAVE_DPRINTF])
|
||||
HAVE_FSEEKO=1; AC_SUBST([HAVE_FSEEKO])
|
||||
HAVE_FTELLO=1; AC_SUBST([HAVE_FTELLO])
|
||||
HAVE_PCLOSE=1; AC_SUBST([HAVE_PCLOSE])
|
||||
HAVE_POPEN=1; AC_SUBST([HAVE_POPEN])
|
||||
HAVE_RENAMEAT=1; AC_SUBST([HAVE_RENAMEAT])
|
||||
HAVE_VASPRINTF=1; AC_SUBST([HAVE_VASPRINTF])
|
||||
HAVE_VDPRINTF=1; AC_SUBST([HAVE_VDPRINTF])
|
||||
REPLACE_DPRINTF=0; AC_SUBST([REPLACE_DPRINTF])
|
||||
REPLACE_FCLOSE=0; AC_SUBST([REPLACE_FCLOSE])
|
||||
REPLACE_FDOPEN=0; AC_SUBST([REPLACE_FDOPEN])
|
||||
REPLACE_FFLUSH=0; AC_SUBST([REPLACE_FFLUSH])
|
||||
REPLACE_FOPEN=0; AC_SUBST([REPLACE_FOPEN])
|
||||
REPLACE_FPRINTF=0; AC_SUBST([REPLACE_FPRINTF])
|
||||
REPLACE_FPURGE=0; AC_SUBST([REPLACE_FPURGE])
|
||||
REPLACE_FREOPEN=0; AC_SUBST([REPLACE_FREOPEN])
|
||||
REPLACE_FSEEK=0; AC_SUBST([REPLACE_FSEEK])
|
||||
REPLACE_FSEEKO=0; AC_SUBST([REPLACE_FSEEKO])
|
||||
REPLACE_FTELL=0; AC_SUBST([REPLACE_FTELL])
|
||||
REPLACE_FTELLO=0; AC_SUBST([REPLACE_FTELLO])
|
||||
REPLACE_GETDELIM=0; AC_SUBST([REPLACE_GETDELIM])
|
||||
REPLACE_GETLINE=0; AC_SUBST([REPLACE_GETLINE])
|
||||
REPLACE_OBSTACK_PRINTF=0; AC_SUBST([REPLACE_OBSTACK_PRINTF])
|
||||
REPLACE_PERROR=0; AC_SUBST([REPLACE_PERROR])
|
||||
REPLACE_POPEN=0; AC_SUBST([REPLACE_POPEN])
|
||||
REPLACE_PRINTF=0; AC_SUBST([REPLACE_PRINTF])
|
||||
REPLACE_REMOVE=0; AC_SUBST([REPLACE_REMOVE])
|
||||
REPLACE_RENAME=0; AC_SUBST([REPLACE_RENAME])
|
||||
REPLACE_RENAMEAT=0; AC_SUBST([REPLACE_RENAMEAT])
|
||||
REPLACE_SNPRINTF=0; AC_SUBST([REPLACE_SNPRINTF])
|
||||
REPLACE_SPRINTF=0; AC_SUBST([REPLACE_SPRINTF])
|
||||
REPLACE_STDIO_READ_FUNCS=0; AC_SUBST([REPLACE_STDIO_READ_FUNCS])
|
||||
REPLACE_STDIO_WRITE_FUNCS=0; AC_SUBST([REPLACE_STDIO_WRITE_FUNCS])
|
||||
REPLACE_TMPFILE=0; AC_SUBST([REPLACE_TMPFILE])
|
||||
REPLACE_VASPRINTF=0; AC_SUBST([REPLACE_VASPRINTF])
|
||||
REPLACE_VDPRINTF=0; AC_SUBST([REPLACE_VDPRINTF])
|
||||
REPLACE_VFPRINTF=0; AC_SUBST([REPLACE_VFPRINTF])
|
||||
REPLACE_VPRINTF=0; AC_SUBST([REPLACE_VPRINTF])
|
||||
REPLACE_VSNPRINTF=0; AC_SUBST([REPLACE_VSNPRINTF])
|
||||
REPLACE_VSPRINTF=0; AC_SUBST([REPLACE_VSPRINTF])
|
||||
])
|
||||
122
m4/string_h.m4
Normal file
122
m4/string_h.m4
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
# Configure a GNU-like replacement for <string.h>.
|
||||
|
||||
# Copyright (C) 2007-2018 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# serial 22
|
||||
|
||||
# Written by Paul Eggert.
|
||||
|
||||
AC_DEFUN([gl_HEADER_STRING_H],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default behavior below is expanded
|
||||
dnl once only, before all statements that occur in other macros.
|
||||
AC_REQUIRE([gl_HEADER_STRING_H_BODY])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_HEADER_STRING_H_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_C_RESTRICT])
|
||||
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
|
||||
gl_NEXT_HEADERS([string.h])
|
||||
|
||||
dnl Check for declarations of anything we want to poison if the
|
||||
dnl corresponding gnulib module is not in use, and which is not
|
||||
dnl guaranteed by C89.
|
||||
gl_WARN_ON_USE_PREPARE([[#include <string.h>
|
||||
]],
|
||||
[ffsl ffsll memmem mempcpy memrchr rawmemchr stpcpy stpncpy strchrnul
|
||||
strdup strncat strndup strnlen strpbrk strsep strcasestr strtok_r
|
||||
strerror_r strsignal strverscmp])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_STRING_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_HEADER_STRING_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_EXPLICIT_BZERO=0; AC_SUBST([GNULIB_EXPLICIT_BZERO])
|
||||
GNULIB_FFSL=0; AC_SUBST([GNULIB_FFSL])
|
||||
GNULIB_FFSLL=0; AC_SUBST([GNULIB_FFSLL])
|
||||
GNULIB_MEMCHR=0; AC_SUBST([GNULIB_MEMCHR])
|
||||
GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
|
||||
GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
|
||||
GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
|
||||
GNULIB_RAWMEMCHR=0; AC_SUBST([GNULIB_RAWMEMCHR])
|
||||
GNULIB_STPCPY=0; AC_SUBST([GNULIB_STPCPY])
|
||||
GNULIB_STPNCPY=0; AC_SUBST([GNULIB_STPNCPY])
|
||||
GNULIB_STRCHRNUL=0; AC_SUBST([GNULIB_STRCHRNUL])
|
||||
GNULIB_STRDUP=0; AC_SUBST([GNULIB_STRDUP])
|
||||
GNULIB_STRNCAT=0; AC_SUBST([GNULIB_STRNCAT])
|
||||
GNULIB_STRNDUP=0; AC_SUBST([GNULIB_STRNDUP])
|
||||
GNULIB_STRNLEN=0; AC_SUBST([GNULIB_STRNLEN])
|
||||
GNULIB_STRPBRK=0; AC_SUBST([GNULIB_STRPBRK])
|
||||
GNULIB_STRSEP=0; AC_SUBST([GNULIB_STRSEP])
|
||||
GNULIB_STRSTR=0; AC_SUBST([GNULIB_STRSTR])
|
||||
GNULIB_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
|
||||
GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
|
||||
GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
|
||||
GNULIB_MBSNLEN=0; AC_SUBST([GNULIB_MBSNLEN])
|
||||
GNULIB_MBSCHR=0; AC_SUBST([GNULIB_MBSCHR])
|
||||
GNULIB_MBSRCHR=0; AC_SUBST([GNULIB_MBSRCHR])
|
||||
GNULIB_MBSSTR=0; AC_SUBST([GNULIB_MBSSTR])
|
||||
GNULIB_MBSCASECMP=0; AC_SUBST([GNULIB_MBSCASECMP])
|
||||
GNULIB_MBSNCASECMP=0; AC_SUBST([GNULIB_MBSNCASECMP])
|
||||
GNULIB_MBSPCASECMP=0; AC_SUBST([GNULIB_MBSPCASECMP])
|
||||
GNULIB_MBSCASESTR=0; AC_SUBST([GNULIB_MBSCASESTR])
|
||||
GNULIB_MBSCSPN=0; AC_SUBST([GNULIB_MBSCSPN])
|
||||
GNULIB_MBSPBRK=0; AC_SUBST([GNULIB_MBSPBRK])
|
||||
GNULIB_MBSSPN=0; AC_SUBST([GNULIB_MBSSPN])
|
||||
GNULIB_MBSSEP=0; AC_SUBST([GNULIB_MBSSEP])
|
||||
GNULIB_MBSTOK_R=0; AC_SUBST([GNULIB_MBSTOK_R])
|
||||
GNULIB_STRERROR=0; AC_SUBST([GNULIB_STRERROR])
|
||||
GNULIB_STRERROR_R=0; AC_SUBST([GNULIB_STRERROR_R])
|
||||
GNULIB_STRSIGNAL=0; AC_SUBST([GNULIB_STRSIGNAL])
|
||||
GNULIB_STRVERSCMP=0; AC_SUBST([GNULIB_STRVERSCMP])
|
||||
HAVE_MBSLEN=0; AC_SUBST([HAVE_MBSLEN])
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_EXPLICIT_BZERO=1; AC_SUBST([HAVE_EXPLICIT_BZERO])
|
||||
HAVE_FFSL=1; AC_SUBST([HAVE_FFSL])
|
||||
HAVE_FFSLL=1; AC_SUBST([HAVE_FFSLL])
|
||||
HAVE_MEMCHR=1; AC_SUBST([HAVE_MEMCHR])
|
||||
HAVE_DECL_MEMMEM=1; AC_SUBST([HAVE_DECL_MEMMEM])
|
||||
HAVE_MEMPCPY=1; AC_SUBST([HAVE_MEMPCPY])
|
||||
HAVE_DECL_MEMRCHR=1; AC_SUBST([HAVE_DECL_MEMRCHR])
|
||||
HAVE_RAWMEMCHR=1; AC_SUBST([HAVE_RAWMEMCHR])
|
||||
HAVE_STPCPY=1; AC_SUBST([HAVE_STPCPY])
|
||||
HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY])
|
||||
HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL])
|
||||
HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP])
|
||||
HAVE_DECL_STRNDUP=1; AC_SUBST([HAVE_DECL_STRNDUP])
|
||||
HAVE_DECL_STRNLEN=1; AC_SUBST([HAVE_DECL_STRNLEN])
|
||||
HAVE_STRPBRK=1; AC_SUBST([HAVE_STRPBRK])
|
||||
HAVE_STRSEP=1; AC_SUBST([HAVE_STRSEP])
|
||||
HAVE_STRCASESTR=1; AC_SUBST([HAVE_STRCASESTR])
|
||||
HAVE_DECL_STRTOK_R=1; AC_SUBST([HAVE_DECL_STRTOK_R])
|
||||
HAVE_DECL_STRERROR_R=1; AC_SUBST([HAVE_DECL_STRERROR_R])
|
||||
HAVE_DECL_STRSIGNAL=1; AC_SUBST([HAVE_DECL_STRSIGNAL])
|
||||
HAVE_STRVERSCMP=1; AC_SUBST([HAVE_STRVERSCMP])
|
||||
REPLACE_MEMCHR=0; AC_SUBST([REPLACE_MEMCHR])
|
||||
REPLACE_MEMMEM=0; AC_SUBST([REPLACE_MEMMEM])
|
||||
REPLACE_STPNCPY=0; AC_SUBST([REPLACE_STPNCPY])
|
||||
REPLACE_STRCHRNUL=0; AC_SUBST([REPLACE_STRCHRNUL])
|
||||
REPLACE_STRDUP=0; AC_SUBST([REPLACE_STRDUP])
|
||||
REPLACE_STRNCAT=0; AC_SUBST([REPLACE_STRNCAT])
|
||||
REPLACE_STRNDUP=0; AC_SUBST([REPLACE_STRNDUP])
|
||||
REPLACE_STRNLEN=0; AC_SUBST([REPLACE_STRNLEN])
|
||||
REPLACE_STRSTR=0; AC_SUBST([REPLACE_STRSTR])
|
||||
REPLACE_STRCASESTR=0; AC_SUBST([REPLACE_STRCASESTR])
|
||||
REPLACE_STRTOK_R=0; AC_SUBST([REPLACE_STRTOK_R])
|
||||
REPLACE_STRERROR=0; AC_SUBST([REPLACE_STRERROR])
|
||||
REPLACE_STRERROR_R=0; AC_SUBST([REPLACE_STRERROR_R])
|
||||
REPLACE_STRSIGNAL=0; AC_SUBST([REPLACE_STRSIGNAL])
|
||||
UNDEFINE_STRTOK_R=0; AC_SUBST([UNDEFINE_STRTOK_R])
|
||||
])
|
||||
47
m4/sys_resource_h.m4
Normal file
47
m4/sys_resource_h.m4
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# sys_resource_h.m4 serial 2
|
||||
dnl Copyright (C) 2012-2018 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_HEADER_SYS_RESOURCE],
|
||||
[
|
||||
AC_REQUIRE([gl_SYS_RESOURCE_H_DEFAULTS])
|
||||
dnl <sys/resource.h> is always overridden, because of GNULIB_POSIXCHECK.
|
||||
gl_CHECK_NEXT_HEADERS([sys/resource.h])
|
||||
if test $ac_cv_header_sys_resource_h = yes; then
|
||||
HAVE_SYS_RESOURCE_H=1
|
||||
else
|
||||
HAVE_SYS_RESOURCE_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_SYS_RESOURCE_H])
|
||||
|
||||
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([[
|
||||
#if HAVE_SYS_RESOURCE_H
|
||||
/* At least FreeBSD 5.0 needs extra headers before <sys/resource.h>
|
||||
will compile. */
|
||||
# include <sys/types.h>
|
||||
# include <sys/time.h>
|
||||
# include <sys/resource.h>
|
||||
#endif
|
||||
]],
|
||||
[getrusage])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_RESOURCE_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_SYS_RESOURCE_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_RESOURCE_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_GETRUSAGE=0; AC_SUBST([GNULIB_GETRUSAGE])
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_GETRUSAGE=1; AC_SUBST([HAVE_GETRUSAGE])
|
||||
])
|
||||
176
m4/sys_socket_h.m4
Normal file
176
m4/sys_socket_h.m4
Normal file
|
|
@ -0,0 +1,176 @@
|
|||
# sys_socket_h.m4 serial 23
|
||||
dnl Copyright (C) 2005-2018 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 Simon Josefsson.
|
||||
|
||||
AC_DEFUN([gl_HEADER_SYS_SOCKET],
|
||||
[
|
||||
AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||
|
||||
dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
|
||||
dnl old-style declarations (with return type 'int' instead of 'ssize_t')
|
||||
dnl unless _POSIX_PII_SOCKET is defined.
|
||||
case "$host_os" in
|
||||
osf*)
|
||||
AC_DEFINE([_POSIX_PII_SOCKET], [1],
|
||||
[Define to 1 in order to get the POSIX compatible declarations
|
||||
of socket functions.])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
|
||||
[gl_cv_header_sys_socket_h_selfcontained],
|
||||
[
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
|
||||
[gl_cv_header_sys_socket_h_selfcontained=yes],
|
||||
[gl_cv_header_sys_socket_h_selfcontained=no])
|
||||
])
|
||||
if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
|
||||
dnl If the shutdown function exists, <sys/socket.h> should define
|
||||
dnl SHUT_RD, SHUT_WR, SHUT_RDWR.
|
||||
AC_CHECK_FUNCS([shutdown])
|
||||
if test $ac_cv_func_shutdown = yes; then
|
||||
AC_CACHE_CHECK([whether <sys/socket.h> defines the SHUT_* macros],
|
||||
[gl_cv_header_sys_socket_h_shut],
|
||||
[
|
||||
AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[#include <sys/socket.h>]],
|
||||
[[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])],
|
||||
[gl_cv_header_sys_socket_h_shut=yes],
|
||||
[gl_cv_header_sys_socket_h_shut=no])
|
||||
])
|
||||
if test $gl_cv_header_sys_socket_h_shut = no; then
|
||||
SYS_SOCKET_H='sys/socket.h'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
# We need to check for ws2tcpip.h now.
|
||||
gl_PREREQ_SYS_H_SOCKET
|
||||
AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[
|
||||
/* sys/types.h is not needed according to POSIX, but the
|
||||
sys/socket.h in i386-unknown-freebsd4.10 and
|
||||
powerpc-apple-darwin5.5 required it. */
|
||||
#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_WS2TCPIP_H
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
])
|
||||
if test $ac_cv_type_struct_sockaddr_storage = no; then
|
||||
HAVE_STRUCT_SOCKADDR_STORAGE=0
|
||||
fi
|
||||
if test $ac_cv_type_sa_family_t = no; then
|
||||
HAVE_SA_FAMILY_T=0
|
||||
fi
|
||||
if test $ac_cv_type_struct_sockaddr_storage != no; then
|
||||
AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],
|
||||
[],
|
||||
[HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0],
|
||||
[#include <sys/types.h>
|
||||
#ifdef HAVE_SYS_SOCKET_H
|
||||
#include <sys/socket.h>
|
||||
#endif
|
||||
#ifdef HAVE_WS2TCPIP_H
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
])
|
||||
fi
|
||||
if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \
|
||||
|| test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then
|
||||
SYS_SOCKET_H='sys/socket.h'
|
||||
fi
|
||||
gl_PREREQ_SYS_H_WINSOCK2
|
||||
|
||||
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([[
|
||||
/* Some systems require prerequisite headers. */
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
]], [socket connect accept bind getpeername getsockname getsockopt
|
||||
listen recv send recvfrom sendto setsockopt shutdown accept4])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_PREREQ_SYS_H_SOCKET],
|
||||
[
|
||||
dnl Check prerequisites of the <sys/socket.h> replacement.
|
||||
AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
|
||||
gl_CHECK_NEXT_HEADERS([sys/socket.h])
|
||||
if test $ac_cv_header_sys_socket_h = yes; then
|
||||
HAVE_SYS_SOCKET_H=1
|
||||
HAVE_WS2TCPIP_H=0
|
||||
else
|
||||
HAVE_SYS_SOCKET_H=0
|
||||
if test $ac_cv_header_ws2tcpip_h = yes; then
|
||||
HAVE_WS2TCPIP_H=1
|
||||
else
|
||||
HAVE_WS2TCPIP_H=0
|
||||
fi
|
||||
fi
|
||||
AC_SUBST([HAVE_SYS_SOCKET_H])
|
||||
AC_SUBST([HAVE_WS2TCPIP_H])
|
||||
])
|
||||
|
||||
# Common prerequisites of the <sys/socket.h> replacement and of the
|
||||
# <sys/select.h> replacement.
|
||||
# Sets and substitutes HAVE_WINSOCK2_H.
|
||||
AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
|
||||
[
|
||||
m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])])
|
||||
m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])])
|
||||
AC_CHECK_HEADERS_ONCE([sys/socket.h])
|
||||
if test $ac_cv_header_sys_socket_h != yes; then
|
||||
dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
|
||||
dnl the check for those headers unconditional; yet cygwin reports
|
||||
dnl that the headers are present but cannot be compiled (since on
|
||||
dnl cygwin, all socket information should come from sys/socket.h).
|
||||
AC_CHECK_HEADERS([winsock2.h])
|
||||
fi
|
||||
if test "$ac_cv_header_winsock2_h" = yes; then
|
||||
HAVE_WINSOCK2_H=1
|
||||
UNISTD_H_HAVE_WINSOCK2_H=1
|
||||
SYS_IOCTL_H_HAVE_WINSOCK2_H=1
|
||||
else
|
||||
HAVE_WINSOCK2_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_WINSOCK2_H])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_SYS_SOCKET_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET])
|
||||
GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT])
|
||||
GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT])
|
||||
GNULIB_BIND=0; AC_SUBST([GNULIB_BIND])
|
||||
GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
|
||||
GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
|
||||
GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT])
|
||||
GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN])
|
||||
GNULIB_RECV=0; AC_SUBST([GNULIB_RECV])
|
||||
GNULIB_SEND=0; AC_SUBST([GNULIB_SEND])
|
||||
GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM])
|
||||
GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO])
|
||||
GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT])
|
||||
GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN])
|
||||
GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4])
|
||||
HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
|
||||
HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
|
||||
AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
|
||||
HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T])
|
||||
HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4])
|
||||
])
|
||||
110
m4/sys_time_h.m4
Normal file
110
m4/sys_time_h.m4
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
# Configure a replacement for <sys/time.h>.
|
||||
# serial 9
|
||||
|
||||
# Copyright (C) 2007, 2009-2018 Free Software Foundation, Inc.
|
||||
# This file is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# Written by Paul Eggert and Martin Lambers.
|
||||
|
||||
AC_DEFUN([gl_HEADER_SYS_TIME_H],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the REPLACE_GETTIMEOFDAY=0 statement
|
||||
dnl below is expanded once only, before all REPLACE_GETTIMEOFDAY=1
|
||||
dnl statements that occur in other macros.
|
||||
AC_REQUIRE([gl_HEADER_SYS_TIME_H_BODY])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_HEADER_SYS_TIME_H_BODY],
|
||||
[
|
||||
AC_REQUIRE([AC_C_RESTRICT])
|
||||
AC_REQUIRE([gl_HEADER_SYS_TIME_H_DEFAULTS])
|
||||
AC_CHECK_HEADERS_ONCE([sys/time.h])
|
||||
gl_CHECK_NEXT_HEADERS([sys/time.h])
|
||||
|
||||
if test $ac_cv_header_sys_time_h != yes; then
|
||||
HAVE_SYS_TIME_H=0
|
||||
fi
|
||||
|
||||
dnl On native Windows with MSVC, 'struct timeval' is defined in <winsock2.h>
|
||||
dnl only. So include that header in the list.
|
||||
gl_PREREQ_SYS_H_WINSOCK2
|
||||
AC_CACHE_CHECK([for struct timeval], [gl_cv_sys_struct_timeval],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#if HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
#if HAVE_WINSOCK2_H
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
]],
|
||||
[[static struct timeval x; x.tv_sec = x.tv_usec;]])],
|
||||
[gl_cv_sys_struct_timeval=yes],
|
||||
[gl_cv_sys_struct_timeval=no])
|
||||
])
|
||||
if test $gl_cv_sys_struct_timeval != yes; then
|
||||
HAVE_STRUCT_TIMEVAL=0
|
||||
else
|
||||
dnl On native Windows with a 64-bit 'time_t', 'struct timeval' is defined
|
||||
dnl (in <sys/time.h> and <winsock2.h> for mingw64, in <winsock2.h> only
|
||||
dnl for MSVC) with a tv_sec field of type 'long' (32-bit!), which is
|
||||
dnl smaller than the 'time_t' type mandated by POSIX.
|
||||
dnl On OpenBSD 5.1 amd64, tv_sec is 64 bits and time_t 32 bits, but
|
||||
dnl that is good enough.
|
||||
AC_CACHE_CHECK([for wide-enough struct timeval.tv_sec member],
|
||||
[gl_cv_sys_struct_timeval_tv_sec],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#if HAVE_SYS_TIME_H
|
||||
#include <sys/time.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
#if HAVE_WINSOCK2_H
|
||||
# include <winsock2.h>
|
||||
#endif
|
||||
]],
|
||||
[[static struct timeval x;
|
||||
typedef int verify_tv_sec_type[
|
||||
sizeof (time_t) <= sizeof x.tv_sec ? 1 : -1
|
||||
];
|
||||
]])],
|
||||
[gl_cv_sys_struct_timeval_tv_sec=yes],
|
||||
[gl_cv_sys_struct_timeval_tv_sec=no])
|
||||
])
|
||||
if test $gl_cv_sys_struct_timeval_tv_sec != yes; then
|
||||
REPLACE_STRUCT_TIMEVAL=1
|
||||
fi
|
||||
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([[
|
||||
#if HAVE_SYS_TIME_H
|
||||
# include <sys/time.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
]], [gettimeofday])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_TIME_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_HEADER_SYS_TIME_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_HEADER_SYS_TIME_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_GETTIMEOFDAY=0; AC_SUBST([GNULIB_GETTIMEOFDAY])
|
||||
dnl Assume POSIX behavior unless another module says otherwise.
|
||||
HAVE_GETTIMEOFDAY=1; AC_SUBST([HAVE_GETTIMEOFDAY])
|
||||
HAVE_STRUCT_TIMEVAL=1; AC_SUBST([HAVE_STRUCT_TIMEVAL])
|
||||
HAVE_SYS_TIME_H=1; AC_SUBST([HAVE_SYS_TIME_H])
|
||||
REPLACE_GETTIMEOFDAY=0; AC_SUBST([REPLACE_GETTIMEOFDAY])
|
||||
REPLACE_STRUCT_TIMEVAL=0; AC_SUBST([REPLACE_STRUCT_TIMEVAL])
|
||||
])
|
||||
60
m4/sys_types_h.m4
Normal file
60
m4/sys_types_h.m4
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
# sys_types_h.m4 serial 9
|
||||
dnl Copyright (C) 2011-2018 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_SYS_TYPES_H],
|
||||
[
|
||||
dnl Use sane struct stat types in OpenVMS 8.2 and later.
|
||||
AC_DEFINE([_USE_STD_STAT], 1, [For standard stat data types on VMS.])
|
||||
|
||||
AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
|
||||
gl_NEXT_HEADERS([sys/types.h])
|
||||
|
||||
dnl Ensure the type pid_t gets defined.
|
||||
AC_REQUIRE([AC_TYPE_PID_T])
|
||||
|
||||
dnl Ensure the type mode_t gets defined.
|
||||
AC_REQUIRE([AC_TYPE_MODE_T])
|
||||
|
||||
dnl Whether to override the 'off_t' type.
|
||||
AC_REQUIRE([gl_TYPE_OFF_T])
|
||||
|
||||
dnl Whether to override the 'dev_t' and 'ino_t' types.
|
||||
m4_ifdef([gl_WINDOWS_STAT_INODES], [
|
||||
AC_REQUIRE([gl_WINDOWS_STAT_INODES])
|
||||
], [
|
||||
WINDOWS_STAT_INODES=0
|
||||
])
|
||||
AC_SUBST([WINDOWS_STAT_INODES])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_SYS_TYPES_H_DEFAULTS],
|
||||
[
|
||||
])
|
||||
|
||||
# This works around a buggy version in autoconf <= 2.69.
|
||||
# See <https://lists.gnu.org/r/autoconf/2016-08/msg00014.html>
|
||||
|
||||
m4_version_prereq([2.70], [], [
|
||||
|
||||
# This is taken from the following Autoconf patch:
|
||||
# https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=e17a30e987d7ee695fb4294a82d987ec3dc9b974
|
||||
|
||||
m4_undefine([AC_HEADER_MAJOR])
|
||||
AC_DEFUN([AC_HEADER_MAJOR],
|
||||
[AC_CHECK_HEADERS_ONCE([sys/types.h])
|
||||
AC_CHECK_HEADER([sys/mkdev.h],
|
||||
[AC_DEFINE([MAJOR_IN_MKDEV], [1],
|
||||
[Define to 1 if `major', `minor', and `makedev' are declared in
|
||||
<mkdev.h>.])])
|
||||
if test $ac_cv_header_sys_mkdev_h = no; then
|
||||
AC_CHECK_HEADER([sys/sysmacros.h],
|
||||
[AC_DEFINE([MAJOR_IN_SYSMACROS], [1],
|
||||
[Define to 1 if `major', `minor', and `makedev' are declared in
|
||||
<sysmacros.h>.])])
|
||||
fi
|
||||
])
|
||||
|
||||
])
|
||||
291
m4/vasnprintf.m4
Normal file
291
m4/vasnprintf.m4
Normal file
|
|
@ -0,0 +1,291 @@
|
|||
# vasnprintf.m4 serial 36
|
||||
dnl Copyright (C) 2002-2004, 2006-2018 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([AC_TYPE_LONG_LONG_INT])
|
||||
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([AC_TYPE_LONG_LONG_INT])
|
||||
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([AC_TYPE_LONG_LONG_INT])
|
||||
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
|
||||
])
|
||||
|
||||
# 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.])
|
||||
AC_CHECK_FUNCS([nl_langinfo])
|
||||
;;
|
||||
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],
|
||||
[
|
||||
])
|
||||
47
m4/warn-on-use.m4
Normal file
47
m4/warn-on-use.m4
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# warn-on-use.m4 serial 5
|
||||
dnl Copyright (C) 2010-2018 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.
|
||||
|
||||
# gl_WARN_ON_USE_PREPARE(INCLUDES, NAMES)
|
||||
# ---------------------------------------
|
||||
# For each whitespace-separated element in the list of NAMES, define
|
||||
# HAVE_RAW_DECL_name if the function has a declaration among INCLUDES
|
||||
# even after being undefined as a macro.
|
||||
#
|
||||
# See warn-on-use.h for some hints on how to poison function names, as
|
||||
# well as ideas on poisoning global variables and macros. NAMES may
|
||||
# include global variables, but remember that only functions work with
|
||||
# _GL_WARN_ON_USE. Typically, INCLUDES only needs to list a single
|
||||
# header, but if the replacement header pulls in other headers because
|
||||
# some systems declare functions in the wrong header, then INCLUDES
|
||||
# should do likewise.
|
||||
#
|
||||
# It is generally safe to assume declarations for functions declared
|
||||
# in the intersection of C89 and C11 (such as printf) without
|
||||
# needing gl_WARN_ON_USE_PREPARE.
|
||||
AC_DEFUN([gl_WARN_ON_USE_PREPARE],
|
||||
[
|
||||
m4_foreach_w([gl_decl], [$2],
|
||||
[AH_TEMPLATE([HAVE_RAW_DECL_]AS_TR_CPP(m4_defn([gl_decl])),
|
||||
[Define to 1 if ]m4_defn([gl_decl])[ is declared even after
|
||||
undefining macros.])])dnl
|
||||
dnl FIXME: gl_Symbol must be used unquoted until we can assume
|
||||
dnl autoconf 2.64 or newer.
|
||||
for gl_func in m4_flatten([$2]); do
|
||||
AS_VAR_PUSHDEF([gl_Symbol], [gl_cv_have_raw_decl_$gl_func])dnl
|
||||
AC_CACHE_CHECK([whether $gl_func is declared without a macro],
|
||||
gl_Symbol,
|
||||
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([$1],
|
||||
[@%:@undef $gl_func
|
||||
(void) $gl_func;])],
|
||||
[AS_VAR_SET(gl_Symbol, [yes])], [AS_VAR_SET(gl_Symbol, [no])])])
|
||||
AS_VAR_IF(gl_Symbol, [yes],
|
||||
[AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_RAW_DECL_$gl_func]), [1])
|
||||
dnl shortcut - if the raw declaration exists, then set a cache
|
||||
dnl variable to allow skipping any later AC_CHECK_DECL efforts
|
||||
eval ac_cv_have_decl_$gl_func=yes])
|
||||
AS_VAR_POPDEF([gl_Symbol])dnl
|
||||
done
|
||||
])
|
||||
238
m4/wchar_h.m4
Normal file
238
m4/wchar_h.m4
Normal file
|
|
@ -0,0 +1,238 @@
|
|||
dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
|
||||
|
||||
dnl Copyright (C) 2007-2018 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 Written by Eric Blake.
|
||||
|
||||
# wchar_h.m4 serial 42
|
||||
|
||||
AC_DEFUN([gl_WCHAR_H],
|
||||
[
|
||||
AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
|
||||
AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
|
||||
dnl Prepare for creating substitute <wchar.h>.
|
||||
dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
|
||||
dnl character support).
|
||||
dnl <wchar.h> is always overridden, because of GNULIB_POSIXCHECK.
|
||||
gl_CHECK_NEXT_HEADERS([wchar.h])
|
||||
if test $ac_cv_header_wchar_h = yes; then
|
||||
HAVE_WCHAR_H=1
|
||||
else
|
||||
HAVE_WCHAR_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_WCHAR_H])
|
||||
|
||||
AC_REQUIRE([gl_FEATURES_H])
|
||||
|
||||
AC_REQUIRE([gt_TYPE_WINT_T])
|
||||
if test $gt_cv_c_wint_t = yes; then
|
||||
HAVE_WINT_T=1
|
||||
else
|
||||
HAVE_WINT_T=0
|
||||
fi
|
||||
AC_SUBST([HAVE_WINT_T])
|
||||
|
||||
AC_REQUIRE([gl_TYPE_WINT_T_PREREQ])
|
||||
|
||||
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([[
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||
included before <wchar.h>. */
|
||||
#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||||
# include <stddef.h>
|
||||
# include <stdio.h>
|
||||
# include <time.h>
|
||||
#endif
|
||||
#include <wchar.h>
|
||||
]],
|
||||
[btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
|
||||
wcsrtombs wcsnrtombs wcwidth wmemchr wmemcmp wmemcpy wmemmove wmemset
|
||||
wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
|
||||
wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
|
||||
wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth wcsftime
|
||||
])
|
||||
])
|
||||
|
||||
dnl Check whether <wchar.h> is usable at all.
|
||||
AC_DEFUN([gl_WCHAR_H_INLINE_OK],
|
||||
[
|
||||
dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
|
||||
dnl 'gnu_inline'. See <https://sourceware.org/bugzilla/show_bug.cgi?id=4022>
|
||||
dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
|
||||
dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
|
||||
dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
|
||||
AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly],
|
||||
[gl_cv_header_wchar_h_correct_inline],
|
||||
[gl_cv_header_wchar_h_correct_inline=yes
|
||||
AC_LANG_CONFTEST([
|
||||
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||
included before <wchar.h>. */
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
extern int zero (void);
|
||||
int main () { return zero(); }
|
||||
]])])
|
||||
dnl Do not rename the object file from conftest.$ac_objext to
|
||||
dnl conftest1.$ac_objext, as this will cause the link to fail on
|
||||
dnl z/OS when using the XPLINK object format (due to duplicate
|
||||
dnl CSECT names). Instead, temporarily redefine $ac_compile so
|
||||
dnl that the object file has the latter name from the start.
|
||||
save_ac_compile="$ac_compile"
|
||||
ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/`
|
||||
if AC_TRY_EVAL([ac_compile]); then
|
||||
AC_LANG_CONFTEST([
|
||||
AC_LANG_SOURCE([[#define wcstod renamed_wcstod
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||
included before <wchar.h>. */
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
int zero (void) { return 0; }
|
||||
]])])
|
||||
dnl See note above about renaming object files.
|
||||
ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/`
|
||||
if AC_TRY_EVAL([ac_compile]); then
|
||||
if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then
|
||||
:
|
||||
else
|
||||
gl_cv_header_wchar_h_correct_inline=no
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
ac_compile="$save_ac_compile"
|
||||
rm -f conftest1.$ac_objext conftest2.$ac_objext conftest$ac_exeext
|
||||
])
|
||||
if test $gl_cv_header_wchar_h_correct_inline = no; then
|
||||
AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
|
||||
This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
|
||||
C99 mode. You have four options:
|
||||
- Add the flag -fgnu89-inline to CC and reconfigure, or
|
||||
- Fix your include files, using parts of
|
||||
<https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
|
||||
- Use a gcc version older than 4.3, or
|
||||
- Don't use the flags -std=c99 or -std=gnu99.
|
||||
Configuration aborted.])
|
||||
fi
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
|
||||
[
|
||||
dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
|
||||
AC_REQUIRE([gl_WCHAR_H_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])
|
||||
])
|
||||
|
||||
AC_DEFUN([gl_WCHAR_H_DEFAULTS],
|
||||
[
|
||||
GNULIB_BTOWC=0; AC_SUBST([GNULIB_BTOWC])
|
||||
GNULIB_WCTOB=0; AC_SUBST([GNULIB_WCTOB])
|
||||
GNULIB_MBSINIT=0; AC_SUBST([GNULIB_MBSINIT])
|
||||
GNULIB_MBRTOWC=0; AC_SUBST([GNULIB_MBRTOWC])
|
||||
GNULIB_MBRLEN=0; AC_SUBST([GNULIB_MBRLEN])
|
||||
GNULIB_MBSRTOWCS=0; AC_SUBST([GNULIB_MBSRTOWCS])
|
||||
GNULIB_MBSNRTOWCS=0; AC_SUBST([GNULIB_MBSNRTOWCS])
|
||||
GNULIB_WCRTOMB=0; AC_SUBST([GNULIB_WCRTOMB])
|
||||
GNULIB_WCSRTOMBS=0; AC_SUBST([GNULIB_WCSRTOMBS])
|
||||
GNULIB_WCSNRTOMBS=0; AC_SUBST([GNULIB_WCSNRTOMBS])
|
||||
GNULIB_WCWIDTH=0; AC_SUBST([GNULIB_WCWIDTH])
|
||||
GNULIB_WMEMCHR=0; AC_SUBST([GNULIB_WMEMCHR])
|
||||
GNULIB_WMEMCMP=0; AC_SUBST([GNULIB_WMEMCMP])
|
||||
GNULIB_WMEMCPY=0; AC_SUBST([GNULIB_WMEMCPY])
|
||||
GNULIB_WMEMMOVE=0; AC_SUBST([GNULIB_WMEMMOVE])
|
||||
GNULIB_WMEMSET=0; AC_SUBST([GNULIB_WMEMSET])
|
||||
GNULIB_WCSLEN=0; AC_SUBST([GNULIB_WCSLEN])
|
||||
GNULIB_WCSNLEN=0; AC_SUBST([GNULIB_WCSNLEN])
|
||||
GNULIB_WCSCPY=0; AC_SUBST([GNULIB_WCSCPY])
|
||||
GNULIB_WCPCPY=0; AC_SUBST([GNULIB_WCPCPY])
|
||||
GNULIB_WCSNCPY=0; AC_SUBST([GNULIB_WCSNCPY])
|
||||
GNULIB_WCPNCPY=0; AC_SUBST([GNULIB_WCPNCPY])
|
||||
GNULIB_WCSCAT=0; AC_SUBST([GNULIB_WCSCAT])
|
||||
GNULIB_WCSNCAT=0; AC_SUBST([GNULIB_WCSNCAT])
|
||||
GNULIB_WCSCMP=0; AC_SUBST([GNULIB_WCSCMP])
|
||||
GNULIB_WCSNCMP=0; AC_SUBST([GNULIB_WCSNCMP])
|
||||
GNULIB_WCSCASECMP=0; AC_SUBST([GNULIB_WCSCASECMP])
|
||||
GNULIB_WCSNCASECMP=0; AC_SUBST([GNULIB_WCSNCASECMP])
|
||||
GNULIB_WCSCOLL=0; AC_SUBST([GNULIB_WCSCOLL])
|
||||
GNULIB_WCSXFRM=0; AC_SUBST([GNULIB_WCSXFRM])
|
||||
GNULIB_WCSDUP=0; AC_SUBST([GNULIB_WCSDUP])
|
||||
GNULIB_WCSCHR=0; AC_SUBST([GNULIB_WCSCHR])
|
||||
GNULIB_WCSRCHR=0; AC_SUBST([GNULIB_WCSRCHR])
|
||||
GNULIB_WCSCSPN=0; AC_SUBST([GNULIB_WCSCSPN])
|
||||
GNULIB_WCSSPN=0; AC_SUBST([GNULIB_WCSSPN])
|
||||
GNULIB_WCSPBRK=0; AC_SUBST([GNULIB_WCSPBRK])
|
||||
GNULIB_WCSSTR=0; AC_SUBST([GNULIB_WCSSTR])
|
||||
GNULIB_WCSTOK=0; AC_SUBST([GNULIB_WCSTOK])
|
||||
GNULIB_WCSWIDTH=0; AC_SUBST([GNULIB_WCSWIDTH])
|
||||
GNULIB_WCSFTIME=0; AC_SUBST([GNULIB_WCSFTIME])
|
||||
dnl Assume proper GNU behavior unless another module says otherwise.
|
||||
HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
|
||||
HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
|
||||
HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC])
|
||||
HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN])
|
||||
HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS])
|
||||
HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS])
|
||||
HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB])
|
||||
HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS])
|
||||
HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS])
|
||||
HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR])
|
||||
HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP])
|
||||
HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY])
|
||||
HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE])
|
||||
HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET])
|
||||
HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN])
|
||||
HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN])
|
||||
HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY])
|
||||
HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY])
|
||||
HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY])
|
||||
HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY])
|
||||
HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT])
|
||||
HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT])
|
||||
HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP])
|
||||
HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP])
|
||||
HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP])
|
||||
HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP])
|
||||
HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL])
|
||||
HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM])
|
||||
HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP])
|
||||
HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR])
|
||||
HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR])
|
||||
HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN])
|
||||
HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN])
|
||||
HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK])
|
||||
HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR])
|
||||
HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK])
|
||||
HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH])
|
||||
HAVE_WCSFTIME=1; AC_SUBST([HAVE_WCSFTIME])
|
||||
HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB])
|
||||
HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
|
||||
REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T])
|
||||
REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC])
|
||||
REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB])
|
||||
REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT])
|
||||
REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC])
|
||||
REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN])
|
||||
REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS])
|
||||
REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
|
||||
REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB])
|
||||
REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS])
|
||||
REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
|
||||
REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
|
||||
REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH])
|
||||
REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME])
|
||||
])
|
||||
24
m4/wchar_t.m4
Normal file
24
m4/wchar_t.m4
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
# wchar_t.m4 serial 4 (gettext-0.18.2)
|
||||
dnl Copyright (C) 2002-2003, 2008-2018 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.
|
||||
dnl Test whether <stddef.h> has the 'wchar_t' type.
|
||||
dnl Prerequisite: AC_PROG_CC
|
||||
|
||||
AC_DEFUN([gt_TYPE_WCHAR_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[#include <stddef.h>
|
||||
wchar_t foo = (wchar_t)'\0';]],
|
||||
[[]])],
|
||||
[gt_cv_c_wchar_t=yes],
|
||||
[gt_cv_c_wchar_t=no])])
|
||||
if test $gt_cv_c_wchar_t = yes; then
|
||||
AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
|
||||
fi
|
||||
])
|
||||
74
m4/wint_t.m4
Normal file
74
m4/wint_t.m4
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# wint_t.m4 serial 7
|
||||
dnl Copyright (C) 2003, 2007-2018 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.
|
||||
dnl Test whether <wchar.h> has the 'wint_t' type and whether gnulib's
|
||||
dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'.
|
||||
dnl Prerequisite: AC_PROG_CC
|
||||
|
||||
AC_DEFUN([gt_TYPE_WINT_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[[
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
|
||||
before <wchar.h>. */
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <wchar.h>
|
||||
wint_t foo = (wchar_t)'\0';]],
|
||||
[[]])],
|
||||
[gt_cv_c_wint_t=yes],
|
||||
[gt_cv_c_wint_t=no])])
|
||||
if test $gt_cv_c_wint_t = yes; then
|
||||
AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
|
||||
|
||||
dnl Determine whether gnulib's <wchar.h> or <wctype.h> would, if present,
|
||||
dnl override 'wint_t'.
|
||||
AC_CACHE_CHECK([whether wint_t is too small],
|
||||
[gl_cv_type_wint_t_too_small],
|
||||
[AC_COMPILE_IFELSE(
|
||||
[AC_LANG_PROGRAM([[
|
||||
/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
|
||||
<wchar.h>.
|
||||
BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
|
||||
included before <wchar.h>. */
|
||||
#if !(defined __GLIBC__ && !defined __UCLIBC__)
|
||||
# include <stddef.h>
|
||||
# include <stdio.h>
|
||||
# include <time.h>
|
||||
#endif
|
||||
#include <wchar.h>
|
||||
int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
|
||||
]])],
|
||||
[gl_cv_type_wint_t_too_small=no],
|
||||
[gl_cv_type_wint_t_too_small=yes])])
|
||||
if test $gl_cv_type_wint_t_too_small = yes; then
|
||||
GNULIB_OVERRIDES_WINT_T=1
|
||||
else
|
||||
GNULIB_OVERRIDES_WINT_T=0
|
||||
fi
|
||||
else
|
||||
GNULIB_OVERRIDES_WINT_T=0
|
||||
fi
|
||||
AC_SUBST([GNULIB_OVERRIDES_WINT_T])
|
||||
])
|
||||
|
||||
dnl Prerequisites of the 'wint_t' override.
|
||||
AC_DEFUN([gl_TYPE_WINT_T_PREREQ],
|
||||
[
|
||||
AC_CHECK_HEADERS_ONCE([crtdefs.h])
|
||||
if test $ac_cv_header_crtdefs_h = yes; then
|
||||
HAVE_CRTDEFS_H=1
|
||||
else
|
||||
HAVE_CRTDEFS_H=0
|
||||
fi
|
||||
AC_SUBST([HAVE_CRTDEFS_H])
|
||||
])
|
||||
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-2018 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