From 93c099dd3166aa5d88290bc0535e49062f42069f Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Tue, 24 Mar 2026 12:31:45 +0800 Subject: [PATCH] Add xz --- config/pkg/lib/xz.yml | 6 ++++++ src/Package/Library/xz.php | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/config/pkg/lib/xz.yml b/config/pkg/lib/xz.yml index 7d0af682..3be1815d 100644 --- a/config/pkg/lib/xz.yml +++ b/config/pkg/lib/xz.yml @@ -14,7 +14,13 @@ xz: - libiconv headers@unix: - lzma + headers@windows: + - lzma + - lzma.h pkg-configs: - liblzma static-libs@unix: - liblzma.a + static-libs@windows: + - lzma.lib + - liblzma_a.lib diff --git a/src/Package/Library/xz.php b/src/Package/Library/xz.php index 3486d4c1..44a20090 100644 --- a/src/Package/Library/xz.php +++ b/src/Package/Library/xz.php @@ -8,6 +8,8 @@ use StaticPHP\Attribute\Package\BuildFor; use StaticPHP\Attribute\Package\Library; use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixAutoconfExecutor; +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; +use StaticPHP\Util\FileSystem; #[Library('xz')] class xz @@ -27,4 +29,14 @@ class xz $lib->patchPkgconfPrefix(['liblzma.pc']); $lib->patchLaDependencyPrefix(); } + + #[BuildFor('Windows')] + public function buildWin(LibraryPackage $lib): void + { + WindowsCMakeExecutor::create($lib)->build(); + // copy lzma.lib to liblzma_a.lib + FileSystem::copy("{$lib->getLibDir()}\\lzma.lib", "{$lib->getLibDir()}\\liblzma_a.lib"); + // patch lzma.h: make static API always available on Windows + FileSystem::replaceFileStr("{$lib->getIncludeDir()}\\lzma.h", 'defined(LZMA_API_STATIC)', 'defined(_WIN32)'); + } }