Disable unused local typedefs warning This triggers on gcc 4.8.4 for compile time asserts inside of functions Fixes https://github.com/libsdl-org/SDL/issues/7732 Co-authored-by: Ozkan Sezer <sezeroz@gmail.com>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 376748b..8ec3f3b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -641,6 +641,11 @@ if(USE_GCC OR USE_CLANG OR USE_INTELCC)
list(APPEND EXTRA_CFLAGS "-Wshadow")
endif()
+ check_c_compiler_flag(-Wunused-local-typedefs HAVE_GCC_WUNUSED_LOCAL_TYPEDEFS)
+ if(HAVE_GCC_WUNUSED_LOCAL_TYPEDEFS)
+ list(APPEND EXTRA_CFLAGS "-Wno-unused-local-typedefs")
+ endif()
+
if(APPLE)
cmake_push_check_state(RESET)
# FIXME: don't use deprecated declarations
diff --git a/configure b/configure
index 21878a5..d7bf36e 100755
--- a/configure
+++ b/configure
@@ -23225,6 +23225,41 @@ printf "%s\n" "$need_gcc_Wno_multichar" >&6; }
fi
}
+CheckUnusedLocalTypedefs()
+{
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for GCC -Wunused-local-typedefs option" >&5
+printf %s "checking for GCC -Wunused-local-typedefs option... " >&6; }
+ have_gcc_unused_local_typedefs=no
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -Wunused-local-typedefs"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ int x = 0;
+
+int
+main (void)
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"
+then :
+ have_gcc_unused_local_typedefs=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $have_gcc_unused_local_typedefs" >&5
+printf "%s\n" "$have_gcc_unused_local_typedefs" >&6; }
+ CFLAGS="$save_CFLAGS"
+
+ if test x$have_gcc_unused_local_typedefs = xyes; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-unused-local-typedefs"
+ fi
+}
+
CheckWayland()
{
# Check whether --enable-video-wayland was given.
@@ -28571,6 +28606,7 @@ printf "%s\n" "#define SDL_JOYSTICK_VIRTUAL 1" >>confdefs.h
}
CheckWarnAll
+CheckUnusedLocalTypedefs
CheckNoStrictAliasing
CheckEventSignals
diff --git a/configure.ac b/configure.ac
index 4f41b3a..dc24859 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1674,6 +1674,27 @@ dnl Haiku headers use multicharacter constants all over the place. Ignore these
fi
}
+dnl See if GCC's -Wunused-local-typedefs is supported and disable it
+dnl because it triggers on gcc 4.8.4 for compile time asserts inside
+dnl of functions.
+CheckUnusedLocalTypedefs()
+{
+ AC_MSG_CHECKING(for GCC -Wunused-local-typedefs option)
+ have_gcc_unused_local_typedefs=no
+
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$save_CFLAGS -Wunused-local-typedefs"
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ int x = 0;
+ ]],[])], [have_gcc_unused_local_typedefs=yes],[])
+ AC_MSG_RESULT($have_gcc_unused_local_typedefs)
+ CFLAGS="$save_CFLAGS"
+
+ if test x$have_gcc_unused_local_typedefs = xyes; then
+ EXTRA_CFLAGS="$EXTRA_CFLAGS -Wno-unused-local-typedefs"
+ fi
+}
+
dnl Check for Wayland
CheckWayland()
{
@@ -3746,6 +3767,7 @@ CheckVirtualJoystick()
dnl Do this on all platforms, before everything else (other things might want to override it).
CheckWarnAll
+CheckUnusedLocalTypedefs
CheckNoStrictAliasing
dnl Do this for every platform, but for some it doesn't mean anything, but better to catch it here anyhow.