Skip to content

Commit 51ec819

Browse files
committed
bring back static lib logic
1 parent f75c58b commit 51ec819

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

src/SPC/util/SPCConfigUtil.php

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,24 +88,25 @@ public function config(array $extensions = [], array $libraries = [], bool $incl
8888
if ($this->builder->hasCpp()) {
8989
$libs .= SPCTarget::getTargetOS() === 'Darwin' ? ' -lc++' : ' -lstdc++';
9090
}
91+
9192
if ($this->libs_only_deps) {
92-
$libs = '-L' . BUILD_LIB_PATH . ' ' . $libs;
9393
return [
9494
'cflags' => trim(getenv('CFLAGS') . ' ' . $cflags),
9595
'ldflags' => trim(getenv('LDFLAGS') . ' ' . $ldflags),
96-
'libs' => trim(getenv('LIBS') . ' ' . $libs),
96+
'libs' => trim(getenv('LIBS') . ' ' . $libs),
9797
];
9898
}
9999

100100
// embed
101101
if (!$this->no_php) {
102-
$libs = "-lphp -lc {$libs}";
102+
$libs = "-lphp {$libs} -lc";
103103
}
104-
$libs = '-L' . BUILD_LIB_PATH . ' ' . $libs;
104+
105105
// mimalloc must come first
106106
if (str_contains($libs, BUILD_LIB_PATH . '/mimalloc.o')) {
107107
$libs = BUILD_LIB_PATH . '/mimalloc.o ' . str_replace(BUILD_LIB_PATH . '/mimalloc.o', '', $libs);
108108
}
109+
109110
return [
110111
'cflags' => trim(getenv('CFLAGS') . ' ' . $cflags),
111112
'ldflags' => trim(getenv('LDFLAGS') . ' ' . $ldflags),
@@ -202,6 +203,9 @@ private function getLibsString(array $libraries, bool $use_short_libs = true): s
202203
if (in_array('imap', $libraries) && SPCTarget::getLibc() === 'glibc') {
203204
$lib_names[] = '-lcrypt';
204205
}
206+
if (!$use_short_libs) {
207+
$lib_names = array_map(fn ($l) => $this->getFullLibName($l), $lib_names);
208+
}
205209
return implode(' ', $lib_names);
206210
}
207211

@@ -214,6 +218,19 @@ private function getShortLibName(string $lib): string
214218
return '-l' . substr($lib, 3, -2);
215219
}
216220

221+
private function getFullLibName(string $lib)
222+
{
223+
if (!str_starts_with($lib, '-l')) {
224+
return $lib;
225+
}
226+
$libname = substr($lib, 2);
227+
$staticLib = BUILD_LIB_PATH . '/' . "lib{$libname}.a";
228+
if (file_exists($staticLib)) {
229+
return $staticLib;
230+
}
231+
return $lib;
232+
}
233+
217234
private function getFrameworksString(array $extensions): string
218235
{
219236
$list = [];

0 commit comments

Comments
 (0)