Files
static-php-cli/src/SPC/builder/linux/library/liburing.php

60 lines
1.6 KiB
PHP
Raw Normal View History

2025-08-25 22:57:04 +07:00
<?php
declare(strict_types=1);
namespace SPC\builder\linux\library;
2025-08-26 18:16:44 +07:00
use SPC\builder\linux\SystemUtil;
use SPC\store\FileSystem;
2025-08-25 22:57:04 +07:00
use SPC\util\executor\UnixAutoconfExecutor;
use SPC\util\SPCTarget;
2025-08-25 22:57:04 +07:00
class liburing extends LinuxLibraryBase
{
public const NAME = 'liburing';
2025-08-26 18:16:44 +07:00
public function patchBeforeBuild(): bool
{
if (!SystemUtil::isMuslDist()) {
return false;
}
FileSystem::replaceFileStr($this->source_dir . '/configure', 'realpath -s', 'realpath');
return true;
}
2025-08-25 22:57:04 +07:00
protected function build(): void
{
$use_libc = SPCTarget::getLibc() !== 'glibc' || version_compare(SPCTarget::getLibcVersion(), '2.30', '>=');
$make = UnixAutoconfExecutor::create($this);
if (!$use_libc) {
$make->appendEnv([
'CC' => 'gcc', // libc-less version fails to compile with clang or zig
'CXX' => 'g++',
'AR' => 'ar',
'LD' => 'ld',
]);
} else {
$make->appendEnv([
'CFLAGS' => '-D_GNU_SOURCE',
]);
}
$make
2025-08-25 22:57:04 +07:00
->removeConfigureArgs(
'--disable-shared',
'--enable-static',
'--with-pic',
'--enable-pic',
)
->addConfigureArgs(
$use_libc ? '--use-libc' : '',
2025-08-25 22:57:04 +07:00
)
->configure()
2025-08-26 19:35:10 +07:00
->make('library', with_clean: false)
->exec("rm -rf {$this->getLibDir()}/liburing*.so*");
2025-08-25 22:57:04 +07:00
$this->patchPkgconfPrefix(['liburing.pc', 'liburing-ffi.pc']);
}
}