Author: brane
Date: Mon Jun 30 23:39:48 2025
New Revision: 1926878

URL: http://svn.apache.org/viewvc?rev=1926878&view=rev
Log:
In the CMake build, set define flags per target. As with warnings, this
simplifies the manipulation because we don't have to override inherited
directory properties any more.

* CMakeLists.txt
  (SERF_C_DEFINES): Use this list instead of add_compile_definitions().
  (serf_shared, serf_static): Set per-target compile definitions.
* build/SerfChecks.cmake: Update SERF_C_DEFINES.

* test/CMakeLists.txt: Add per-target compile definitions.
* test/MockHTTPinC/CMakeLists.txt: Likewise, modified for MockHTTPinC.

Modified:
    serf/trunk/CMakeLists.txt
    serf/trunk/build/SerfChecks.cmake
    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=1926878&r1=1926877&r2=1926878&view=diff
==============================================================================
--- serf/trunk/CMakeLists.txt (original)
+++ serf/trunk/CMakeLists.txt Mon Jun 30 23:39:48 2025
@@ -222,7 +222,7 @@ if(SERF_WINDOWS)
       "secur32.lib"
       "ws2_32.lib"
   )
-  add_compile_definitions("SERF_HAVE_SSPI")
+  list(APPEND SERF_C_DEFINES "SERF_HAVE_SSPI")
 endif()
 
 # Process build options for dependency search
@@ -242,10 +242,10 @@ find_package(APR REQUIRED)
 find_package(APRUtil REQUIRED)
 
 # We do not want or need OpenSSL's compatibility macros.
-add_compile_definitions("OPENSSL_NO_DEPRECATED")
+list(APPEND SERF_C_DEFINES "OPENSSL_NO_DEPRECATED")
 
 # Hide OpenSSL's _fp() API.
-add_compile_definitions("OPENSSL_NO_STDIO")
+list(APPEND SERF_C_DEFINES "OPENSSL_NO_STDIO")
 
 # Find optional dependencies
 find_package(Brotli)
@@ -265,7 +265,7 @@ if(Brotli_FOUND)
   list(APPEND SERF_PRIVATE_TARGETS Brotli::Decode)
 endif()
 if(GSSAPI_FOUND)
-  add_compile_definitions("SERF_HAVE_GSSAPI")
+  list(APPEND SERF_C_DEFINES "SERF_HAVE_GSSAPI")
   list(APPEND SERF_PRIVATE_TARGETS KRB5::GSSAPI)
 endif()
 
