bring back setting, some libraries don't build a static version if the shared one should also be built...

This commit is contained in:
henderkes 2026-02-20 10:30:48 +07:00
parent cc69a169a8
commit ed1e02823a
10 changed files with 11 additions and 11 deletions

View File

@ -25,8 +25,8 @@ class pgsql extends Extension
{ {
if ($this->builder->getPHPVersionID() >= 80400) { if ($this->builder->getPHPVersionID() >= 80400) {
$libfiles = $this->getLibFilesString(); $libfiles = $this->getLibFilesString();
$libfiles = str_replace(BUILD_LIB_PATH . '/lib', '-l', $libfiles); $libfiles = deduplicate_flags($libfiles);
$libfiles = str_replace('.a', '', $libfiles); $libfiles = clean_spaces($libfiles);
return '--with-pgsql' . ($shared ? '=shared' : '') . return '--with-pgsql' . ($shared ? '=shared' : '') .
' PGSQL_CFLAGS=-I' . BUILD_INCLUDE_PATH . ' PGSQL_CFLAGS=-I' . BUILD_INCLUDE_PATH .
' PGSQL_LIBS="-L' . BUILD_LIB_PATH . ' ' . $libfiles . '"'; ' PGSQL_LIBS="-L' . BUILD_LIB_PATH . ' ' . $libfiles . '"';

View File

@ -56,10 +56,11 @@ class openssl extends LinuxLibraryBase
// TODO: in v3 use the following: $openssl_dir ??= SystemUtil::getOSRelease()['dist'] === 'redhat' ? '/etc/pki/tls' : '/etc/ssl'; // TODO: in v3 use the following: $openssl_dir ??= SystemUtil::getOSRelease()['dist'] === 'redhat' ? '/etc/pki/tls' : '/etc/ssl';
$openssl_dir ??= '/etc/ssl'; $openssl_dir ??= '/etc/ssl';
$ex_lib = trim($ex_lib); $ex_lib = trim($ex_lib);
$noShared = getenv('SPC_LINK_STATIC') ? 'no-shared' : '';
shell()->cd($this->source_dir)->initializeEnv($this) shell()->cd($this->source_dir)->initializeEnv($this)
->exec( ->exec(
"./Configure {$extra} " . "./Configure {$noShared} {$extra} " .
'--prefix=' . BUILD_ROOT_PATH . ' ' . '--prefix=' . BUILD_ROOT_PATH . ' ' .
'--libdir=' . BUILD_LIB_PATH . ' ' . '--libdir=' . BUILD_LIB_PATH . ' ' .
"--openssldir={$openssl_dir} " . "--openssldir={$openssl_dir} " .

View File

@ -15,7 +15,7 @@ trait UnixLibraryTrait
{ {
$libs = $include_self ? [$this] : []; $libs = $include_self ? [$this] : [];
array_unshift($libs, ...array_values($this->getDependencies(recursive: true))); array_unshift($libs, ...array_values($this->getDependencies(recursive: true)));
$config = new SPCConfigUtil($this->builder, options: ['libs_only_deps' => true, 'absolute_libs' => true]); $config = new SPCConfigUtil($this->builder, options: ['libs_only_deps' => true]);
$res = $config->config(libraries: array_map(fn ($x) => $x->getName(), $libs)); $res = $config->config(libraries: array_map(fn ($x) => $x->getName(), $libs));
return $res['libs']; return $res['libs'];
} }

View File

@ -11,7 +11,7 @@ trait libuv
protected function build(): void protected function build(): void
{ {
UnixCMakeExecutor::create($this) UnixCMakeExecutor::create($this)
->addConfigureArgs('-DLIBUV_BUILD_SHARED=ON') ->addConfigureArgs('-DLIBUV_BUILD_SHARED=' . (getenv('SPC_LINK_STATIC') ? 'OFF' : 'ON'))
->build(); ->build();
// patch pkgconfig // patch pkgconfig
$this->patchPkgconfPrefix(['libuv-static.pc']); $this->patchPkgconfPrefix(['libuv-static.pc']);

View File

@ -13,7 +13,7 @@ trait mimalloc
{ {
$cmake = UnixCMakeExecutor::create($this) $cmake = UnixCMakeExecutor::create($this)
->addConfigureArgs( ->addConfigureArgs(
'-DMI_BUILD_SHARED=ON', '-DMI_BUILD_SHARED=' . (getenv('SPC_LINK_STATIC') ? 'OFF' : 'ON'),
'-DMI_BUILD_OBJECT=OFF', '-DMI_BUILD_OBJECT=OFF',
'-DMI_INSTALL_TOPLEVEL=ON', '-DMI_INSTALL_TOPLEVEL=ON',
); );

View File

@ -14,7 +14,7 @@ trait tidy
->setBuildDir("{$this->source_dir}/build-dir") ->setBuildDir("{$this->source_dir}/build-dir")
->addConfigureArgs( ->addConfigureArgs(
'-DSUPPORT_CONSOLE_APP=OFF', '-DSUPPORT_CONSOLE_APP=OFF',
'-DBUILD_SHARED_LIB=ON' '-DBUILD_SHARED_LIB=' . (getenv('SPC_LINK_STATIC') ? 'OFF' : 'ON')
); );
if (version_compare(get_cmake_version(), '4.0.0', '>=')) { if (version_compare(get_cmake_version(), '4.0.0', '>=')) {
$cmake->addConfigureArgs('-DCMAKE_POLICY_VERSION_MINIMUM=3.5'); $cmake->addConfigureArgs('-DCMAKE_POLICY_VERSION_MINIMUM=3.5');

View File

@ -14,7 +14,7 @@ trait zstd
->setBuildDir("{$this->source_dir}/build/cmake/build") ->setBuildDir("{$this->source_dir}/build/cmake/build")
->addConfigureArgs( ->addConfigureArgs(
'-DZSTD_BUILD_STATIC=ON', '-DZSTD_BUILD_STATIC=ON',
'-DZSTD_BUILD_SHARED=ON', '-DZSTD_BUILD_SHARED=' . (getenv('SPC_LINK_STATIC') ? 'OFF' : 'ON'),
) )
->build(); ->build();
$this->patchPkgconfPrefix(); $this->patchPkgconfPrefix();

View File

@ -39,7 +39,6 @@ class SPCConfigCommand extends BaseCommand
$util = new SPCConfigUtil(options: [ $util = new SPCConfigUtil(options: [
'no_php' => $this->getOption('no-php'), 'no_php' => $this->getOption('no-php'),
'libs_only_deps' => $this->getOption('libs-only-deps'), 'libs_only_deps' => $this->getOption('libs-only-deps'),
'absolute_libs' => $this->getOption('absolute-libs'),
]); ]);
$config = $util->config($extensions, $libraries, $include_suggest_ext, $include_suggest_lib); $config = $util->config($extensions, $libraries, $include_suggest_ext, $include_suggest_lib);

View File

@ -134,7 +134,7 @@ class UnixAutoconfExecutor extends Executor
{ {
return [ return [
'--enable-static', '--enable-static',
'--enable-shared', (getenv('SPC_LINK_STATIC') ? '--disable-shared' : '--enable-shared'),
"--prefix={$this->library->getBuildRootPath()}", "--prefix={$this->library->getBuildRootPath()}",
'--with-pic', '--with-pic',
'--enable-pic', '--enable-pic',

View File

@ -151,7 +151,7 @@ class UnixCMakeExecutor extends Executor
'-DCMAKE_INSTALL_LIBDIR=lib', '-DCMAKE_INSTALL_LIBDIR=lib',
'-DCMAKE_INSTALL_INCLUDEDIR=include', '-DCMAKE_INSTALL_INCLUDEDIR=include',
'-DPOSITION_INDEPENDENT_CODE=ON', '-DPOSITION_INDEPENDENT_CODE=ON',
'-DBUILD_SHARED_LIBS=ON', '-DBUILD_SHARED_LIBS=' . (getenv('SPC_LINK_STATIC') ? 'OFF' : 'ON'),
"-DCMAKE_TOOLCHAIN_FILE={$this->makeCmakeToolchainFile()}", "-DCMAKE_TOOLCHAIN_FILE={$this->makeCmakeToolchainFile()}",
]); ]);
} }