diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libarchive | |
Diffstat (limited to 'vcpkg/ports/libarchive')
| -rw-r--r-- | vcpkg/ports/libarchive/fix-buildsystem.patch | 30 | ||||
| -rw-r--r-- | vcpkg/ports/libarchive/fix-deps.patch | 259 | ||||
| -rw-r--r-- | vcpkg/ports/libarchive/portfile.cmake | 108 | ||||
| -rw-r--r-- | vcpkg/ports/libarchive/usage | 9 | ||||
| -rw-r--r-- | vcpkg/ports/libarchive/vcpkg-cmake-wrapper.cmake.in | 72 | ||||
| -rw-r--r-- | vcpkg/ports/libarchive/vcpkg.json | 78 |
6 files changed, 556 insertions, 0 deletions
diff --git a/vcpkg/ports/libarchive/fix-buildsystem.patch b/vcpkg/ports/libarchive/fix-buildsystem.patch new file mode 100644 index 0000000..9588acc --- /dev/null +++ b/vcpkg/ports/libarchive/fix-buildsystem.patch @@ -0,0 +1,30 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2917839..6cf7cec 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -411,6 +411,7 @@ IF(WIN32 AND NOT CMAKE_CL_64 AND NOT CYGWIN) + SET(__GNUWIN32PATH "C:/Program Files/GnuWin32") + ENDIF(WIN32 AND NOT CMAKE_CL_64 AND NOT CYGWIN) + IF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}") ++ELSEIF(0) + # You have to add a path available DLL file into PATH environment variable. + # Maybe DLL path is "C:/Program Files/GnuWin32/bin". + # The zlib and the bzip2 Setup program have installed programs and DLLs into +diff --git a/libarchive/CMakeLists.txt b/libarchive/CMakeLists.txt +index fd997db..415bd89 100644 +--- a/libarchive/CMakeLists.txt ++++ b/libarchive/CMakeLists.txt +@@ -273,11 +273,12 @@ IF(ENABLE_INSTALL) + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) +- ENDIF(BUILD_SHARED_LIBS) ++ ELSE() + INSTALL(TARGETS archive_static + RUNTIME DESTINATION bin + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++ ENDIF(BUILD_SHARED_LIBS) + INSTALL_MAN(${libarchive_MANS}) + INSTALL(FILES ${include_HEADERS} DESTINATION include) + ENDIF() diff --git a/vcpkg/ports/libarchive/fix-deps.patch b/vcpkg/ports/libarchive/fix-deps.patch new file mode 100644 index 0000000..2339a2e --- /dev/null +++ b/vcpkg/ports/libarchive/fix-deps.patch @@ -0,0 +1,259 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 38664d2..d0882b2 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -439,6 +439,8 @@ IF(0) + ENDIF(DEFINED __GNUWIN32PATH AND EXISTS "${__GNUWIN32PATH}") + + SET(ADDITIONAL_LIBS "") ++SET(LIBARCHIVE_LIBS_PRIVATE "") # additional libs for which the pc module is unknown ++SET(LIBSREQUIRED "") # pc modules for additonal libs + # + # Find ZLIB + # +@@ -455,6 +457,7 @@ IF(ZLIB_FOUND) + SET(HAVE_ZLIB_H 1) + INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${ZLIB_LIBRARIES}) ++ STRING(APPEND LIBSREQUIRED " zlib") + IF(WIN32 AND NOT CYGWIN) + # + # Test if ZLIB_WINAPI macro is needed to use. +@@ -494,6 +497,7 @@ IF(BZIP2_FOUND) + SET(HAVE_BZLIB_H 1) + INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${BZIP2_LIBRARIES}) ++ STRING(APPEND LIBSREQUIRED " bzip2") + # Test if a macro is needed for the library. + TRY_MACRO_FOR_LIBRARY( + "${BZIP2_INCLUDE_DIR}" "${BZIP2_LIBRARIES}" +@@ -522,6 +526,8 @@ ENDIF() + IF(LIBLZMA_FOUND) + SET(HAVE_LIBLZMA 1) + SET(HAVE_LZMA_H 1) ++ LIST(APPEND ADDITIONAL_LIBS LibLZMA::LibLZMA) ++ STRING(APPEND LIBSREQUIRED " liblzma") + CMAKE_PUSH_CHECK_STATE() + SET(CMAKE_REQUIRED_INCLUDES ${LIBLZMA_INCLUDE_DIR}) + SET(CMAKE_REQUIRED_LIBRARIES ${LIBLZMA_LIBRARIES}) +@@ -569,6 +575,7 @@ IF(LZO2_FOUND) + SET(HAVE_LZO_LZO1X_H 1) + INCLUDE_DIRECTORIES(${LZO2_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${LZO2_LIBRARY}) ++ STRING(APPEND LIBSREQUIRED " lzo2") + # + # TODO: test for static library. + # +@@ -598,6 +605,7 @@ IF(LIBB2_FOUND) + SET(ARCHIVE_BLAKE2 FALSE) + LIST(APPEND ADDITIONAL_LIBS ${LIBB2_LIBRARY}) + INCLUDE_DIRECTORIES(${LIBB2_INCLUDE_DIR}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBB2_LIBRARY}) + CMAKE_PUSH_CHECK_STATE() + SET(CMAKE_REQUIRED_LIBRARIES ${LIBB2_LIBRARY}) + SET(CMAKE_REQUIRED_INCLUDES ${LIBB2_INCLUDE_DIR}) +@@ -615,6 +623,8 @@ ENDIF(LIBB2_FOUND) + # Find LZ4 + # + IF(ENABLE_LZ4) ++ FIND_PACKAGE(LZ4 NAMES lz4 CONFIG REQUIRED) ++elseif(0) + IF (LZ4_INCLUDE_DIR) + # Already in cache, be silent + SET(LZ4_FIND_QUIETLY TRUE) +@@ -630,6 +640,10 @@ ENDIF(ENABLE_LZ4) + IF(LZ4_FOUND) + SET(HAVE_LIBLZ4 1) + SET(HAVE_LZ4_H 1) ++ SET(HAVE_LZ4HC_H 1) ++ LIST(APPEND ADDITIONAL_LIBS lz4::lz4) ++ STRING(APPEND LIBSREQUIRED " liblz4") ++elseif(0) + CMAKE_PUSH_CHECK_STATE() # Save the state of the variables + SET(CMAKE_REQUIRED_INCLUDES ${LZ4_INCLUDE_DIR}) + CHECK_INCLUDE_FILES("lz4hc.h" HAVE_LZ4HC_H) +@@ -646,6 +660,8 @@ MARK_AS_ADVANCED(CLEAR LZ4_LIBRARY) + # Find Zstd + # + IF(ENABLE_ZSTD) ++ FIND_PACKAGE(ZSTD NAMES zstd CONFIG REQUIRED) ++elseif(0) + IF (ZSTD_INCLUDE_DIR) + # Already in cache, be silent + SET(ZSTD_FIND_QUIETLY TRUE) +@@ -665,6 +681,11 @@ ELSE(ENABLE_ZSTD) + ENDIF(ENABLE_ZSTD) + IF(ZSTD_FOUND) + SET(HAVE_ZSTD_H 1) ++ SET(HAVE_LIBZSTD 1) ++ SET(HAVE_ZSTD_compressStream 1) ++ LIST(APPEND ADDITIONAL_LIBS zstd::libzstd) ++ STRING(APPEND LIBSREQUIRED " libzstd") ++elseif(0) + INCLUDE_DIRECTORIES(${ZSTD_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${ZSTD_LIBRARY}) + CMAKE_PUSH_CHECK_STATE() +@@ -774,6 +795,7 @@ IF(ENABLE_CNG) + LA_CHECK_INCLUDE_FILE("bcrypt.h" HAVE_BCRYPT_H) + IF(HAVE_BCRYPT_H) + LIST(APPEND ADDITIONAL_LIBS "bcrypt") ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE "bcrypt") + ENDIF(HAVE_BCRYPT_H) + ELSE(ENABLE_CNG) + UNSET(HAVE_BCRYPT_H CACHE) +@@ -805,6 +827,7 @@ IF(ENABLE_MBEDTLS) + IF(MBEDTLS_FOUND) + SET(HAVE_LIBMBEDCRYPTO 1) + LIST(APPEND ADDITIONAL_LIBS ${MBEDCRYPTO_LIBRARY}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${MBEDCRYPTO_LIBRARY}) + INCLUDE_DIRECTORIES(${MBEDTLS_INCLUDE_DIRS}) + + LIST(APPEND CMAKE_REQUIRED_INCLUDES ${MBEDTLS_INCLUDE_DIRS}) +@@ -825,6 +848,7 @@ IF(ENABLE_NETTLE) + IF(NETTLE_FOUND) + SET(HAVE_LIBNETTLE 1) + LIST(APPEND ADDITIONAL_LIBS ${NETTLE_LIBRARIES}) ++ STRING(APPEND LIBSREQUIRED " nettle") + INCLUDE_DIRECTORIES(${NETTLE_INCLUDE_DIR}) + + LIST(APPEND CMAKE_REQUIRED_INCLUDES ${NETTLE_INCLUDE_DIR}) +@@ -848,8 +872,8 @@ IF(ENABLE_OPENSSL AND NOT CMAKE_SYSTEM_NAME MATCHES "Darwin") + FIND_PACKAGE(OpenSSL) + IF(OPENSSL_FOUND) + SET(HAVE_LIBCRYPTO 1) +- INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) +- LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_CRYPTO_LIBRARY}) ++ LIST(APPEND ADDITIONAL_LIBS OpenSSL::Crypto) ++ STRING(APPEND LIBSREQUIRED " libcrypto") + SET(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) + SET(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) + LA_CHECK_INCLUDE_FILE("openssl/evp.h" HAVE_OPENSSL_EVP_H) +@@ -868,6 +892,7 @@ IF(NOT OPENSSL_FOUND) + SET(CMAKE_REQUIRED_LIBRARIES "md") + FIND_LIBRARY(LIBMD_LIBRARY NAMES md) + LIST(APPEND ADDITIONAL_LIBS ${LIBMD_LIBRARY}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBMD_LIBRARY}) + CMAKE_POP_CHECK_STATE() # Restore the state of the variables + ENDIF(LIBMD_FOUND) + ENDIF(NOT OPENSSL_FOUND) +@@ -981,7 +1006,7 @@ main(int argc, char **argv) + IF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND) + INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${OPENSSL_LIBRARIES}) +- LIST(REMOVE_DUPLICATES ADDITIONAL_LIBS) ++ STRING(APPEND LIBSREQUIRED " libssl") + ENDIF ("${IMPLEMENTATION}" MATCHES "^OPENSSL$" AND OPENSSL_FOUND) + ENDIF (ARCHIVE_CRYPTO_${ALGORITHM}_${IMPLEMENTATION}) + ENDIF(NOT ARCHIVE_CRYPTO_${ALGORITHM}) +@@ -1155,6 +1180,7 @@ IF(ENABLE_ICONV) + IF (HAVE_ICONV) + SET(HAVE_LIBICONV 1) + LIST(APPEND ADDITIONAL_LIBS ${LIBICONV_PATH}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBICONV_PATH}) + ENDIF(HAVE_ICONV) + ENDIF(NOT HAVE_ICONV AND LIBICONV_PATH) + ENDIF(ICONV_INCLUDE_DIR) +@@ -1188,6 +1214,7 @@ IF(ENABLE_ICONV) + ENDIF(WIN32 AND NOT CYGWIN) + IF(HAVE_LOCALE_CHARSET) + LIST(APPEND ADDITIONAL_LIBS ${LIBCHARSET_PATH}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBCHARSET_PATH}) + ENDIF(HAVE_LOCALE_CHARSET) + ENDIF(LIBCHARSET_PATH) + ENDIF(LIBICONV_PATH) +@@ -1222,6 +1249,7 @@ IF(LIBXML2_FOUND) + CMAKE_PUSH_CHECK_STATE() # Save the state of the variables + INCLUDE_DIRECTORIES(${LIBXML2_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${LIBXML2_LIBRARIES}) ++ STRING(APPEND LIBSREQUIRED " libxml-2.0") + SET(HAVE_LIBXML2 1) + # libxml2's include files use iconv.h + SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_DIR} ${LIBXML2_INCLUDE_DIR}) +@@ -1252,6 +1280,7 @@ ELSE(LIBXML2_FOUND) + CMAKE_PUSH_CHECK_STATE() # Save the state of the variables + INCLUDE_DIRECTORIES(${EXPAT_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${EXPAT_LIBRARIES}) ++ STRING(APPEND LIBSREQUIRED " expat") + SET(HAVE_LIBEXPAT 1) + LA_CHECK_INCLUDE_FILE("expat.h" HAVE_EXPAT_H) + CMAKE_POP_CHECK_STATE() # Restore the state of the variables +@@ -1272,6 +1301,7 @@ ELSE(LIBXML2_FOUND) + IF(HAVE_XMLLITE_H) + SET(XMLLITE_FOUND TRUE) + LIST(APPEND ADDITIONAL_LIBS "xmllite" "uuid") ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE xmllite uuid) + ENDIF() + ENDIF() + ENDIF(EXPAT_FOUND) +@@ -1301,6 +1331,7 @@ IF(POSIX_REGEX_LIB MATCHES "^(AUTO|LIBC|LIBREGEX)$") + CHECK_FUNCTION_EXISTS_GLIBC(regcomp HAVE_REGCOMP_LIBREGEX) + IF(HAVE_REGCOMP_LIBREGEX) + LIST(APPEND ADDITIONAL_LIBS ${REGEX_LIBRARY}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${REGEX_LIBRARY}) + # + # If regex.h is not found, retry looking for regex.h at + # REGEX_INCLUDE_DIR +@@ -1350,6 +1381,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$" + IF(PCREPOSIX_FOUND) + INCLUDE_DIRECTORIES(${PCRE_INCLUDE_DIR}) + LIST(APPEND ADDITIONAL_LIBS ${PCREPOSIX_LIBRARIES}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${PCREPOSIX_LIBRARIES}) + # Test if a macro is needed for the library. + TRY_MACRO_FOR_LIBRARY( + "${PCRE_INCLUDE_DIR}" "${PCREPOSIX_LIBRARIES}" +@@ -1361,6 +1393,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$" + ELSEIF(NOT WITHOUT_PCRE_STATIC AND NOT PCRE_STATIC AND PCRE_FOUND) + # Determine if pcre static libraries are to be used. + LIST(APPEND ADDITIONAL_LIBS ${PCRE_LIBRARIES}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${PCRE_LIBRARIES}) + SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES}) + MESSAGE(STATUS "trying again with -lpcre included") + TRY_MACRO_FOR_LIBRARY( +@@ -1376,6 +1409,7 @@ IF(NOT FOUND_POSIX_REGEX_LIB AND POSIX_REGEX_LIB MATCHES "^(AUTO|LIBPCREPOSIX)$" + # ___chkstk_ms. + MESSAGE(STATUS "Visual Studio build detected, trying again with -lgcc included") + LIST(APPEND ADDITIONAL_LIBS ${LIBGCC_LIBRARIES}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${LIBGCC_LIBRARIES}) + SET(TMP_LIBRARIES ${PCREPOSIX_LIBRARIES} ${PCRE_LIBRARIES} ${LIBGCC_LIBRARIES}) + TRY_MACRO_FOR_LIBRARY( + "${PCRE_INCLUDE_DIR}" "${TMP_LIBRARIES}" +@@ -1954,6 +1988,7 @@ IF(ENABLE_ACL) + SET(CMAKE_REQUIRED_LIBRARIES "acl") + FIND_LIBRARY(ACL_LIBRARY NAMES acl) + LIST(APPEND ADDITIONAL_LIBS ${ACL_LIBRARY}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${ACL_LIBRARY}) + pkg_check_modules(LIBACL libacl) + IF(LIBACL_VERSION) + SET(LIBACL_PKGCONFIG_VERSION ${LIBACL_VERSION}) +@@ -2099,6 +2134,7 @@ int main(void) { return ACL_SYNCHRONIZE; }" HAVE_DECL_ACL_SYNCHRONIZE) + SET(CMAKE_REQUIRED_LIBRARIES "richacl") + FIND_LIBRARY(RICHACL_LIBRARY NAMES richacl) + LIST(APPEND ADDITIONAL_LIBS ${RICHACL_LIBRARY}) ++ LIST(APPEND LIBARCHIVE_LIBS_PRIVATE ${RICHACL_LIBRARY}) + pkg_check_modules(LIBRICHACL librichacl) + IF(LIBRICHACL_VERSION) + SET(LIBRICHACL_PKGCONFIG_VERSION ${LIBRICHACL_VERSION}) +diff --git a/build/cmake/CreatePkgConfigFile.cmake b/build/cmake/CreatePkgConfigFile.cmake +index bc5a43f..422b83b 100644 +--- a/build/cmake/CreatePkgConfigFile.cmake ++++ b/build/cmake/CreatePkgConfigFile.cmake +@@ -8,7 +8,7 @@ SET(libdir \${exec_prefix}/lib) + SET(includedir \${prefix}/include) + # Now, this is not particularly pretty, nor is it terribly accurate... + # Loop over all our additional libs +-FOREACH(mylib ${ADDITIONAL_LIBS}) ++FOREACH(mylib ${LIBARCHIVE_LIBS_PRIVATE}) + # Extract the filename from the absolute path + GET_FILENAME_COMPONENT(mylib_name ${mylib} NAME_WE) + # Strip the lib prefix +@@ -16,10 +16,6 @@ FOREACH(mylib ${ADDITIONAL_LIBS}) + # Append it to our LIBS string + SET(LIBS "${LIBS} -l${mylib_name}") + ENDFOREACH() +-# libxml2 is easier, since it's already using pkg-config +-FOREACH(mylib ${PC_LIBXML_STATIC_LDFLAGS}) +- SET(LIBS "${LIBS} ${mylib}") +-ENDFOREACH() + # FIXME: The order of the libraries doesn't take dependencies into account, + # thus there's a good chance it'll make some binutils versions unhappy... + # This only affects Libs.private (looked up for static builds) though. diff --git a/vcpkg/ports/libarchive/portfile.cmake b/vcpkg/ports/libarchive/portfile.cmake new file mode 100644 index 0000000..8568bc4 --- /dev/null +++ b/vcpkg/ports/libarchive/portfile.cmake @@ -0,0 +1,108 @@ +vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libarchive/libarchive
+ REF "v${VERSION}"
+ SHA512 5928c96ad0f223d44948a7f3ac2ceefe64803003cfaa630c23c35f5e88c6d3f42e58157b7985bbe3b5596c760a1ebb03d22e857366a81ca9744e87ea2305fc72
+ HEAD_REF master
+ PATCHES
+ fix-buildsystem.patch
+ fix-deps.patch
+)
+
+if("xar" IN_LIST FEATURES)
+ # Cf. https://github.com/libarchive/libarchive/pull/2388:
+ # xmllite is available since Windows XP, but mingw-w64 added it with delay.
+ if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
+ list(APPEND FEATURES "xar/xmllite")
+ else()
+ list(APPEND FEATURES "xar/libxml2")
+ endif()
+endif()
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ bzip2 ENABLE_BZip2
+ bzip2 CMAKE_REQUIRE_FIND_PACKAGE_BZip2
+ lz4 ENABLE_LZ4
+ lz4 CMAKE_REQUIRE_FIND_PACKAGE_lz4
+ lzma ENABLE_LZMA
+ lzma CMAKE_REQUIRE_FIND_PACKAGE_LibLZMA
+ lzo ENABLE_LZO
+ zstd ENABLE_ZSTD
+ xar/libxml2 ENABLE_LIBXML2
+ xar/libxml2 CMAKE_REQUIRE_FIND_PACKAGE_LibXml2
+ xar/xmllite ENABLE_WIN32_XMLLITE
+ xar/xmllite HAVE_XMLLITE_H
+)
+# Default crypto backend is OpenSSL, but it is ignored for DARWIN
+set(WRAPPER_ENABLE_OPENSSL OFF)
+if(NOT "crypto" IN_LIST FEATURES)
+ list(APPEND FEATURE_OPTIONS
+ -DLIBMD_FOUND=FALSE
+ -DENABLE_OPENSSL=OFF
+ )
+elseif(VCPKG_TARGET_IS_OSX)
+ list(APPEND FEATURE_OPTIONS
+ -DENABLE_MBEDTLS=ON
+ -DENABLE_OPENSSL=OFF
+ -DCMAKE_REQUIRE_FIND_PACKAGE_MbedTLS=ON
+ )
+else()
+ set(WRAPPER_ENABLE_OPENSSL ON)
+ list(APPEND FEATURE_OPTIONS
+ -DCMAKE_REQUIRE_FIND_PACKAGE_OpenSSL=ON
+ )
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DENABLE_ZLIB=ON
+ -DZLIB_WINAPI=OFF
+ -DENABLE_PCREPOSIX=OFF
+ -DPOSIX_REGEX_LIB=NONE
+ -DENABLE_MBEDTLS=OFF
+ -DENABLE_NETTLE=OFF
+ -DENABLE_EXPAT=OFF
+ -DENABLE_LibGCC=OFF
+ -DENABLE_CNG=OFF
+ -DENABLE_UNZIP=OFF
+ -DENABLE_TAR=OFF
+ -DENABLE_CPIO=OFF
+ -DENABLE_CAT=OFF
+ -DENABLE_XATTR=OFF
+ -DENABLE_ACL=OFF
+ -DENABLE_ICONV=OFF
+ -DENABLE_LIBB2=OFF
+ -DENABLE_TEST=OFF
+ -DENABLE_WERROR=OFF
+ MAYBE_UNUSED_VARIABLES
+ CMAKE_REQUIRE_FIND_PACKAGE_BZip2
+ CMAKE_REQUIRE_FIND_PACKAGE_LibLZMA
+ CMAKE_REQUIRE_FIND_PACKAGE_LibXml2
+ CMAKE_REQUIRE_FIND_PACKAGE_lz4
+ ENABLE_LibGCC
+ HAVE_XMLLITE_H
+ ZLIB_WINAPI
+)
+
+vcpkg_cmake_install()
+
+vcpkg_fixup_pkgconfig()
+
+vcpkg_copy_pdbs()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/share/man"
+)
+
+foreach(header "include/archive.h" "include/archive_entry.h")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/${header}" "(!defined LIBARCHIVE_STATIC)" "0")
+endforeach()
+
+file(INSTALL "${CURRENT_PORT_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+file(INSTALL "${SOURCE_PATH}/COPYING" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)
diff --git a/vcpkg/ports/libarchive/usage b/vcpkg/ports/libarchive/usage new file mode 100644 index 0000000..75ccb94 --- /dev/null +++ b/vcpkg/ports/libarchive/usage @@ -0,0 +1,9 @@ +libarchive is compatible with the CMake Find Module:
+
+ find_package(LibArchive REQUIRED)
+ target_link_libraries(main PRIVATE LibArchive::LibArchive) # since CMake 3.17
+
+libarchive provides pkg-config modules:
+
+ # library that can create and read several streaming archive formats
+ libarchive
diff --git a/vcpkg/ports/libarchive/vcpkg-cmake-wrapper.cmake.in b/vcpkg/ports/libarchive/vcpkg-cmake-wrapper.cmake.in new file mode 100644 index 0000000..0050eae --- /dev/null +++ b/vcpkg/ports/libarchive/vcpkg-cmake-wrapper.cmake.in @@ -0,0 +1,72 @@ +cmake_policy(PUSH)
+cmake_policy(SET CMP0012 NEW)
+cmake_policy(SET CMP0057 NEW)
+set(z_vcpkg_libarchive_args "")
+if("REQUIRED" IN_LIST ARGS)
+ list(APPEND z_vcpkg_libarchive_args "REQUIRED")
+endif()
+if("QUIET" IN_LIST ARGS)
+ list(APPEND z_vcpkg_libarchive_args "QUIET")
+endif()
+
+_find_package(${ARGS})
+
+if(LibArchive_FOUND AND "@VCPKG_LIBRARY_LINKAGE@" STREQUAL "static")
+ set(z_vcpkg_libarchive_libs "")
+ find_package(ZLIB ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs ZLIB::ZLIB)
+ if("@ENABLE_BZip2@")
+ find_package(BZip2 ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs BZip2::BZip2)
+ endif()
+ if("@ENABLE_LIBXML2@")
+ find_package(LibXml2 ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs LibXml2::LibXml2)
+ elseif("@ENABLE_WIN32_XMLLITE@")
+ list(APPEND z_vcpkg_libarchive_libs xmllite)
+ endif()
+ if("@ENABLE_LZ4@")
+ find_package(lz4 CONFIG ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs lz4::lz4)
+ endif()
+ if("@ENABLE_LZMA@")
+ find_package(LibLZMA ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs LibLZMA::LibLZMA)
+ endif()
+ if("@ENABLE_LZO@")
+ include(SelectLibraryConfigurations)
+ find_library(Z_VCPKG_LZO_LIBRARY_DEBUG NAMES lzo2d lzo2 NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib" NO_DEFAULT_PATH)
+ find_library(Z_VCPKG_LZO_LIBRARY_RELEASE NAMES lzo2 NAMES_PER_DIR PATHS "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib" NO_DEFAULT_PATH)
+ select_library_configurations(Z_VCPKG_LZO)
+ if(Z_VCPKG_LZO_LIBRARY)
+ list(APPEND z_vcpkg_libarchive_libs ${Z_VCPKG_LZO_LIBRARY})
+ else()
+ set(LibArchive_FOUND FALSE)
+ endif()
+ endif()
+ if("@ENABLE_ZSTD@")
+ find_package(zstd ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs zstd::libzstd)
+ endif()
+ if("@WRAPPER_ENABLE_OPENSSL@")
+ find_package(OpenSSL ${z_vcpkg_libarchive_args})
+ list(APPEND z_vcpkg_libarchive_libs OpenSSL::Crypto)
+ endif()
+
+ if(TARGET LibArchive::LibArchive)
+ set(LibArchive_LIBRARIES LibArchive::LibArchive)
+ if(Z_VCPKG_LZO_LIBRARY AND Z_VCPKG_LZO_LIBRARY_DEBUG)
+ list(REMOVE_ITEM z_vcpkg_libarchive_libs ${Z_VCPKG_LZO_LIBRARY})
+ list(APPEND z_vcpkg_libarchive_libs
+ "\$<\$<NOT:\$<CONFIG:DEBUG>>:${Z_VCPKG_LZO_LIBRARY_RELEASE}>"
+ "\$<\$<CONFIG:DEBUG>:${Z_VCPKG_LZO_LIBRARY_DEBUG}>"
+ )
+ endif()
+ set_property(TARGET LibArchive::LibArchive APPEND PROPERTY INTERFACE_LINK_LIBRARIES ${z_vcpkg_libarchive_libs})
+ else()
+ list(APPEND LibArchive_LIBRARIES ${z_vcpkg_libarchive_libs})
+ endif()
+ unset(z_vcpkg_libarchive_libs)
+endif()
+unset(z_vcpkg_libarchive_args)
+cmake_policy(POP)
diff --git a/vcpkg/ports/libarchive/vcpkg.json b/vcpkg/ports/libarchive/vcpkg.json new file mode 100644 index 0000000..32c1f2c --- /dev/null +++ b/vcpkg/ports/libarchive/vcpkg.json @@ -0,0 +1,78 @@ +{ + "name": "libarchive", + "version": "3.8.2", + "description": "Library for reading and writing streaming archives", + "homepage": "https://www.libarchive.org", + "license": null, + "supports": "!uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + "zlib" + ], + "default-features": [ + "bzip2", + "crypto", + "lz4", + "lzma", + "xar", + "zstd" + ], + "features": { + "bzip2": { + "description": "BZip2 support", + "dependencies": [ + "bzip2" + ] + }, + "crypto": { + "description": "Support for cryptographic features", + "dependencies": [ + { + "name": "mbedtls", + "platform": "osx" + }, + { + "name": "openssl", + "platform": "!osx" + } + ] + }, + "lz4": { + "description": "Lz4 support", + "dependencies": [ + "lz4" + ] + }, + "lzma": { + "description": "Lzma support", + "dependencies": [ + "liblzma" + ] + }, + "lzo": { + "description": "Lzo support", + "dependencies": [ + "lzo" + ] + }, + "xar": { + "description": "Xar support", + "dependencies": [ + { + "name": "libxml2", + "default-features": false, + "platform": "!windows | mingw" + } + ] + }, + "zstd": { + "description": "Zstd support", + "dependencies": [ + "zstd" + ] + } + } +} |