aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/unarr
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/unarr
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/unarr')
-rw-r--r--vcpkg/ports/unarr/debundle-7zip.patch165
-rw-r--r--vcpkg/ports/unarr/portfile.cmake33
-rw-r--r--vcpkg/ports/unarr/vcpkg.json22
3 files changed, 220 insertions, 0 deletions
diff --git a/vcpkg/ports/unarr/debundle-7zip.patch b/vcpkg/ports/unarr/debundle-7zip.patch
new file mode 100644
index 0000000..1118b90
--- /dev/null
+++ b/vcpkg/ports/unarr/debundle-7zip.patch
@@ -0,0 +1,165 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f38b229..3d5c150 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -52,19 +52,6 @@ add_library(
+ # common/custalloc.c
+ common/stream.c
+ common/unarr.c
+- lzmasdk/7zTypes.h
+- lzmasdk/Compiler.h
+- lzmasdk/CpuArch.h
+- lzmasdk/Ppmd.h
+- lzmasdk/Ppmd7.h
+- lzmasdk/Ppmd8.h
+- lzmasdk/Precomp.h
+- lzmasdk/CpuArch.c
+- lzmasdk/Ppmd7.c
+- lzmasdk/Ppmd8.c
+- lzmasdk/Ppmd7Dec.c
+- lzmasdk/Ppmd7aDec.c
+- lzmasdk/Ppmd8Dec.c
+ rar/lzss.h
+ rar/rar.h
+ rar/rarvm.h
+@@ -102,6 +89,12 @@ target_include_directories(
+ if(BUILD_SHARED_LIBS)
+ target_compile_definitions(unarr PUBLIC UNARR_IS_SHARED_LIBRARY)
+ endif()
++# Debundle 7zip
++find_package(7zip CONFIG REQUIRED)
++target_link_libraries(unarr PRIVATE 7zip::7zip)
++# 7zip upstream does not supply a .pc file. Add it to Libs.private.
++set(PROJECT_LIBS_PRIVATE "${PROJECT_LIBS_PRIVATE} -l7zip")
++set(UNARR_DEPENDS_7zip "find_dependency(7zip CONFIG)")
+
+ if(USE_SYSTEM_BZ2)
+ find_package(BZip2)
+@@ -115,7 +108,8 @@ if(BZIP2_FOUND)
+ endif()
+ target_compile_definitions(unarr PRIVATE -DHAVE_BZIP2)
+ # Bzip2 upstream does not supply a .pc file. Add it to Libs.private.
+- set(PROJECT_LIBS_PRIVATE "-I${BZIP2_INCLUDE_DIRS} -l${BZIP2_LIBRARIES}")
++ set(PROJECT_CFLAGS "${PROJECT_CFLAGS} -I${BZIP2_INCLUDE_DIRS}")
++ set(PROJECT_LIBS_PRIVATE "${PROJECT_LIBS_PRIVATE} -l${BZIP2_LIBRARIES}")
+ set(UNARR_DEPENDS_BZip2 "find_dependency(BZip2)")
+ endif()
+
+@@ -154,28 +148,6 @@ if(ZLIB_FOUND)
+ endif()
+
+ if(ENABLE_7Z)
+- target_sources(
+- unarr
+- PRIVATE lzmasdk/7z.h
+- lzmasdk/7zArcIn.c
+- lzmasdk/7zBuf.h
+- lzmasdk/7zBuf.c
+- lzmasdk/7zDec.c
+- lzmasdk/7zStream.c
+- lzmasdk/7zWindows.h
+- lzmasdk/Bcj2.h
+- lzmasdk/Bcj2.c
+- lzmasdk/Bra.c
+- lzmasdk/Bra.h
+- lzmasdk/Bra86.c
+- lzmasdk/7zCrc.h
+- lzmasdk/Delta.h
+- lzmasdk/Delta.c
+- lzmasdk/Lzma2Dec.h
+- lzmasdk/Lzma2Dec.c)
+- if(LIBLZMA_FOUND) # TODO: Replace 7z lzma with system lzma
+- target_sources(unarr PRIVATE lzmasdk/LzmaDec.h lzmasdk/LzmaDec.c)
+- endif()
+ target_compile_definitions(unarr PRIVATE -DHAVE_7Z -DZ7_PPMD_SUPPORT)
+ endif()
+
+@@ -194,8 +166,7 @@ if(UNIX
+ -Werror-implicit-function-declaration
+ $<$<CONFIG:Release>:-fomit-frame-pointer>
+ $<$<C_COMPILER_ID:Clang,AppleClang>:
+- -Wno-missing-field-initializers>
+- -flto)
++ -Wno-missing-field-initializers>)
+ if(BUILD_FUZZER)
+ target_compile_options(unarr PUBLIC "${sanitize_opts}")
+ target_compile_definitions(
+@@ -218,7 +189,7 @@ if(UNIX
+
+ # Clang linker needs -flto too when doing lto
+ if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang")
+- set(linker_opts "${linker_opts} -flto")
++ set(linker_opts "${linker_opts}")
+ endif()
+
+ set_target_properties(unarr PROPERTIES LINK_FLAGS "${linker_opts}")
+diff --git a/_7z/_7z.h b/_7z/_7z.h
+index 7f207e1..f488e42 100644
+--- a/_7z/_7z.h
++++ b/_7z/_7z.h
+@@ -6,9 +6,9 @@
+
+ #include "../common/unarr-imp.h"
+
+-#include "../lzmasdk/7zTypes.h"
++#include <7zip/C/7zTypes.h>
+ #ifdef HAVE_7Z
+-#include "../lzmasdk/7z.h"
++#include <7zip/C/7z.h>
+ #endif
+
+ typedef struct ar_archive_7z_s ar_archive_7z;
+diff --git a/pkg-config.pc.cmake b/pkg-config.pc.cmake
+index 9055aef..a8581e0 100644
+--- a/pkg-config.pc.cmake
++++ b/pkg-config.pc.cmake
+@@ -5,7 +5,7 @@ libdir=@PROJECT_INSTALL_LIBDIR@
+ Name: @PROJECT_NAME@
+ Description: @PROJECT_DESCRIPTION@
+ Version: @PROJECT_VERSION@
+-Cflags: -I${includedir}
++Cflags: -I${includedir}@PROJECT_CFLAGS@
+ Requires.private: @PROJECT_REQUIRES_PRIVATE@
+ Libs: -L${libdir} -l@PROJECT_NAME@
+ Libs.private: @PROJECT_LIBS_PRIVATE@
+diff --git a/rar/rar.h b/rar/rar.h
+index a0a420a..b522a33 100644
+--- a/rar/rar.h
++++ b/rar/rar.h
+@@ -7,7 +7,7 @@
+ #include "../common/unarr-imp.h"
+
+ #include "lzss.h"
+-#include "../lzmasdk/Ppmd7.h"
++#include <7zip/C/Ppmd7.h>
+ #include <limits.h>
+
+ static inline size_t smin(size_t a, size_t b) { return a < b ? a : b; }
+diff --git a/unarr-config.cmake.in b/unarr-config.cmake.in
+index 1c95f9b..4d82965 100644
+--- a/unarr-config.cmake.in
++++ b/unarr-config.cmake.in
+@@ -5,6 +5,7 @@ include(CMakeFindDependencyMacro)
+ @UNARR_DEPENDS_BZip2@
+ @UNARR_DEPENDS_LibLZMA@
+ @UNARR_DEPENDS_ZLIB@
++@UNARR_DEPENDS_7zip@
+
+ if (NOT TARGET unarr::unarr)
+ include("${CMAKE_CURRENT_LIST_DIR}/unarr-targets.cmake")
+diff --git a/zip/zip.h b/zip/zip.h
+index b2ba34c..23da8d8 100644
+--- a/zip/zip.h
++++ b/zip/zip.h
+@@ -16,9 +16,9 @@
+ #ifdef HAVE_LIBLZMA
+ #include <lzma.h>
+ #else
+-#include "../lzmasdk/LzmaDec.h"
++#include <7zip/C/LzmaDec.h>
+ #endif
+-#include "../lzmasdk/Ppmd8.h"
++#include <7zip/C/Ppmd8.h>
+
+ typedef struct ar_archive_zip_s ar_archive_zip;
+
diff --git a/vcpkg/ports/unarr/portfile.cmake b/vcpkg/ports/unarr/portfile.cmake
new file mode 100644
index 0000000..89db45d
--- /dev/null
+++ b/vcpkg/ports/unarr/portfile.cmake
@@ -0,0 +1,33 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO selmf/unarr
+ REF "v${VERSION}"
+ SHA512 da170e0391fbe92e9b2474beb6be9a96c9f905e4e572235aa839cda3f6faf3cb99773eede34e1054138a4997bf68a18ee84f4df47add202355449634c0fd6d93
+ HEAD_REF master
+ PATCHES
+ debundle-7zip.patch
+)
+
+file(REMOVE_RECURSE "${SOURCE_PATH}/lzmasdk")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DENABLE_7Z=ON
+ -DUSE_SYSTEM_BZ2=ON
+ -DUSE_SYSTEM_LZMA=ON
+ -DUSE_SYSTEM_ZLIB=ON
+ -DUSE_ZLIB_CRC=ON
+ -DBUILD_INTEGRATION_TESTS=OFF
+ -DBUILD_FUZZER=OFF
+ -DBUILD_UNIT_TESTS=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(CONFIG_PATH "lib/cmake/unarr")
+vcpkg_fixup_pkgconfig()
+vcpkg_copy_pdbs()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" "${CURRENT_PACKAGES_DIR}/debug/share")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/unarr/vcpkg.json b/vcpkg/ports/unarr/vcpkg.json
new file mode 100644
index 0000000..0281b70
--- /dev/null
+++ b/vcpkg/ports/unarr/vcpkg.json
@@ -0,0 +1,22 @@
+{
+ "name": "unarr",
+ "version": "1.1.1",
+ "description": "A decompression library for rar, tar, zip and 7z archives.",
+ "homepage": "https://github.com/selmf/unarr",
+ "license": "LGPL-3.0-only",
+ "supports": "!windows | static",
+ "dependencies": [
+ "7zip",
+ "bzip2",
+ "liblzma",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ]
+}