diff --git a/config/pkg/lib/libxslt.yml b/config/pkg/lib/libxslt.yml index 07955333..a9898648 100644 --- a/config/pkg/lib/libxslt.yml +++ b/config/pkg/lib/libxslt.yml @@ -13,3 +13,6 @@ libxslt: static-libs@unix: - libxslt.a - libexslt.a + static-libs@windows: + - libxslt_a.lib + - libexslt_a.lib diff --git a/src/Package/Library/libxslt.php b/src/Package/Library/libxslt.php index 11ba2bf8..7513d146 100644 --- a/src/Package/Library/libxslt.php +++ b/src/Package/Library/libxslt.php @@ -9,7 +9,9 @@ use StaticPHP\Attribute\Package\Library; use StaticPHP\Package\LibraryPackage; use StaticPHP\Package\PackageInstaller; use StaticPHP\Runtime\Executor\UnixAutoconfExecutor; +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; use StaticPHP\Runtime\SystemTarget; +use StaticPHP\Util\FileSystem; use StaticPHP\Util\SPCConfigUtil; #[Library('libxslt')] @@ -49,4 +51,20 @@ class libxslt ->exec("{$AR} -t libxslt.a | grep '\\.a$' | xargs -n1 {$AR} d libxslt.a") ->exec("{$AR} -t libexslt.a | grep '\\.a$' | xargs -n1 {$AR} d libexslt.a"); } + + #[BuildFor('Windows')] + public function buildWin(LibraryPackage $lib, PackageInstaller $installer): void + { + WindowsCMakeExecutor::create($lib) + ->addConfigureArgs( + '-DBUILD_SHARED_LIBS=OFF', + '-DLIBXSLT_WITH_PROFILER=OFF', + '-DLIBXSLT_WITH_PROGRAMS=OFF', + '-DLIBXSLT_WITH_PYTHON=OFF', + '-DLIBXSLT_WITH_TESTS=OFF', + ) + ->build(); + FileSystem::copy($lib->getLibDir() . '\libxslts.lib', $lib->getLibDir() . '\libxslt_a.lib'); + FileSystem::copy($lib->getLibDir() . '\libexslts.lib', $lib->getLibDir() . '\libexslt_a.lib'); + } }