diff --git a/src/SPC/builder/Extension.php b/src/SPC/builder/Extension.php index 6b518b06..2b8263de 100644 --- a/src/SPC/builder/Extension.php +++ b/src/SPC/builder/Extension.php @@ -222,7 +222,8 @@ class Extension { $config = (new SPCConfigUtil($this->builder))->config([$this->getName()], array_map(fn ($l) => $l->getName(), $this->builder->getLibs())); [$staticLibs, $sharedLibs] = $this->splitLibsIntoStaticAndShared($config['libs']); - $lstdcpp = str_contains($sharedLibs, '-lstdc++') ? '-lstdc++' : ''; + $lstdcpp = str_contains($sharedLibs, '-l:libstdc++.a') ? '-l:libstdc++.a' : null; + $lstdcpp ??= str_contains($sharedLibs, '-lstdc++') ? '-lstdc++' : ''; $makefileContent = file_get_contents($this->source_dir . '/Makefile'); if (preg_match('/^(.*_SHARED_LIBADD\s*=\s*)(.*)$/m', $makefileContent, $matches)) { diff --git a/src/SPC/builder/extension/grpc.php b/src/SPC/builder/extension/grpc.php index f2f36c16..3833030e 100644 --- a/src/SPC/builder/extension/grpc.php +++ b/src/SPC/builder/extension/grpc.php @@ -60,7 +60,17 @@ class grpc extends Extension protected function getSharedExtensionEnv(): array { $env = parent::getSharedExtensionEnv(); - $env['CPPFLAGS'] = $env['CXXFLAGS']; + $env['CPPFLAGS'] = $env['CXXFLAGS'] . ' -Wno-attributes'; return $env; } + + protected function splitLibsIntoStaticAndShared(string $allLibs): array + { + [$static, $shared] = parent::splitLibsIntoStaticAndShared($allLibs); + if (str_contains(getenv('PATH'), 'rh/devtoolset') || str_contains(getenv('PATH'), 'rh/gcc-toolset')) { + $static .= ' -l:libstdc++.a'; + $shared = str_replace('-lstdc++', '', $shared); + } + return [clean_spaces($static), clean_spaces($shared)]; + } }