diff --git a/configure.ac b/configure.ac index 5e539e1b612851d1e0811a847b90b76ba9987893..712ede4b3d35b26e97698ad481b3fd1e98f9e201 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,4 @@ dnl -*- mode: shell-script; sh-indentation: 2; -*- -dnl $Id$ dnl Process this file with autoconf to produce a configure script. @@ -130,6 +129,42 @@ AC_C_BIGENDIAN AC_REPLACE_FUNCS(memxor) +# Check for gcc's __attribute__ construction +AC_CACHE_CHECK(for __attribute__, + lsh_cv_c_attribute, +[ AC_TRY_COMPILE([ +#include <stdlib.h> +], +[ +static void foo(void) __attribute__ ((noreturn)); + +static void __attribute__ ((noreturn)) +foo(void) +{ + exit(1); +} +], +lsh_cv_c_attribute=yes, +lsh_cv_c_attribute=no)]) + +AH_TEMPLATE([HAVE_GCC_ATTRIBUTE], + [Define if the compiler understands __attribute__]) +if test "x$lsh_cv_c_attribute" = "xyes"; then + AC_DEFINE(HAVE_GCC_ATTRIBUTE) +fi + +AH_BOTTOM( +[#if __GNUC__ && HAVE_GCC_ATTRIBUTE +# define NORETURN __attribute__ ((__noreturn__)) +# define PRINTF_STYLE(f, a) __attribute__ ((__format__ (__printf__, f, a))) +# define UNUSED __attribute__ ((__unused__)) +#else +# define NORETURN +# define PRINTF_STYLE(f, a) +# define UNUSED +#endif +]) + # Checks for libraries AC_CHECK_LIB(gmp, __gmpz_getlimbn,, [AC_MSG_WARN(