Author: brane
Date: Mon Jun 30 23:14:02 2025
New Revision: 1926877

URL: http://svn.apache.org/viewvc?rev=1926877&view=rev
Log:
In the CMake build, set warning flags per target to simplify manipulation.

* CMakeLists.txt
  (CMAKE_C_WARNINGS): New list for warning flags, move them here
   from the global CMAKE_C_FLAGS.
  (serf_shared, serf_static): Add CMAKE_C_WARNINGS to compile options.
* test/CMakeLists.txt: Add CMAKE_C_WARNINGS to all compile options.
* test/MockHTTPinC/CMakeLists.txt: Override warning flags for MockHTTPinC.

Modified:
    serf/trunk/CMakeLists.txt
    serf/trunk/test/CMakeLists.txt
    serf/trunk/test/MockHTTPinC/CMakeLists.txt

Modified: serf/trunk/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/trunk/CMakeLists.txt?rev=1926877&r1=1926876&r2=1926877&view=diff
==============================================================================
--- serf/trunk/CMakeLists.txt (original)
+++ serf/trunk/CMakeLists.txt Mon Jun 30 23:14:02 2025
@@ -356,32 +356,32 @@ set(CMAKE_C_STANDARD_REQUIRED TRUE)
 
 if(NOT MSVC)
   if(CC_LIKE_GNUC)
-    string(APPEND CMAKE_C_FLAGS " -Wall")
-    string(APPEND CMAKE_C_FLAGS " -Wdeclaration-after-statement")
-    string(APPEND CMAKE_C_FLAGS " -Wmissing-prototypes")
+    list(APPEND SERF_C_WARNINGS "-Wall")
+    list(APPEND SERF_C_WARNINGS "-Wdeclaration-after-statement")
+    list(APPEND SERF_C_WARNINGS "-Wmissing-prototypes")
 
     string(APPEND CMAKE_C_FLAGS_DEBUG " -O0")
 
     if(SERF_MAINTAINER_MODE)
       # Additional warning flags for more pedantic checks
-      string(APPEND CMAKE_C_FLAGS " -Wimplicit-function-declaration")
-      string(APPEND CMAKE_C_FLAGS " -Wmissing-variable-declarations")
-      string(APPEND CMAKE_C_FLAGS " -Wunreachable-code")
-      string(APPEND CMAKE_C_FLAGS " -Wshorten-64-to-32")
-      string(APPEND CMAKE_C_FLAGS " -Wno-system-headers")
-      string(APPEND CMAKE_C_FLAGS " -Wextra-tokens")
-      string(APPEND CMAKE_C_FLAGS " -Wnewline-eof")
+      list(APPEND SERF_C_WARNINGS "-Wimplicit-function-declaration")
+      list(APPEND SERF_C_WARNINGS "-Wmissing-variable-declarations")
+      list(APPEND SERF_C_WARNINGS "-Wunreachable-code")
+      list(APPEND SERF_C_WARNINGS "-Wshorten-64-to-32")
+      list(APPEND SERF_C_WARNINGS "-Wno-system-headers")
+      list(APPEND SERF_C_WARNINGS "-Wextra-tokens")
+      list(APPEND SERF_C_WARNINGS "-Wnewline-eof")
     endif()
   endif()
 else()
   # Warning level 4, no unused argument warnings
-  string(APPEND CMAKE_C_FLAGS " /W4 /wd4100")
+  list(APPEND SERF_C_WARNINGS "/W4" "/wd4100")
   # Conditional expression is constant
-  string(APPEND CMAKE_C_FLAGS " /wd4127")
+  list(APPEND SERF_C_WARNINGS "/wd4127")
   # Assignment within conditional expression
-  string(APPEND CMAKE_C_FLAGS " /wd4706")
+  list(APPEND SERF_C_WARNINGS "/wd4706")
   # 'function' undefined; assuming extern returning int
