Author: brane
Date: Sat Jun  7 00:38:40 2025
New Revision: 1926204

URL: http://svn.apache.org/viewvc?rev=1926204&view=rev
Log:
On the user-defined-authn branch: sync with trunk r1926203.

Modified:
    serf/branches/user-defined-authn/   (props changed)
    serf/branches/user-defined-authn/.github/workflows/windows-cmake.yml
    serf/branches/user-defined-authn/CMakeLists.txt
    serf/branches/user-defined-authn/build/SerfElfGenMap.cmake
    serf/branches/user-defined-authn/build/SerfMacOS.cmake
    serf/branches/user-defined-authn/build/SerfMachGenExp.cmake
    serf/branches/user-defined-authn/build/SerfPlatform.cmake
    serf/branches/user-defined-authn/build/SerfWindowsGenDef.cmake

Propchange: serf/branches/user-defined-authn/
------------------------------------------------------------------------------
  Merged /serf/trunk:r1926147-1926203

Modified: serf/branches/user-defined-authn/.github/workflows/windows-cmake.yml
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/.github/workflows/windows-cmake.yml?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/.github/workflows/windows-cmake.yml 
(original)
+++ serf/branches/user-defined-authn/.github/workflows/windows-cmake.yml Sat 
Jun  7 00:38:40 2025
@@ -34,13 +34,27 @@ jobs:
               core.exportVariable('ACTIONS_CACHE_URL', 
process.env.ACTIONS_CACHE_URL || '');
               core.exportVariable('ACTIONS_RUNTIME_TOKEN', 
process.env.ACTIONS_RUNTIME_TOKEN || '');
 
+      - name: Set build environment for x86
+        uses: actions/github-script@v7
+        with:
+          script: |
+              core.exportVariable('SERF_WIN_PLATFORM', 'Win32');
+        if: startsWith(matrix.triplet, 'x86-')
+
+      - name: Set build environment for x64
+        uses: actions/github-script@v7
+        with:
+          script: |
+              core.exportVariable('SERF_WIN_PLATFORM', 'x64');
+        if: startsWith(matrix.triplet, 'x64-')
+
       - name: Install dependencies
         run: vcpkg install --triplet ${{ matrix.triplet }} apr apr-util zlib 
openssl brotli
 
       - uses: actions/checkout@v3
 
       - name: Configure CMake
-        run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{ 
matrix.build-type }} -G "${{ matrix.generator }}" 
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake 
-DAPR_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DAPRUtil_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DOPENSSL_ROOT_DIR=C:/vcpkg/installed/${{ matrix.triplet }} 
-DZLIB_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DBrotli_ROOT=C:/vcpkg/installed/${{ matrix.triplet }}
+        run: cmake -B ${{github.workspace}}/build -G "${{ matrix.generator }}" 
-DCMAKE_GENERATOR_PLATFORM=${{ env.SERF_WIN_PLATFORM }} 
-DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake 
-DAPR_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DAPRUtil_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DOPENSSL_ROOT_DIR=C:/vcpkg/installed/${{ matrix.triplet }} 
-DZLIB_ROOT=C:/vcpkg/installed/${{ matrix.triplet }} 
-DBrotli_ROOT=C:/vcpkg/installed/${{ matrix.triplet }}
 
       - name: Build
         run: cmake --build ${{github.workspace}}/build --config ${{ 
matrix.build-type }}

Modified: serf/branches/user-defined-authn/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/CMakeLists.txt?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/CMakeLists.txt (original)
+++ serf/branches/user-defined-authn/CMakeLists.txt Sat Jun  7 00:38:40 2025
@@ -48,15 +48,6 @@ message(WARNING
         "Some features are not supported and the build "
         "has not been tested on many supported platforms.")
 
-
-# Build dependencies
-option(APR_ROOT:PATH "Path to APR's install area" "")
-option(APRUtil_ROOT:PATH "Path to APR-Util's install area" "")
-option(OPENSSL_ROOT_DIR:PATH "Path to OpenSSL's install area" "")
-option(ZLIB_ROOT:PATH "Path to zlib's install area" "")
-option(Brotli_ROOT:PATH "Path to Brotli's install area" "")
-option(GSSAPI_ROOT:PATH "Path to GSSAPI's install area" "")
-
 # Build options
 option(DEBUG "Enable debugging info and strict compile warnings" OFF)
 option(DOT_CLANGD "Generate a .clangd file at the root of the source tree" OFF)
