[bit7z] new port (#40889)

Signed-off-by: msclock <msclock@qq.com>
Co-authored-by: Cheney Wang <38240633+Cheney-W@users.noreply.github.com>
Co-authored-by: Kai Pastor <dg0yt@darc.de>
Co-authored-by: Javier Matos Denizac <javier.matosd@gmail.com>
This commit is contained in:
msclock 2024-09-25 01:02:12 +08:00 committed by GitHub
parent 92133e398a
commit 43b4ba9e55
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 163 additions and 0 deletions

View File

@ -0,0 +1,28 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f8ff6f0..855b78d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -194,15 +194,22 @@ include( cmake/BuildOptions.cmake )
include( cmake/CompilerOptions.cmake )
# dependencies
-include( cmake/Dependencies.cmake )
+# include( cmake/Dependencies.cmake )
+find_package(7zip CONFIG REQUIRED)
+add_library(7-zip ALIAS 7zip::7zip)
# 7-zip source code
target_link_libraries( ${LIB_TARGET} PRIVATE 7-zip )
# filesystem library (needed if std::filesystem is not available)
+if(0)
if( ghc_filesystem_ADDED )
target_link_libraries( ${LIB_TARGET} PRIVATE ghc_filesystem )
endif()
+else()
+ find_package(ghc_filesystem CONFIG REQUIRED)
+ target_link_libraries(${LIB_TARGET} PRIVATE ghcFilesystem::ghc_filesystem )
+endif()
# public includes
target_include_directories( ${LIB_TARGET} PUBLIC "$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>"

View File

@ -0,0 +1,43 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2eb8634..f8ff6f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -179,7 +179,7 @@ message( STATUS "Language Standard for bit7z: C++${CMAKE_CXX_STANDARD}" )
set( LIB_TARGET bit7z${ARCH_POSTFIX} )
add_library( ${LIB_TARGET} STATIC )
target_sources( ${LIB_TARGET}
- PUBLIC ${PUBLIC_HEADERS}
+ # PUBLIC ${PUBLIC_HEADERS}
PRIVATE ${HEADERS} ${SOURCES} )
# additional target without the architecture suffix in the name
@@ -246,3 +246,29 @@ endif()
if( BIT7Z_BUILD_DOCS )
add_subdirectory( docs )
endif()
+
+set_target_properties(${LIB_TARGET} PROPERTIES PUBLIC_HEADER "${PUBLIC_HEADERS}")
+
+include(CMakePackageConfigHelpers)
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/unofficial-bit7z-config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-bit7z-config.cmake"
+ INSTALL_DESTINATION "share/unofficial-bit7z"
+)
+install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/unofficial-bit7z-config.cmake"
+ DESTINATION "share/unofficial-bit7z"
+)
+
+include(GNUInstallDirs)
+install(
+ TARGETS ${LIB_TARGET}
+ EXPORT unofficial-bit7z-targets
+ COMPONENT bit7z
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/bit7z COMPONENT bit7z_development)
+
+install(EXPORT unofficial-bit7z-targets FILE unofficial-bit7z-targets.cmake NAMESPACE unofficial::bit7z:: DESTINATION share/unofficial-bit7z)
+

View File

@ -0,0 +1,45 @@
vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO rikyoz/bit7z
REF "v${VERSION}"
SHA512 02ee10a66598e9a2f5b47f35392dc8f3de11e01dac9d657e1321d1de97baf9832b1f1559054160d122dddd0427f54076820d7252185912c38b2f277d9c5fa1c0
HEAD_REF master
PATCHES
fix_install.patch
fix_dependency.patch
)
file(COPY "${CMAKE_CURRENT_LIST_DIR}/unofficial-bit7z-config.cmake.in" DESTINATION "${SOURCE_PATH}")
vcpkg_check_features(
OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
regex-matching BIT7Z_REGEX_MATCHING
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DBIT7Z_AUTO_FORMAT=ON
-DBIT7Z_AUTO_PREFIX_LONG_PATHS=ON
-DBIT7Z_DISABLE_ZIP_ASCII_PWD_CHECK=OFF
-DBIT7Z_PATH_SANITIZATION=ON
-DBIT7Z_DISABLE_USE_STD_FILESYSTEM=OFF
-DBIT7Z_USE_STD_BYTE=OFF
-DBIT7Z_USE_NATIVE_STRING=OFF
-DBIT7Z_USE_SYSTEM_CODEPAGE=OFF
-DBIT7Z_BUILD_TESTS=OFF
-DBIT7Z_BUILD_DOCS=OFF
${FEATURE_OPTIONS}
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-bit7z CONFIG_PATH share/unofficial-bit7z)
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")

View File

@ -0,0 +1,10 @@
@PACKAGE_INIT@
include(CMakeFindDependencyMacro)
find_dependency(7zip CONFIG)
find_dependency(ghc_filesystem CONFIG)
include("${CMAKE_CURRENT_LIST_DIR}/unofficial-bit7z-targets.cmake")
check_required_components(bit7z)

24
ports/bit7z/vcpkg.json Normal file
View File

@ -0,0 +1,24 @@
{
"name": "bit7z",
"version": "4.0.8",
"description": "A C++ static library offering a clean and simple interface to the 7-zip shared libraries.",
"homepage": "https://github.com/rikyoz/bit7z",
"license": "MPL-2.0",
"dependencies": [
"7zip",
"ghc-filesystem",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
],
"features": {
"regex-matching": {
"description": "Enables the support for extracting files matching regular expressions"
}
}
}

9
versions/b-/bit7z.json Normal file
View File

@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "07fa7b0762a888e367f01bd9ba8674c7a0d7ffdb",
"version": "4.0.8",
"port-version": 0
}
]
}

View File

@ -648,6 +648,10 @@
"baseline": "3.0",
"port-version": 3
},
"bit7z": {
"baseline": "4.0.8",
"port-version": 0
},
"bitmagic": {
"baseline": "7.13.4",
"port-version": 0