Files
static-php-cli/src/Package/Library/krb5.php

71 lines
2.4 KiB
PHP
Raw Normal View History

2026-02-03 10:59:56 +08:00
<?php
declare(strict_types=1);
namespace Package\Library;
use StaticPHP\Attribute\Package\BuildFor;
use StaticPHP\Attribute\Package\Library;
use StaticPHP\Package\LibraryPackage;
use StaticPHP\Package\PackageInstaller;
use StaticPHP\Runtime\Executor\UnixAutoconfExecutor;
use StaticPHP\Runtime\SystemTarget;
2026-04-29 15:44:44 +08:00
use StaticPHP\Toolchain\Interface\ToolchainInterface;
use StaticPHP\Toolchain\ZigToolchain;
2026-02-03 10:59:56 +08:00
use StaticPHP\Util\SPCConfigUtil;
#[Library('krb5')]
class krb5
{
#[BuildFor('Linux')]
#[BuildFor('Darwin')]
2026-04-29 15:44:44 +08:00
public function build(LibraryPackage $lib, PackageInstaller $installer, ToolchainInterface $toolchain): void
2026-02-03 10:59:56 +08:00
{
2026-04-11 00:45:31 +08:00
if (!file_exists($lib->getSourceRoot() . '/configure')) {
shell()->cd($lib->getSourceRoot())->exec('autoreconf -if');
}
2026-02-03 10:59:56 +08:00
$resolved = array_keys($installer->getResolvedPackages());
$spc = new SPCConfigUtil(['no_php' => true, 'libs_only_deps' => true]);
$config = $spc->getPackageDepsConfig($lib->getName(), $resolved);
2026-02-03 10:59:56 +08:00
$extraEnv = [
'CFLAGS' => '-fcommon',
'LIBS' => $config['libs'],
];
if (getenv('SPC_LD_LIBRARY_PATH') && getenv('SPC_LIBRARY_PATH')) {
$extraEnv = [...$extraEnv, ...[
'LD_LIBRARY_PATH' => getenv('SPC_LD_LIBRARY_PATH'),
'LIBRARY_PATH' => getenv('SPC_LIBRARY_PATH'),
]];
}
$args = [
'--disable-nls',
'--disable-rpath',
'--without-system-verto',
];
if (SystemTarget::getTargetOS() === 'Darwin') {
$extraEnv['LDFLAGS'] = '-framework Kerberos';
$args[] = 'ac_cv_func_secure_getenv=no';
}
2026-04-29 15:44:44 +08:00
$executor = UnixAutoconfExecutor::create($lib)
2026-02-03 10:59:56 +08:00
->appendEnv($extraEnv)
->optionalPackage('ldap', '--with-ldap', '--without-ldap')
->optionalPackage('libedit', '--with-libedit', '--without-libedit')
2026-04-29 15:44:44 +08:00
->configure(...$args);
if ($toolchain instanceof ZigToolchain) {
$executor->exec('find . -name Makefile -exec sed -i "s/-Werror=incompatible-pointer-types//g" {} +');
}
$executor->make();
2026-02-03 10:59:56 +08:00
$lib->patchPkgconfPrefix([
'krb5-gssapi.pc',
'krb5.pc',
'kadm-server.pc',
'kadm-client.pc',
'kdb.pc',
'mit-krb5-gssapi.pc',
'mit-krb5.pc',
'gssrpc.pc',
]);
}
}