@@ -82,11 +73,11 @@ if(USE_HOMEBREW AND USE_MACPORTS)
 endif()
 
 # Initialize the build type if it was not set on the command line.
-if("${CMAKE_BUILD_TYPE}" STREQUAL "")
+if(NOT CMAKE_BUILD_TYPE)
   if(DEBUG)
-    set(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Default to debug build." FORCE)
+    set(CMAKE_BUILD_TYPE Debug CACHE STRING "Default to debug build." FORCE)
   else()
-    set(CMAKE_BUILD_TYPE RELEASE CACHE STRING "Default to release build." 
FORCE)
+    set(CMAKE_BUILD_TYPE Release CACHE STRING "Default to release build." 
FORCE)
   endif()
 endif()
 
@@ -187,22 +178,37 @@ list(APPEND SOURCES
     "protocols/http2_stream.c"
 )
 
+# Generate lists of symbols to export from shared libraries.
 if(SERF_WINDOWS)
-  # Generate the .def file for the Windows DLL import library.
-  set(SERF_DEF_FILE 
"${CMAKE_CURRENT_BINARY_DIR}/libserf-${SERF_MAJOR_VERSION}.def")
+  set(export_symbols_ext_ "def")
+  set(export_symbols_gen_ SerfWindowsGenDef)
+elseif(SERF_DARWIN)
+  set(export_symbols_ext_ "exp")
+  set(export_symbols_gen_ SerfMachGenExp)
+elseif(SERF_ELF_TARGET)
+  set(export_symbols_ext_ "map")
+  set(export_symbols_gen_ SerfElfGenMap)
+endif()
+
+if(DEFINED export_symbols_gen_)
+  set(SERF_EXPORT_SYMBOLS 
"${CMAKE_CURRENT_BINARY_DIR}/libserf-${SERF_MAJOR_VERSION}.${export_symbols_ext_}")
   add_custom_command(
-    OUTPUT "${SERF_DEF_FILE}"
+    OUTPUT "${SERF_EXPORT_SYMBOLS}"
     DEPENDS ${HEADERS}
     COMMAND ${CMAKE_COMMAND}
             -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}"
             -DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}"
             -DSERF_EXPORT_BLACKLIST="${EXPORTS_BLACKLIST}"
             -DSERF_EXPORT_HEADERS="${HEADERS}"
-            -DSERF_DEF_FILE="${SERF_DEF_FILE}"
-            -P "build/SerfWindowsGenDef.cmake"
+            -DSERF_EXPORT_SYMBOLS="${SERF_EXPORT_SYMBOLS}"
+            -P "build/${export_symbols_gen_}.cmake"
     WORKING_DIRECTORY "${SERF_SOURCE_DIR}"
   )
-  set(SHARED_SOURCES "serf.rc" "${SERF_DEF_FILE}")
+  add_custom_target(serf_export_symbols DEPENDS "${SERF_EXPORT_SYMBOLS}")
+endif()
+
+if(SERF_WINDOWS)
+  set(SHARED_SOURCES "serf.rc" "${SERF_EXPORT_SYMBOLS}")
 
   # 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
@@ -215,53 +221,17 @@ if(SERF_WINDOWS)
       "ws2_32.lib"
   )
   add_compile_definitions("SERF_HAVE_SSPI")
-endif(SERF_WINDOWS)
-
-if(SERF_DARWIN)
-  set(SERF_EXP_FILE 
"${CMAKE_CURRENT_BINARY_DIR}/libserf-${SERF_MAJOR_VERSION}.exp")
-  add_custom_command(
-    OUTPUT "${SERF_EXP_FILE}"
-    DEPENDS ${HEADERS}
-    COMMAND ${CMAKE_COMMAND}
-            -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}"
-            -DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}"
-            -DSERF_EXPORT_BLACKLIST="${EXPORTS_BLACKLIST}"
-            -DSERF_EXPORT_HEADERS="${HEADERS}"
-            -DSERF_EXP_FILE="${SERF_EXP_FILE}"
-            -P "build/SerfMachGenExp.cmake"
-    WORKING_DIRECTORY "${SERF_SOURCE_DIR}"
-  )
-  set(SHARED_SOURCES "${SERF_EXP_FILE}")
-endif(SERF_DARWIN)
-
-if(SERF_ELF_TARGET)
-  set(SERF_MAP_FILE 
"${CMAKE_CURRENT_BINARY_DIR}/libserf-${SERF_MAJOR_VERSION}.map")
-  add_custom_command(
-    OUTPUT "${SERF_MAP_FILE}"
-    DEPENDS ${HEADERS}
-    COMMAND ${CMAKE_COMMAND}
-            -DCMAKE_SYSTEM_NAME="${CMAKE_SYSTEM_NAME}"
-            -DCMAKE_MODULE_PATH="${CMAKE_MODULE_PATH}"
-            -DSERF_EXPORT_BLACKLIST="${EXPORTS_BLACKLIST}"
-            -DSERF_EXPORT_HEADERS="${HEADERS}"
-            -DSERF_MAP_FILE="${SERF_MAP_FILE}"
-            -P "build/SerfElfGenMap.cmake"
-    WORKING_DIRECTORY "${SERF_SOURCE_DIR}"
-  )
-  set(SHARED_SOURCES "${SERF_MAP_FILE}")
-endif(SERF_ELF_TARGET)
+endif()
 
 # Process build options for dependency search
