dirty as fuck, I don't understand why AMQP_SHARED_LIBADD is not available in ./configure

This commit is contained in:
DubbleClick 2025-06-11 22:41:55 +07:00
parent 62a581393d
commit 4be1e75128

View File

@ -359,15 +359,36 @@ class Extension
$env = [ $env = [
'CFLAGS' => $config['cflags'], 'CFLAGS' => $config['cflags'],
'CXXFLAGS' => $config['cflags'], 'CXXFLAGS' => $config['cflags'],
'LDFLAGS' => $config['ldflags'], 'LDFLAGS' => $config['ldflags']
'LIBS' => '-Wl,-Bstatic -Wl,--start-group ' . $staticLibString . ' -Wl,--end-group -Wl,-Bdynamic ' . $sharedLibString, . ' -Wl,--require-defined=SSL_CTX_use_RSAPrivateKey'
. ' -Wl,--undefined=SSL_connect'
. ' -Wl,--undefined=SSL_ctrl'
. ' -Wl,--undefined=SSL_CTX_ctrl'
. ' -Wl,--undefined=SSL_CTX_free'
. ' -Wl,--undefined=SSL_CTX_load_verify_locations'
. ' -Wl,--undefined=SSL_CTX_new'
. ' -Wl,--undefined=SSL_CTX_set_default_passwd_cb_userdata'
. ' -Wl,--undefined=SSL_CTX_set_default_verify_paths'
. ' -Wl,--undefined=SSL_CTX_use_certificate_chain_file'
. ' -Wl,--undefined=SSL_CTX_use_PrivateKey_file'
. ' -Wl,--undefined=SSL_CTX_use_RSAPrivateKey'
. ' -Wl,--undefined=SSL_free'
. ' -Wl,--undefined=SSL_get1_peer_certificate'
. ' -Wl,--undefined=SSL_get_error'
. ' -Wl,--undefined=SSL_get_verify_result'
. ' -Wl,--undefined=SSL_new'
. ' -Wl,--undefined=SSL_read'
. ' -Wl,--undefined=SSL_set_bio'
. ' -Wl,--undefined=SSL_shutdown'
. ' -Wl,--undefined=SSL_write',
'LIBS' => '-Wl,-Bstatic -Wl,--start-group -Wl,--whole-archive ' . $staticLibString . ' -Wl,--no-whole-archive -Wl,--end-group -Wl,-Bdynamic ' . $sharedLibString,
'LD_LIBRARY_PATH' => BUILD_LIB_PATH, 'LD_LIBRARY_PATH' => BUILD_LIB_PATH,
]; ];
FileSystem::replaceFileRegex( FileSystem::replaceFileRegex(
$this->source_dir . '/config.m4', $this->source_dir . '/config.m4',
'/(\$PKG_CONFIG\s+[^\s]+)\s+--libs/', '/=(.\$PKG_CONFIG\s+(?:[^\s]+\s+)*?)--libs.*/',
'$1 --static --libs' '"' . $staticLibString . '"'
); );
// prepare configure args // prepare configure args
@ -381,8 +402,21 @@ class Extension
shell()->cd($this->source_dir) shell()->cd($this->source_dir)
->setEnv($env) ->setEnv($env)
->exec('./configure ' . $this->getUnixConfigureArg(true) . ' --with-php-config=' . BUILD_BIN_PATH . '/php-config --enable-shared --disable-static') ->exec(
->exec('make clean') './configure ' . $this->getUnixConfigureArg(true) .
' --with-php-config=' . BUILD_BIN_PATH . '/php-config ' .
'--enable-shared --disable-static'
);
FileSystem::replaceFileRegex(
$this->source_dir . '/Makefile',
'/^(.*_SHARED_LIBADD\s*=.*)$/m',
'$1 ' . $staticLibString
);
shell()->cd($this->source_dir)
->setEnv($env)
->exec('make clean')
->exec('make -j' . $this->builder->concurrency) ->exec('make -j' . $this->builder->concurrency)
->exec('make install'); ->exec('make install');
} }
@ -483,7 +517,7 @@ class Extension
$sharedLibString .= '-l' . $lib . ' '; $sharedLibString .= '-l' . $lib . ' ';
} }
} }
return [$staticLibString, $sharedLibString]; return [trim($staticLibString), trim($sharedLibString)];
} }
private function getLibraryDependencies(bool $recursive = false): array private function getLibraryDependencies(bool $recursive = false): array