-  string(APPEND CMAKE_C_FLAGS " /we4013")
+  list(APPEND SERF_C_WARNINGS "/we4013")
 
   add_compile_definitions(
     "WIN32" "WIN32_LEAN_AND_MEAN"
@@ -400,7 +400,9 @@ endif(NOT MSVC)
 # Define all targets
 if(NOT SKIP_SHARED)
   add_library(serf_shared SHARED ${SOURCES} ${SHARED_SOURCES})
-  target_compile_options(serf_shared PUBLIC ${APR_CFLAGS})
+  target_compile_options(serf_shared
+                         PUBLIC ${APR_CFLAGS}
+                         PRIVATE ${SERF_C_WARNINGS})
   target_include_directories(serf_shared PUBLIC ${SERF_SOURCE_DIR})
   target_link_libraries(serf_shared
                         PRIVATE ${SERF_PRIVATE_TARGETS}
@@ -431,7 +433,9 @@ endif()
 
 if(NOT SKIP_STATIC)
   add_library(serf_static STATIC ${SOURCES})
-  target_compile_options(serf_static PUBLIC ${APR_CFLAGS})
+  target_compile_options(serf_static
+                         PUBLIC ${APR_CFLAGS}
+                         PRIVATE ${SERF_C_WARNINGS})
   target_include_directories(serf_static PUBLIC ${SERF_SOURCE_DIR})
   target_link_libraries(serf_static
                         ${SERF_PRIVATE_TARGETS}

Modified: serf/trunk/test/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/CMakeLists.txt?rev=1926877&r1=1926876&r2=1926877&view=diff
==============================================================================
--- serf/trunk/test/CMakeLists.txt (original)
+++ serf/trunk/test/CMakeLists.txt Mon Jun 30 23:14:02 2025
@@ -54,11 +54,13 @@ set(SIMPLE_TEST_TARGETS
 foreach(TEST_TARGET ${SIMPLE_TEST_TARGETS})
   add_executable(${TEST_TARGET} "${TEST_TARGET}.c")
   add_dependencies(${TEST_TARGET} serf_static)
+  target_compile_options(${TEST_TARGET} PRIVATE ${SERF_C_WARNINGS})
   target_link_libraries(${TEST_TARGET} serf_static)
 endforeach()
 
 add_executable(test_all ${TEST_ALL_SOURCES})
 add_dependencies(test_all serf_static mockhttpinc)
+target_compile_options(test_all PRIVATE ${SERF_C_WARNINGS})
 target_include_directories(test_all SYSTEM BEFORE PRIVATE 
${SERF_DEPENDENCY_INCLUDES})
 target_link_libraries(test_all serf_static mockhttpinc)
 

Modified: serf/trunk/test/MockHTTPinC/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/MockHTTPinC/CMakeLists.txt?rev=1926877&r1=1926876&r2=1926877&view=diff
==============================================================================
--- serf/trunk/test/MockHTTPinC/CMakeLists.txt (original)
+++ serf/trunk/test/MockHTTPinC/CMakeLists.txt Mon Jun 30 23:14:02 2025
@@ -27,24 +27,21 @@ set(CMAKE_C_STANDARD 99)
 set(CMAKE_C_STANDARD_REQUIRED TRUE)
 
 # Update compiler options for this library.
-if(CC_LIKE_GNUC)
-  # Also silence all warnings.
-  if(NOT SHOW_MockHTTPinC_WARNINGS)
-    string(REGEX REPLACE " *-W[a-z][a-z-]+" "" CMAKE_C_FLAGS ${CMAKE_C_FLAGS})
-    string(APPEND CMAKE_C_FLAGS " -w")
-  endif()
-elseif(MSVC)
-  # Silence warnings from Microsoft's compiler...
-  #
-  # ... of course, somewhere, somehow CMake adds the /W1 warning option
-  # to the command line and then MSVC complains that we're overriding /W1
-  # with /w. But it's more fun this way, or at least more #$@^&@%!
-  # Or maybe that's just MSBuild doing its magic, and it depends on the
-  # build generator. What would life be without its little mysteries?
-  if(NOT SHOW_MockHTTPinC_WARNINGS)
-    string(REGEX REPLACE " */(W|w[de])[0-9]+" "" CMAKE_C_FLAGS 
${CMAKE_C_FLAGS})
-    string(APPEND CMAKE_C_FLAGS " /w")
+if(NOT SHOW_MockHTTPinC_WARNINGS)
+  if(CC_LIKE_GNUC)
+    set(MockHTTPinC_WARNINGS "-w")
+  elseif(MSVC)
+    # Silence warnings from Microsoft's compiler...
+    #
+    # ... of course, somewhere, somehow CMake adds the /W1 warning option
+    # to the command line and then MSVC complains that we're overriding /W1
+    # with /w. But it's more fun this way, or at least more #$@^&@%!
+    # Or maybe that's just MSBuild doing its magic, and it depends on the
+    # build generator. What would life be without its little mysteries?
+    set(MockHTTPinC_WARNINGS "/w")
   endif()
+else()
+  set(MockHTTPinC_WARNINGS ${SERF_C_WARNINGS})
 endif()
 mark_as_advanced(SHOW_MockHTTPinC_WARNINGS)
 
@@ -54,6 +51,7 @@ list(REMOVE_ITEM _cdef "OPENSSL_NO_DEPRE
 set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${_cdef}")
 
 add_library(mockhttpinc STATIC ${MockHTTPinC_SOURCES})
+target_compile_options(mockhttpinc PRIVATE ${MockHTTPinC_WARNINGS})
 target_compile_definitions(mockhttpinc PUBLIC "MOCKHTTP_OPENSSL")
 target_include_directories(mockhttpinc SYSTEM BEFORE
                            PRIVATE ${APR_INCLUDES} ${APRUTIL_INCLUDES})


Reply via email to