configure: Fix the check for _Static_assert

The check for whether the compiler supports _Static_assert didn't work
properly because the AC_TRY_COMPILE function puts the source
definition in its own main function. The test therefore ends up
declaring a nested main function which GCC allows. If _Static_assert
isn't available then it just looks like an implicit declaration of a
function which only causes a warning in GCC so it would still compile.

This patch changes it to use AC_COMPILE_IFELSE instead. This macro
makes it possible to specify the complete source code so
_Static_assert can be called from the global scope. AC_LANG_PROGRAM is
used to generate the program. For extra aesthetics it now also
generates a 'checking for...' message while the script is running.

Reviewed-by: Robert Bragg <robert@linux.intel.com>

(cherry picked from commit 9657938c3083a782234e1e9f05ab5ae88a6bc5ab)
This commit is contained in:
Neil Roberts 2012-04-20 19:50:36 +01:00 committed by Robert Bragg
parent 8dd77de009
commit a9d1939425

View File

@ -938,16 +938,13 @@ AC_C_CONST
dnl ============================================================ dnl ============================================================
dnl Compiler features dnl Compiler features
dnl ============================================================ dnl ============================================================
AC_TRY_COMPILE([], AC_MSG_CHECKING([for _Static_assert])
[ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_Static_assert (1, "");],
_Static_assert (1, ""); [(void) 0])],
int [AC_DEFINE([HAVE_STATIC_ASSERT], [1],
main (int argc, char **argv) [Whether _Static_assert can be used or not])
{ AC_MSG_RESULT([yes])],
return 0; [AC_MSG_RESULT([no])])
}
],
[AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Whether _Static_assert can be used or not])])
dnl ================================================================ dnl ================================================================
dnl Libtool stuff. dnl Libtool stuff.