VL_CHECK_SIGN (TYPE, [ACTION-IF-SIGNED], [ACTION-IF-UNSIGNED], [INCLUDES])
,
Ville Laurikari <vl@iki.fi>
AllPermissive
Copying and distribution of this file, with or
without modification, are permitted in any medium without royalty provided the copyright
notice and this notice are preserved. Users of this software should generally follow the
principles of the
MIT License includings its disclaimer.
cryp.to ac-archive's C Support (released)
Checks whether TYPE is signed or not. If no INCLUDES are specified,
the default includes are used. If ACTION-IF-SIGNED is given, it is
additional shell code to execute when the type is signed. If
ACTION-IF-UNSIGNED is given, it is executed when the type is
unsigned.
This macro assumes that the type exists. Therefore the existence of
the type should be checked before calling this macro. For example:
AC_CHECK_HEADERS([wchar.h])
AC_CHECK_TYPE([wchar_t],,[ AC_MSG_ERROR([Type wchar_t not found.]) ])
VL_CHECK_SIGN([wchar_t],
[ AC_DEFINE(WCHAR_T_SIGNED, 1, [Define if wchar_t is signed]) ],
[ AC_DEFINE(WCHAR_T_UNSIGNED, 1, [Define if wchar_t is unsigned]) ], [
#ifdef HAVE_WCHAR_H
#include <wchar.h>
#endif
])
AC_DEFUN([VL_CHECK_SIGN], [
typename=`echo $1 | sed "s/@<:@^a-zA-Z0-9_@:>@/_/g"`
AC_CACHE_CHECK([whether $1 is signed], vl_cv_decl_${typename}_signed, [
AC_TRY_COMPILE([$4],
[ int foo @<:@ 1 - 2 * !((($1) -1) < 0) @:>@ ],
[ eval "vl_cv_decl_${typename}_signed=\"yes\"" ],
[ eval "vl_cv_decl_${typename}_signed=\"no\"" ])])
symbolname=`echo $1 | sed "s/@<:@^a-zA-Z0-9_@:>@/_/g" | tr "a-z" "A-Z"`
if eval "test \"\${vl_cv_decl_${typename}_signed}\" = \"yes\""; then
$2
elif eval "test \"\${vl_cv_decl_${typename}_signed}\" = \"no\""; then
$3
fi
])dnl