aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/apr-util
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/apr-util
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/apr-util')
-rw-r--r--vcpkg/ports/apr-util/apr.patch13
-rw-r--r--vcpkg/ports/apr-util/portfile.cmake108
-rw-r--r--vcpkg/ports/apr-util/unglue.patch17
-rw-r--r--vcpkg/ports/apr-util/use-vcpkg-expat.patch114
-rw-r--r--vcpkg/ports/apr-util/vcpkg.json24
5 files changed, 276 insertions, 0 deletions
diff --git a/vcpkg/ports/apr-util/apr.patch b/vcpkg/ports/apr-util/apr.patch
new file mode 100644
index 0000000..581907f
--- /dev/null
+++ b/vcpkg/ports/apr-util/apr.patch
@@ -0,0 +1,13 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 69e45541..19b86129 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -35,7 +35,7 @@ IF(NOT EXISTS "${APR_INCLUDE_DIR}/apr.h")
+ MESSAGE(FATAL_ERROR "APR include directory ${APR_INCLUDE_DIR} is not correct.")
+ ENDIF()
+ FOREACH(onelib ${APR_LIBRARIES})
+- IF(NOT EXISTS ${onelib})
++ IF(${onelib} MATCHES "NOTFOUND")
+ MESSAGE(FATAL_ERROR "APR library ${onelib} was not found.")
+ ENDIF()
+ ENDFOREACH()
diff --git a/vcpkg/ports/apr-util/portfile.cmake b/vcpkg/ports/apr-util/portfile.cmake
new file mode 100644
index 0000000..52b3c6c
--- /dev/null
+++ b/vcpkg/ports/apr-util/portfile.cmake
@@ -0,0 +1,108 @@
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://archive.apache.org/dist/apr/apr-util-${VERSION}.tar.bz2"
+ FILENAME "apr-util-${VERSION}.tar.bz2"
+ SHA512 8050a481eeda7532ef3751dbd8a5aa6c48354d52904a856ef9709484f4b0cc2e022661c49ddf55ec58253db22708ee0607dfa7705d9270e8fee117ae4f06a0fe
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+FEATURES
+ crypto APU_HAVE_CRYPTO
+ crypto CMAKE_REQUIRE_FIND_PACKAGE_OpenSSL
+)
+
+if(VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ PATCHES
+ use-vcpkg-expat.patch
+ apr.patch
+ unglue.patch
+ )
+
+ vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ OPTIONS_DEBUG
+ -DDISABLE_INSTALL_HEADERS=ON
+ )
+
+ vcpkg_cmake_install()
+ vcpkg_copy_pdbs()
+
+ # Upstream include/apu.h.in has:
+ # ```
+ #elif defined(APU_DECLARE_STATIC)
+ #define APU_DECLARE(type) type __stdcall
+ #define APU_DECLARE_NONSTD(type) type __cdecl
+ #define APU_DECLARE_DATA
+ #elif defined(APU_DECLARE_EXPORT)
+ #define APU_DECLARE(type) __declspec(dllexport) type __stdcall
+ #define APU_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl
+ #define APU_DECLARE_DATA __declspec(dllexport)
+ #else
+ #define APU_DECLARE(type) __declspec(dllimport) type __stdcall
+ #define APU_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
+ #define APU_DECLARE_DATA __declspec(dllimport)
+ #endif
+ # ```
+ # When building, BUILD_SHARED_LIBS sets APU_DECLARE_STATIC to 0 and APU_DECLARE_EXPORT to 1
+ # Not BUILD_SHARED_LIBS sets APU_DECLARE_STATIC to 1 and APU_DECLARE_EXPORT to 0
+ # When consuming APU_DECLARE_EXPORT is always 0 (assumed), so we need only embed the static or not setting
+ # into the resulting headers:
+ if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/apu.h" "defined(APU_DECLARE_STATIC)" "0")
+ else()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/apu.h" "defined(APU_DECLARE_STATIC)" "1")
+ endif()
+else()
+ vcpkg_extract_source_archive(
+ SOURCE_PATH
+ ARCHIVE "${ARCHIVE}"
+ )
+
+ if ("crypto" IN_LIST FEATURES)
+ set(CRYPTO_OPTIONS
+ "--with-crypto=yes"
+ "--with-openssl=${CURRENT_INSTALLED_DIR}")
+ else()
+ set(CRYPTO_OPTIONS "--with-crypto=no")
+ endif()
+
+ # To cross-compile you will need a triplet file that locates the tool chain and sets --host and --cache parameters of "./configure".
+ # The ${VCPKG_PLATFORM_TOOLSET}.cache file must have been generated on the targeted host using "./configure -C".
+ # For example, to target aarch64-linux-gnu, triplets/aarch64-linux-gnu.cmake should contain (beyond the standard content):
+ # set(VCPKG_PLATFORM_TOOLSET aarch64-linux-gnu)
+ # set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE ${MY_CROSS_DIR}/cmake/Toolchain-${VCPKG_PLATFORM_TOOLSET}.cmake)
+ # set(CONFIGURE_PARAMETER_1 --host=${VCPKG_PLATFORM_TOOLSET})
+ # set(CONFIGURE_PARAMETER_2 --cache-file=${MY_CROSS_DIR}/autoconf/${VCPKG_PLATFORM_TOOLSET}.cache)
+ if(CONFIGURE_PARAMETER_1)
+ message(STATUS "Configuring apr-util with ${CONFIGURE_PARAMETER_1} ${CONFIGURE_PARAMETER_2} ${CONFIGURE_PARAMETER_3}")
+ else()
+ message(STATUS "Configuring apr-util")
+ endif()
+
+ vcpkg_configure_make(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ "--prefix=${CURRENT_INSTALLED_DIR}"
+ ${CRYPTO_OPTIONS}
+ "--with-apr=${CURRENT_INSTALLED_DIR}/tools/apr"
+ "--with-expat=${CURRENT_INSTALLED_DIR}"
+ "${CONFIGURE_PARAMETER_1}"
+ "${CONFIGURE_PARAMETER_2}"
+ "${CONFIGURE_PARAMETER_3}"
+ )
+
+ vcpkg_install_make()
+ vcpkg_fixup_pkgconfig()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/apr-util/bin/apu-1-config" "${CURRENT_INSTALLED_DIR}" "`dirname $0`/../../..")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/apr-util/bin/apu-1-config" "${CURRENT_BUILDTREES_DIR}" "not/existing")
+ if(NOT VCPKG_BUILD_TYPE)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/apr-util/debug/bin/apu-1-config" "${CURRENT_INSTALLED_DIR}" "`dirname $0`/../../../..")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/tools/apr-util/debug/bin/apu-1-config" "${CURRENT_BUILDTREES_DIR}" "not/existing")
+ endif()
+endif()
+
+file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/apr-util/unglue.patch b/vcpkg/ports/apr-util/unglue.patch
new file mode 100644
index 0000000..5391a7c
--- /dev/null
+++ b/vcpkg/ports/apr-util/unglue.patch
@@ -0,0 +1,17 @@
+diff --git a/include/apu_version.h b/include/apu_version.h
+index e4fb2e64e..c6addf142 100644
+--- a/include/apu_version.h
++++ b/include/apu_version.h
+@@ -98,9 +98,9 @@
+
+ /** An alternative formatted string of APR's version */
+ /* macro for Win32 .rc files using numeric csv representation */
+-#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION ##, \
+- ##APU_MINOR_VERSION ##, \
+- ##APU_PATCH_VERSION
++#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION , \
++ APU_MINOR_VERSION , \
++ APU_PATCH_VERSION
+
+
+ #ifndef APU_VERSION_ONLY
diff --git a/vcpkg/ports/apr-util/use-vcpkg-expat.patch b/vcpkg/ports/apr-util/use-vcpkg-expat.patch
new file mode 100644
index 0000000..6c9fa28
--- /dev/null
+++ b/vcpkg/ports/apr-util/use-vcpkg-expat.patch
@@ -0,0 +1,114 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index fcbfc58..7781131 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -21,16 +21,14 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
+
+ FIND_PACKAGE(OpenSSL)
+
+-FIND_PACKAGE(EXPAT)
+-
+ OPTION(APU_HAVE_CRYPTO "Crypto support" OFF)
+ OPTION(APU_HAVE_ODBC "Build ODBC DBD driver" ON)
+ OPTION(APR_HAS_LDAP "LDAP support" ON)
+ OPTION(INSTALL_PDB "Install .pdb files (if generated)" ON)
+ OPTION(APR_BUILD_TESTAPR "Build the test suite" OFF)
+ OPTION(TEST_STATIC_LIBS "Test programs use APR static libraries instead of shared libraries?" OFF)
+-SET(APR_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include" CACHE STRING "Directory with APR include files")
+-SET(APR_LIBRARIES "${CMAKE_INSTALL_PREFIX}/lib/libapr-1.lib" CACHE STRING "APR library to link with")
++find_path(APR_INCLUDE_DIR apr.h)
++find_library(APR_LIBRARIES NAMES libapr-1 apr-1)
+
+ IF(NOT EXISTS "${APR_INCLUDE_DIR}/apr.h")
+ MESSAGE(FATAL_ERROR "APR include directory ${APR_INCLUDE_DIR} is not correct.")
+@@ -61,13 +59,13 @@ IF(APR_HAS_LDAP)
+ SET(apr_has_ldap_10 1)
+ ENDIF()
+
+-IF(NOT EXPAT_FOUND)
++find_package(expat)
++set(XMLLIB_INCLUDE_DIR ${EXPAT_INCLUDE_DIRS})
++set(XMLLIB_LIBRARIES ${EXPAT_LIBRARIES})
++IF(NOT XMLLIB_LIBRARIES)
+ MESSAGE(FATAL_ERROR "Expat is required, and it wasn't found!")
+ ENDIF()
+
+-SET(XMLLIB_INCLUDE_DIR ${EXPAT_INCLUDE_DIRS})
+-SET(XMLLIB_LIBRARIES ${EXPAT_LIBRARIES})
+-
+ SET(LDAP_LIBRARIES)
+ IF(APR_HAS_LDAP)
+ SET(LDAP_LIBRARIES wldap32)
+@@ -229,17 +227,21 @@ SET(dbd_drivers)
+ # Note: The WINNT definition on some targets is used only by libaprutil.rc.
+
+ # libaprutil-1 is shared, aprutil-1 is static
++if(BUILD_SHARED_LIBS)
+ ADD_LIBRARY(libaprutil-1 SHARED ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED} libaprutil.rc)
+ SET(install_targets ${install_targets} libaprutil-1)
+ SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/libaprutil-1.pdb)
+ TARGET_LINK_LIBRARIES(libaprutil-1 ${APR_LIBRARIES} ${XMLLIB_LIBRARIES})
+ SET_TARGET_PROPERTIES(libaprutil-1 PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_EXPORT;APR_DECLARE_IMPORT;XML_STATIC;WINNT")
+
++else(BUILD_SHARED_LIBS)
+ ADD_LIBRARY(aprutil-1 STATIC ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED})
+ SET(install_targets ${install_targets} aprutil-1)
+ TARGET_LINK_LIBRARIES(aprutil-1 ${APR_LIBRARIES} ${XMLLIB_LIBRARIES})
+ SET_TARGET_PROPERTIES(aprutil-1 PROPERTIES COMPILE_DEFINITIONS "APU_DECLARE_STATIC;APR_DECLARE_STATIC;APU_DSO_MODULE_BUILD;XML_STATIC")
++endif()
+
++if(BUILD_SHARED_LIBS)
+ IF(APU_HAVE_CRYPTO)
+ IF(NOT OPENSSL_FOUND)
+ MESSAGE(FATAL_ERROR "Only OpenSSL-based crypto is currently implemented in the cmake build")
+@@ -265,7 +267,7 @@ IF(APU_HAVE_ODBC)
+ ENDIF()
+
+ IF(APR_HAS_LDAP)
+- ADD_LIBRARY(apr_ldap-1 SHARED ldap/apr_ldap_init.c ldap/apr_ldap_option.c
++ ADD_LIBRARY(apr_ldap-1 SHARED ldap/apr_ldap_init.c ldap/apr_ldap_option.c
+ ldap/apr_ldap_rebind.c libaprutil.rc)
+ SET(install_targets ${install_targets} apr_ldap-1)
+ SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/apr_ldap-1.pdb)
+@@ -276,6 +278,7 @@ IF(APR_HAS_LDAP)
+ ELSE()
+ SET(apr_ldap_libraries)
+ ENDIF()
++endif()
+
+ IF(APR_BUILD_TESTAPR)
+ ENABLE_TESTING()
+@@ -283,13 +286,13 @@ IF(APR_BUILD_TESTAPR)
+ ADD_CUSTOM_TARGET(check COMMAND ${CMAKE_CTEST_COMMAND} --verbose)
+
+ # copy data files to build directory so that we can run programs from there
+- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory
++ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E make_directory
+ ${PROJECT_BINARY_DIR}/data)
+- EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
++ EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E copy_if_different
+ ${PROJECT_SOURCE_DIR}/test/data/billion-laughs.xml
+ ${PROJECT_BINARY_DIR}/data/billion-laughs.xml)
+
+- IF(TEST_STATIC_LIBS)
++ IF(NOT BUILD_SHARED_LIBS)
+ SET(whichapr aprutil-1)
+ SET(apiflag "-DAPR_DECLARE_STATIC -DAPU_DECLARE_STATIC")
+ ELSE()
+@@ -325,13 +328,9 @@ INSTALL(TARGETS ${install_targets}
+ ARCHIVE DESTINATION lib
+ )
+
+-IF(INSTALL_PDB)
+- INSTALL(FILES ${install_bin_pdb}
+- DESTINATION bin
+- CONFIGURATIONS RelWithDebInfo Debug)
+-ENDIF()
+-
+-INSTALL(FILES ${APR_PUBLIC_HEADERS_STATIC} ${APR_PUBLIC_HEADERS_GENERATED} DESTINATION include)
++if(NOT DISABLE_INSTALL_HEADERS)
++ INSTALL(FILES ${APR_PUBLIC_HEADERS_STATIC} ${APR_PUBLIC_HEADERS_GENERATED} DESTINATION include)
++endif()
+
+ STRING(TOUPPER "${CMAKE_BUILD_TYPE}" buildtype)
+ MESSAGE(STATUS "")
diff --git a/vcpkg/ports/apr-util/vcpkg.json b/vcpkg/ports/apr-util/vcpkg.json
new file mode 100644
index 0000000..f1c815b
--- /dev/null
+++ b/vcpkg/ports/apr-util/vcpkg.json
@@ -0,0 +1,24 @@
+{
+ "name": "apr-util",
+ "version": "1.6.3",
+ "description": "Apache Portable Runtime (APR) project mission is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementation",
+ "homepage": "https://apr.apache.org/",
+ "license": "Apache-2.0",
+ "dependencies": [
+ "apr",
+ "expat",
+ {
+ "name": "vcpkg-cmake",
+ "host": true,
+ "platform": "windows"
+ }
+ ],
+ "features": {
+ "crypto": {
+ "description": "Crypto support",
+ "dependencies": [
+ "openssl"
+ ]
+ }
+ }
+}