From 22bec873a875737b549807f8bf997165ea1f8353 Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Wed, 23 Jul 2025 13:55:09 +0700 Subject: [PATCH] more merge stuff --- config/lib.json | 3 +++ src/SPC/builder/extension/grpc.php | 27 ++++----------------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/config/lib.json b/config/lib.json index 5d356920..1c4525d8 100644 --- a/config/lib.json +++ b/config/lib.json @@ -189,6 +189,9 @@ "static-libs-unix": [ "libgrpc.a" ], + "pkg-configs": [ + "grpc" + ], "lib-depends": [ "zlib", "openssl", diff --git a/src/SPC/builder/extension/grpc.php b/src/SPC/builder/extension/grpc.php index 36f84869..7e384355 100644 --- a/src/SPC/builder/extension/grpc.php +++ b/src/SPC/builder/extension/grpc.php @@ -9,6 +9,7 @@ use SPC\builder\windows\WindowsBuilder; use SPC\store\FileSystem; use SPC\util\CustomExt; use SPC\util\GlobalEnvManager; +use SPC\util\SPCConfigUtil; use SPC\util\SPCTarget; #[CustomExt('grpc')] @@ -40,37 +41,17 @@ class grpc extends Extension public function patchBeforeConfigure(): bool { - $libs = join(' ', $this->getLibraries()); + $util = new SPCConfigUtil($this->builder); + $config = $util->config(['grpc']); + $libs = $config['libs']; FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/configure', '-lgrpc', $libs); return true; } public function patchBeforeMake(): bool { - $extra_libs = trim(getenv('SPC_EXTRA_LIBS')); - $libs = array_map(function (string $lib) { - if (str_starts_with($lib, '-l')) { - $staticLib = substr($lib, 2); - $staticLib = BUILD_LIB_PATH . '/lib' . $staticLib . '.a'; - if (file_exists($staticLib)) { - return $staticLib; - } - } - return $lib; - }, $this->getLibraries()); - $extra_libs = str_replace(BUILD_LIB_PATH . '/libgrpc.a', join(' ', $libs), $extra_libs); - f_putenv('SPC_EXTRA_LIBS=' . $extra_libs); // add -Wno-strict-prototypes GlobalEnvManager::putenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS=' . getenv('SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS') . ' -Wno-strict-prototypes'); return true; } - - private function getLibraries(): array - { - $libs = shell()->execWithResult('$PKG_CONFIG --libs --static grpc')[1][0]; - $filtered = preg_replace('/-L\S+/', '', $libs); - $filtered = preg_replace('/(?:\S*\/)?lib([a-zA-Z0-9_+-]+)\.a\b/', '-l$1', $filtered); - $out = preg_replace('/\s+/', ' ', $filtered); - return explode(' ', trim($out)); - } }