Skip to content

Commit

Permalink
Try to build with GCC's -Wdeclaration-after-statement.
Browse files Browse the repository at this point in the history
This will help catch things that'll cause issues on C89 compilers before we
send them on to fail on Buildbot.
  • Loading branch information
icculus committed Jan 5, 2016
1 parent 15bc7ae commit 1373e89
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 12 deletions.
25 changes: 18 additions & 7 deletions CMakeLists.txt
Expand Up @@ -334,6 +334,24 @@ set(HAVE_ASSERTIONS ${ASSERTIONS})


# Compiler option evaluation # Compiler option evaluation
if(USE_GCC OR USE_CLANG) if(USE_GCC OR USE_CLANG)
# Check for -Wall first, so later things can override pieces of it.
check_c_compiler_flag(-Wall HAVE_GCC_WALL)
if(HAVE_GCC_WALL)
list(APPEND EXTRA_CFLAGS "-Wall")
if(HAIKU)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar")
endif()
endif()

check_c_compiler_flag(-Wdeclaration-after-statement HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
if(HAVE_GCC_WDECLARATION_AFTER_STATEMENT)
check_c_compiler_flag(-Werror=declaration-after-statement HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
if(HAVE_GCC_WERROR_DECLARATION_AFTER_STATEMENT)
list(APPEND EXTRA_CFLAGS "-Werror=declaration-after-statement")
endif()
list(APPEND EXTRA_CFLAGS "-Wdeclaration-after-statement")
endif()

if(DEPENDENCY_TRACKING) if(DEPENDENCY_TRACKING)
check_c_source_compiles(" check_c_source_compiles("
#if !defined(__GNUC__) || __GNUC__ < 3 #if !defined(__GNUC__) || __GNUC__ < 3
Expand Down Expand Up @@ -375,13 +393,6 @@ if(USE_GCC OR USE_CLANG)
endif() endif()
set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS}) set(CMAKE_REQUIRED_FLAGS ${ORIG_CMAKE_REQUIRED_FLAGS})


check_c_compiler_flag(-Wall HAVE_GCC_WALL)
if(HAVE_GCC_WALL)
list(APPEND EXTRA_CFLAGS "-Wall")
if(HAIKU)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-multichar")
endif()
endif()
check_c_compiler_flag(-Wshadow HAVE_GCC_WSHADOW) check_c_compiler_flag(-Wshadow HAVE_GCC_WSHADOW)
if(HAVE_GCC_WSHADOW) if(HAVE_GCC_WSHADOW)
list(APPEND EXTRA_CFLAGS "-Wshadow") list(APPEND EXTRA_CFLAGS "-Wshadow")
Expand Down
45 changes: 43 additions & 2 deletions configure
Expand Up @@ -18650,6 +18650,43 @@ $as_echo "$have_gcc_preferred_stack_boundary" >&6; }
fi fi
} }


CheckDeclarationAfterStatement()
{
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -Wdeclaration-after-statement option" >&5
$as_echo_n "checking for GCC -Wdeclaration-after-statement option... " >&6; }
have_gcc_declaration_after_statement=no

save_CFLAGS="$CFLAGS"
CFLAGS="$save_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */

int x = 0;

int
main ()
{


;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :

have_gcc_declaration_after_statement=yes

fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_gcc_declaration_after_statement" >&5
$as_echo "$have_gcc_declaration_after_statement" >&6; }
CFLAGS="$save_CFLAGS"

if test x$have_gcc_declaration_after_statement = xyes; then
EXTRA_CFLAGS="$EXTRA_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
fi
}

CheckWarnAll() CheckWarnAll()
{ {
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -Wall option" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GCC -Wall option" >&5
Expand Down Expand Up @@ -22894,6 +22931,8 @@ fi


} }


CheckWarnAll

