Blame tests/semantics.at

Packit Service 9646c7
#							-*- Autotest -*-
Packit Service 9646c7
Packit Service 9646c7
AT_BANNER([Semantics.])
Packit Service 9646c7
Packit Service 9646c7
# Copyright (C) 2000-2002, 2004-2007, 2009-2012 Free Software
Packit Service 9646c7
# Foundation, Inc.
Packit Service 9646c7
#
Packit Service 9646c7
# This program is free software: you can redistribute it and/or modify
Packit Service 9646c7
# it under the terms of the GNU General Public License as published by
Packit Service 9646c7
# the Free Software Foundation, either version 3 of the License, or
Packit Service 9646c7
# (at your option) any later version.
Packit Service 9646c7
#
Packit Service 9646c7
# This program is distributed in the hope that it will be useful,
Packit Service 9646c7
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 9646c7
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 9646c7
# GNU General Public License for more details.
Packit Service 9646c7
#
Packit Service 9646c7
# You should have received a copy of the GNU General Public License
Packit Service 9646c7
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
## -------------------------------- ##
Packit Service 9646c7
## Members of the AC_CHECK family.  ##
Packit Service 9646c7
## -------------------------------- ##
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_LIB
Packit Service 9646c7
# ------------
Packit Service 9646c7
# Well, I can't imagine a system where `cos' is neither in libc, nor
Packit Service 9646c7
# in libm.  Nor can I imagine a lib more likely to exists than libm.
Packit Service 9646c7
# But there are systems without libm, on which we don't want to have
Packit Service 9646c7
# this test fail, so exit successfully if `cos' is in libc.
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_LIB],
Packit Service 9646c7
[AC_TRY_LINK_FUNC(cos,
Packit Service 9646c7
		  [AC_MSG_ERROR([`cos' is in `libc'], 77)])
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_LIB(m, cos,,
Packit Service 9646c7
	     [AC_MSG_ERROR([cannot find `cos' in `libm'])])
Packit Service 9646c7
Packit Service 9646c7
# No kidding, using variables was broken in 2.50 :(
Packit Service 9646c7
ac_sin=sin
Packit Service 9646c7
AC_CHECK_LIB(m, $ac_sin,,
Packit Service 9646c7
      [AC_MSG_ERROR([cannot find `\$ac_sin' (= `$ac_sin') in `libm'])])
Packit Service 9646c7
Packit Service 9646c7
ac_m=m
Packit Service 9646c7
AC_CHECK_LIB($ac_m, acos,,
Packit Service 9646c7
      [AC_MSG_ERROR([cannot find `acos' in `\$ac_m' (= `$ac_m')])])
Packit Service 9646c7
Packit Service 9646c7
ac_asin=asin
Packit Service 9646c7
AC_CHECK_LIB($ac_m, $ac_asin,,
Packit Service 9646c7
      [AC_MSG_ERROR([cannot find `\$ac_asin' (= `$ac_asin') in `\$ac_m' (= `$ac_m')])])
Packit Service 9646c7
Packit Service 9646c7
# But if the bug is in the caching mechanism, then be sure we
Packit Service 9646c7
# correctly detect failures.
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_LIB(m, cossack,
Packit Service 9646c7
	     [AC_MSG_ERROR([found `cossack' in `libm'])])
Packit Service 9646c7
Packit Service 9646c7
# No kidding, using variables was broken in 2.50 :(
Packit Service 9646c7
ac_sinner=sinner
Packit Service 9646c7
AC_CHECK_LIB(m, $ac_sinner,
Packit Service 9646c7
      [AC_MSG_ERROR([found `\$ac_sinner' (= `$ac_sinner') in `libm'])])
Packit Service 9646c7
Packit Service 9646c7
ac_m=m
Packit Service 9646c7
AC_CHECK_LIB($ac_m, acossack,
Packit Service 9646c7
      [AC_MSG_ERROR([found `acossack' in `\$ac_m' (= `$ac_m')])])
Packit Service 9646c7
Packit Service 9646c7
ac_asinner=asinner
Packit Service 9646c7
AC_CHECK_LIB($ac_m, $ac_asinner,
Packit Service 9646c7
      [AC_MSG_ERROR([found `\$ac_asinner' (= `$ac_asinner') in `\$ac_m' (= `$ac_m')])])
Packit Service 9646c7
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_SEARCH_LIBS
Packit Service 9646c7
# --------------
Packit Service 9646c7
AT_CHECK_MACRO([AC_SEARCH_LIBS],
Packit Service 9646c7
[
Packit Service 9646c7
AC_SEARCH_LIBS(cos, oser m ust,,
Packit Service 9646c7
	     [AC_MSG_ERROR([cannot find `cos'])])
Packit Service 9646c7
Packit Service 9646c7
case "$ac_cv_search_cos" in
Packit Service 9646c7
  -loser|-lust) AC_MSG_ERROR([jeez, $ac_cv_search_cos must be a cool library!]) ;;
Packit Service 9646c7
esac
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_SEARCH_LIBS (none needed)
Packit Service 9646c7
# ----------------------------
Packit Service 9646c7
AT_CHECK_MACRO([AC_SEARCH_LIBS (none needed)],
Packit Service 9646c7
[
Packit Service 9646c7
AC_SEARCH_LIBS(printf, oser c ust,,
Packit Service 9646c7
	     [AC_MSG_ERROR([cannot find `printf'])])
Packit Service 9646c7
Packit Service 9646c7
case "$ac_cv_search_printf" in
Packit Service 9646c7
  -loser|-lust) AC_MSG_ERROR([jeez, $ac_cv_search_printf must be a cool library!]) ;;
Packit Service 9646c7
  -lc) AC_MSG_ERROR([huh, you need to give -lc?])
Packit Service 9646c7
esac
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_DECLS
Packit Service 9646c7
# --------------
Packit Service 9646c7
# Check that it performs the correct actions:
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_DECLS],
Packit Service 9646c7
[[AC_CHECK_DECLS([yes, no, myenum, mystruct, myfunc, mymacro1, mymacro2],,,
Packit Service 9646c7
		 [[int yes = 1;
Packit Service 9646c7
		   enum { myenum };
Packit Service 9646c7
		   struct { int x[20]; } mystruct;
Packit Service 9646c7
		   extern int myfunc();
Packit Service 9646c7
		   #define mymacro1(arg) arg
Packit Service 9646c7
		   #define mymacro2]])
Packit Service 9646c7
  # The difference in space-before-open-paren is intentional.
Packit Service 9646c7
  AC_CHECK_DECLS([basenam (char *), dirnam(char *),
Packit Service 9646c7
		  [moreargs (char, short, int, long, void *, char [], float, double)]],,,
Packit Service 9646c7
		 [[#ifdef __cplusplus
Packit Service 9646c7
		   extern "C++" char *basenam (char *);
Packit Service 9646c7
		   extern "C++" const char *basenam (const char *);
Packit Service 9646c7
		   #else
Packit Service 9646c7
		   extern char *basenam (const char *);
Packit Service 9646c7
		   #endif
Packit Service 9646c7
		   #ifdef __cplusplus
Packit Service 9646c7
		   extern "C" {
Packit Service 9646c7
		   #endif
Packit Service 9646c7
		   extern int moreargs (char, short, int, long, void *,
Packit Service 9646c7
					char [], float, double);
Packit Service 9646c7
		   #ifdef __cplusplus
Packit Service 9646c7
		   }
Packit Service 9646c7
		   #endif
Packit Service 9646c7
		   ]])
Packit Service 9646c7
  AC_CHECK_DECL([declared (char *)],, [AS_EXIT([1])],
Packit Service 9646c7
		[[#ifdef __cplusplus
Packit Service 9646c7
		  extern "C++" char *declared (char *);
Packit Service 9646c7
		  extern "C++" const char *declared (const char *);
Packit Service 9646c7
		  #else
Packit Service 9646c7
		  extern char *declared (const char *);
Packit Service 9646c7
		  #endif
Packit Service 9646c7
		]])
Packit Service 9646c7
  AC_CHECK_DECL([undeclared (char *)], [AS_EXIT([1])],, [[]])
Packit Service 9646c7
]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[#define HAVE_DECL_BASENAM 1
Packit Service 9646c7
#define HAVE_DECL_DIRNAM 0
Packit Service 9646c7
#define HAVE_DECL_MOREARGS 1
Packit Service 9646c7
#define HAVE_DECL_MYENUM 1
Packit Service 9646c7
#define HAVE_DECL_MYFUNC 1
Packit Service 9646c7
#define HAVE_DECL_MYMACRO1 1
Packit Service 9646c7
#define HAVE_DECL_MYMACRO2 1
Packit Service 9646c7
#define HAVE_DECL_MYSTRUCT 1
Packit Service 9646c7
#define HAVE_DECL_NO 0
Packit Service 9646c7
#define HAVE_DECL_YES 1
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_FUNCS
Packit Service 9646c7
# --------------
Packit Service 9646c7
# Check that it performs the correct actions:
Packit Service 9646c7
# Must define HAVE_PRINTF, but not HAVE_AUTOCONF_FTNIRP
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_FUNCS],
Packit Service 9646c7
[AC_CHECK_FUNCS(printf autoconf_ftnirp)],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[/* #undef HAVE_AUTOCONF_FTNIRP */
Packit Service 9646c7
#define HAVE_PRINTF 1
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_REPLACE_FUNCS
Packit Service 9646c7
# ----------------
Packit Service 9646c7
# Check that it performs the correct actions: autoconf_ftnirp.c must
Packit Service 9646c7
# be compiled, and must define HAVE_PRINTF, but not HAVE_AUTOCONF_FTNIRP
Packit Service 9646c7
# FIXME: Maybe check the traces?
Packit Service 9646c7
AT_SETUP([AC_REPLACE_FUNCS])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([config.in],
Packit Service 9646c7
[@LIBOBJS@
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CONFIGURE_AC(
Packit Service 9646c7
[AC_CONFIG_FILES([config.libobjs:config.in])
Packit Service 9646c7
AC_REPLACE_FUNCS([printf \
Packit Service 9646c7
autoconf_ftnirp])
Packit Service 9646c7
funcs='fprintf fopen autoconf_ftnirpf'
Packit Service 9646c7
AH_TEMPLATE([HAVE_FOPEN], [])
Packit Service 9646c7
AH_TEMPLATE([HAVE_FPRINTF], [])
Packit Service 9646c7
AH_TEMPLATE([HAVE_AUTOCONF_FTNIRPF], [])
Packit Service 9646c7
AC_REPLACE_FUNCS([\
Packit Service 9646c7
$funcs])
Packit Service 9646c7
AS_UNSET([funcs])])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF([-W obsolete])
Packit Service 9646c7
AT_CHECK_AUTOHEADER
Packit Service 9646c7
AT_CHECK_CONFIGURE
Packit Service 9646c7
AT_CHECK_ENV
Packit Service 9646c7
AT_CHECK_DEFINES(
Packit Service 9646c7
[/* #undef HAVE_AUTOCONF_FTNIRP */
Packit Service 9646c7
/* #undef HAVE_AUTOCONF_FTNIRPF */
Packit Service 9646c7
#define HAVE_FOPEN 1
Packit Service 9646c7
#define HAVE_FPRINTF 1
Packit Service 9646c7
#define HAVE_PRINTF 1
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK([sed 's/  */ /g;s/^ //;s/ $//' config.libobjs], [],
Packit Service 9646c7
	 [${LIBOBJDIR}autoconf_ftnirp$U.o ${LIBOBJDIR}autoconf_ftnirpf$U.o
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_HEADERS
Packit Service 9646c7
# ----------------
Packit Service 9646c7
# Check that it performs the correct actions:
Packit Service 9646c7
# Must define HAVE_STDIO_H, but not HAVE_AUTOCONF_IO_H.
Packit Service 9646c7
AT_SETUP([AC_CHECK_HEADERS])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([autoconf_io.h],
Packit Service 9646c7
[blah blah
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CONFIGURE_AC([AC_CHECK_HEADERS(stdio.h autoconf_io.h)])
Packit Service 9646c7
AT_CHECK_AUTOCONF([-W obsolete])
Packit Service 9646c7
AT_CHECK_AUTOHEADER
Packit Service 9646c7
AT_CHECK_CONFIGURE([CPPFLAGS=-I.], [0], [ignore],
Packit Service 9646c7
[configure: WARNING: autoconf_io.h: present but cannot be compiled
Packit Service 9646c7
configure: WARNING: autoconf_io.h:     check for missing prerequisite headers?
Packit Service 9646c7
configure: WARNING: autoconf_io.h: see the Autoconf documentation
Packit Service 9646c7
configure: WARNING: autoconf_io.h:     section "Present But Cannot Be Compiled"
Packit Service 9646c7
configure: WARNING: autoconf_io.h: proceeding with the compiler's result
Packit Service 9646c7
])
Packit Service 9646c7
AT_CHECK_ENV
Packit Service 9646c7
AT_CHECK_DEFINES(
Packit Service 9646c7
[/* #undef HAVE_AUTOCONF_IO_H */
Packit Service 9646c7
#define HAVE_STDIO_H 1
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_HEADERS_OLD
Packit Service 9646c7
# --------------------
Packit Service 9646c7
# Check that it performs the correct actions:
Packit Service 9646c7
# Must not check prerequisites, hence define header2.h
Packit Service 9646c7
AT_SETUP([AC_CHECK_HEADERS (preprocessor test)])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([header1.h],
Packit Service 9646c7
[typedef int foo;
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([header2.h],
Packit Service 9646c7
[typedef foo bar;
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CONFIGURE_AC([AC_CHECK_HEADERS(header2.h, [], [], -)])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF([-W obsolete])
Packit Service 9646c7
AT_CHECK_AUTOHEADER
Packit Service 9646c7
AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
Packit Service 9646c7
AT_CHECK_ENV
Packit Service 9646c7
AT_CHECK_DEFINES(
Packit Service 9646c7
[#define HAVE_HEADER2_H 1
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_HEADERS_NEW
Packit Service 9646c7
# --------------------
Packit Service 9646c7
# Check that it performs the correct actions:
Packit Service 9646c7
# Must check prerequisites, hence define header2.h but not header3.h
Packit Service 9646c7
AT_SETUP([AC_CHECK_HEADERS (compiler test)])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([header1.h],
Packit Service 9646c7
[typedef int foo;
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([header2.h],
Packit Service 9646c7
[typedef foo bar;
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([header3.h],
Packit Service 9646c7
[typedef bar wow;
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CONFIGURE_AC(
Packit Service 9646c7
[AC_CHECK_HEADERS(header2.h header3.h, [], [], [[@%:@include "header1.h"]])])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF([-W obsolete])
Packit Service 9646c7
AT_CHECK_AUTOHEADER
Packit Service 9646c7
AT_CHECK_CONFIGURE([CPPFLAGS=-I.])
Packit Service 9646c7
AT_CHECK_ENV
Packit Service 9646c7
AT_CHECK_DEFINES(
Packit Service 9646c7
[#define HAVE_HEADER2_H 1
Packit Service 9646c7
/* #undef HAVE_HEADER3_H */
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_MEMBER
Packit Service 9646c7
# ---------------
Packit Service 9646c7
# Check that it performs the correct actions.
Packit Service 9646c7
# Must define HAVE_STRUCT_YES_S_YES, but not HAVE_STRUCT_YES_S_NO.
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_MEMBER],
Packit Service 9646c7
[[AC_CHECK_MEMBER([struct yes_s.yes],
Packit Service 9646c7
		  [AC_DEFINE([HAVE_STRUCT_YES_S_YES], [1],
Packit Service 9646c7
			     [Define to 1 if `yes' is a member of `struct yes_s'.])],,
Packit Service 9646c7
		   [struct sub { int x; };
Packit Service 9646c7
		    struct yes_s { int yes; struct sub substruct; };])
Packit Service 9646c7
  AC_CHECK_MEMBER([struct yes_s.no],
Packit Service 9646c7
		  [AC_DEFINE([HAVE_STRUCT_YES_S_NO], [1],
Packit Service 9646c7
			     [Define to 1 if `no' is a member of `struct yes_s'.])],,
Packit Service 9646c7
		   [struct sub { int x; };
Packit Service 9646c7
		    struct yes_s { int yes; struct sub substruct; };])
Packit Service 9646c7
  AC_CHECK_MEMBER([struct yes_s.substruct],
Packit Service 9646c7
		  [AC_DEFINE([HAVE_STRUCT_YES_S_SUBSTRUCT], [1],
Packit Service 9646c7
			     [Define to 1 if `substruct' is a member of `struct yes_s'.])],,
Packit Service 9646c7
		   [struct sub { int x; };
Packit Service 9646c7
		    struct yes_s { int yes; struct sub substruct; };])]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[/* #undef HAVE_STRUCT_YES_S_NO */
Packit Service 9646c7
#define HAVE_STRUCT_YES_S_SUBSTRUCT 1
Packit Service 9646c7
#define HAVE_STRUCT_YES_S_YES 1
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_MEMBERS
Packit Service 9646c7
# ----------------
Packit Service 9646c7
# Check that it performs the correct actions.
Packit Service 9646c7
# Must define HAVE_STRUCT_YES_S_YES, but not HAVE_STRUCT_YES_S_NO.
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_MEMBERS],
Packit Service 9646c7
[[AC_CHECK_MEMBERS([struct yes_s.yes, struct yes_s.no, struct yes_s.substruct],,,
Packit Service 9646c7
		   [struct sub { int x; };
Packit Service 9646c7
		    struct yes_s { int yes; struct sub substruct; };])]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[/* #undef HAVE_STRUCT_YES_S_NO */
Packit Service 9646c7
#define HAVE_STRUCT_YES_S_SUBSTRUCT 1
Packit Service 9646c7
#define HAVE_STRUCT_YES_S_YES 1
Packit Service 9646c7
])
Packit Service 9646c7
AT_CHECK([grep 'yes.*member of.*yes_s' config.h], [], [ignore])
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_ALIGNOF
Packit Service 9646c7
# ----------------
Packit Service 9646c7
AT_CHECK_MACRO_CROSS([AC_CHECK_ALIGNOF],
Packit Service 9646c7
[[AC_CHECK_ALIGNOF(char)
Packit Service 9646c7
AC_CHECK_ALIGNOF(charchar,
Packit Service 9646c7
[[#include <stddef.h>
Packit Service 9646c7
#include <stdio.h>
Packit Service 9646c7
typedef char charchar[2];]])
Packit Service 9646c7
AC_CHECK_ALIGNOF(charcharchar)
Packit Service 9646c7
]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[#define ALIGNOF_CHAR 1
Packit Service 9646c7
#define ALIGNOF_CHARCHAR 1
Packit Service 9646c7
#define ALIGNOF_CHARCHARCHAR 0
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_ALIGNOF struct
Packit Service 9646c7
# -----------------------
Packit Service 9646c7
AT_CHECK_MACRO_CROSS([AC_CHECK_ALIGNOF struct],
Packit Service 9646c7
[[AC_CHECK_ALIGNOF([struct { char c; }])
Packit Service 9646c7
AC_CHECK_ALIGNOF([struct nosuchstruct])
Packit Service 9646c7
]],
Packit Service 9646c7
[AT_CHECK([[grep "#define ALIGNOF_STRUCT___CHAR_C___ [1-9]" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
AT_CHECK([[grep "#define ALIGNOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_SIZEOF
Packit Service 9646c7
# ---------------
Packit Service 9646c7
AT_CHECK_MACRO_CROSS([AC_CHECK_SIZEOF],
Packit Service 9646c7
[[AC_CHECK_SIZEOF(char)
Packit Service 9646c7
AC_CHECK_SIZEOF(charchar,,
Packit Service 9646c7
[[#include <stdio.h>
Packit Service 9646c7
typedef char charchar[2];]])
Packit Service 9646c7
AC_CHECK_SIZEOF(charcharchar)
Packit Service 9646c7
]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[#define SIZEOF_CHAR 1
Packit Service 9646c7
#define SIZEOF_CHARCHAR 2
Packit Service 9646c7
#define SIZEOF_CHARCHARCHAR 0
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_SIZEOF struct
Packit Service 9646c7
# ----------------------
Packit Service 9646c7
AT_CHECK_MACRO_CROSS([AC_CHECK_SIZEOF struct],
Packit Service 9646c7
[[AC_C_CONST
Packit Service 9646c7
AC_CHECK_SIZEOF([struct x], [], [struct x { char c; int x; };])
Packit Service 9646c7
AC_CHECK_SIZEOF([const struct x], [], [struct x { const char *p; int x; };])
Packit Service 9646c7
AC_CHECK_SIZEOF([struct nosuchstruct])
Packit Service 9646c7
# Taken from autoconf.texi:Generic Compiler Characteristics.
Packit Service 9646c7
AC_CHECK_SIZEOF([int *])
Packit Service 9646c7
]],
Packit Service 9646c7
[AT_CHECK([[grep "#define SIZEOF_STRUCT_X [1-9]" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
AT_CHECK([[grep "#define SIZEOF_CONST_STRUCT_X [1-9]" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
AT_CHECK([[grep "#define SIZEOF_STRUCT_NOSUCHSTRUCT 0" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
AT_CHECK([[grep "#define SIZEOF_INT_P [1-9]" config.h]],
Packit Service 9646c7
	 0, ignore)
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_TYPES
Packit Service 9646c7
# --------------
Packit Service 9646c7
# Check that it performs the correct actions.
Packit Service 9646c7
# Must define HAVE_STRUCT_YES_S, HAVE_INT, but not HAVE_STRUCT_NO_S.
Packit Service 9646c7
# `int' and `struct yes_s' are both checked to test both the compiler
Packit Service 9646c7
# builtin types, and defined types.
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_TYPES],
Packit Service 9646c7
[[AC_CHECK_TYPES([int, struct yes_s, struct no_s],,,
Packit Service 9646c7
		 [struct yes_s { int yes ;} ;])]],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[#define HAVE_INT 1
Packit Service 9646c7
/* #undef HAVE_STRUCT_NO_S */
Packit Service 9646c7
#define HAVE_STRUCT_YES_S 1
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_TYPES
Packit Service 9646c7
# --------------
Packit Service 9646c7
# Check that we properly dispatch properly to the old implementation
Packit Service 9646c7
# or to the new one.
Packit Service 9646c7
AT_SETUP([AC_CHECK_TYPES: backward compatibility])
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([configure.ac],
Packit Service 9646c7
[[AC_INIT
Packit Service 9646c7
define([_AC_CHECK_TYPE_NEW], [NEW])
Packit Service 9646c7
define([_AC_CHECK_TYPE_OLD], [OLD])
Packit Service 9646c7
#(cut-from-here
Packit Service 9646c7
AC_CHECK_TYPE(ptrdiff_t)
Packit Service 9646c7
AC_CHECK_TYPE(ptrdiff_t, int)
Packit Service 9646c7
AC_CHECK_TYPE(quad, long long int)
Packit Service 9646c7
AC_CHECK_TYPE(table_42, [int[42]])
Packit Service 9646c7
# Nice machine!
Packit Service 9646c7
AC_CHECK_TYPE(uint8_t, uint65536_t)
Packit Service 9646c7
AC_CHECK_TYPE(a,b,c,d)
Packit Service 9646c7
#to-here)
Packit Service 9646c7
AC_OUTPUT
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF
Packit Service 9646c7
AT_CHECK([[sed -e '/^#(cut-from-here/,/^#to-here)/!d' -e '/^#/d' configure]],
Packit Service 9646c7
	 0,
Packit Service 9646c7
	 [NEW
Packit Service 9646c7
OLD
Packit Service 9646c7
OLD
Packit Service 9646c7
OLD
Packit Service 9646c7
OLD
Packit Service 9646c7
NEW
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AC_CHECK_FILES
Packit Service 9646c7
# --------------
Packit Service 9646c7
# FIXME: To really test HAVE_AC_EXISTS2 and HAVE_AC_MISSING2 we need to
Packit Service 9646c7
# open AH_TEMPLATE to `configure.ac', which is not yet the case.
Packit Service 9646c7
AT_CHECK_MACRO([AC_CHECK_FILES],
Packit Service 9646c7
[touch at-exists1 at-exists2
Packit Service 9646c7
ac_exists2=at-exists2
Packit Service 9646c7
ac_missing2=at-missing2
Packit Service 9646c7
AC_CHECK_FILES(at-exists1 at-missing1 $ac_exists2 $ac_missing2)
Packit Service 9646c7
rm at-exists1 at-exists2],
Packit Service 9646c7
[AT_CHECK_DEFINES(
Packit Service 9646c7
[#define HAVE_AT_EXISTS1 1
Packit Service 9646c7
/* #undef HAVE_AT_MISSING1 */
Packit Service 9646c7
])])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
## ------------------------------ ##
Packit Service 9646c7
## AC_CHECK_PROG & AC_PATH_PROG.  ##
Packit Service 9646c7
## ------------------------------ ##
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# AT_CHECK_PROGS_PREPARE
Packit Service 9646c7
# ----------------------
Packit Service 9646c7
# Create a sub directory `path' with 6 subdirs which all 7 contain
Packit Service 9646c7
# an executable `tool'. `6' contains a `better' tool.
Packit Service 9646c7
m4_define([AT_CHECK_PROGS_PREPARE],
Packit Service 9646c7
[mkdir path
Packit Service 9646c7
Packit Service 9646c7
cat >path/tool <<\EOF
Packit Service 9646c7
#! /bin/sh
Packit Service 9646c7
exit 0
Packit Service 9646c7
EOF
Packit Service 9646c7
chmod +x path/tool
Packit Service 9646c7
Packit Service 9646c7
for i in 1 2 3 4 5 6
Packit Service 9646c7
do
Packit Service 9646c7
  mkdir path/$i
Packit Service 9646c7
  cp path/tool path/$i
Packit Service 9646c7
done
Packit Service 9646c7
cp path/tool path/6/better])
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# -------------------------------- #
Packit Service 9646c7
# AC_CHECK_PROG & AC_CHECK_PROGS.  #
Packit Service 9646c7
# -------------------------------- #
Packit Service 9646c7
Packit Service 9646c7
AT_SETUP([AC_CHECK_PROG & AC_CHECK_PROGS])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_PROGS_PREPARE
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([configure.ac],
Packit Service 9646c7
[[AC_INIT
Packit Service 9646c7
pwd=`pwd`
Packit Service 9646c7
p="1${PATH_SEPARATOR}2${PATH_SEPARATOR}3${PATH_SEPARATOR}4${PATH_SEPARATOR}5${PATH_SEPARATOR}6"
Packit Service 9646c7
path=`echo $p | sed -e 's,\([[0-9]]\),'"$pwd"'/path/\1,g'`
Packit Service 9646c7
fail=false
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_PROG(TOOL1, tool, found, not-found, $path)
Packit Service 9646c7
test "$TOOL1" = found || fail=:
Packit Service 9646c7
Packit Service 9646c7
# Yes, the semantics of this macro is weird.
Packit Service 9646c7
AC_CHECK_PROG(TOOL2, tool,, not-found, $path)
Packit Service 9646c7
test "$TOOL2" = not-found || fail=:
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_PROG(TOOL3, tool, tool, not-found, $path, $pwd/path/1/tool)
Packit Service 9646c7
test "$TOOL3" = "$pwd/path/2/tool" || fail=:
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_PROG(TOOL4, better, better, not-found, $path, $pwd/path/1/tool)
Packit Service 9646c7
test "$TOOL4" = better || fail=:
Packit Service 9646c7
Packit Service 9646c7
# When a tool is not found, and no value is given for not-found,
Packit Service 9646c7
# the variable is left empty.
Packit Service 9646c7
AC_CHECK_PROGS(TOOL5, missing,, $path)
Packit Service 9646c7
test -z "$TOOL5" || fail=:
Packit Service 9646c7
Packit Service 9646c7
AC_CHECK_PROGS(TOOL6, missing tool better,, $path)
Packit Service 9646c7
test "$TOOL6" = tool || fail=:
Packit Service 9646c7
Packit Service 9646c7
# No AC-OUTPUT, we don't need config.status.
Packit Service 9646c7
$fail &&
Packit Service 9646c7
  AC_MSG_ERROR([[CHECK_PROG failed]])
Packit Service 9646c7
AS_EXIT(0)
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF
Packit Service 9646c7
AT_CHECK_CONFIGURE
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
## ---------------- ##
Packit Service 9646c7
## AC_C_BIGENDIAN.  ##
Packit Service 9646c7
## ---------------- ##
Packit Service 9646c7
Packit Service 9646c7
AT_SETUP([AC_C_BIGENDIAN])
Packit Service 9646c7
AT_KEYWORDS([cross])
Packit Service 9646c7
Packit Service 9646c7
# Make sure that AC_C_BIGENDIAN behave the same whether we are
Packit Service 9646c7
# cross-compiling or not.
Packit Service 9646c7
Packit Service 9646c7
_AT_CHECK_AC_MACRO(
Packit Service 9646c7
  [[AC_C_BIGENDIAN(
Packit Service 9646c7
      [ac_endian=big],
Packit Service 9646c7
      [ac_endian=little],
Packit Service 9646c7
      [ac_endian=unknown],
Packit Service 9646c7
      [ac_endian=universal])
Packit Service 9646c7
   echo $ac_endian > at-endian
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
rm -f config.hin  # So that next run of autoheader is quiet.
Packit Service 9646c7
_AT_CHECK_AC_MACRO(
Packit Service 9646c7
  [[# Force cross compiling.
Packit Service 9646c7
   cross_compiling=yes
Packit Service 9646c7
   ac_tool_warned=yes
Packit Service 9646c7
   AC_C_BIGENDIAN(
Packit Service 9646c7
     [ac_endian=big],
Packit Service 9646c7
     [ac_endian=little],
Packit Service 9646c7
     [ac_endian=unknown],
Packit Service 9646c7
     [ac_endian=universal])
Packit Service 9646c7
   ac_prevendian=`cat at-endian`
Packit Service 9646c7
   # Check that we have found the same result as in the previous run
Packit Service 9646c7
   # or unknown (because the cross-compiling check is allowed to fail;
Packit Service 9646c7
   # although it might be interesting to suppress this comparison, just
Packit Service 9646c7
   # to know on which system it fails if it ever does).
Packit Service 9646c7
   if test $ac_endian != $ac_prevendian && test $ac_endian != unknown; then
Packit Service 9646c7
     AC_MSG_ERROR([unexpected endianness: first run found '$ac_prevendian' but second run found '$ac_endian'])
Packit Service 9646c7
   fi
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
# Make sure AC_C_BIGENDIAN with no argument will create a config.h template
Packit Service 9646c7
# containing "WORDS_BIGENDIAN".
Packit Service 9646c7
AT_CONFIGURE_AC([[AC_C_BIGENDIAN]])
Packit Service 9646c7
# --force is necessary, the computer might be too fast.
Packit Service 9646c7
AT_CHECK_AUTOHEADER([--force])
Packit Service 9646c7
AT_CHECK([grep WORDS_BIGENDIAN config.hin], [], [ignore])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# ------------------------------ #
Packit Service 9646c7
# AC_PATH_PROG & AC_PATH_PROGS.  #
Packit Service 9646c7
# ------------------------------ #
Packit Service 9646c7
Packit Service 9646c7
AT_SETUP([AC_PATH_PROG & AC_PATH_PROGS])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_PROGS_PREPARE
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([configure.ac],
Packit Service 9646c7
[[AC_INIT
Packit Service 9646c7
pwd=`pwd`
Packit Service 9646c7
p="1${PATH_SEPARATOR}2${PATH_SEPARATOR}3${PATH_SEPARATOR}4${PATH_SEPARATOR}5${PATH_SEPARATOR}6"
Packit Service 9646c7
path=`echo $p | sed -e 's,\([[0-9]]\),'"$pwd"'/path/\1,g'`
Packit Service 9646c7
fail=false
Packit Service 9646c7
Packit Service 9646c7
AC_PATH_PROG(TOOL1, tool, not-found, $path)
Packit Service 9646c7
test "$TOOL1" = "$pwd/path/1/tool" || fail=:
Packit Service 9646c7
Packit Service 9646c7
AC_PATH_PROG(TOOL2, better, not-found, $path)
Packit Service 9646c7
test "$TOOL2" = "$pwd/path/6/better" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# When a tool is not found, and no value is given for not-found,
Packit Service 9646c7
# the variable is left empty.
Packit Service 9646c7
AC_PATH_PROGS(TOOL3, missing,, $path)
Packit Service 9646c7
test -z "$TOOL3" || fail=:
Packit Service 9646c7
Packit Service 9646c7
AC_PATH_PROGS(TOOL4, missing tool better,, $path)
Packit Service 9646c7
test "$TOOL4" = "$pwd/path/1/tool" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# No AC-OUTPUT, we don't need config.status.
Packit Service 9646c7
$fail &&
Packit Service 9646c7
  AC_MSG_ERROR([[PATH_PROG failed]])
Packit Service 9646c7
AS_EXIT(0)
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF
Packit Service 9646c7
AT_CHECK_CONFIGURE
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
# ----------------------------- #
Packit Service 9646c7
# AC_PATH_PROGS_FEATURE_CHECK.  #
Packit Service 9646c7
# ----------------------------- #
Packit Service 9646c7
Packit Service 9646c7
AT_SETUP([AC_PATH_PROGS_FEATURE_CHECK])
Packit Service 9646c7
Packit Service 9646c7
# This test doesn't work if `pwd` contains white space
Packit Service 9646c7
case `pwd` in
Packit Service 9646c7
  *\ * | *\	*) AT_CHECK([exit 77]) ;;
Packit Service 9646c7
esac
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_PROGS_PREPARE
Packit Service 9646c7
Packit Service 9646c7
AT_DATA([configure.ac],
Packit Service 9646c7
[[AC_INIT
Packit Service 9646c7
pwd=`pwd`
Packit Service 9646c7
p="1${PATH_SEPARATOR}2${PATH_SEPARATOR}3${PATH_SEPARATOR}4${PATH_SEPARATOR}5${PATH_SEPARATOR}6"
Packit Service 9646c7
path=`echo $p | sed -e 's,\([[0-9]]\),'"$pwd"'/path/\1,g'`
Packit Service 9646c7
fail=false
Packit Service 9646c7
Packit Service 9646c7
# Find first candidate and stop search
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL1, [tool better],
Packit Service 9646c7
  [$ac_path_TOOL1 && ac_cv_path_TOOL1=$ac_path_TOOL1 ac_path_TOOL1_found=:],
Packit Service 9646c7
  fail=:, $path)
Packit Service 9646c7
test -z "$TOOL1" || fail=:
Packit Service 9646c7
test "$ac_cv_path_TOOL1" = "$pwd/path/1/tool" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# Keep searching each candidate
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL2, [tool better],
Packit Service 9646c7
  [$ac_path_TOOL2 && ac_cv_path_TOOL2=$ac_path_TOOL2],
Packit Service 9646c7
  fail=:, $path)
Packit Service 9646c7
test "$ac_cv_path_TOOL2" = "$pwd/path/6/better" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# Only accept better candidate
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL3, [tool better],
Packit Service 9646c7
  [case "$ac_path_TOOL3" in #(
Packit Service 9646c7
    *better) ac_cv_path_TOOL3=$ac_path_TOOL3;;
Packit Service 9646c7
  esac],
Packit Service 9646c7
  fail=:, $path)
Packit Service 9646c7
test "$ac_cv_path_TOOL3" = "$pwd/path/6/better" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# When a tool is not found, and no action is given for not-found,
Packit Service 9646c7
# the variable is left empty.
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL4, missing,
Packit Service 9646c7
  [ac_cv_path_TOOL4=$ac_path_TOOL4], [], $path)
Packit Service 9646c7
test -z "$ac_cv_path_TOOL4" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# Test action when tool is not found
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL5, missing, [],
Packit Service 9646c7
  [ac_cv_path_TOOL5='not found'], $path)
Packit Service 9646c7
test "$ac_cv_path_TOOL5" = "not found" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# Test that pre-set tool bypasses feature test
Packit Service 9646c7
TOOL6=$pwd/path/6/better
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL6, tool, fail=:, fail=:, $path)
Packit Service 9646c7
test "$ac_cv_path_TOOL6" = "$pwd/path/6/better" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# A blank pre-set does not bypass feature test
Packit Service 9646c7
TOOL7=
Packit Service 9646c7
AC_PATH_PROGS_FEATURE_CHECK(TOOL7, [tool better],
Packit Service 9646c7
  [$ac_path_TOOL7 && ac_cv_path_TOOL7=$ac_path_TOOL7 ac_path_TOOL7_found=:],
Packit Service 9646c7
  fail=:, $path)
Packit Service 9646c7
test -z "$TOOL7" || fail=:
Packit Service 9646c7
test "$ac_cv_path_TOOL7" = "$pwd/path/1/tool" || fail=:
Packit Service 9646c7
Packit Service 9646c7
# No AC-OUTPUT, we don't need config.status.
Packit Service 9646c7
$fail &&
Packit Service 9646c7
  AC_MSG_ERROR([[PATH_PROG failed]])
Packit Service 9646c7
AS_EXIT(0)
Packit Service 9646c7
]])
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_AUTOCONF
Packit Service 9646c7
AT_CHECK_CONFIGURE
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
## -------------- ##
Packit Service 9646c7
## AC_PATH_XTRA.  ##
Packit Service 9646c7
## -------------- ##
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
AT_SETUP([AC_PATH_XTRA])
Packit Service 9646c7
Packit Service 9646c7
_AT_CHECK_AC_MACRO([AC_PATH_XTRA])
Packit Service 9646c7
Packit Service 9646c7
# Check X_DISPLAY_MISSING.
Packit Service 9646c7
AT_CHECK_CONFIGURE([--without-x])
Packit Service 9646c7
AT_CHECK_DEFINES(
Packit Service 9646c7
[#define X_DISPLAY_MISSING 1
Packit Service 9646c7
])
Packit Service 9646c7
Packit Service 9646c7
AT_CLEANUP
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
## ------------------------------- ##
Packit Service 9646c7
## Obsolete non-updatable macros.  ##
Packit Service 9646c7
## ------------------------------- ##
Packit Service 9646c7
Packit Service 9646c7
Packit Service 9646c7
AT_CHECK_MACRO([AC_SYS_RESTARTABLE_SYSCALLS], , ,[-W no-obsolete])
Packit Service 9646c7
AT_CHECK_MACRO([AC_FUNC_SETVBUF_REVERSED], , ,[-W no-obsolete])
Packit Service 9646c7
AT_CHECK_MACRO([AC_FUNC_WAIT3], , ,[-W no-obsolete])