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