Author: brane
Date: Fri May 30 14:18:57 2025
New Revision: 1925983

URL: http://svn.apache.org/viewvc?rev=1925983&view=rev
Log:
Make the CMake summary more correct by looking at preprocessor defines. The
mere fact that we found a library is not enough, nor is a platform check.

* CMakeLists.txt: Use add_compile_definitions instead of add_definitions.
   In the summary, look at the COMPILE_DEFINITIONS property to see if
   we'll build support for Brotli, GSSAPI, SSPI.
* build/SerfChecks.cmake: Use add_compile_definitions, as above.

Modified:
    serf/trunk/CMakeLists.txt
    serf/trunk/build/SerfChecks.cmake

Modified: serf/trunk/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/trunk/CMakeLists.txt?rev=1925983&r1=1925982&r2=1925983&view=diff
==============================================================================
--- serf/trunk/CMakeLists.txt (original)
+++ serf/trunk/CMakeLists.txt Fri May 30 14:18:57 2025
@@ -212,7 +212,7 @@ if(SERF_WINDOWS)
       "secur32.lib"
       "ws2_32.lib"
   )
-  add_definitions("-DSERF_HAVE_SSPI")
+  add_compile_definitions("SERF_HAVE_SSPI")
 endif(SERF_WINDOWS)
 
 # Process build options for dependency search
@@ -243,7 +243,7 @@ if(BROTLI_FOUND)
   list(APPEND SERF_PRIVATE_TARGETS BROTLI::DECODE)
 endif()
 if(GSSAPI_FOUND)
-  add_definitions("-DSERF_HAVE_GSSAPI")
+  add_compile_definitions("SERF_HAVE_GSSAPI")
   list(APPEND SERF_PRIVATE_TARGETS KRB5::GSSAPI)
 endif()
 
@@ -281,8 +281,12 @@ CheckFunctionMacro("SSL_library_init" "S
 CheckHeader("stdbool.h" "HAVE_STDBOOL_H=1")
 CheckType("OSSL_HANDSHAKE_STATE" "openssl/ssl.h" 
"SERF_HAVE_OSSL_HANDSHAKE_STATE" ${OPENSSL_INCLUDE_DIR})
 if(BROTLI_FOUND)
-  CheckType("BrotliDecoderResult" "brotli/decode.h" 
"SERF_HAVE_BROTLI_DECODE_H" ${BROTLI_INCLUDES})
-  CheckFunction("BrotliDecoderTakeOutput" "SERF_HAVE_BROTLI" BROTLI::DECODE 
${SERF_STANDARD_LIBRARIES})
+  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)
+    CheckFunction("BrotliDecoderTakeOutput" "SERF_HAVE_BROTLI" BROTLI::DECODE 
${SERF_STANDARD_LIBRARIES})
+  endif()
 endif()
 
 if(CMAKE_COMPILER_IS_GNUCC OR (CMAKE_C_COMPILER_ID MATCHES "Clang"))
@@ -291,19 +295,19 @@ endif()
 
 # Process other build options
 if(DEBUG)
-  add_definitions("-DDEBUG" "-D_DEBUG")
+  add_compile_definitions("DEBUG" "_DEBUG")
 endif()
 
 if(DISABLE_LOGGING)
-  add_definitions("-DSERF_DISABLE_LOGGING")
+  add_compile_definitions("SERF_DISABLE_LOGGING")
 endif()
 
 if(ENABLE_SLOW_TESTS)
-  add_definitions("-DSERF_TEST_DEFLATE_4GBPLUS_BUCKETS")
+  add_compile_definitions("SERF_TEST_DEFLATE_4GBPLUS_BUCKETS")
 endif()
 
 # Define OPENSSL_NO_STDIO to prevent using _fp() API.
-add_definitions("-DOPENSSL_NO_STDIO")
+add_compile_definitions("OPENSSL_NO_STDIO")
 
 # Set common compiler flags
 if(NOT MSVC)
@@ -322,18 +326,17 @@ else()
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4127")
   # Assignment within conditional expression
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4706")
-
   # 'function' undefined; assuming extern returning int
   set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /we4013")
 
