diff options
author | Björn-Egil Dahlberg <[email protected]> | 2013-01-14 15:25:56 +0100 |
---|---|---|
committer | Björn-Egil Dahlberg <[email protected]> | 2013-01-14 15:25:56 +0100 |
commit | fdd0b38e2c85d897a240e5f8f79e268c6540dbfd (patch) | |
tree | 617d9322887f396e186f0c6e6a651a4f46e3d119 /erts | |
parent | 9a19ba3aba7b2a3c7b58cfd02b7e442138ea7685 (diff) | |
parent | 37fb3503c4b1467d2b28f407b9c27c1de147869e (diff) | |
download | otp-fdd0b38e2c85d897a240e5f8f79e268c6540dbfd.tar.gz otp-fdd0b38e2c85d897a240e5f8f79e268c6540dbfd.tar.bz2 otp-fdd0b38e2c85d897a240e5f8f79e268c6540dbfd.zip |
Merge branch 'ta/werror-return-type/OTP-10683'
* ta/werror-return-type/OTP-10683:
If GCC is used, treat -Wreturn-type as error
Diffstat (limited to 'erts')
-rw-r--r-- | erts/aclocal.m4 | 26 | ||||
-rw-r--r-- | erts/configure.in | 11 |
2 files changed, 36 insertions, 1 deletions
diff --git a/erts/aclocal.m4 b/erts/aclocal.m4 index 9578cd35c4..5d555a5123 100644 --- a/erts/aclocal.m4 +++ b/erts/aclocal.m4 @@ -1849,6 +1849,32 @@ case $erl_gethrvtime in esac ])dnl +dnl ---------------------------------------------------------------------- +dnl +dnl LM_TRY_ENABLE_CFLAG +dnl +dnl +dnl Tries a CFLAG and sees if it can be enabled without compiler errors +dnl $1: textual cflag to add +dnl $2: variable to store the modified CFLAG in +dnl Usage example LM_TRY_ENABLE_CFLAG([-Werror=return-type], [CFLAGS]) +dnl +dnl +AC_DEFUN([LM_TRY_ENABLE_CFLAG], [ + AC_MSG_CHECKING([if we can add $1 to CFLAGS]) + saved_CFLAGS=$CFLAGS; + CFLAGS="$1 $CFLAGS"; + AC_TRY_COMPILE([],[return 0;],can_enable_flag=true,can_enable_flag=false) + CFLAGS=$saved_CFLAGS; + if test "X$can_enable_flag" = "Xtrue"; then + AC_MSG_RESULT([yes]) + AS_VAR_SET($2, "$1 $CFLAGS") + else + AC_MSG_RESULT([no]) + AS_VAR_SET($2, "$CFLAGS") + fi +]) + dnl ERL_TRY_LINK_JAVA(CLASSES, FUNCTION-BODY dnl [ACTION_IF_FOUND [, ACTION-IF-NOT-FOUND]]) dnl Freely inspired by AC_TRY_LINK. (Maybe better to create a diff --git a/erts/configure.in b/erts/configure.in index a73bb358a0..3dfd3fc7b7 100644 --- a/erts/configure.in +++ b/erts/configure.in @@ -537,6 +537,9 @@ else fi if test "x$GCC" = xyes; then + # Treat certain GCC warnings as errors + LM_TRY_ENABLE_CFLAG([-Werror=return-type], [WERRORFLAGS]) + # until the emulator can handle this, I suggest we turn it off! #WFLAGS="-Wall -Wshadow -Wcast-qual -Wmissing-declarations" WFLAGS="-Wall -Wstrict-prototypes" @@ -559,11 +562,13 @@ if test "x$GCC" = xyes; then CFLAGS=$saved_CFLAGS else WFLAGS="" + WERRORFLAGS="" fi dnl DEBUG_FLAGS is obsolete (I hope) AC_SUBST(DEBUG_FLAGS) AC_SUBST(DEBUG_CFLAGS) AC_SUBST(WFLAGS) +AC_SUBST(WERRORFLAGS) AC_SUBST(CFLAG_RUNTIME_LIBRARY_PATH) AC_CHECK_SIZEOF(void *) # Needed for ARCH and smp checks below @@ -4498,7 +4503,7 @@ dnl needs to be rebuilt. dnl AC_DEFINE_UNQUOTED(ERTS_EMU_CMDLINE_FLAGS, -"$STATIC_CFLAGS $CFLAGS $DEBUG_CFLAGS $EMU_THR_DEFS $DEFS $WFLAGS", +"$STATIC_CFLAGS $CFLAGS $DEBUG_CFLAGS $EMU_THR_DEFS $DEFS $WERRORFLAGS $WFLAGS", [The only reason ERTS_EMU_CMDLINE_FLAGS exists is to force modification of config.h when the emulator command line flags are modified by configure]) dnl ---------------------------------------------------------------------- @@ -4561,6 +4566,10 @@ AH_BOTTOM([ #endif ]) +if test "x$GCC" = xyes; then + CFLAGS="$WERRORFLAGS $CFLAGS" +fi + dnl ---------------------------------------------------------------------- dnl Output the result. dnl ---------------------------------------------------------------------- |