mirror of
git://git.sv.gnu.org/autoconf
synced 2025-03-31 15:00:26 +08:00
AC_CHECK_SIZEOF: Fix a bug, use standard default headers, and
test. * acgeneral.m4 (AC_CHECK_SIZEOF): Don't over quote $1, some [] were left in the C code, and had the macro fail. Use AC_INCLUDES_DEFAULT. * doc/autoconf.texi: Mention default includes. Explain stdio.h must always be given. * tests/atspecific.m4 (TEST_MACRO): Updated the list of exceptions. (AT_CHECK_DEFINES): New macro, to check the content of config.h. * tests/semantics.m4: All the tests are updated to use AT_CHECK_DEFINES. Test AC_CHECK_SIZEOF, AC_CHECK_HEADERS, and AC_CHECK_FUNCS.
This commit is contained in:
parent
fb4e32afa3
commit
b519547b61
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
||||
2000-02-07 Akim Demaille <akim@epita.fr>
|
||||
|
||||
AC_CHECK_SIZEOF: Fix a bug, use standard default headers, and
|
||||
test.
|
||||
|
||||
* acgeneral.m4 (AC_CHECK_SIZEOF): Don't over quote $1, some []
|
||||
were left in the C code, and had the macro fail.
|
||||
Use AC_INCLUDES_DEFAULT.
|
||||
* doc/autoconf.texi: Mention default includes. Explain stdio.h
|
||||
must always be given.
|
||||
|
||||
* tests/atspecific.m4 (TEST_MACRO): Updated the list of
|
||||
exceptions.
|
||||
(AT_CHECK_DEFINES): New macro, to check the content of config.h.
|
||||
* tests/semantics.m4: All the tests are updated to use
|
||||
AT_CHECK_DEFINES.
|
||||
Test AC_CHECK_SIZEOF, AC_CHECK_HEADERS, and AC_CHECK_FUNCS.
|
||||
|
||||
2000-02-07 Akim Demaille <akim@epita.fr>
|
||||
|
||||
Give explicit diagnostics when an input file (for config headers;
|
||||
|
13
acgeneral.m4
13
acgeneral.m4
@ -3043,15 +3043,14 @@ dnl shouldn't we use the default INCLUDES?
|
||||
AC_DEFUN(AC_CHECK_SIZEOF,
|
||||
[AC_VAR_PUSHDEF([ac_Sizeof], [ac_cv_sizeof_$1])dnl
|
||||
AC_CACHE_CHECK([size of $1], ac_Sizeof,
|
||||
[AC_TRY_RUN([#include <stdio.h>
|
||||
[$3]
|
||||
int
|
||||
[AC_TRY_RUN(AC_INCLUDES_DEFAULT([$3])
|
||||
[int
|
||||
main ()
|
||||
{
|
||||
FILE *f = fopen ("conftestval", "w");
|
||||
if (!f)
|
||||
exit (1);
|
||||
fprintf (f, "%d\n", sizeof ([$1]));
|
||||
exit (1);
|
||||
fprintf (f, "%d\n", sizeof ($1));
|
||||
exit (0);
|
||||
}],
|
||||
AC_VAR_SET(ac_Sizeof, `cat conftestval`),
|
||||
@ -3062,7 +3061,9 @@ AC_VAR_POPDEF([ac_Sizeof])dnl
|
||||
])
|
||||
|
||||
|
||||
dnl ### Checking for types
|
||||
## ------------------ ##
|
||||
## Checking for types ##
|
||||
## ------------------ ##
|
||||
|
||||
|
||||
# AC_CHECK_TYPE_INTERNAL(TYPE,
|
||||
|
@ -3028,15 +3028,20 @@ size_t my_strlen PARAMS ((const char *));
|
||||
|
||||
@c FIXME: What the heck is this macro doing here? Move it out of
|
||||
@c the way, in its proper section!!!
|
||||
@c FIXME: Explain once for all how the CPP names are built, not everywhere.
|
||||
@defmac AC_CHECK_SIZEOF (@var{type}, @ovar{cross-size}, @ovar{includes})
|
||||
@maindex CHECK_SIZEOF
|
||||
Define @code{SIZEOF_@var{uctype}} to be the size in bytes of the C (or
|
||||
C++) builtin type @var{type}, e.g. @samp{int} or @samp{char *}. If
|
||||
@samp{type} is unknown to the compiler, it gets a size of 0. @var{uctype}
|
||||
is @var{type}, with lowercase converted to uppercase, spaces changed to
|
||||
underscores, and asterisks changed to @samp{P}. If cross-compiling, the
|
||||
value @var{cross-size} is used if given, otherwise @code{configure}
|
||||
exits with an error message.
|
||||
C++) type @var{type} (e.g. @samp{int}, @samp{char *} etc.). If
|
||||
@samp{type} is unknown, it gets a size of 0. If no @var{includes} are
|
||||
provided, the default headers are used (FIXME: point to the right
|
||||
node). If you provide default header, make sure to include
|
||||
@file{stdio.h} which is required for this macro to run.
|
||||
|
||||
@var{uctype} is @var{type}, with lowercase converted to uppercase,
|
||||
spaces changed to underscores, and asterisks changed to @samp{P}. If
|
||||
cross-compiling, the value @var{cross-size} is used if given, otherwise
|
||||
@code{configure} exits with an error message.
|
||||
|
||||
For example, the call
|
||||
@example
|
||||
|
@ -3028,15 +3028,20 @@ size_t my_strlen PARAMS ((const char *));
|
||||
|
||||
@c FIXME: What the heck is this macro doing here? Move it out of
|
||||
@c the way, in its proper section!!!
|
||||
@c FIXME: Explain once for all how the CPP names are built, not everywhere.
|
||||
@defmac AC_CHECK_SIZEOF (@var{type}, @ovar{cross-size}, @ovar{includes})
|
||||
@maindex CHECK_SIZEOF
|
||||
Define @code{SIZEOF_@var{uctype}} to be the size in bytes of the C (or
|
||||
C++) builtin type @var{type}, e.g. @samp{int} or @samp{char *}. If
|
||||
@samp{type} is unknown to the compiler, it gets a size of 0. @var{uctype}
|
||||
is @var{type}, with lowercase converted to uppercase, spaces changed to
|
||||
underscores, and asterisks changed to @samp{P}. If cross-compiling, the
|
||||
value @var{cross-size} is used if given, otherwise @code{configure}
|
||||
exits with an error message.
|
||||
C++) type @var{type} (e.g. @samp{int}, @samp{char *} etc.). If
|
||||
@samp{type} is unknown, it gets a size of 0. If no @var{includes} are
|
||||
provided, the default headers are used (FIXME: point to the right
|
||||
node). If you provide default header, make sure to include
|
||||
@file{stdio.h} which is required for this macro to run.
|
||||
|
||||
@var{uctype} is @var{type}, with lowercase converted to uppercase,
|
||||
spaces changed to underscores, and asterisks changed to @samp{P}. If
|
||||
cross-compiling, the value @var{cross-size} is used if given, otherwise
|
||||
@code{configure} exits with an error message.
|
||||
|
||||
For example, the call
|
||||
@example
|
||||
|
@ -3043,15 +3043,14 @@ dnl shouldn't we use the default INCLUDES?
|
||||
AC_DEFUN(AC_CHECK_SIZEOF,
|
||||
[AC_VAR_PUSHDEF([ac_Sizeof], [ac_cv_sizeof_$1])dnl
|
||||
AC_CACHE_CHECK([size of $1], ac_Sizeof,
|
||||
[AC_TRY_RUN([#include <stdio.h>
|
||||
[$3]
|
||||
int
|
||||
[AC_TRY_RUN(AC_INCLUDES_DEFAULT([$3])
|
||||
[int
|
||||
main ()
|
||||
{
|
||||
FILE *f = fopen ("conftestval", "w");
|
||||
if (!f)
|
||||
exit (1);
|
||||
fprintf (f, "%d\n", sizeof ([$1]));
|
||||
exit (1);
|
||||
fprintf (f, "%d\n", sizeof ($1));
|
||||
exit (0);
|
||||
}],
|
||||
AC_VAR_SET(ac_Sizeof, `cat conftestval`),
|
||||
@ -3062,7 +3061,9 @@ AC_VAR_POPDEF([ac_Sizeof])dnl
|
||||
])
|
||||
|
||||
|
||||
dnl ### Checking for types
|
||||
## ------------------ ##
|
||||
## Checking for types ##
|
||||
## ------------------ ##
|
||||
|
||||
|
||||
# AC_CHECK_TYPE_INTERNAL(TYPE,
|
||||
|
@ -6,41 +6,93 @@ Checking the semantics of some macros.
|
||||
|
||||
EOF
|
||||
|
||||
dnl Check that AC_CHECK_MEMBERS performs the correct actions:
|
||||
dnl Must define HAVE_STRUCT_YES_YES, but not HAVE_STRUCT_YES_NO.
|
||||
AT_TEST_MACRO(AC_CHECK_MEMBERS,
|
||||
[AC_CHECK_MEMBERS((struct yes.yes, struct yes.no),,,
|
||||
[struct yes { int yes ;} ;])],
|
||||
[AT_CHECK([grep HAVE_STRUCT_YES_YES config.h],,
|
||||
[#define HAVE_STRUCT_YES_YES 1
|
||||
])
|
||||
AT_CHECK([grep HAVE_STRUCT_YES_NO config.h],,
|
||||
[/* #undef HAVE_STRUCT_YES_NO */
|
||||
])])
|
||||
|
||||
|
||||
dnl Check that AC_CHECK_TYPES performs the correct actions:
|
||||
dnl Must define HAVE_STRUCT_YES, but not HAVE_STRUCT_NO.
|
||||
AT_TEST_MACRO(AC_CHECK_TYPES,
|
||||
[AC_CHECK_TYPES((struct yes, struct no),,,
|
||||
[struct yes { int yes ;} ;])],
|
||||
[AT_CHECK([grep HAVE_STRUCT_YES config.h],,
|
||||
[#define HAVE_STRUCT_YES 1
|
||||
])
|
||||
AT_CHECK([grep HAVE_STRUCT_NO config.h],,
|
||||
[/* #undef HAVE_STRUCT_NO */
|
||||
])])
|
||||
|
||||
|
||||
|
||||
dnl Check that AC_CHECK_DECLS performs the correct actions:
|
||||
dnl AC_CHECK_DECLS
|
||||
dnl --------------
|
||||
dnl Check that it performs the correct actions:
|
||||
dnl Must define NEED_NO_DECL, but not NEED_YES_DECL.
|
||||
AT_TEST_MACRO(AC_CHECK_DECLS,
|
||||
[AC_CHECK_DECLS((yes, no),,,
|
||||
[int yes = 1;])],
|
||||
[AT_CHECK([grep NEED_YES_DECL config.h],,
|
||||
[/* #undef NEED_YES_DECL */
|
||||
])
|
||||
AT_CHECK([grep NEED_NO_DECL config.h],,
|
||||
[#define NEED_NO_DECL 1
|
||||
[AT_CHECK_DEFINES(
|
||||
[#define NEED_NO_DECL 1
|
||||
/* #undef NEED_YES_DECL */
|
||||
])])
|
||||
|
||||
|
||||
dnl AC_CHECK_FUNCS
|
||||
dnl --------------
|
||||
dnl Check that it performs the correct actions:
|
||||
dnl Must define HAVE_EXIT, but not HAVE_AUTOCONF_TIXE
|
||||
AT_TEST_MACRO(AC_CHECK_FUNCS,
|
||||
[AC_CHECK_FUNCS(exit autoconf_tixe)],
|
||||
[AT_CHECK_DEFINES(
|
||||
[/* #undef HAVE_AUTOCONF_TIXE */
|
||||
#define HAVE_EXIT 1
|
||||
])])
|
||||
|
||||
|
||||
|
||||
dnl AC_CHECK_HEADERS
|
||||
dnl ----------------
|
||||
dnl Check that it performs the correct actions:
|
||||
dnl Must define HAVE_STDIO_H, but not HAVE_AUTOCONF_IO_H.
|
||||
AT_TEST_MACRO(AC_CHECK_HEADERS,
|
||||
[AC_CHECK_HEADERS(stdio.h autoconf_io.h)],
|
||||
[AT_CHECK_DEFINES(
|
||||
[/* #undef HAVE_AUTOCONF_IO_H */
|
||||
#define HAVE_STDIO_H 1
|
||||
])])
|
||||
|
||||
|
||||
|
||||
dnl AC_CHECK_MEMBERS
|
||||
dnl ----------------
|
||||
dnl Check that it performs the correct actions.
|
||||
dnl Must define HAVE_STRUCT_YES_YES, but not HAVE_STRUCT_YES_NO.
|
||||
AT_TEST_MACRO(AC_CHECK_MEMBERS,
|
||||
[AC_CHECK_MEMBERS((struct yes.yes, struct yes.no),,,
|
||||
[struct yes { int yes ;} ;])],
|
||||
[AT_CHECK_DEFINES(
|
||||
[/* #undef HAVE_STRUCT_YES_NO */
|
||||
#define HAVE_STRUCT_YES_YES 1
|
||||
])])
|
||||
|
||||
|
||||
|
||||
dnl AC_CHECK_SIZEOF
|
||||
dnl --------------
|
||||
dnl Check that it performs the correct actions.
|
||||
dnl Must define HAVE_STRUCT_YES, HAVE_INT, but not HAVE_STRUCT_NO.
|
||||
dnl `int' and `struct yes' are both checked to test both the compiler
|
||||
dnl builtin types, and defined types.
|
||||
AT_TEST_MACRO(AC_CHECK_TYPES,
|
||||
[AC_CHECK_SIZEOF(char)
|
||||
AC_CHECK_SIZEOF(charchar,,
|
||||
[#include <stdio.h>
|
||||
typedef struct
|
||||
{
|
||||
char a;
|
||||
char b;
|
||||
} charchar;])],
|
||||
[AT_CHECK_DEFINES(
|
||||
[#define SIZEOF_CHAR 1
|
||||
#define SIZEOF_CHARCHAR 2
|
||||
])])
|
||||
|
||||
|
||||
|
||||
dnl AC_CHECK_TYPES
|
||||
dnl --------------
|
||||
dnl Check that it performs the correct actions.
|
||||
dnl Must define HAVE_STRUCT_YES, HAVE_INT, but not HAVE_STRUCT_NO.
|
||||
dnl `int' and `struct yes' are both checked to test both the compiler
|
||||
dnl builtin types, and defined types.
|
||||
AT_TEST_MACRO(AC_CHECK_TYPES,
|
||||
[AC_CHECK_TYPES((int, struct yes, struct no),,,
|
||||
[struct yes { int yes ;} ;])],
|
||||
[AT_CHECK_DEFINES(
|
||||
[#define HAVE_INT 1
|
||||
/* #undef HAVE_STRUCT_NO */
|
||||
#define HAVE_STRUCT_YES 1
|
||||
])])
|
||||
|
@ -7,5 +7,3 @@ Syntax of macros and completeness of the header templates.
|
||||
EOF
|
||||
|
||||
AT_INCLUDE(macros.m4)
|
||||
dnl That miserable test comes from the old DejaGNU testsuite.
|
||||
TEST_MACRO([AC_CHECK_SIZEOF(long *)])
|
||||
|
@ -53,6 +53,8 @@ AT_DATA(dummy.in,
|
||||
AT_TEST_MACRO(config.status under extreme conditions,
|
||||
[AC_CONFIG_FILES(dummy)
|
||||
[define]([AC_DEFUBST_VALUE], Big_Value)
|
||||
dnl The following 4 lines are a transfert from AT_DUMMY_VAR in Autotest
|
||||
dnl to AC_DUMMY_VAR in Autoconf.
|
||||
[define]([AC_DUMMY_VAR],
|
||||
changequote({{, }})dnl
|
||||
[defn({{AT_DUMMY_VAR}})]dnl
|
||||
|
Loading…
x
Reference in New Issue
Block a user