diff --git a/configure.ac b/configure.ac index 6a8b7945..fddd37ae 100644 --- a/configure.ac +++ b/configure.ac @@ -608,92 +608,29 @@ AM_CONDITIONAL(WITH_TM, test "x$theme_manager" != "xno") AM_CONDITIONAL(PLATFORM_OSX, test "x$platform_osx" == "xyes") dnl ********************************************************************* -dnl ** GCC FLAGS ******************************************************** +dnl ** CFLAGS *********************************************************** dnl ********************************************************************* -dnl Only use -Wall and -pipe if we have gcc -if test "x$GCC" = "xyes"; then - if test -z "`echo "$CFLAGS" | grep "\-Wall" 2> /dev/null`" ; then - CFLAGS="$CFLAGS -Wall" - fi - dnl these flags might be unwanted - if test x$minimalflags != xyes; then - if test "$system" = "Linux" -o "$system" = "FreeBSD"; then - if test -z "`echo "$CFLAGS" | grep "\-pipe" 2> /dev/null`" ; then - CFLAGS="$CFLAGS -pipe" - fi - fi - if test -z "`echo "$CFLAGS" | grep "\-g " 2> /dev/null`" ; then - CFLAGS="$CFLAGS -g" - fi - fi +dnl these flags might be unwanted +if test x$minimalflags != xyes; then + CC_CHECK_FLAGS_APPEND([CFLAGS], [CFLAGS], [-g]) fi -dnl does this compiler support -Wno-pointer-sign ? -AC_MSG_CHECKING([if $CC accepts -Wno-pointer-sign ]) - -safe_CFLAGS=$CFLAGS -CFLAGS="-Wno-pointer-sign" - -AC_TRY_COMPILE(, [ -return 0; -], -[ -no_pointer_sign=yes -AC_MSG_RESULT([yes]) -], [ -no_pointer_sign=no -AC_MSG_RESULT([no]) +CC_CHECK_FLAGS_APPEND([CFLAGS], [CFLAGS], [ \ + -pipe \ + -funsigned-char \ + -Wall \ + -Wextra \ + -Wno-unused-parameter \ + -Wno-sign-compare \ + -Wno-pointer-sign \ + -Wno-missing-field-initializers \ + -Wno-unused-result \ + -Werror=format-security \ + -Werror=format-nonliteral \ + -Werror=format=2 \ + -Werror=declaration-after-statement \ ]) -CFLAGS=$safe_CFLAGS - -if test x$no_pointer_sign = xyes; then - CFLAGS="$CFLAGS -Wno-pointer-sign" -fi - -dnl does this compiler support -funsigned-char ? -AC_MSG_CHECKING([if $CC accepts -funsigned-char ]) - -safe_CFLAGS=$CFLAGS -CFLAGS="-funsigned-char" - -AC_TRY_COMPILE(, [ -return 0; -], -[ -unsigned_char=yes -AC_MSG_RESULT([yes]) -], [ -unsigned_char=no -AC_MSG_RESULT([no]) -]) -CFLAGS=$safe_CFLAGS - -if test x$unsigned_char = xyes; then - CFLAGS="$CFLAGS -funsigned-char" -fi - -dnl does this compiler support -Wno-unused-result ? -AC_MSG_CHECKING([if $CC accepts -Wno-unused-result ]) - -safe_CFLAGS=$CFLAGS -CFLAGS="-Wno-unused-result" - -AC_TRY_COMPILE(, [ -return 0; -], -[ -no_unused_result=yes -AC_MSG_RESULT([yes]) -], [ -no_unused_result=no -AC_MSG_RESULT([no]) -]) -CFLAGS=$safe_CFLAGS - -if test x$no_unused_result = xyes; then - CFLAGS="$CFLAGS -Wno-unused-result" -fi dnl ********************************************************************* dnl ** FUNCTIONS/LIBS/CFLAGS ******************************************** @@ -747,7 +684,6 @@ AC_EGREP_CPP(lookupd, dnl dnl freebsd needs this LIBS="$LIBS $INTLLIBS" -CFLAGS="$CFLAGS $CPPFLAGS" GUI_LIBS="$GUI_LIBS $COMMON_LIBS" diff --git a/m4/ac-check-cflags.m4 b/m4/ac-check-cflags.m4 new file mode 100644 index 00000000..a45b17f0 --- /dev/null +++ b/m4/ac-check-cflags.m4 @@ -0,0 +1,60 @@ +dnl Macros to check the presence of generic (non-typed) symbols. +dnl Copyright (c) 2006-2008 Diego Pettenò +dnl Copyright (c) 2006-2008 xine project +dnl Copyright (c) 2012 Lucas De Marchi +dnl +dnl This program is free software; you can redistribute it and/or modify +dnl it under the terms of the GNU General Public License as published by +dnl the Free Software Foundation; either version 2, or (at your option) +dnl any later version. +dnl +dnl This program is distributed in the hope that it will be useful, +dnl but WITHOUT ANY WARRANTY; without even the implied warranty of +dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +dnl GNU General Public License for more details. +dnl +dnl You should have received a copy of the GNU General Public License +dnl along with this program; if not, write to the Free Software +dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +dnl 02110-1301, USA. +dnl +dnl As a special exception, the copyright owners of the +dnl macro gives unlimited permission to copy, distribute and modify the +dnl configure scripts that are the output of Autoconf when processing the +dnl Macro. You need not follow the terms of the GNU General Public +dnl License when using or distributing such scripts, even though portions +dnl of the text of the Macro appear in them. The GNU General Public +dnl License (GPL) does govern all other use of the material that +dnl constitutes the Autoconf Macro. +dnl +dnl This special exception to the GPL applies to versions of the +dnl Autoconf Macro released by this project. When you make and +dnl distribute a modified version of the Autoconf Macro, you may extend +dnl this special exception to the GPL to apply to your modified version as +dnl well. + +dnl Check if FLAG in ENV-VAR is supported by compiler and append it +dnl to WHERE-TO-APPEND variable +dnl CC_CHECK_FLAG_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG]) + +AC_DEFUN([CC_CHECK_FLAG_APPEND], [ + AC_CACHE_CHECK([if $CC supports flag $3 in envvar $2], + AS_TR_SH([cc_cv_$2_$3]), + [eval "AS_TR_SH([cc_save_$2])='${$2}'" + eval "AS_TR_SH([$2])='$3'" + AC_COMPILE_IFELSE([AC_LANG_SOURCE([int a = 0; int main(void) { return a; } ])], + [eval "AS_TR_SH([cc_cv_$2_$3])='yes'"], + [eval "AS_TR_SH([cc_cv_$2_$3])='no'"]) + eval "AS_TR_SH([$2])='$cc_save_$2'"]) + + AS_IF([eval test x$]AS_TR_SH([cc_cv_$2_$3])[ = xyes], + [eval "$1='${$1} $3'"]) +]) + +dnl CC_CHECK_FLAGS_APPEND([WHERE-TO-APPEND], [ENV-VAR], [FLAG1 FLAG2]) +AC_DEFUN([CC_CHECK_FLAGS_APPEND], [ + for flag in $3; do + CC_CHECK_FLAG_APPEND($1, $2, $flag) + done +]) +