Author: brane Date: Mon Jun 16 18:43:17 2025 New Revision: 1926487 URL: http://svn.apache.org/viewvc?rev=1926487&view=rev Log: On the user-defined-authn branch: sync with trunk r1926486.
Modified: serf/branches/user-defined-authn/ (props changed) serf/branches/user-defined-authn/CMakeLists.txt serf/branches/user-defined-authn/build/SerfPlatform.cmake Propchange: serf/branches/user-defined-authn/ ------------------------------------------------------------------------------ Merged /serf/trunk:r1926337-1926486 Modified: serf/branches/user-defined-authn/CMakeLists.txt URL: http://svn.apache.org/viewvc/serf/branches/user-defined-authn/CMakeLists.txt?rev=1926487&r1=1926486&r2=1926487&view=diff ============================================================================== --- serf/branches/user-defined-authn/CMakeLists.txt (original) +++ serf/branches/user-defined-authn/CMakeLists.txt Mon Jun 16 18:43:17 2025 @@ -181,12 +181,15 @@ list(APPEND SOURCES if(SERF_WINDOWS) set(export_symbols_ext_ "def") set(export_symbols_gen_ SerfWindowsGenDef) + set(export_symbols_ldflag "${CMAKE_LINK_DEF_FILE_FLAG}") elseif(SERF_DARWIN) set(export_symbols_ext_ "exp") set(export_symbols_gen_ SerfMachGenExp) + set(export_symbols_ldflag "-Wl,-exported_symbols_list,") elseif(SERF_ELF_TARGET) set(export_symbols_ext_ "map") set(export_symbols_gen_ SerfElfGenMap) + set(export_symbols_ldflag "-Wl,--version-script,") endif() if(DEFINED export_symbols_gen_) @@ -207,7 +210,7 @@ if(DEFINED export_symbols_gen_) endif() if(SERF_WINDOWS) - set(SHARED_SOURCES "serf.rc" "${SERF_EXPORT_SYMBOLS}") + set(SHARED_SOURCES "serf.rc") # Static OpenSSL, APR and APR-Util need additional libraries that are not # linked by default by CMake. These will be ignored by the linker if they're @@ -403,13 +406,8 @@ if(NOT SKIP_SHARED) SOVERSION ${SERF_SOVERSION}) if(DEFINED SERF_EXPORT_SYMBOLS) add_dependencies(serf_shared serf_export_symbols) - if(SERF_DARWIN) - set_target_properties(serf_shared PROPERTIES - LINK_FLAGS "-Wl,-exported_symbols_list,${SERF_EXPORT_SYMBOLS}") - elseif(SERF_ELF_TARGET) - set_target_properties(serf_shared PROPERTIES - LINK_FLAGS "-Wl,--version-script,${SERF_EXPORT_SYMBOLS}") - endif() + set_target_properties(serf_shared PROPERTIES + LINK_FLAGS "${export_symbols_ldflag}${SERF_EXPORT_SYMBOLS}") endif() if(SERF_DARWIN AND NOT RELATIVE_RPATH) set_target_properties(serf_shared PROPERTIES Modified: serf/branches/user-defined-authn/build/SerfPlatform.cmake URL: http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfPlatform.cmake?rev=1926487&r1=1926486&r2=1926487&view=diff ============================================================================== --- serf/branches/user-defined-authn/build/SerfPlatform.cmake (original) +++ serf/branches/user-defined-authn/build/SerfPlatform.cmake Mon Jun 16 18:43:17 2025 @@ -17,9 +17,20 @@ # under the License. # =================================================================== -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") +if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") + set(SERF_WINDOWS TRUE) + set(SERF_ELF_TARGET FALSE) + if(CMAKE_GENERATOR_PLATFORM MATCHES "(x64|ARM64|IA64)") + set(SERF_WIN64 TRUE) + set(SERF_PLATFORM "Windows (64-bit)") + else() + set(SERF_WIN32 TRUE) + set(SERF_PLATFORM "Windows (32-bit)") + endif() +elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") set(SERF_UNIX TRUE) set(SERF_DARWIN TRUE) + set(SERF_ELF_TARGET FALSE) if(NOT RELATIVE_RPATH) set(CMAKE_MACOSX_RPATH FALSE) endif() @@ -31,32 +42,19 @@ if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux") set(SERF_UNIX TRUE) set(SERF_LINUX TRUE) - set(SERF_ELF_TARGET TRUE) set(SERF_PLATFORM "Linux") elseif(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD") set(SERF_UNIX TRUE) set(SERF_FREEBSD TRUE) - set(SERF_ELF_TARGET TRUE) set(SERF_PLATFORM "FreeBSD") elseif(${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD") set(SERF_UNIX TRUE) set(SERF_OPENBSD TRUE) - set(SERF_ELF_TARGET TRUE) set(SERF_PLATFORM "OpenBSD") elseif(${CMAKE_SYSTEM_NAME} MATCHES "NetBSD") set(SERF_UNIX TRUE) set(SERF_NETBSD TRUE) - set(SERF_ELF_TARGET TRUE) set(SERF_PLATFORM "NetBSD") -elseif(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - set(SERF_WINDOWS TRUE) - if(CMAKE_GENERATOR_PLATFORM MATCHES "(x64|ARM64|IA64)") - set(SERF_WIN64 TRUE) - set(SERF_PLATFORM "Windows (64-bit)") - else() - set(SERF_WIN32 TRUE) - set(SERF_PLATFORM "Windows (32-bit)") - endif() else() set(SERF_UNIX TRUE) set(SERF_PLATFORM "generic Unix") @@ -71,3 +69,34 @@ string(TOLOWER ${CMAKE_SYSTEM_PROCESSOR} string(TOLOWER ${CMAKE_SYSTEM_NAME} _system) string(TOLOWER ${CMAKE_SYSTEM_VERSION} _version) set(SERF_TARGET "${_arch}-${_system}${_version}") + +# Check if the target uses the ELF object format. We've explicitly set this to +# FALSE on Windows and Darwin; on other platforms, we build an executable file +# and check if it has the ELF magic number in the header. +if(NOT DEFINED SERF_ELF_TARGET) + # Wrap the test into a function to keep the variables scoped. + function(_CheckElfTarget var_) + set(msg "Check if the target platform uses ELF") + set(src "${CMAKE_CURRENT_BINARY_DIR}/check_elf_target.c") + set(bin "${CMAKE_CURRENT_BINARY_DIR}/check_elf_target.out") + message(STATUS "${msg}") + file(WRITE "${src}" "int main(void) { return 0; }") + try_compile(success "${CMAKE_CURRENT_BINARY_DIR}" + SOURCES "${src}" + OUTPUT_VARIABLE log + COPY_FILE "${bin}") + if(success) + file(READ "${bin}" header LIMIT 4 HEX) + if("${header}" STREQUAL "7f454c46") # 0x7f E L F + message(STATUS "${msg} - yes") + set(${var_} TRUE PARENT_SCOPE) + else() + message(STATUS "${msg} - no") + endif() + else(success) + message(STATUS "${msg} - unknown") + message(STATUS "${log}") + endif(success) + endfunction(_CheckElfTarget) + _CheckElfTarget(SERF_ELF_TARGET) +endif()