-  add_definitions(
-    "/DWIN32" "/DWIN32_LEAN_AND_MEAN"
-    "/DNOUSER" "/DNOGDI" "/DNONLS" "/DNOCRYPT"
-    "/D_CRT_SECURE_NO_WARNINGS"
-    "/D_CRT_NONSTDC_NO_WARNINGS"
+  add_compile_definitions(
+    "WIN32" "WIN32_LEAN_AND_MEAN"
+    "NOUSER" "NOGDI" "NONLS" "NOCRYPT"
+    "_CRT_SECURE_NO_WARNINGS"
+    "_CRT_NONSTDC_NO_WARNINGS"
   )
   if(SERF_WIN64)
-    add_definitions("/DWIN64")
+    add_compile_definitions("WIN64")
   endif()
 
   set(CMAKE_IMPORT_LIBRARY_PREFIX "${SERF_INSTALL_LIBRARIES}")
@@ -435,27 +438,33 @@ endif()
 
 
 # Summary
-macro(_onoff _var _value _negate)
-  if(${_negate})
-    if(NOT ${_value})
-      set(${_var} ON)
-    else()
-      set(${_var} OFF)
-    endif()
-  else()
-    if(${_value})
-      set(${_var} ON)
-    else()
-      set(${_var} OFF)
-    endif()
-  endif()
-endmacro(_onoff)
-_onoff(_build_shared SKIP_SHARED  TRUE)
-_onoff(_build_static SKIP_STATIC  TRUE)
-_onoff(_build_tests  SKIP_TESTS   TRUE)
-_onoff(_have_brotli  BROTLI_FOUND FALSE)
-_onoff(_have_gssapi  GSSAPI_FOUND FALSE)
-_onoff(_have_sspi    SERF_WINDOWS FALSE)
+set(_build_shared OFF)
+set(_build_static OFF)
+set(_build_tests OFF)
+set(_have_brotli OFF)
+set(_have_gssapi OFF)
+set(_have_sspi OFF)
+
+if(NOT SKIP_SHARED)
+  set(_build_shared ON)
+endif()
+if(NOT SKIP_STATIC)
+  set(_build_static ON)
+endif()
+if(NOT SKIP_TESTS)
+  set(_build_tests ON)
+endif()
+
+get_directory_property(_cdef COMPILE_DEFINITIONS)
+if("SERF_HAVE_BROTLI" IN_LIST _cdef)
+  set(_have_brotli ON)
+endif()
+if("SERF_HAVE_GSSAPI" IN_LIST _cdef)
+  set(_have_gssapi ON)
+endif()
+if("SERF_HAVE_SSPI" IN_LIST _cdef)
+  set(_have_sspi ON)
+endif()
 
 message(STATUS "Summary:")
 message(STATUS "  Version ................... : ${SERF_VERSION}")

Modified: serf/trunk/build/SerfChecks.cmake
URL: 
http://svn.apache.org/viewvc/serf/trunk/build/SerfChecks.cmake?rev=1925983&r1=1925982&r2=1925983&view=diff
==============================================================================
--- serf/trunk/build/SerfChecks.cmake (original)
+++ serf/trunk/build/SerfChecks.cmake Fri May 30 14:18:57 2025
@@ -39,16 +39,16 @@ function(_CheckFunction var_ name_ libra
 endfunction(_CheckFunction)
 
 macro(CheckFunction name_ symbol_)
-  _CheckFunction("serf_feature_CheckFunction_${name}_" "${name_}" "${ARGN}")
-  if("${serf_feature_CheckFunction_${name}_}")
-    add_definitions("-D${symbol_}")
+  _CheckFunction("serf_feature_CheckFunction_${name_}_" "${name_}" "${ARGN}")
+  if("${serf_feature_CheckFunction_${name_}_}")
+    add_compile_definitions("${symbol_}")
   endif()
 endmacro(CheckFunction)
 
 macro(CheckNotFunction name_ symbol_)
-  _CheckFunction("serf_feature_CheckNotFunction_${name}_" "${name_}" "${ARGN}")
-  if(NOT "${serf_feature_CheckNotFunction_${name}_}")
-    add_definitions("-D${symbol_}")
+  _CheckFunction("serf_feature_CheckNotFunction_${name_}_" "${name_}" 
"${ARGN}")
+  if(NOT "${serf_feature_CheckNotFunction_${name_}_}")
+    add_compile_definitions("${symbol_}")
   endif()
 endmacro(CheckNotFunction)
 
@@ -70,13 +70,13 @@ function(_CheckSymbol var_ name_ header_
 endfunction(_CheckSymbol)
 
 macro(CheckFunctionMacro name_ symbol_ header_ includes_)
-  _CheckFunction("serf_feature_CheckFunctionMacro_${name}_" "${name_}" 
"${ARGN}")
-  if("${serf_feature_CheckFunctionMacro_${name}_}")
-    add_definitions("-D${symbol_}")
-  else()
-    _CheckSymbol("serf_feature_CheckFunctionMacro_${name}_" "${name_}" 
"${header_}" "${includes_}")
-    if("${serf_feature_CheckFunctionMacro_${name}_}")
-      add_definitions("-D${symbol_}")
+  _CheckFunction("serf_feature_CheckFunctionMacro_${name_}_" "${name_}" 
"${ARGN}")
+  if("${serf_feature_CheckFunctionMacro_${name_}_}")
+    add_compile_definitions("${symbol_}")
+  else()
+    _CheckSymbol("serf_feature_CheckFunctionMacro_${name_}_" "${name_}" 
"${header_}" "${includes_}")
+    if("${serf_feature_CheckFunctionMacro_${name_}_}")
+      add_compile_definitions("${symbol_}")
     endif()
   endif()
 endmacro(CheckFunctionMacro)
@@ -99,9 +99,9 @@ function(_CheckHeader var_ name_ include
 endfunction(_CheckHeader)
 
 macro(CheckHeader name_ symbol_)
-  _CheckHeader("serf_feature_CheckHeader_${name}_" "${name_}" "${ARGN}")
-  if("${serf_feature_CheckHeader_${name}_}")
-    add_definitions("-D${symbol_}")
+  _CheckHeader("serf_feature_CheckHeader_${name_}_" "${name_}" "${ARGN}")
+  if("${serf_feature_CheckHeader_${name_}_}")
+    add_compile_definitions("${symbol_}")
   endif()
 endmacro(CheckHeader)
 
@@ -130,8 +130,8 @@ function(_CheckType var_ name_ header_ i
 endfunction(_CheckType)
 
 macro(CheckType name_ header_ symbol_)
-  _CheckType("serf_feature_CheckType_${name}_" "${name_}" "${header_}" 
"${ARGN}")
-  if("${serf_feature_CheckType_${name}_}")
-    add_definitions("-D${symbol_}")
+  _CheckType("serf_feature_CheckType_${name_}_" "${name_}" "${header_}" 
"${ARGN}")
+  if("${serf_feature_CheckType_${name_}_}")
+    add_compile_definitions("${symbol_}")
   endif()
 endmacro(CheckType)


Reply via email to