@@ -325,8 +325,7 @@ CheckType("OSSL_HANDSHAKE_STATE" "openss
 if(Brotli_FOUND)
   CheckType("BrotliDecoderResult" "brotli/decode.h" 
"SERF_HAVE_BROTLI_DECODER_RESULT" ${BROTLI_INCLUDES})
   # Check for the function only if the type check succeeded.
-  get_directory_property(_cdef COMPILE_DEFINITIONS)
-  if("SERF_HAVE_BROTLI_DECODER_RESULT" IN_LIST _cdef)
+  if("SERF_HAVE_BROTLI_DECODER_RESULT" IN_LIST SERF_C_DEFINES)
     CheckFunction("BrotliDecoderTakeOutput" "NULL, NULL" "SERF_HAVE_BROTLI"
                   "brotli/decode.h" ${BROTLI_INCLUDES}
                   Brotli::Decode ${SERF_STANDARD_LIBRARIES})
@@ -339,15 +338,15 @@ endif()
 
 # Process other build options
 if(DEBUG)
-  add_compile_definitions("DEBUG" "_DEBUG")
+  list(APPEND SERF_C_DEFINES "DEBUG" "_DEBUG")
 endif()
 
 if(DISABLE_LOGGING)
-  add_compile_definitions("SERF_DISABLE_LOGGING")
+  list(APPEND SERF_C_DEFINES "SERF_DISABLE_LOGGING")
 endif()
 
 if(ENABLE_SLOW_TESTS)
-  add_compile_definitions("SERF_TEST_DEFLATE_4GBPLUS_BUCKETS")
+  list(APPEND SERF_C_DEFINES "SERF_TEST_DEFLATE_4GBPLUS_BUCKETS")
 endif()
 
 # Set common compiler flags
@@ -383,14 +382,14 @@ else()
   # 'function' undefined; assuming extern returning int
   list(APPEND SERF_C_WARNINGS "/we4013")
 
-  add_compile_definitions(
+  list(APPEND SERF_C_DEFINES
     "WIN32" "WIN32_LEAN_AND_MEAN"
     "NOUSER" "NOGDI" "NONLS" "NOCRYPT"
     "_CRT_SECURE_NO_WARNINGS"
     "_CRT_NONSTDC_NO_WARNINGS"
   )
   if(SERF_WIN64)
-    add_compile_definitions("WIN64")
+    list(APPEND SERF_C_DEFINES "WIN64")
   endif()
 
   set(CMAKE_IMPORT_LIBRARY_PREFIX "${SERF_INSTALL_LIBRARIES}")
@@ -403,6 +402,7 @@ if(NOT SKIP_SHARED)
   target_compile_options(serf_shared
                          PUBLIC ${APR_CFLAGS}
                          PRIVATE ${SERF_C_WARNINGS})
+  target_compile_definitions(serf_shared PRIVATE ${SERF_C_DEFINES})
   target_include_directories(serf_shared PUBLIC ${SERF_SOURCE_DIR})
   target_link_libraries(serf_shared
                         PRIVATE ${SERF_PRIVATE_TARGETS}
@@ -436,6 +436,7 @@ if(NOT SKIP_STATIC)
   target_compile_options(serf_static
                          PUBLIC ${APR_CFLAGS}
                          PRIVATE ${SERF_C_WARNINGS})
+  target_compile_definitions(serf_static PRIVATE ${SERF_C_DEFINES})
   target_include_directories(serf_static PUBLIC ${SERF_SOURCE_DIR})
   target_link_libraries(serf_static
                         ${SERF_PRIVATE_TARGETS}
@@ -529,14 +530,13 @@ if(DOT_CLANGD)
   set(_gen_dot_clangd ON)
 endif()
 
-get_directory_property(_cdef COMPILE_DEFINITIONS)
-if("SERF_HAVE_BROTLI" IN_LIST _cdef)
+if("SERF_HAVE_BROTLI" IN_LIST SERF_C_DEFINES)
   set(_have_brotli ON)
 endif()
-if("SERF_HAVE_GSSAPI" IN_LIST _cdef)
+if("SERF_HAVE_GSSAPI" IN_LIST SERF_C_DEFINES)
   set(_have_gssapi ON)
 endif()
-if("SERF_HAVE_SSPI" IN_LIST _cdef)
+if("SERF_HAVE_SSPI" IN_LIST SERF_C_DEFINES)
   set(_have_sspi ON)
 endif()
 

Modified: serf/trunk/build/SerfChecks.cmake
URL: 
http://svn.apache.org/viewvc/serf/trunk/build/SerfChecks.cmake?rev=1926878&r1=1926877&r2=1926878&view=diff
==============================================================================
--- serf/trunk/build/SerfChecks.cmake (original)
+++ serf/trunk/build/SerfChecks.cmake Mon Jun 30 23:39:48 2025
@@ -21,10 +21,7 @@ include(CheckCSourceCompiles)
 include(CheckIncludeFile)
 include(CheckTypeSize)
 
-
-# CMake doesn't use current directory properties in the compile checks.
-get_directory_property(cdef_ COMPILE_DEFINITIONS)
-list(TRANSFORM cdef_ PREPEND "-D")
+list(TRANSFORM SERF_C_DEFINES PREPEND "-D" OUTPUT_VARIABLE cdef_)
 
 function(_CheckFunction var_ name_ args_ header_ includes_ libraries_)
   set(CMAKE_REQUIRED_DEFINITIONS ${cdef_})
@@ -74,7 +71,7 @@ macro(CheckFunction name_ args_ symbol_
   _CheckFunction("serf_feature_CheckFunction_${name_}_"
                  "${name_}" "${args_}" "${header_}" "${includes_}" "${ARGN}")
   if("${serf_feature_CheckFunction_${name_}_}")
-    add_compile_definitions("${symbol_}")
+    list(APPEND SERF_C_DEFINES "${symbol_}")
   endif()
 endmacro(CheckFunction)
 
@@ -82,7 +79,7 @@ macro(CheckNotFunction name_ args_ symbo
   _CheckFunction("serf_feature_CheckNotFunction_${name_}_"
                  "${name_}" "${args_}" "${header_}" "${includes_}" "${ARGN}")
   if(NOT "${serf_feature_CheckNotFunction_${name_}_}")
-    add_compile_definitions("${symbol_}")
+    list(APPEND SERF_C_DEFINES "${symbol_}")
   endif()
 endmacro(CheckNotFunction)
 
@@ -108,7 +105,7 @@ endfunction(_CheckHeader)
 macro(CheckHeader name_ symbol_)
   _CheckHeader("serf_feature_CheckHeader_${name_}_" "${name_}" "${ARGN}")
   if("${serf_feature_CheckHeader_${name_}_}")
-    add_compile_definitions("${symbol_}")
+    list(APPEND SERF_C_DEFINES "${symbol_}")
   endif()
 endmacro(CheckHeader)
 
@@ -141,6 +138,6 @@ endfunction(_CheckType)
 macro(CheckType name_ header_ symbol_)
   _CheckType("serf_feature_CheckType_${name_}_" "${name_}" "${header_}" 
"${ARGN}")
   if("${serf_feature_CheckType_${name_}_}")
-    add_compile_definitions("${symbol_}")
+    list(APPEND SERF_C_DEFINES "${symbol_}")
   endif()
 endmacro(CheckType)

Modified: serf/trunk/test/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/trunk/test/CMakeLists.txt?rev=1926878&r1=1926877&r2=1926878&view=diff
==============================================================================
--- serf/trunk/test/CMakeLists.txt (original)
+++ serf/trunk/test/CMakeLists.txt Mon Jun 30 23:39:48 2025
@@ -54,6 +54,7 @@ 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_definitions(${TEST_TARGET} PRIVATE ${SERF_C_DEFINES})
   target_compile_options(${TEST_TARGET} PRIVATE ${SERF_C_WARNINGS})
   target_link_libraries(${TEST_TARGET} serf_static)
 endforeach()
@@ -61,6 +62,7 @@ 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_compile_definitions(test_all PRIVATE ${SERF_C_DEFINES})
 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=1926878&r1=1926877&r2=1926878&view=diff
==============================================================================
--- serf/trunk/test/MockHTTPinC/CMakeLists.txt (original)
+++ serf/trunk/test/MockHTTPinC/CMakeLists.txt Mon Jun 30 23:39:48 2025
@@ -46,12 +46,13 @@ endif()
 mark_as_advanced(SHOW_MockHTTPinC_WARNINGS)
 
 # MockHTTP needs deprecated OpenSSL APIs
-get_directory_property(_cdef COMPILE_DEFINITIONS)
-list(REMOVE_ITEM _cdef "OPENSSL_NO_DEPRECATED")
-set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "${_cdef}")
+set(MockHTTPinC_DEFINES ${SERF_C_DEFINES})
+list(REMOVE_ITEM MockHTTPinC_DEFINES "OPENSSL_NO_DEPRECATED")
 
 add_library(mockhttpinc STATIC ${MockHTTPinC_SOURCES})
 target_compile_options(mockhttpinc PRIVATE ${MockHTTPinC_WARNINGS})
-target_compile_definitions(mockhttpinc PUBLIC "MOCKHTTP_OPENSSL")
+target_compile_definitions(mockhttpinc
+                           PUBLIC "MOCKHTTP_OPENSSL"
+                           PRIVATE ${MockHTTPinC_DEFINES})
 target_include_directories(mockhttpinc SYSTEM BEFORE
                            PRIVATE ${APR_INCLUDES} ${APRUTIL_INCLUDES})


Reply via email to