From 617b0de31fe348290f147f949a711f45bfe9bdfa Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Fri, 6 Jun 2025 16:56:08 +0700 Subject: [PATCH] add -lpthread and -ldl in openssl::getStaticLibFiles --- config/lib.json | 3 ++- src/SPC/builder/linux/library/openssl.php | 9 +++++++++ src/SPC/builder/macos/MacOSBuilder.php | 2 +- src/SPC/builder/unix/library/ngtcp2.php | 5 +++-- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/config/lib.json b/config/lib.json index 582abd2e..0d4941f0 100644 --- a/config/lib.json +++ b/config/lib.json @@ -654,7 +654,8 @@ "openssl" ], "lib-suggests": [ - "nghttp3" + "nghttp3", + "brotli" ] }, "onig": { diff --git a/src/SPC/builder/linux/library/openssl.php b/src/SPC/builder/linux/library/openssl.php index 5c07ec7e..d57265dd 100644 --- a/src/SPC/builder/linux/library/openssl.php +++ b/src/SPC/builder/linux/library/openssl.php @@ -92,4 +92,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 . '/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; + } } diff --git a/src/SPC/builder/macos/MacOSBuilder.php b/src/SPC/builder/macos/MacOSBuilder.php index 36b8583f..d9a0c505 100644 --- a/src/SPC/builder/macos/MacOSBuilder.php +++ b/src/SPC/builder/macos/MacOSBuilder.php @@ -56,7 +56,7 @@ class MacOSBuilder extends UnixBuilderBase foreach ($lib_specs as $libName => $arr) { $lib = $this->getLib($libName); if ($lib === null && str_starts_with($libName, 'lib')) { - $lib = $this->getExt(substr($libName, 3)); + $lib = $this->getLib(substr($libName, 3)); } $arr = $arr ?? []; diff --git a/src/SPC/builder/unix/library/ngtcp2.php b/src/SPC/builder/unix/library/ngtcp2.php index fef32b75..4393d610 100644 --- a/src/SPC/builder/unix/library/ngtcp2.php +++ b/src/SPC/builder/unix/library/ngtcp2.php @@ -23,8 +23,9 @@ trait ngtcp2 'jemalloc' => null, 'libnghttp3' => null, ]); - if (PHP_OS_FAMILY === 'Linux') { - $args = preg_replace('/OPENSSL_LIBS="(.*?)"/', 'OPENSSL_LIBS="\1 -lpthread -ldl"', $args); + if ($brotli = $this->builder->getLib('brotli')) { + $args .= ' --with-libbrotlidec=yes LIBBROTLIDEC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIDEC_LIBS="' . $brotli->getStaticLibFiles() . '"'; + $args .= ' --with-libbrotlienc=yes LIBBROTLIENC_CFLAGS="-I' . BUILD_ROOT_PATH . '/include" LIBBROTLIENC_LIBS="' . $brotli->getStaticLibFiles() . '"'; } shell()->cd($this->source_dir)