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