mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-04 15:25:41 +08:00
44 lines
1.6 KiB
PHP
44 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace Package\Extension;
|
|
|
|
use Package\Target\php;
|
|
use StaticPHP\Attribute\Package\BeforeStage;
|
|
use StaticPHP\Attribute\Package\CustomPhpConfigureArg;
|
|
use StaticPHP\Attribute\Package\Extension;
|
|
use StaticPHP\Attribute\PatchDescription;
|
|
use StaticPHP\Package\PackageInstaller;
|
|
use StaticPHP\Package\PhpExtensionPackage;
|
|
use StaticPHP\Util\SourcePatcher;
|
|
|
|
#[Extension('xlswriter')]
|
|
class xlswriter extends PhpExtensionPackage
|
|
{
|
|
#[CustomPhpConfigureArg('Darwin')]
|
|
#[CustomPhpConfigureArg('Linux')]
|
|
public function getUnixConfigureArg(bool $shared, PackageInstaller $installer): string
|
|
{
|
|
$shared = $shared ? '=shared' : '';
|
|
$arg = "--with-xlswriter{$shared} --enable-reader";
|
|
if ($installer->getLibraryPackage('openssl')) {
|
|
$arg .= ' --with-openssl=' . $installer->getLibraryPackage('openssl')->getBuildRootPath();
|
|
}
|
|
return $arg;
|
|
}
|
|
|
|
#[BeforeStage('php', [php::class, 'makeForWindows'], 'ext-xlswriter')]
|
|
#[PatchDescription('Fix Windows build: apply win32 patch and add UTF-8 BOM to theme.c')]
|
|
public function patchBeforeMakeForWindows(): void
|
|
{
|
|
// fix windows build with openssl extension duplicate symbol bug
|
|
SourcePatcher::patchFile('spc_fix_xlswriter_win32.patch', $this->getSourceDir());
|
|
$content = file_get_contents($this->getSourceDir() . '/library/libxlsxwriter/src/theme.c');
|
|
$bom = pack('CCC', 0xEF, 0xBB, 0xBF);
|
|
if (!str_starts_with($content, $bom)) {
|
|
file_put_contents($this->getSourceDir() . '/library/libxlsxwriter/src/theme.c', $bom . $content);
|
|
}
|
|
}
|
|
}
|