From 508cfa67e5e47af405f29e722154d0bf943053bc Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 21 Mar 2026 18:43:05 +0800 Subject: [PATCH] Make openssl build faster --- config/pkg/lib/openssl.yml | 3 +++ src/Package/Library/openssl.php | 9 ++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/config/pkg/lib/openssl.yml b/config/pkg/lib/openssl.yml index 161cdceb..da02f202 100644 --- a/config/pkg/lib/openssl.yml +++ b/config/pkg/lib/openssl.yml @@ -16,6 +16,9 @@ openssl: license: OpenSSL depends: - zlib + depends@windows: + - zlib + - jom headers: - openssl static-libs@unix: diff --git a/src/Package/Library/openssl.php b/src/Package/Library/openssl.php index a01d01b0..69297198 100644 --- a/src/Package/Library/openssl.php +++ b/src/Package/Library/openssl.php @@ -10,6 +10,7 @@ use StaticPHP\Attribute\Package\Validate; use StaticPHP\DI\ApplicationContext; use StaticPHP\Exception\EnvironmentException; use StaticPHP\Package\LibraryPackage; +use StaticPHP\Package\PackageBuilder; use StaticPHP\Runtime\SystemTarget; use StaticPHP\Util\FileSystem; use StaticPHP\Util\System\LinuxUtil; @@ -36,7 +37,7 @@ class openssl } #[BuildFor('Windows')] - public function buildWin(LibraryPackage $lib): void + public function buildWin(LibraryPackage $lib, PackageBuilder $builder): void { $perl = ApplicationContext::get('perl'); $cmd = cmd()->cd($lib->getSourceDir()) @@ -47,7 +48,9 @@ class openssl '--with-zlib-lib=' . quote($lib->getLibDir()) . ' ' . '--with-zlib-include=' . quote($lib->getIncludeDir()) . ' ' . '--release ' . - 'no-legacy ' + 'no-legacy ' . + 'no-tests ' . + '/FS' ); // patch zlib @@ -56,7 +59,7 @@ class openssl FileSystem::replaceFileStr("{$lib->getSourceDir()}\\Makefile", '/debug', '/incremental:no /opt:icf /dynamicbase /nxcompat /ltcg /nodefaultlib:msvcrt'); // build - $cmd->exec("nmake install_dev CNF_LDFLAGS=\"/NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:msvcrt /NODEFAULTLIB:msvcrtd /DEFAULTLIB:libcmt /LIBPATH:{$lib->getLibDir()} zlibstatic.lib\""); + $cmd->exec("jom.exe /j{$builder->concurrency} install_dev CNF_LDFLAGS=\"/NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:msvcrt /NODEFAULTLIB:msvcrtd /DEFAULTLIB:libcmt /LIBPATH:{$lib->getLibDir()} zlibstatic.lib\""); // copy necessary c files FileSystem::copy("{$lib->getSourceDir()}\\ms\\applink.c", "{$lib->getIncludeDir()}\\openssl\\applink.c");