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})