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


Reply via email to