From f32255ba1324e14dcb3def10c9141adccb21cf60 Mon Sep 17 00:00:00 2001 From: Denis Ovsienko Date: Mon, 4 Mar 2024 11:43:20 +0000 Subject: [PATCH] Fix propagation of cc_werr_cflags() output. [skip ci] Same as in libpcap. It is not the propagation that tcpdump needs from this change, but the proper application of compiler options. --- CHANGES | 1 + CMakeLists.txt | 10 +++++++--- build_common.sh | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 7fc2dfd1..f71b58ef 100644 --- a/CHANGES +++ b/CHANGES @@ -50,6 +50,7 @@ DayOfTheWeek, Month DD, YYYY / The Tcpdump Group Tru64 Unix}, SINIX and Ultrix. Fix compiling on GNU/Hurd. Make illumos build warning-free. + Fix propagation of cc_werr_cflags() output. DayOfTheWeek, Month DD, YYYY / The Tcpdump Group Summary for 4.99.5 tcpdump release (so far!) diff --git a/CMakeLists.txt b/CMakeLists.txt index ee3eb952..6c25efa2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1036,9 +1036,13 @@ endif() # usage: cmake -DEXTRA_CFLAGS='-Wall -Wextra -Werror' ... # if(NOT "${EXTRA_CFLAGS}" STREQUAL "") - foreach(_extra_cflag ${EXTRA_CFLAGS}) - check_and_add_compiler_option("${_extra_cflag}") - endforeach(_extra_cflag) + # The meaning of EXTRA_CFLAGS is "use the exact specified options, or the + # build risks failing to fail", not "try every specified option, omit those + # that do not work and use the rest". Thus use add_compile_options(), not + # foreach()/check_and_add_compiler_option(). Another reason to do that is + # that the effect lasts in testprogs/ and testprogs/fuzz/. + string(REPLACE " " ";" _extra_cflags_list ${EXTRA_CFLAGS}) + add_compile_options(${_extra_cflags_list}) message(STATUS "Added extra compile options (${EXTRA_CFLAGS})") endif() diff --git a/build_common.sh b/build_common.sh index 792b6ddf..cd43aa93 100644 --- a/build_common.sh +++ b/build_common.sh @@ -196,7 +196,10 @@ cc_werr_cflags() { echo '-qhalt=w' ;; suncc-*) - echo '-errwarn=%all' + # GCC and Clang print an identification for every warning, which is + # useful for root cause analysis and bug fixing. Sun C does not do it + # by default, but an additional option makes the style more consistent. + echo '-errwarn=%all -errtags=yes' ;; msvc-*) # XXX - what?