diff --git a/config/pkg/lib/ngtcp2.yml b/config/pkg/lib/ngtcp2.yml index c864739a..8984ca72 100644 --- a/config/pkg/lib/ngtcp2.yml +++ b/config/pkg/lib/ngtcp2.yml @@ -11,9 +11,6 @@ ngtcp2: license: MIT depends: - openssl - suggests: - - nghttp3 - - brotli headers: - ngtcp2 pkg-configs: @@ -22,3 +19,5 @@ ngtcp2: static-libs@unix: - libngtcp2.a - libngtcp2_crypto_ossl.a + static-libs@windows: + - ngtcp2.lib diff --git a/src/Package/Library/ngtcp2.php b/src/Package/Library/ngtcp2.php index 15821225..c88b643b 100644 --- a/src/Package/Library/ngtcp2.php +++ b/src/Package/Library/ngtcp2.php @@ -8,10 +8,27 @@ use StaticPHP\Attribute\Package\BuildFor; use StaticPHP\Attribute\Package\Library; use StaticPHP\Package\LibraryPackage; use StaticPHP\Runtime\Executor\UnixAutoconfExecutor; +use StaticPHP\Runtime\Executor\WindowsCMakeExecutor; #[Library('ngtcp2')] class ngtcp2 { + #[BuildFor('Windows')] + public function buildWin(LibraryPackage $lib): void + { + WindowsCMakeExecutor::create($lib) + ->addConfigureArgs( + '-DENABLE_SHARED_LIB=OFF', + '-DENABLE_STATIC_LIB=ON', + '-DBUILD_STATIC_LIBS=ON', + '-DBUILD_SHARED_LIBS=OFF', + '-DENABLE_STATIC_CRT=ON', + '-DENABLE_LIB_ONLY=ON', + '-DENABLE_OPENSSL=ON', + ) + ->build(); + } + #[BuildFor('Linux')] #[BuildFor('Darwin')] public function build(LibraryPackage $lib): void @@ -26,18 +43,6 @@ class ngtcp2 ]), '--with-openssl=no' ) - ->optionalPackage('nghttp3', ...ac_with_args('libnghttp3', true)) - ->optionalPackage( - 'brotli', - fn (LibraryPackage $brotli) => implode(' ', [ - '--with-brotlidec=yes', - "LIBBROTLIDEC_CFLAGS=\"-I{$brotli->getIncludeDir()}\"", - "LIBBROTLIDEC_LIBS=\"{$brotli->getStaticLibFiles()}\"", - '--with-libbrotlienc=yes', - "LIBBROTLIENC_CFLAGS=\"-I{$brotli->getIncludeDir()}\"", - "LIBBROTLIENC_LIBS=\"{$brotli->getStaticLibFiles()}\"", - ]) - ) ->appendEnv(['PKG_CONFIG' => '$PKG_CONFIG --static']) ->configure('--enable-lib-only') ->make();