mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 21:58:04 +00:00
missing-macros: add more m4 macros from gettext, ossp-js, libmikmod, libdnet
SVN-Revision: 24757
This commit is contained in:
parent
9ecd833007
commit
93cb309a05
@ -8,7 +8,7 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=missing-macros
|
||||
PKG_VERSION:=2
|
||||
PKG_VERSION:=3
|
||||
|
||||
include $(INCLUDE_DIR)/host-build.mk
|
||||
|
||||
|
@ -9,8 +9,51 @@ Library linking and rpath helper macros.
|
||||
lib-link.m4
|
||||
lib-prefix.m4
|
||||
|
||||
Integer data type test macros.
|
||||
|
||||
intmax.m4
|
||||
wint_t.m4
|
||||
inttypes-pri.m4
|
||||
uintmax_t.m4
|
||||
stdint_h.m4
|
||||
intdiv0.m4
|
||||
inttypes_h.m4
|
||||
|
||||
Program test macro.
|
||||
|
||||
progtest.m4
|
||||
|
||||
GNU libc version test macros.
|
||||
|
||||
glibc2.m4
|
||||
glibc21.m4
|
||||
|
||||
|
||||
From UCL and LZO:
|
||||
Compiler ACC conformance testing macros.
|
||||
|
||||
acc.m4
|
||||
|
||||
|
||||
From OSSP-JS:
|
||||
Test macros for va_copy() implementations.
|
||||
|
||||
va_copy.m4
|
||||
|
||||
|
||||
From libmikmod:
|
||||
Feature test macros for the Enlightment Sound Daemon.
|
||||
|
||||
esd.m4
|
||||
|
||||
|
||||
From libdnet:
|
||||
Feature test macros for socket api implementations.
|
||||
|
||||
dnet.m4
|
||||
|
||||
|
||||
From OpenWrt:
|
||||
Always disable GTK docs.
|
||||
|
||||
fake-gtk-doc-check.m4
|
||||
|
320
tools/missing-macros/src/m4/dnet.m4
Normal file
320
tools/missing-macros/src/m4/dnet.m4
Normal file
@ -0,0 +1,320 @@
|
||||
dnl
|
||||
dnl Check for 4.4 BSD sa_len member in sockaddr struct
|
||||
dnl
|
||||
dnl usage: AC_DNET_SOCKADDR_SA_LEN
|
||||
dnl results: HAVE_SOCKADDR_SA_LEN (defined)
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_SOCKADDR_SA_LEN,
|
||||
[AC_MSG_CHECKING(for sa_len in sockaddr struct)
|
||||
AC_CACHE_VAL(ac_cv_dnet_sockaddr_has_sa_len,
|
||||
AC_TRY_COMPILE([
|
||||
# ifndef _SOCKADDR_LEN
|
||||
# define _SOCKADDR_LEN 1
|
||||
# endif
|
||||
# include <sys/types.h>
|
||||
# include <sys/socket.h>],
|
||||
[u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
|
||||
ac_cv_dnet_sockaddr_has_sa_len=yes,
|
||||
ac_cv_dnet_sockaddr_has_sa_len=no))
|
||||
AC_MSG_RESULT($ac_cv_dnet_sockaddr_has_sa_len)
|
||||
if test $ac_cv_dnet_sockaddr_has_sa_len = yes ; then
|
||||
AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
|
||||
[Define if sockaddr struct has sa_len.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for sockaddr_in6 struct in <netinet/in.h>
|
||||
dnl
|
||||
dnl usage: AC_DNET_SOCKADDR_IN6
|
||||
dnl results: HAVE_SOCKADDR_IN6
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_SOCKADDR_IN6,
|
||||
[AC_MSG_CHECKING(for sockaddr_in6 struct in <netinet/in.h>)
|
||||
AC_CACHE_VAL(ac_cv_dnet_netinet_in_h_has_sockaddr_in6,
|
||||
AC_TRY_COMPILE([
|
||||
# include <sys/types.h>
|
||||
# include <sys/socket.h>
|
||||
# include <netinet/in.h>],
|
||||
[struct sockaddr_in6 sin6; sin6.sin6_family = AF_INET6;],
|
||||
ac_cv_dnet_netinet_in_h_has_sockaddr_in6=yes,
|
||||
ac_cv_dnet_netinet_in_h_has_sockaddr_in6=no))
|
||||
AC_MSG_RESULT($ac_cv_dnet_netinet_in_h_has_sockaddr_in6)
|
||||
if test $ac_cv_dnet_netinet_in_h_has_sockaddr_in6 = yes ; then
|
||||
AC_DEFINE(HAVE_SOCKADDR_IN6, 1,
|
||||
[Define if <netinet/in.h> has sockaddr_in6 struct.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for arp_dev member in arpreq struct
|
||||
dnl
|
||||
dnl usage: AC_DNET_ARPREQ_ARP_DEV
|
||||
dnl results: HAVE_ARPREQ_ARP_DEV (defined)
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_ARPREQ_ARP_DEV,
|
||||
[AC_MSG_CHECKING(for arp_dev in arpreq struct)
|
||||
AC_CACHE_VAL(ac_cv_dnet_arpreq_has_arp_dev,
|
||||
AC_TRY_COMPILE([
|
||||
# include <sys/types.h>
|
||||
# include <sys/socket.h>
|
||||
# include <net/if_arp.h>],
|
||||
[void *p = ((struct arpreq *)0)->arp_dev],
|
||||
ac_cv_dnet_arpreq_has_arp_dev=yes,
|
||||
ac_cv_dnet_arpreq_has_arp_dev=no))
|
||||
AC_MSG_RESULT($ac_cv_dnet_arpreq_has_arp_dev)
|
||||
if test $ac_cv_dnet_arpreq_has_arp_dev = yes ; then
|
||||
AC_DEFINE(HAVE_ARPREQ_ARP_DEV, 1,
|
||||
[Define if arpreq struct has arp_dev.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for rt_msghdr struct in <net/route.h>
|
||||
dnl
|
||||
dnl usage: AC_DNET_ROUTE_RT_MSGHDR
|
||||
dnl results: HAVE_ROUTE_RT_MSGHDR
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_ROUTE_RT_MSGHDR,
|
||||
[AC_MSG_CHECKING(for rt_msghdr struct in <net/route.h>)
|
||||
AC_CACHE_VAL(ac_cv_dnet_route_h_has_rt_msghdr,
|
||||
AC_TRY_COMPILE([
|
||||
# include <sys/types.h>
|
||||
# include <sys/socket.h>
|
||||
# include <net/if.h>
|
||||
# include <net/route.h>],
|
||||
[struct rt_msghdr rtm; rtm.rtm_msglen = 0;],
|
||||
ac_cv_dnet_route_h_has_rt_msghdr=yes,
|
||||
ac_cv_dnet_route_h_has_rt_msghdr=no))
|
||||
AC_MSG_RESULT($ac_cv_dnet_route_h_has_rt_msghdr)
|
||||
if test $ac_cv_dnet_route_h_has_rt_msghdr = yes ; then
|
||||
AC_DEFINE(HAVE_ROUTE_RT_MSGHDR, 1,
|
||||
[Define if <net/route.h> has rt_msghdr struct.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for the Berkeley Packet Filter
|
||||
dnl
|
||||
dnl usage: AC_DNET_BSD_BPF
|
||||
dnl results: HAVE_BSD_BPF
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_BSD_BPF,
|
||||
[AC_MSG_CHECKING(for Berkeley Packet Filter)
|
||||
AC_CACHE_VAL(ac_cv_dnet_bsd_bpf,
|
||||
if test -c /dev/bpf0 ; then
|
||||
ac_cv_dnet_bsd_bpf=yes
|
||||
else
|
||||
ac_cv_dnet_bsd_bpf=no
|
||||
fi)
|
||||
AC_MSG_RESULT($ac_cv_dnet_bsd_bpf)
|
||||
if test $ac_cv_dnet_bsd_bpf = yes ; then
|
||||
AC_DEFINE(HAVE_BSD_BPF, 1,
|
||||
[Define if you have the Berkeley Packet Filter.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for the Linux /proc filesystem
|
||||
dnl
|
||||
dnl usage: AC_DNET_LINUX_PROCFS
|
||||
dnl results: HAVE_LINUX_PROCFS
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_LINUX_PROCFS,
|
||||
[AC_MSG_CHECKING(for Linux proc filesystem)
|
||||
AC_CACHE_VAL(ac_cv_dnet_linux_procfs,
|
||||
if test "x`cat /proc/sys/kernel/ostype 2>&-`" = "xLinux" ; then
|
||||
ac_cv_dnet_linux_procfs=yes
|
||||
else
|
||||
ac_cv_dnet_linux_procfs=no
|
||||
fi)
|
||||
AC_MSG_RESULT($ac_cv_dnet_linux_procfs)
|
||||
if test $ac_cv_dnet_linux_procfs = yes ; then
|
||||
AC_DEFINE(HAVE_LINUX_PROCFS, 1,
|
||||
[Define if you have the Linux /proc filesystem.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for Linux PF_PACKET sockets
|
||||
dnl
|
||||
dnl usage: AC_DNET_LINUX_PF_PACKET
|
||||
dnl results: HAVE_LINUX_PF_PACKET
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_LINUX_PF_PACKET,
|
||||
[AC_MSG_CHECKING(for Linux PF_PACKET sockets)
|
||||
AC_CACHE_VAL(ac_cv_dnet_linux_pf_packet,
|
||||
if test -f /usr/include/netpacket/packet.h ; then
|
||||
ac_cv_dnet_linux_pf_packet=yes
|
||||
else
|
||||
ac_cv_dnet_linux_pf_packet=no
|
||||
fi)
|
||||
AC_MSG_RESULT($ac_cv_dnet_linux_pf_packet)
|
||||
if test $ac_cv_dnet_linux_pf_packet = yes ; then
|
||||
AC_DEFINE(HAVE_LINUX_PF_PACKET, 1,
|
||||
[Define if you have Linux PF_PACKET sockets.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for SNMP MIB2 STREAMS (Solaris only?)
|
||||
dnl
|
||||
dnl usage: AC_DNET_STREAMS_MIB2
|
||||
dnl results: HAVE_STREAMS_MIB2
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_STREAMS_MIB2,
|
||||
[AC_MSG_CHECKING(for SNMP MIB2 STREAMS)
|
||||
AC_CACHE_VAL(ac_cv_dnet_streams_mib2,
|
||||
if test -f /usr/include/inet/mib2.h -a -c /dev/ip ; then
|
||||
ac_cv_dnet_streams_mib2=yes
|
||||
else
|
||||
ac_cv_dnet_streams_mib2=no
|
||||
fi)
|
||||
AC_MSG_RESULT($ac_cv_dnet_streams_mib2)
|
||||
if test $ac_cv_dnet_streams_mib2 = yes ; then
|
||||
AC_DEFINE(HAVE_STREAMS_MIB2, 1,
|
||||
[Define if you have SNMP MIB2 STREAMS.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for route(7) STREAMS (UnixWare only?)
|
||||
dnl
|
||||
dnl usage: AC_DNET_STREAMS_ROUTE
|
||||
dnl results: HAVE_STREAMS_ROUTE
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_STREAMS_ROUTE,
|
||||
[AC_MSG_CHECKING(for route(7) STREAMS)
|
||||
AC_CACHE_VAL(ac_cv_dnet_streams_route,
|
||||
if grep RTSTR_SEND /usr/include/net/route.h >/dev/null 2>&1 ; then
|
||||
ac_cv_dnet_streams_route=yes
|
||||
else
|
||||
ac_cv_dnet_streams_route=no
|
||||
fi)
|
||||
AC_MSG_RESULT($ac_cv_dnet_streams_route)
|
||||
if test $ac_cv_dnet_streams_route = yes ; then
|
||||
AC_DEFINE(HAVE_STREAMS_ROUTE, 1,
|
||||
[Define if you have route(7) STREAMS.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for arp(7) ioctls
|
||||
dnl
|
||||
dnl usage: AC_DNET_IOCTL_ARP
|
||||
dnl results: HAVE_IOCTL_ARP
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_IOCTL_ARP,
|
||||
[AC_MSG_CHECKING(for arp(7) ioctls)
|
||||
AC_CACHE_VAL(ac_cv_dnet_ioctl_arp,
|
||||
AC_EGREP_CPP(werd, [
|
||||
# include <sys/types.h>
|
||||
# define BSD_COMP
|
||||
# include <sys/ioctl.h>
|
||||
# ifdef SIOCGARP
|
||||
werd
|
||||
# endif],
|
||||
ac_cv_dnet_ioctl_arp=yes,
|
||||
ac_cv_dnet_ioctl_arp=no))
|
||||
case "$host_os" in
|
||||
irix*)
|
||||
ac_cv_dnet_ioctl_arp=no ;;
|
||||
esac
|
||||
AC_MSG_RESULT($ac_cv_dnet_ioctl_arp)
|
||||
if test $ac_cv_dnet_ioctl_arp = yes ; then
|
||||
AC_DEFINE(HAVE_IOCTL_ARP, 1,
|
||||
[Define if you have arp(7) ioctls.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for raw IP sockets ip_{len,off} host byte ordering
|
||||
dnl
|
||||
dnl usage: AC_DNET_RAWIP_HOST_OFFLEN
|
||||
dnl results: HAVE_RAWIP_HOST_OFFLEN
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_RAWIP_HOST_OFFLEN,
|
||||
[AC_MSG_CHECKING([for raw IP sockets ip_{len,off} host byte ordering])
|
||||
AC_CACHE_VAL(ac_cv_dnet_rawip_host_offlen, [
|
||||
case "$host_os" in
|
||||
*openbsd*)
|
||||
ac_cv_dnet_rawip_host_offlen=no ;;
|
||||
*bsd*|*osf*|*unixware*)
|
||||
ac_cv_dnet_rawip_host_offlen=yes ;;
|
||||
*)
|
||||
ac_cv_dnet_rawip_host_offlen=no ;;
|
||||
esac])
|
||||
AC_MSG_RESULT($ac_cv_dnet_rawip_host_offlen)
|
||||
if test $ac_cv_dnet_rawip_host_offlen = yes ; then
|
||||
AC_DEFINE(HAVE_RAWIP_HOST_OFFLEN, 1,
|
||||
[Define if raw IP sockets require host byte ordering for ip_off, ip_len.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl Check for cooked raw IP sockets
|
||||
dnl
|
||||
dnl usage: AC_DNET_RAWIP_COOKED
|
||||
dnl results: HAVE_RAWIP_COOKED
|
||||
dnl
|
||||
AC_DEFUN(AC_DNET_RAWIP_COOKED,
|
||||
[AC_MSG_CHECKING(for cooked raw IP sockets)
|
||||
AC_CACHE_VAL(ac_cv_dnet_rawip_cooked, [
|
||||
case "$host_os" in
|
||||
solaris*|irix*)
|
||||
ac_cv_dnet_rawip_cooked=yes ;;
|
||||
*)
|
||||
ac_cv_dnet_rawip_cooked=no ;;
|
||||
esac])
|
||||
AC_MSG_RESULT($ac_cv_dnet_rawip_cooked)
|
||||
if test $ac_cv_dnet_rawip_cooked = yes ; then
|
||||
AC_DEFINE(HAVE_RAWIP_COOKED, 1,
|
||||
[Define if you have cooked raw IP sockets.])
|
||||
fi])
|
||||
|
||||
dnl
|
||||
dnl AC_LBL_LIBRARY_NET
|
||||
dnl
|
||||
dnl This test is for network applications that need socket() and
|
||||
dnl gethostbyname() -ish functions. Under Solaris, those applications
|
||||
dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
|
||||
dnl with "-lnsl" but should *not* link with "-lsocket" because
|
||||
dnl libsocket.a breaks a number of things (for instance:
|
||||
dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
|
||||
dnl versions of IRIX).
|
||||
dnl
|
||||
dnl Unfortunately, many application developers are not aware of this,
|
||||
dnl and mistakenly write tests that cause -lsocket to be used under
|
||||
dnl IRIX. It is also easy to write tests that cause -lnsl to be used
|
||||
dnl under operating systems where neither are necessary (or useful),
|
||||
dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
|
||||
dnl
|
||||
dnl This test exists so that every application developer does not test
|
||||
dnl this in a different, and subtly broken fashion.
|
||||
|
||||
dnl It has been argued that this test should be broken up into two
|
||||
dnl seperate tests, one for the resolver libraries, and one for the
|
||||
dnl libraries necessary for using Sockets API. Unfortunately, the two
|
||||
dnl are carefully intertwined and allowing the autoconf user to use
|
||||
dnl them independantly potentially results in unfortunate ordering
|
||||
dnl dependancies -- as such, such component macros would have to
|
||||
dnl carefully use indirection and be aware if the other components were
|
||||
dnl executed. Since other autoconf macros do not go to this trouble,
|
||||
dnl and almost no applications use sockets without the resolver, this
|
||||
dnl complexity has not been implemented.
|
||||
dnl
|
||||
dnl The check for libresolv is in case you are attempting to link
|
||||
dnl statically and happen to have a libresolv.a lying around (and no
|
||||
dnl libnsl.a).
|
||||
dnl
|
||||
AC_DEFUN(AC_LBL_LIBRARY_NET, [
|
||||
# Most operating systems have gethostbyname() in the default searched
|
||||
# libraries (i.e. libc):
|
||||
AC_CHECK_FUNC(gethostbyname, ,
|
||||
# Some OSes (eg. Solaris) place it in libnsl:
|
||||
AC_CHECK_LIB(nsl, gethostbyname, ,
|
||||
# Some strange OSes (SINIX) have it in libsocket:
|
||||
AC_CHECK_LIB(socket, gethostbyname, ,
|
||||
# Unfortunately libsocket sometimes depends on libnsl.
|
||||
# AC_CHECK_LIB's API is essentially broken so the
|
||||
# following ugliness is necessary:
|
||||
AC_CHECK_LIB(socket, gethostbyname,
|
||||
LIBS="-lsocket -lnsl $LIBS",
|
||||
AC_CHECK_LIB(resolv, gethostbyname),
|
||||
-lnsl))))
|
||||
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
|
||||
AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", ,
|
||||
-lnsl)))
|
||||
# DLPI needs putmsg under HPUX so test for -lstr while we're at it
|
||||
AC_CHECK_LIB(str, putmsg)
|
||||
])
|
||||
|
195
tools/missing-macros/src/m4/esd.m4
Normal file
195
tools/missing-macros/src/m4/esd.m4
Normal file
@ -0,0 +1,195 @@
|
||||
# Configure paths for ESD
|
||||
# Manish Singh 98-9-30
|
||||
# stolen back from Frank Belew
|
||||
# stolen from Manish Singh
|
||||
# Shamelessly stolen from Owen Taylor
|
||||
|
||||
dnl AM_PATH_ESD([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
||||
dnl Test for ESD, and define ESD_CFLAGS and ESD_LIBS
|
||||
dnl
|
||||
AC_DEFUN(AM_PATH_ESD,
|
||||
[dnl
|
||||
dnl Get the cflags and libraries from the esd-config script
|
||||
dnl
|
||||
AC_ARG_WITH(esd-prefix,[ --with-esd-prefix=PFX Prefix where ESD is installed (optional)],
|
||||
esd_prefix="$withval", esd_prefix="")
|
||||
AC_ARG_WITH(esd-exec-prefix,[ --with-esd-exec-prefix=PFX Exec prefix where ESD is installed (optional)],
|
||||
esd_exec_prefix="$withval", esd_exec_prefix="")
|
||||
AC_ARG_ENABLE(esdtest, [ --disable-esdtest Do not try to compile and run a test ESD program],
|
||||
, enable_esdtest=yes)
|
||||
|
||||
if test x$esd_exec_prefix != x ; then
|
||||
esd_args="$esd_args --exec-prefix=$esd_exec_prefix"
|
||||
if test x${ESD_CONFIG+set} != xset ; then
|
||||
ESD_CONFIG=$esd_exec_prefix/bin/esd-config
|
||||
fi
|
||||
fi
|
||||
if test x$esd_prefix != x ; then
|
||||
esd_args="$esd_args --prefix=$esd_prefix"
|
||||
if test x${ESD_CONFIG+set} != xset ; then
|
||||
ESD_CONFIG=$esd_prefix/bin/esd-config
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_PATH_PROG(ESD_CONFIG, esd-config, no)
|
||||
min_esd_version=ifelse([$1], ,0.2.7,$1)
|
||||
AC_MSG_CHECKING(for ESD - version >= $min_esd_version)
|
||||
no_esd=""
|
||||
if test "$ESD_CONFIG" = "no" ; then
|
||||
no_esd=yes
|
||||
else
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_C
|
||||
ESD_CFLAGS=`$ESD_CONFIG $esdconf_args --cflags`
|
||||
ESD_LIBS=`$ESD_CONFIG $esdconf_args --libs`
|
||||
|
||||
esd_major_version=`$ESD_CONFIG $esd_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
esd_minor_version=`$ESD_CONFIG $esd_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
esd_micro_version=`$ESD_CONFIG $esd_config_args --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||
if test "x$enable_esdtest" = "xyes" ; then
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
ac_save_LIBS="$LIBS"
|
||||
CFLAGS="$CFLAGS $ESD_CFLAGS"
|
||||
LIBS="$LIBS $ESD_LIBS"
|
||||
dnl
|
||||
dnl Now check if the installed ESD is sufficiently new. (Also sanity
|
||||
dnl checks the results of esd-config to some extent
|
||||
dnl
|
||||
rm -f conf.esdtest
|
||||
AC_TRY_RUN([
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <esd.h>
|
||||
|
||||
char*
|
||||
my_strdup (char *str)
|
||||
{
|
||||
char *new_str;
|
||||
|
||||
if (str)
|
||||
{
|
||||
new_str = malloc ((strlen (str) + 1) * sizeof(char));
|
||||
strcpy (new_str, str);
|
||||
}
|
||||
else
|
||||
new_str = NULL;
|
||||
|
||||
return new_str;
|
||||
}
|
||||
|
||||
int main ()
|
||||
{
|
||||
int major, minor, micro;
|
||||
char *tmp_version;
|
||||
|
||||
system ("touch conf.esdtest");
|
||||
|
||||
/* HP/UX 9 (%@#!) writes to sscanf strings */
|
||||
tmp_version = my_strdup("$min_esd_version");
|
||||
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
|
||||
printf("%s, bad version string\n", "$min_esd_version");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (($esd_major_version > major) ||
|
||||
(($esd_major_version == major) && ($esd_minor_version > minor)) ||
|
||||
(($esd_major_version == major) && ($esd_minor_version == minor) && ($esd_micro_version >= micro)))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\n*** 'esd-config --version' returned %d.%d.%d, but the minimum version\n", $esd_major_version, $esd_minor_version, $esd_micro_version);
|
||||
printf("*** of ESD required is %d.%d.%d. If esd-config is correct, then it is\n", major, minor, micro);
|
||||
printf("*** best to upgrade to the required version.\n");
|
||||
printf("*** If esd-config was wrong, set the environment variable ESD_CONFIG\n");
|
||||
printf("*** to point to the correct copy of esd-config, and remove the file\n");
|
||||
printf("*** config.cache before re-running configure\n");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
],, no_esd=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_RESTORE
|
||||
fi
|
||||
fi
|
||||
if test "x$no_esd" = x ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
ifelse([$2], , :, [$2])
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
if test "$ESD_CONFIG" = "no" ; then
|
||||
echo "*** The esd-config script installed by ESD could not be found"
|
||||
echo "*** If ESD was installed in PREFIX, make sure PREFIX/bin is in"
|
||||
echo "*** your path, or set the ESD_CONFIG environment variable to the"
|
||||
echo "*** full path to esd-config."
|
||||
else
|
||||
if test -f conf.esdtest ; then
|
||||
:
|
||||
else
|
||||
echo "*** Could not run ESD test program, checking why..."
|
||||
CFLAGS="$CFLAGS $ESD_CFLAGS"
|
||||
LIBS="$LIBS $ESD_LIBS"
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_C
|
||||
AC_TRY_LINK([
|
||||
#include <stdio.h>
|
||||
#include <esd.h>
|
||||
], [ return 0; ],
|
||||
[ echo "*** The test program compiled, but did not run. This usually means"
|
||||
echo "*** that the run-time linker is not finding ESD or finding the wrong"
|
||||
echo "*** version of ESD. If it is not finding ESD, you'll need to set your"
|
||||
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
||||
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
||||
echo "*** is required on your system"
|
||||
echo "***"
|
||||
echo "*** If you have an old version installed, it is best to remove it, although"
|
||||
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"],
|
||||
[ echo "*** The test program failed to compile or link. See the file config.log for the"
|
||||
echo "*** exact error that occured. This usually means ESD was incorrectly installed"
|
||||
echo "*** or that you have moved ESD since it was installed. In the latter case, you"
|
||||
echo "*** may want to edit the esd-config script: $ESD_CONFIG" ])
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
LIBS="$ac_save_LIBS"
|
||||
AC_LANG_RESTORE
|
||||
fi
|
||||
fi
|
||||
ESD_CFLAGS=""
|
||||
ESD_LIBS=""
|
||||
ifelse([$3], , :, [$3])
|
||||
fi
|
||||
AC_SUBST(ESD_CFLAGS)
|
||||
AC_SUBST(ESD_LIBS)
|
||||
rm -f conf.esdtest
|
||||
])
|
||||
|
||||
dnl AM_ESD_SUPPORTS_MULTIPLE_RECORD([ACTION-IF-SUPPORTS [, ACTION-IF-NOT-SUPPORTS]])
|
||||
dnl Test, whether esd supports multiple recording clients (version >=0.2.21)
|
||||
dnl
|
||||
AC_DEFUN(AM_ESD_SUPPORTS_MULTIPLE_RECORD,
|
||||
[dnl
|
||||
AC_MSG_NOTICE([whether installed esd version supports multiple recording clients])
|
||||
ac_save_ESD_CFLAGS="$ESD_CFLAGS"
|
||||
ac_save_ESD_LIBS="$ESD_LIBS"
|
||||
AM_PATH_ESD(0.2.21,
|
||||
ifelse([$1], , [
|
||||
AM_CONDITIONAL(ESD_SUPPORTS_MULTIPLE_RECORD, true)
|
||||
AC_DEFINE(ESD_SUPPORTS_MULTIPLE_RECORD, 1,
|
||||
[Define if you have esound with support of multiple recording clients.])],
|
||||
[$1]),
|
||||
ifelse([$2], , [AM_CONDITIONAL(ESD_SUPPORTS_MULTIPLE_RECORD, false)], [$2])
|
||||
if test "x$ac_save_ESD_CFLAGS" != x ; then
|
||||
ESD_CFLAGS="$ac_save_ESD_CFLAGS"
|
||||
fi
|
||||
if test "x$ac_save_ESD_LIBS" != x ; then
|
||||
ESD_LIBS="$ac_save_ESD_LIBS"
|
||||
fi
|
||||
)
|
||||
])
|
||||
|
5
tools/missing-macros/src/m4/fake-gtk-doc-check.m4
Normal file
5
tools/missing-macros/src/m4/fake-gtk-doc-check.m4
Normal file
@ -0,0 +1,5 @@
|
||||
dnl fake-gtk-doc-check.m4 serial 1 (OpenWrt)
|
||||
dnl Provide a fake GTK_DOC_CHECK macros which
|
||||
dnl always defines false.
|
||||
|
||||
AC_DEFUN([GTK_DOC_CHECK],[AM_CONDITIONAL(ENABLE_GTK_DOC,false)])
|
30
tools/missing-macros/src/m4/glibc2.m4
Normal file
30
tools/missing-macros/src/m4/glibc2.m4
Normal file
@ -0,0 +1,30 @@
|
||||
# glibc2.m4 serial 2
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 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.
|
||||
|
||||
# Test for the GNU C Library, version 2.0 or newer.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gt_GLIBC2],
|
||||
[
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
|
||||
[ac_cv_gnu_library_2],
|
||||
[AC_EGREP_CPP([Lucky GNU user],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ >= 2)
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
],
|
||||
[ac_cv_gnu_library_2=yes],
|
||||
[ac_cv_gnu_library_2=no])
|
||||
]
|
||||
)
|
||||
AC_SUBST([GLIBC2])
|
||||
GLIBC2="$ac_cv_gnu_library_2"
|
||||
]
|
||||
)
|
30
tools/missing-macros/src/m4/glibc21.m4
Normal file
30
tools/missing-macros/src/m4/glibc21.m4
Normal file
@ -0,0 +1,30 @@
|
||||
# glibc21.m4 serial 4
|
||||
dnl Copyright (C) 2000-2002, 2004, 2008-2010 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.
|
||||
|
||||
# Test for the GNU C Library, version 2.1 or newer.
|
||||
# From Bruno Haible.
|
||||
|
||||
AC_DEFUN([gl_GLIBC21],
|
||||
[
|
||||
AC_CACHE_CHECK([whether we are using the GNU C Library 2.1 or newer],
|
||||
[ac_cv_gnu_library_2_1],
|
||||
[AC_EGREP_CPP([Lucky GNU user],
|
||||
[
|
||||
#include <features.h>
|
||||
#ifdef __GNU_LIBRARY__
|
||||
#if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
|
||||
Lucky GNU user
|
||||
#endif
|
||||
#endif
|
||||
],
|
||||
[ac_cv_gnu_library_2_1=yes],
|
||||
[ac_cv_gnu_library_2_1=no])
|
||||
]
|
||||
)
|
||||
AC_SUBST([GLIBC21])
|
||||
GLIBC21="$ac_cv_gnu_library_2_1"
|
||||
]
|
||||
)
|
84
tools/missing-macros/src/m4/intdiv0.m4
Normal file
84
tools/missing-macros/src/m4/intdiv0.m4
Normal file
@ -0,0 +1,84 @@
|
||||
# intdiv0.m4 serial 3 (gettext-0.18)
|
||||
dnl Copyright (C) 2002, 2007-2010 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([gt_INTDIV0],
|
||||
[
|
||||
AC_REQUIRE([AC_PROG_CC])dnl
|
||||
AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
||||
|
||||
AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
|
||||
gt_cv_int_divbyzero_sigfpe,
|
||||
[
|
||||
gt_cv_int_divbyzero_sigfpe=
|
||||
changequote(,)dnl
|
||||
case "$host_os" in
|
||||
macos* | darwin[6-9]* | darwin[1-9][0-9]*)
|
||||
# On MacOS X 10.2 or newer, just assume the same as when cross-
|
||||
# compiling. If we were to perform the real test, 1 Crash Report
|
||||
# dialog window would pop up.
|
||||
case "$host_cpu" in
|
||||
i[34567]86 | x86_64)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
if test -z "$gt_cv_int_divbyzero_sigfpe"; then
|
||||
AC_TRY_RUN([
|
||||
#include <stdlib.h>
|
||||
#include <signal.h>
|
||||
|
||||
static void
|
||||
sigfpe_handler (int sig)
|
||||
{
|
||||
/* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
|
||||
exit (sig != SIGFPE);
|
||||
}
|
||||
|
||||
int x = 1;
|
||||
int y = 0;
|
||||
int z;
|
||||
int nan;
|
||||
|
||||
int main ()
|
||||
{
|
||||
signal (SIGFPE, sigfpe_handler);
|
||||
/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
|
||||
#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
|
||||
signal (SIGTRAP, sigfpe_handler);
|
||||
#endif
|
||||
/* Linux/SPARC yields signal SIGILL. */
|
||||
#if defined (__sparc__) && defined (__linux__)
|
||||
signal (SIGILL, sigfpe_handler);
|
||||
#endif
|
||||
|
||||
z = x / y;
|
||||
nan = y / y;
|
||||
exit (1);
|
||||
}
|
||||
], [gt_cv_int_divbyzero_sigfpe=yes], [gt_cv_int_divbyzero_sigfpe=no],
|
||||
[
|
||||
# Guess based on the CPU.
|
||||
changequote(,)dnl
|
||||
case "$host_cpu" in
|
||||
alpha* | i[34567]86 | x86_64 | m68k | s390*)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing yes";;
|
||||
*)
|
||||
gt_cv_int_divbyzero_sigfpe="guessing no";;
|
||||
esac
|
||||
changequote([,])dnl
|
||||
])
|
||||
fi
|
||||
])
|
||||
case "$gt_cv_int_divbyzero_sigfpe" in
|
||||
*yes) value=1;;
|
||||
*) value=0;;
|
||||
esac
|
||||
AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
|
||||
[Define if integer division by zero raises signal SIGFPE.])
|
||||
])
|
33
tools/missing-macros/src/m4/intmax.m4
Normal file
33
tools/missing-macros/src/m4/intmax.m4
Normal file
@ -0,0 +1,33 @@
|
||||
# intmax.m4 serial 5 (gettext-0.18)
|
||||
dnl Copyright (C) 2002-2005, 2008-2010 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 the system has the 'intmax_t' type, but don't attempt to
|
||||
dnl find a replacement if it is lacking.
|
||||
|
||||
AC_DEFUN([gt_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_TRY_COMPILE([
|
||||
#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>.])
|
||||
fi
|
||||
])
|
36
tools/missing-macros/src/m4/inttypes-pri.m4
Normal file
36
tools/missing-macros/src/m4/inttypes-pri.m4
Normal file
@ -0,0 +1,36 @@
|
||||
# inttypes-pri.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1997-2002, 2006, 2008-2010 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl From Bruno Haible.
|
||||
|
||||
AC_PREREQ([2.52])
|
||||
|
||||
# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
|
||||
# macros to non-string values. This is the case on AIX 4.3.3.
|
||||
|
||||
AC_DEFUN([gt_INTTYPES_PRI],
|
||||
[
|
||||
AC_CHECK_HEADERS([inttypes.h])
|
||||
if test $ac_cv_header_inttypes_h = yes; then
|
||||
AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
|
||||
[gt_cv_inttypes_pri_broken],
|
||||
[
|
||||
AC_TRY_COMPILE([#include <inttypes.h>
|
||||
#ifdef PRId32
|
||||
char *p = PRId32;
|
||||
#endif
|
||||
], [], [gt_cv_inttypes_pri_broken=no], [gt_cv_inttypes_pri_broken=yes])
|
||||
])
|
||||
fi
|
||||
if test "$gt_cv_inttypes_pri_broken" = yes; then
|
||||
AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
|
||||
[Define if <inttypes.h> exists and defines unusable PRI* macros.])
|
||||
PRI_MACROS_BROKEN=1
|
||||
else
|
||||
PRI_MACROS_BROKEN=0
|
||||
fi
|
||||
AC_SUBST([PRI_MACROS_BROKEN])
|
||||
])
|
26
tools/missing-macros/src/m4/inttypes_h.m4
Normal file
26
tools/missing-macros/src/m4/inttypes_h.m4
Normal file
@ -0,0 +1,26 @@
|
||||
# inttypes_h.m4 serial 9
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 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_TRY_COMPILE(
|
||||
[#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
|
||||
])
|
92
tools/missing-macros/src/m4/progtest.m4
Normal file
92
tools/missing-macros/src/m4/progtest.m4
Normal file
@ -0,0 +1,92 @@
|
||||
# progtest.m4 serial 6 (gettext-0.18)
|
||||
dnl Copyright (C) 1996-2003, 2005, 2008-2010 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
|
||||
dnl This file can can be used in projects which are not available under
|
||||
dnl the GNU General Public License or the GNU Library General Public
|
||||
dnl License but which still want to provide support for the GNU gettext
|
||||
dnl functionality.
|
||||
dnl Please note that the actual code of the GNU gettext library is covered
|
||||
dnl by the GNU Library General Public License, and the rest of the GNU
|
||||
dnl gettext package package is covered by the GNU General Public License.
|
||||
dnl They are *not* in the public domain.
|
||||
|
||||
dnl Authors:
|
||||
dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||
|
||||
AC_PREREQ([2.50])
|
||||
|
||||
# Search path for a program which passes the given test.
|
||||
|
||||
dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
|
||||
dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
|
||||
AC_DEFUN([AM_PATH_PROG_WITH_TEST],
|
||||
[
|
||||
# Prepare PATH_SEPARATOR.
|
||||
# The user is always right.
|
||||
if test "${PATH_SEPARATOR+set}" != set; then
|
||||
echo "#! /bin/sh" >conf$$.sh
|
||||
echo "exit 0" >>conf$$.sh
|
||||
chmod +x conf$$.sh
|
||||
if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
||||
PATH_SEPARATOR=';'
|
||||
else
|
||||
PATH_SEPARATOR=:
|
||||
fi
|
||||
rm -f conf$$.sh
|
||||
fi
|
||||
|
||||
# Find out how to test for executable files. Don't use a zero-byte file,
|
||||
# as systems may use methods other than mode bits to determine executability.
|
||||
cat >conf$$.file <<_ASEOF
|
||||
#! /bin/sh
|
||||
exit 0
|
||||
_ASEOF
|
||||
chmod +x conf$$.file
|
||||
if test -x conf$$.file >/dev/null 2>&1; then
|
||||
ac_executable_p="test -x"
|
||||
else
|
||||
ac_executable_p="test -f"
|
||||
fi
|
||||
rm -f conf$$.file
|
||||
|
||||
# Extract the first word of "$2", so it can be a program name with args.
|
||||
set dummy $2; ac_word=[$]2
|
||||
AC_MSG_CHECKING([for $ac_word])
|
||||
AC_CACHE_VAL([ac_cv_path_$1],
|
||||
[case "[$]$1" in
|
||||
[[\\/]]* | ?:[[\\/]]*)
|
||||
ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
|
||||
;;
|
||||
*)
|
||||
ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
|
||||
for ac_dir in ifelse([$5], , $PATH, [$5]); do
|
||||
IFS="$ac_save_IFS"
|
||||
test -z "$ac_dir" && ac_dir=.
|
||||
for ac_exec_ext in '' $ac_executable_extensions; do
|
||||
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
|
||||
echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
|
||||
if [$3]; then
|
||||
ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
|
||||
break 2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
IFS="$ac_save_IFS"
|
||||
dnl If no 4th arg is given, leave the cache variable unset,
|
||||
dnl so AC_PATH_PROGS will keep looking.
|
||||
ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
|
||||
])dnl
|
||||
;;
|
||||
esac])dnl
|
||||
$1="$ac_cv_path_$1"
|
||||
if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
|
||||
AC_MSG_RESULT([$][$1])
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
AC_SUBST([$1])dnl
|
||||
])
|
26
tools/missing-macros/src/m4/stdint_h.m4
Normal file
26
tools/missing-macros/src/m4/stdint_h.m4
Normal file
@ -0,0 +1,26 @@
|
||||
# stdint_h.m4 serial 8
|
||||
dnl Copyright (C) 1997-2004, 2006, 2008-2010 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_TRY_COMPILE(
|
||||
[#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
|
||||
])
|
30
tools/missing-macros/src/m4/uintmax_t.m4
Normal file
30
tools/missing-macros/src/m4/uintmax_t.m4
Normal file
@ -0,0 +1,30 @@
|
||||
# uintmax_t.m4 serial 12
|
||||
dnl Copyright (C) 1997-2004, 2007-2010 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_PREREQ([2.13])
|
||||
|
||||
# Define uintmax_t to 'unsigned long' or 'unsigned long long'
|
||||
# if it is not already defined in <stdint.h> or <inttypes.h>.
|
||||
|
||||
AC_DEFUN([gl_AC_TYPE_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_UNSIGNED_LONG_LONG_INT])
|
||||
test $ac_cv_type_unsigned_long_long_int = yes \
|
||||
&& ac_type='unsigned long long' \
|
||||
|| ac_type='unsigned long'
|
||||
AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
|
||||
[Define to unsigned long or unsigned long long
|
||||
if <stdint.h> and <inttypes.h> don't define.])
|
||||
else
|
||||
AC_DEFINE([HAVE_UINTMAX_T], [1],
|
||||
[Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
|
||||
fi
|
||||
])
|
109
tools/missing-macros/src/m4/va_copy.m4
Normal file
109
tools/missing-macros/src/m4/va_copy.m4
Normal file
@ -0,0 +1,109 @@
|
||||
dnl ##
|
||||
dnl ## Check for C99 va_copy() implementation
|
||||
dnl ## (and provide fallback implementation if neccessary)
|
||||
dnl ##
|
||||
dnl ## configure.in:
|
||||
dnl ## AC_CHECK_VA_COPY
|
||||
dnl ## foo.c:
|
||||
dnl ## #include "config.h"
|
||||
dnl ## [...]
|
||||
dnl ## va_copy(d,s)
|
||||
dnl ##
|
||||
dnl ## This check is rather complex: first because we really have to
|
||||
dnl ## try various possible implementations in sequence and second, we
|
||||
dnl ## cannot define a macro in config.h with parameters directly.
|
||||
dnl ##
|
||||
|
||||
dnl # test program for va_copy() implementation
|
||||
changequote(<<,>>)
|
||||
m4_define(__va_copy_test, <<[
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#define DO_VA_COPY(d, s) $1
|
||||
void test(char *str, ...)
|
||||
{
|
||||
va_list ap, ap2;
|
||||
int i;
|
||||
va_start(ap, str);
|
||||
DO_VA_COPY(ap2, ap);
|
||||
for (i = 1; i <= 9; i++) {
|
||||
int k = (int)va_arg(ap, int);
|
||||
if (k != i)
|
||||
abort();
|
||||
}
|
||||
DO_VA_COPY(ap, ap2);
|
||||
for (i = 1; i <= 9; i++) {
|
||||
int k = (int)va_arg(ap, int);
|
||||
if (k != i)
|
||||
abort();
|
||||
}
|
||||
va_end(ap);
|
||||
}
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
test("test", 1, 2, 3, 4, 5, 6, 7, 8, 9);
|
||||
exit(0);
|
||||
}
|
||||
]>>)
|
||||
changequote([,])
|
||||
|
||||
dnl # test driver for va_copy() implementation
|
||||
m4_define(__va_copy_check, [
|
||||
AH_VERBATIM($1,
|
||||
[/* Predefined possible va_copy() implementation (id: $1) */
|
||||
#define __VA_COPY_USE_$1(d, s) $2])
|
||||
if test ".$ac_cv_va_copy" = .; then
|
||||
AC_TRY_RUN(__va_copy_test($2), [ac_cv_va_copy="$1"])
|
||||
fi
|
||||
])
|
||||
|
||||
dnl # Autoconf check for va_copy() implementation checking
|
||||
AC_DEFUN(AC_CHECK_VA_COPY,[
|
||||
dnl # provide Autoconf display check message
|
||||
AC_MSG_CHECKING(for va_copy() function)
|
||||
dnl # check for various implementations in priorized sequence
|
||||
AC_CACHE_VAL(ac_cv_va_copy, [
|
||||
ac_cv_va_copy=""
|
||||
dnl # 1. check for standardized C99 macro
|
||||
__va_copy_check(C99, [va_copy((d), (s))])
|
||||
dnl # 2. check for alternative/deprecated GCC macro
|
||||
__va_copy_check(GCM, [VA_COPY((d), (s))])
|
||||
dnl # 3. check for internal GCC macro (high-level define)
|
||||
__va_copy_check(GCH, [__va_copy((d), (s))])
|
||||
dnl # 4. check for internal GCC macro (built-in function)
|
||||
__va_copy_check(GCB, [__builtin_va_copy((d), (s))])
|
||||
dnl # 5. check for assignment approach (assuming va_list is a struct)
|
||||
__va_copy_check(ASS, [do { (d) = (s); } while (0)])
|
||||
dnl # 6. check for assignment approach (assuming va_list is a pointer)
|
||||
__va_copy_check(ASP, [do { *(d) = *(s); } while (0)])
|
||||
dnl # 7. check for memory copying approach (assuming va_list is a struct)
|
||||
__va_copy_check(CPS, [memcpy((void *)&(d), (void *)&(s)), sizeof((s))])
|
||||
dnl # 8. check for memory copying approach (assuming va_list is a pointer)
|
||||
__va_copy_check(CPP, [memcpy((void *)(d), (void *)(s)), sizeof(*(s))])
|
||||
if test ".$ac_cv_va_copy" = .; then
|
||||
AC_ERROR([no working implementation found])
|
||||
fi
|
||||
])
|
||||
dnl # optionally activate the fallback implementation
|
||||
if test ".$ac_cv_va_copy" = ".C99"; then
|
||||
AC_DEFINE(HAVE_VA_COPY, 1, [Define if va_copy() macro exists (and no fallback implementation is required)])
|
||||
fi
|
||||
dnl # declare which fallback implementation to actually use
|
||||
AC_DEFINE_UNQUOTED([__VA_COPY_USE], [__VA_COPY_USE_$ac_cv_va_copy],
|
||||
[Define to id of used va_copy() implementation])
|
||||
dnl # provide activation hook for fallback implementation
|
||||
AH_VERBATIM([__VA_COPY_ACTIVATION],
|
||||
[/* Optional va_copy() implementation activation */
|
||||
#ifndef HAVE_VA_COPY
|
||||
#define va_copy(d, s) __VA_COPY_USE(d, s)
|
||||
#endif
|
||||
])
|
||||
dnl # provide Autoconf display result message
|
||||
if test ".$ac_cv_va_copy" = ".C99"; then
|
||||
AC_MSG_RESULT([yes])
|
||||
else
|
||||
AC_MSG_RESULT([no (using fallback implementation)])
|
||||
fi
|
||||
])
|
||||
|
28
tools/missing-macros/src/m4/wint_t.m4
Normal file
28
tools/missing-macros/src/m4/wint_t.m4
Normal file
@ -0,0 +1,28 @@
|
||||
# wint_t.m4 serial 4 (gettext-0.18)
|
||||
dnl Copyright (C) 2003, 2007-2010 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.
|
||||
dnl Prerequisite: AC_PROG_CC
|
||||
|
||||
AC_DEFUN([gt_TYPE_WINT_T],
|
||||
[
|
||||
AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
|
||||
[AC_TRY_COMPILE([
|
||||
/* 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.])
|
||||
fi
|
||||
])
|
Loading…
Reference in New Issue
Block a user