summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorTingPing <tingping@tingping.se>2015-03-19 16:03:13 -0400
committerTingPing <tingping@tingping.se>2015-03-19 16:04:04 -0400
commit4e338a2b70205e39556b51f774dbcc65eed971c4 (patch)
treed82c32d1c638e5360220b9a77c086f899b1b4b69
parent98fefcd162368cd3f7122a66a43d6248fb2ef29a (diff)
configure: Clean up testing warnings and add more
-rw-r--r--configure.ac100
-rw-r--r--m4/ac-check-cflags.m460
2 files changed, 78 insertions, 82 deletions
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ò <flameeyes@gmail.com>
+dnl Copyright (c) 2006-2008 xine project
+dnl Copyright (c) 2012 Lucas De Marchi <lucas.de.marchi@gmail.com>
+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
+])
+