Merge remote-tracking branch 'origin/main' into fix/icurel

This commit is contained in:
DubbleClick 2025-06-07 00:00:00 +07:00
commit 635fbae3c9
7 changed files with 29 additions and 18 deletions

View File

@ -635,9 +635,6 @@
], ],
"lib-depends": [ "lib-depends": [
"openssl" "openssl"
],
"lib-suggests": [
"ngtcp2"
] ]
}, },
"ngtcp2": { "ngtcp2": {
@ -655,6 +652,10 @@
], ],
"lib-depends": [ "lib-depends": [
"openssl" "openssl"
],
"lib-suggests": [
"nghttp3",
"brotli"
] ]
}, },
"onig": { "onig": {

View File

@ -81,7 +81,7 @@ class LinuxBuilder extends UnixBuilderBase
foreach ($libSpecs as $libName => $arr) { foreach ($libSpecs as $libName => $arr) {
$lib = $this->getLib($libName); $lib = $this->getLib($libName);
if ($lib === null && str_starts_with($libName, 'lib')) { if ($lib === null && str_starts_with($libName, 'lib')) {
$lib = $this->getExt(substr($libName, 3)); $lib = $this->getLib(substr($libName, 3));
} }
$arr = $arr ?? []; $arr = $arr ?? [];

View File

@ -96,4 +96,13 @@ class openssl extends LinuxLibraryBase
FileSystem::replaceFileRegex(BUILD_LIB_PATH . '/pkgconfig/libcrypto.pc', '/Libs.private:.*/m', 'Libs.private: ${libdir}/libz.a'); FileSystem::replaceFileRegex(BUILD_LIB_PATH . '/pkgconfig/libcrypto.pc', '/Libs.private:.*/m', 'Libs.private: ${libdir}/libz.a');
FileSystem::replaceFileRegex(BUILD_LIB_PATH . '/cmake/OpenSSL/OpenSSLConfig.cmake', '/set\(OPENSSL_LIBCRYPTO_DEPENDENCIES .*\)/m', 'set(OPENSSL_LIBCRYPTO_DEPENDENCIES "${OPENSSL_LIBRARY_DIR}/libz.a")'); FileSystem::replaceFileRegex(BUILD_LIB_PATH . '/cmake/OpenSSL/OpenSSLConfig.cmake', '/set\(OPENSSL_LIBCRYPTO_DEPENDENCIES .*\)/m', 'set(OPENSSL_LIBCRYPTO_DEPENDENCIES "${OPENSSL_LIBRARY_DIR}/libz.a")');
} }
public function getStaticLibFiles(string $style = 'autoconf', bool $recursive = true): string
{
$libFiles = parent::getStaticLibFiles($style, $recursive);
if (!str_contains('-ldl -lpthread', $libFiles)) {
$libFiles .= ' -ldl -lpthread';
}
return $libFiles;
}
} }

View File

@ -56,7 +56,7 @@ class MacOSBuilder extends UnixBuilderBase
foreach ($lib_specs as $libName => $arr) { foreach ($lib_specs as $libName => $arr) {
$lib = $this->getLib($libName); $lib = $this->getLib($libName);
if ($lib === null && str_starts_with($libName, 'lib')) { if ($lib === null && str_starts_with($libName, 'lib')) {
$lib = $this->getExt(substr($libName, 3)); $lib = $this->getLib(substr($libName, 3));
} }
$arr = $arr ?? []; $arr = $arr ?? [];

View File

@ -31,6 +31,12 @@ trait nghttp2
'jemalloc' => null, 'jemalloc' => null,
'systemd' => null, 'systemd' => null,
]); ]);
if ($brotli = $this->builder->getLib('brotli')) {
/* @phpstan-ignore-next-line */
$args .= ' --with-libbrotlidec=yes LIBBROTLIDEC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIDEC_LIBS="' . $brotli->getStaticLibFiles() . '"';
/* @phpstan-ignore-next-line */
$args .= ' --with-libbrotlienc=yes LIBBROTLIENC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIENC_LIBS="' . $brotli->getStaticLibFiles() . '"';
}
[,,$destdir] = SEPARATED_PATH; [,,$destdir] = SEPARATED_PATH;

View File

@ -6,22 +6,15 @@ namespace SPC\builder\unix\library;
use SPC\exception\FileSystemException; use SPC\exception\FileSystemException;
use SPC\exception\RuntimeException; use SPC\exception\RuntimeException;
use SPC\exception\WrongUsageException;
trait nghttp3 trait nghttp3
{ {
/** /**
* @throws FileSystemException * @throws FileSystemException
* @throws RuntimeException * @throws RuntimeException
* @throws WrongUsageException
*/ */
protected function build(): void protected function build(): void
{ {
$args = $this->builder->makeAutoconfArgs(static::NAME, [
'zlib' => null,
'openssl' => null,
]);
shell()->cd($this->source_dir) shell()->cd($this->source_dir)
->setEnv([ ->setEnv([
'CFLAGS' => $this->getLibExtraCFlags(), 'CFLAGS' => $this->getLibExtraCFlags(),
@ -34,7 +27,6 @@ trait nghttp3
'--disable-shared ' . '--disable-shared ' .
'--with-pic ' . '--with-pic ' .
'--enable-lib-only ' . '--enable-lib-only ' .
$args . ' ' .
'--prefix=' '--prefix='
) )
->execWithEnv('make clean') ->execWithEnv('make clean')

View File

@ -18,12 +18,17 @@ trait ngtcp2
protected function build(): void protected function build(): void
{ {
$args = $this->builder->makeAutoconfArgs(static::NAME, [ $args = $this->builder->makeAutoconfArgs(static::NAME, [
'zlib' => null,
'openssl' => null, 'openssl' => null,
'libxml2' => null,
'libev' => null, 'libev' => null,
'jemalloc' => null, 'jemalloc' => null,
'libnghttp3' => null,
]); ]);
if ($brotli = $this->builder->getLib('brotli')) {
/* @phpstan-ignore-next-line */
$args .= ' --with-libbrotlidec=yes LIBBROTLIDEC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIDEC_LIBS="' . $brotli->getStaticLibFiles() . '"';
/* @phpstan-ignore-next-line */
$args .= ' --with-libbrotlienc=yes LIBBROTLIENC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIENC_LIBS="' . $brotli->getStaticLibFiles() . '"';
}
shell()->cd($this->source_dir) shell()->cd($this->source_dir)
->setEnv([ ->setEnv([
@ -43,8 +48,6 @@ trait ngtcp2
->execWithEnv('make clean') ->execWithEnv('make clean')
->execWithEnv("make -j{$this->builder->concurrency}") ->execWithEnv("make -j{$this->builder->concurrency}")
->execWithEnv('make install DESTDIR=' . BUILD_ROOT_PATH); ->execWithEnv('make install DESTDIR=' . BUILD_ROOT_PATH);
$this->patchPkgconfPrefix(['libngtcp2.pc']); $this->patchPkgconfPrefix(['libngtcp2.pc', 'libngtcp2_crypto_ossl.pc']);
$this->patchPkgconfPrefix(['libngtcp2_crypto_ossl.pc']);
$this->patchLaDependencyPrefix(['libngtcp2.la', 'libngtcp2_crypto_ossl.la']);
} }
} }