-if(SERF_WINDOWS)
-  if(EXPAT)
+if(EXPAT)
+  if(SERF_WINDOWS)
     set(PC_EXPAT_INCLUDE_DIRS "${EXPAT}/include")
     set(PC_EXPAT_LIBRARY_DIRS "${EXPAT}/lib")
-  endif(EXPAT)
-else(SERF_WINDOWS)
-  if(EXPAT)
+  else(SERF_WINDOWS)
     message(WARNING "option EXPAT is not implemented on this platform")
-  endif(EXPAT)
-endif(SERF_WINDOWS)
+  endif(SERF_WINDOWS)
+endif(EXPAT)
 
 # Find required dependencies
 find_package(OpenSSL REQUIRED)
@@ -410,19 +380,21 @@ if(NOT SKIP_SHARED)
   set_target_properties(serf_shared PROPERTIES
                         VERSION ${SERF_VERSION}
                         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()
+  endif()
   if(SERF_DARWIN AND NOT RELATIVE_RPATH)
     set_target_properties(serf_shared PROPERTIES
       INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${SERF_INSTALL_LIBRARIES}")
   endif()
-  if(SERF_DARWIN)
-    set_target_properties(serf_shared PROPERTIES
-      LINK_FLAGS "-Wl,-exported_symbols_list,${SERF_EXP_FILE}")
-  endif()
-  if(SERF_ELF_TARGET)
-    set_target_properties(serf_shared PROPERTIES
-      LINK_FLAGS "-Wl,--version-script,${SERF_MAP_FILE}")
-  endif()
-  set(SERF_TARGETS "serf_shared")
+  list(APPEND SERF_TARGETS serf_shared)
 
   if(SERF_WINDOWS)
     string(TOLOWER "${CMAKE_BUILD_TYPE}" config)
@@ -441,7 +413,7 @@ if(NOT SKIP_STATIC)
                         ${SERF_PRIVATE_TARGETS}
                         ${SERF_PUBLIC_TARGETS}
                         ${SERF_STANDARD_LIBRARIES})
-  list(APPEND SERF_TARGETS "serf_static")
+  list(APPEND SERF_TARGETS serf_static)
 endif()
 
 set_target_properties(${SERF_TARGETS}

Modified: serf/branches/user-defined-authn/build/SerfElfGenMap.cmake
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfElfGenMap.cmake?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/build/SerfElfGenMap.cmake (original)
+++ serf/branches/user-defined-authn/build/SerfElfGenMap.cmake Sat Jun  7 
00:38:40 2025
@@ -25,13 +25,13 @@ separate_arguments(SERF_EXPORT_BLACKLIST
 separate_arguments(SERF_EXPORT_HEADERS)
 
 SerfFindExports("${SERF_EXPORT_BLACKLIST}" exports_ ${SERF_EXPORT_HEADERS})
-file(WRITE "${SERF_MAP_FILE}"
+file(WRITE "${SERF_EXPORT_SYMBOLS}"
      "{\n"
      "  global:\n")
 foreach(symbol_ ${exports_})
-  file(APPEND "${SERF_MAP_FILE}" "    ${symbol_};\n")
+  file(APPEND "${SERF_EXPORT_SYMBOLS}" "    ${symbol_};\n")
 endforeach()
-file(APPEND "${SERF_MAP_FILE}"
+file(APPEND "${SERF_EXPORT_SYMBOLS}"
      "  local:\n"
      "    *;\n"
      "};\n")

Modified: serf/branches/user-defined-authn/build/SerfMacOS.cmake
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfMacOS.cmake?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/build/SerfMacOS.cmake (original)
+++ serf/branches/user-defined-authn/build/SerfMacOS.cmake Sat Jun  7 00:38:40 
2025
@@ -83,7 +83,7 @@ endfunction(_serf_macos__check_homebrew)
 
 function(_serf_macos__find_homebrew_package package variable docstring)
   # Don't override user's provided values.
-  if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_HOMEBREW})
+  if(${SERF_MACOS__HAS_HOMEBREW} AND NOT ${variable})
     set(package_alias "${package}")
     if("${package_alias}" STREQUAL "gssapi")
       # The Homebrew package is called 'krb5'
@@ -140,7 +140,7 @@ endfunction(_serf_macos__check_macports)
 
 function(_serf_macos__find_macports_package package variable docstring)
   # Don't override user's provided values.
-  if("${${variable}}" STREQUAL "" AND ${SERF_MACOS__HAS_MACPORTS})
+  if(${SERF_MACOS__HAS_MACPORTS} AND NOT ${variable})
     set(package_alias "${package}")
     if("${package_alias}" STREQUAL "gssapi")
       # The MacPorts package is called 'kerberos5'

Modified: serf/branches/user-defined-authn/build/SerfMachGenExp.cmake
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfMachGenExp.cmake?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/build/SerfMachGenExp.cmake (original)
+++ serf/branches/user-defined-authn/build/SerfMachGenExp.cmake Sat Jun  7 
00:38:40 2025
@@ -25,7 +25,7 @@ separate_arguments(SERF_EXPORT_BLACKLIST
 separate_arguments(SERF_EXPORT_HEADERS)
 
 SerfFindExports("${SERF_EXPORT_BLACKLIST}" exports_ ${SERF_EXPORT_HEADERS})
-file(WRITE "${SERF_EXP_FILE}" "# Exported symbols\n")
+file(WRITE "${SERF_EXPORT_SYMBOLS}" "# Exported symbols\n")
 foreach(symbol_ ${exports_})
-  file(APPEND "${SERF_EXP_FILE}" "_${symbol_}\n")
+  file(APPEND "${SERF_EXPORT_SYMBOLS}" "_${symbol_}\n")
 endforeach()

Modified: serf/branches/user-defined-authn/build/SerfPlatform.cmake
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfPlatform.cmake?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/build/SerfPlatform.cmake (original)
+++ serf/branches/user-defined-authn/build/SerfPlatform.cmake Sat Jun  7 
00:38:40 2025
@@ -18,6 +18,7 @@
 # ===================================================================
 
 if(${CMAKE_SYSTEM_NAME} MATCHES  "Darwin")
+  set(SERF_UNIX TRUE)
   set(SERF_DARWIN TRUE)
   if(NOT RELATIVE_RPATH)
     set(CMAKE_MACOSX_RPATH FALSE)
@@ -28,9 +29,20 @@ if(${CMAKE_SYSTEM_NAME} MATCHES  "Darwin
     set(SERF_PLATFORM "Darwin")
   endif()
 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 "Windows")
   set(SERF_WINDOWS TRUE)
   if(CMAKE_GENERATOR_PLATFORM MATCHES "(x64|ARM64|IA64)")

Modified: serf/branches/user-defined-authn/build/SerfWindowsGenDef.cmake
URL: 
http://svn.apache.org/viewvc/serf/branches/user-defined-authn/build/SerfWindowsGenDef.cmake?rev=1926204&r1=1926203&r2=1926204&view=diff
==============================================================================
--- serf/branches/user-defined-authn/build/SerfWindowsGenDef.cmake (original)
+++ serf/branches/user-defined-authn/build/SerfWindowsGenDef.cmake Sat Jun  7 
00:38:40 2025
@@ -25,7 +25,7 @@ separate_arguments(SERF_EXPORT_BLACKLIST
 separate_arguments(SERF_EXPORT_HEADERS)
 
 SerfFindExports("${SERF_EXPORT_BLACKLIST}" exports_ ${SERF_EXPORT_HEADERS})
-file(WRITE "${SERF_DEF_FILE}" "EXPORTS\n")
+file(WRITE "${SERF_EXPORT_SYMBOLS}" "EXPORTS\n")
 foreach(symbol_ ${exports_})
-  file(APPEND "${SERF_DEF_FILE}" "${symbol_}\n")
+  file(APPEND "${SERF_EXPORT_SYMBOLS}" "${symbol_}\n")
 endforeach()


Reply via email to