Add ext-spx

This commit is contained in:
crazywhalecc 2026-03-16 16:59:27 +08:00
parent d79128cdbf
commit 65c3263b25
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,14 @@
ext-spx:
type: php-extension
artifact:
source:
type: pie
repo: noisebynorthwest/php-spx
extract: php-src/ext/spx
metadata:
license-files: [LICENSE]
license: GPL-3.0-or-later
depends:
- ext-zlib
php-extension:
arg-type: '--enable-SPX@shared_suffix@'

View File

@ -0,0 +1,52 @@
<?php
declare(strict_types=1);
namespace Package\Extension;
use Package\Target\php;
use StaticPHP\Attribute\Package\BeforeStage;
use StaticPHP\Attribute\Package\Extension;
use StaticPHP\Attribute\PatchDescription;
use StaticPHP\Package\PhpExtensionPackage;
use StaticPHP\Util\FileSystem;
#[Extension('spx')]
class spx extends PhpExtensionPackage
{
#[BeforeStage('php', [php::class, 'buildconfForUnix'], 'ext-spx')]
#[PatchDescription('Fix spx extension compile error when building as static')]
public function patchBeforeBuildconf(): bool
{
FileSystem::replaceFileStr(
"{$this->getSourceDir()}/config.m4",
'CFLAGS="$CFLAGS -Werror -Wall -O3 -pthread -std=gnu90"',
'CFLAGS="$CFLAGS -pthread"'
);
FileSystem::replaceFileStr(
"{$this->getSourceDir()}/src/php_spx.h",
"extern zend_module_entry spx_module_entry;\n",
"extern zend_module_entry spx_module_entry;;\n#define phpext_spx_ptr &spx_module_entry\n"
);
FileSystem::copy("{$this->getSourceDir()}/src/php_spx.h", "{$this->getSourceDir()}/php_spx.h");
return true;
}
#[BeforeStage('php', [php::class, 'configureForUnix'], 'ext-spx')]
#[PatchDescription('Fix spx extension compile error when configuring')]
public function patchBeforeConfigure(): void
{
FileSystem::replaceFileStr(
"{$this->getSourceDir()}/Makefile.frag",
'@cp -r assets/web-ui/*',
"@cp -r {$this->getSourceDir()}/assets/web-ui/*",
);
}
public function getSharedExtensionEnv(): array
{
$env = parent::getSharedExtensionEnv();
$env['SPX_SHARED_LIBADD'] = $env['LIBS'];
return $env;
}
}