From 0c389d906954d575a02aa414576c1cb1d0b2d687 Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Fri, 20 Mar 2026 18:03:46 +0800 Subject: [PATCH] Add zlib --- config/pkg/lib/zlib.yml | 3 +++ src/Package/Library/zlib.php | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/config/pkg/lib/zlib.yml b/config/pkg/lib/zlib.yml index cf7f11ba..b4e71364 100644 --- a/config/pkg/lib/zlib.yml +++ b/config/pkg/lib/zlib.yml @@ -14,3 +14,6 @@ zlib: - zconf.h static-libs@unix: - libz.a + static-libs@windows: + - zlibstatic.lib + - zlib_a.lib diff --git a/src/Package/Library/zlib.php b/src/Package/Library/zlib.php index 8706dfe9..f45b942c 100644 --- a/src/Package/Library/zlib.php +++ b/src/Package/Library/zlib.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('zlib')] class zlib @@ -21,4 +23,28 @@ class zlib // Patch pkg-config file $lib->patchPkgconfPrefix(['zlib.pc'], PKGCONF_PATCH_PREFIX); } + + #[BuildFor('Windows')] + public function buildWin(LibraryPackage $lib): void + { + WindowsCMakeExecutor::create($lib)->build(); + $detect_list = [ + 'zlibstatic.lib', + 'zs.lib', + 'libzs.lib', + ]; + foreach ($detect_list as $item) { + if (file_exists("{$lib->getLibDir()}\\{$item}")) { + FileSystem::copy("{$lib->getLibDir()}\\{$item}", "{$lib->getLibDir()}\\zlib_a.lib"); + FileSystem::copy("{$lib->getLibDir()}\\{$item}", "{$lib->getLibDir()}\\zlibstatic.lib"); + break; + } + } + FileSystem::removeFileIfExists("{$lib->getBinDir()}\\zlib.dll"); + FileSystem::removeFileIfExists("{$lib->getLibDir()}\\zlib.lib"); + FileSystem::removeFileIfExists("{$lib->getLibDir()}\\libz.dll"); + FileSystem::removeFileIfExists("{$lib->getLibDir()}\\libz.lib"); + FileSystem::removeFileIfExists("{$lib->getLibDir()}\\z.lib"); + FileSystem::removeFileIfExists("{$lib->getLibDir()}\\z.dll"); + } }