diff --git a/src/SPC/builder/extension/grpc.php b/src/SPC/builder/extension/grpc.php index dbad1746..b7f9543b 100644 --- a/src/SPC/builder/extension/grpc.php +++ b/src/SPC/builder/extension/grpc.php @@ -37,7 +37,7 @@ class grpc extends Extension public function patchBeforeConfigure(): bool { - $libs = ' -l' . join(' -l', $this->getLibraries()); + $libs = join(' ', $this->getLibraries()); FileSystem::replaceFileStr(SOURCE_PATH . '/php-src/configure', '-lgrpc', $libs); return true; } @@ -45,8 +45,16 @@ class grpc extends Extension public function patchBeforeMake(): bool { $extra_libs = trim(getenv('SPC_EXTRA_LIBS')); - $alibs = join('.a ', $this->getLibraries()) . '.a'; - $libs = BUILD_LIB_PATH . '/lib' . str_replace(' ', ' ' . BUILD_LIB_PATH . '/lib', $alibs); + $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', $libs, $extra_libs); f_putenv('SPC_EXTRA_LIBS=' . $extra_libs); // add -Wno-strict-prototypes @@ -62,11 +70,9 @@ class grpc extends Extension private function getLibraries(): array { $libs = shell()->execWithResult('$PKG_CONFIG --libs --static grpc')[1][0]; - $filtered = str_replace('-pthread', '', $libs); - $filtered = preg_replace('/-L\S+/', '', $filtered); + $filtered = preg_replace('/-L\S+/', '', $libs); $filtered = preg_replace('/(?:\S*\/)?lib([a-zA-Z0-9_+-]+)\.a\b/', '-l$1', $filtered); - $out = str_replace('-l', '', $filtered); - $out = preg_replace('/\s+/', ' ', $out); + $out = preg_replace('/\s+/', ' ', $filtered); return explode(' ', trim($out)); } }