case "$host" in case "$host" in
*-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*) *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*)
case "$host" in case "$host" in
Expand Down Expand Up @@ -22962,6 +23001,7 @@ case "$host" in
*-*-minix*) ARCH=minix ;; *-*-minix*) ARCH=minix ;;
esac esac
CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -23392,6 +23432,7 @@ $as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h
ARCH=ios ARCH=ios


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -23461,6 +23502,7 @@ $as_echo "#define SDL_FILESYSTEM_HAIKU 1" >>confdefs.h
EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX" EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -23581,6 +23623,7 @@ $as_echo "#define SDL_AUDIO_DRIVER_EMSCRIPTEN 1" >>confdefs.h
fi fi


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -23630,8 +23673,6 @@ $as_echo "#define SDL_TIMER_UNIX 1" >>confdefs.h
;; ;;
esac esac


CheckWarnAll

# Verify that we have all the platform specific files we need # Verify that we have all the platform specific files we need


if test x$have_joystick != xyes; then if test x$have_joystick != xyes; then
Expand Down
34 changes: 31 additions & 3 deletions configure.in
Expand Up @@ -1124,6 +1124,30 @@ CheckStackBoundary()
fi fi
} }


dnl See if GCC's -Wdeclaration-after-statement is supported.
dnl This lets us catch things that would fail on a C89 compiler when using
dnl a modern GCC.
CheckDeclarationAfterStatement()
{
AC_MSG_CHECKING(for GCC -Wdeclaration-after-statement option)
have_gcc_declaration_after_statement=no

save_CFLAGS="$CFLAGS"
CFLAGS="$save_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
AC_TRY_COMPILE([
int x = 0;
],[
],[
have_gcc_declaration_after_statement=yes
])
AC_MSG_RESULT($have_gcc_declaration_after_statement)
CFLAGS="$save_CFLAGS"

if test x$have_gcc_declaration_after_statement = xyes; then
EXTRA_CFLAGS="$EXTRA_CFLAGS -Wdeclaration-after-statement -Werror=declaration-after-statement"
fi
}

dnl See if GCC's -Wall is supported. dnl See if GCC's -Wall is supported.
CheckWarnAll() CheckWarnAll()
{ {
Expand Down Expand Up @@ -2801,6 +2825,9 @@ AC_HELP_STRING([--enable-rpath], [use an rpath when linking SDL [[default=yes]]]
, enable_rpath=yes) , enable_rpath=yes)
} }


dnl Do this on all platforms, before everything else (other things might want to override it).
CheckWarnAll

dnl Set up the configuration based on the host platform! dnl Set up the configuration based on the host platform!
case "$host" in case "$host" in
*-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*) *-*-linux*|*-*-uclinux*|*-*-gnu*|*-*-k*bsd*-gnu|*-*-bsdi*|*-*-freebsd*|*-*-dragonfly*|*-*-netbsd*|*-*-openbsd*|*-*-sysv5*|*-*-solaris*|*-*-hpux*|*-*-aix*|*-*-minix*)
Expand Down Expand Up @@ -2870,6 +2897,7 @@ case "$host" in
*-*-minix*) ARCH=minix ;; *-*-minix*) ARCH=minix ;;
esac esac
CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -3196,6 +3224,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
ARCH=ios ARCH=ios


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -3265,6 +3294,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX" EXTRA_CFLAGS="$EXTRA_CFLAGS -DTARGET_API_MAC_OSX"


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -3366,6 +3396,7 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
fi fi


CheckVisibilityHidden CheckVisibilityHidden
CheckDeclarationAfterStatement
CheckDummyVideo CheckDummyVideo
CheckDiskAudio CheckDiskAudio
CheckDummyAudio CheckDummyAudio
Expand Down Expand Up @@ -3407,9 +3438,6 @@ AC_HELP_STRING([--enable-render-d3d], [enable the Direct3D render driver [[defau
;; ;;
esac esac


dnl Do this on all platforms, after everything else.
CheckWarnAll

# Verify that we have all the platform specific files we need # Verify that we have all the platform specific files we need


if test x$have_joystick != xyes; then if test x$have_joystick != xyes; then
Expand Down

0 comments on commit 1373e89

Please sign in to comment.