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 Compiler features
dnl ============================================================
AC_TRY_COMPILE([],
[
_Static_assert (1, "");
int
main (int argc, char **argv)
{
return 0;
}
],
[AC_DEFINE([HAVE_STATIC_ASSERT], [1], [Whether _Static_assert can be used or not])])
AC_MSG_CHECKING([for _Static_assert])
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([_Static_assert (1, "");],
[(void) 0])],
[AC_DEFINE([HAVE_STATIC_ASSERT], [1],
[Whether _Static_assert can be used or not])
AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
dnl ================================================================
dnl Libtool stuff.