Skip to content

Commit

Permalink
[bit7z] new port (microsoft#40889)
Browse files Browse the repository at this point in the history
Signed-off-by: msclock <[email protected]>
Co-authored-by: Cheney Wang <[email protected]>
Co-authored-by: Kai Pastor <[email protected]>
Co-authored-by: Javier Matos Denizac <[email protected]>
  • Loading branch information
4 people authored Sep 24, 2024
1 parent 92133e3 commit 43b4ba9
Show file tree
Hide file tree
Showing 7 changed files with 163 additions and 0 deletions.
28 changes: 28 additions & 0 deletions ports/bit7z/fix_dependency.patch
Original file line number Diff line number Diff line change
@@ -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>"
43 changes: 43 additions & 0 deletions ports/bit7z/fix_install.patch
Original file line number Diff line number Diff line change
@@ -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)
+
45 changes: 45 additions & 0 deletions ports/bit7z/portfile.cmake
Original file line number Diff line number Diff line change
@@ -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")
10 changes: 10 additions & 0 deletions ports/bit7z/unofficial-bit7z-config.cmake.in
Original file line number Diff line number Diff line change
@@ -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 changes: 24 additions & 0 deletions ports/bit7z/vcpkg.json
Original file line number Diff line number Diff line change
@@ -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 changes: 9 additions & 0 deletions versions/b-/bit7z.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "07fa7b0762a888e367f01bd9ba8674c7a0d7ffdb",
"version": "4.0.8",
"port-version": 0
}
]
}
4 changes: 4 additions & 0 deletions versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 43b4ba9

Please sign in to comment.