summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2014-03-15 12:52:29 +0100
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2014-03-31 08:29:58 +0000
commit280c2958f2a03bdc16b99851230c935cdd65e91b (patch)
tree73c31b48427c57f0ee8839101f1d8680ba2c80fe
parent0973a321a9836331cd7863a5c1aad77e2bf8126b (diff)
downloadwireshark-280c2958f2a03bdc16b99851230c935cdd65e91b.tar.gz
Add --enable-extra-clang-checks for autotools and CMakeList
With -Wunreachable-code flags (and disable for the moment -Wdocumentation) Change-Id: I126c962b32e650a63b78092e95896736ae7335c9 Reviewed-on: https://code.wireshark.org/review/678 Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
-rw-r--r--CMakeLists.txt28
-rw-r--r--CMakeOptions.txt1
-rw-r--r--configure.ac20
3 files changed, 41 insertions, 8 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a2e17697e2..8dd8b084a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -228,7 +228,7 @@ else()
set(WIRESHARK_CPP_ONLY_FLAGS
)
- set(WIRESHARK_EXTRA_C_FLAGS
+ set(WIRESHARK_EXTRA_GCC_C_FLAGS
-pedantic
-Woverflow
-fstrict-overflow -Wstrict-overflow=4
@@ -245,16 +245,26 @@ else()
-Wmissing-declarations
)
- set(WIRESHARK_EXTRA_C_ONLY_FLAGS
+ set(WIRESHARK_EXTRA_GCC_C_ONLY_FLAGS
# The following are C only, not C++
-Wbad-function-cast
# All the registration functions block these for now.
-Wmissing-prototypes
)
- set(WIRESHARK_EXTRA_CPP_ONLY_FLAGS
+ set(WIRESHARK_EXTRA_GCC_CPP_ONLY_FLAGS
)
+ set(WIRESHARK_EXTRA_CLANG_C_FLAGS
+ -Wunreachable-code
+ #-Wdocumentation
+ )
+
+ set(WIRESHARK_EXTRA_CLANG_C_ONLY_FLAGS
+ )
+
+ set(WIRESHARK_EXTRA_CLANG_CPP_ONLY_FLAGS
+ )
# With clang some tests don't fail properly during testing but only
# during real compiles
@@ -273,9 +283,15 @@ else()
endif()
if(ENABLE_EXTRA_GCC_CHECKS) # This overrides -Werror
- set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS} ${WIRESHARK_EXTRA_C_FLAGS})
- set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_C_ONLY_FLAGS})
- set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS} ${WIRESHARK_EXTRA_CPP_ONLY_FLAGS})
+ set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS} ${WIRESHARK_EXTRA_GCC_C_FLAGS})
+ set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_GCC_C_ONLY_FLAGS})
+ set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS} ${WIRESHARK_EXTRA_GCC_CPP_ONLY_FLAGS})
+ endif()
+
+ if(ENABLE_EXTRA_CLANG_CHECKS) # This overrides -Werror
+ set(WIRESHARK_C_FLAGS ${WIRESHARK_C_FLAGS} ${WIRESHARK_EXTRA_CLANG_C_FLAGS})
+ set(WIRESHARK_C_ONLY_FLAGS ${WIRESHARK_C_ONLY_FLAGS} ${WIRESHARK_EXTRA_CLANG_C_ONLY_FLAGS})
+ set(WIRESHARK_CPP_ONLY_FLAGS ${WIRESHARK_CPP_ONLY_FLAGS} ${WIRESHARK_EXTRA_CLANG_CPP_ONLY_FLAGS})
endif()
add_definitions(
diff --git a/CMakeOptions.txt b/CMakeOptions.txt
index dad0217b71..26fd117957 100644
--- a/CMakeOptions.txt
+++ b/CMakeOptions.txt
@@ -20,6 +20,7 @@ option(AUTOGEN_pidl "Autogenerate pidl dissectors" OFF)
option(DISABLE_WERROR "Do not treat Warnings as errors" OFF)
option(ENABLE_EXTRA_GCC_CHECKS "Do additional -W checks in GCC (disables -Werror)" OFF)
+option(ENABLE_EXTRA_CLANG_CHECKS "Do additional -W checks in Clang (disables -Werror)" OFF)
option(ENABLE_GTK3 "Use GTK3 instead of GTK2 to build wireshark" ON)
option(ENABLE_QT5 "Use Qt5 instead of Qt4 to build qtshark" ON)
option(ENABLE_PCAP "Enable libpcap support (required for capturing)" ON)
diff --git a/configure.ac b/configure.ac
index 7d06f77919..c4a332c3a3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -772,7 +772,7 @@ AC_ARG_ENABLE(extra-gcc-checks,
AC_HELP_STRING( [--enable-extra-gcc-checks],
[do additional -W checks in GCC @<:@default=no@:>@]),
[
- wireshark_extra_gcc_flags=$enableval
+ wireshark_extra_flags=$enableval
if test $enableval != no
then
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-pedantic)
@@ -811,6 +811,22 @@ AC_ARG_ENABLE(extra-gcc-checks,
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wcast-align)
fi
],)
+
+#
+# Try to add some additional clang checks to CFLAGS
+#
+AC_ARG_ENABLE(extra-clang-checks,
+ AC_HELP_STRING( [--enable-extra-clang-checks],
+ [do additional -W checks in Clang @<:@default=no@:>@]),
+[
+ wireshark_extra_flags=$enableval
+ if test $enableval != no
+ then
+ AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wunreachable-code)
+ #AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdocumentation)
+ fi
+],)
+
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wall -W) # -W is now known as -Wextra
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wextra) # -W is now known as -Wextra
AC_WIRESHARK_COMPILER_FLAGS_CHECK(-Wdeclaration-after-statement, C)
@@ -999,7 +1015,7 @@ AC_ARG_ENABLE(warnings-as-errors,
fi
],
[
- if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_gcc_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
+ if test "x$ac_supports_gcc_flags" = "xyes" -a "x$wireshark_extra_flags" = "x" -a "x$warnings_as_errors_default" = "xyes"; then
with_warnings_as_errors="yes"
AC_MSG_RESULT(yes)
else