mirror of
https://github.com/crazywhalecc/static-php-cli.git
synced 2026-07-09 18:05:36 +08:00
fix BUILD_CC=cc workaround root cause (minijit trips zig default undefined behaviour sanitizer)
This commit is contained in:
@@ -20,7 +20,6 @@ use StaticPHP\Package\PhpExtensionPackage;
|
|||||||
use StaticPHP\Package\TargetPackage;
|
use StaticPHP\Package\TargetPackage;
|
||||||
use StaticPHP\Runtime\SystemTarget;
|
use StaticPHP\Runtime\SystemTarget;
|
||||||
use StaticPHP\Toolchain\Interface\ToolchainInterface;
|
use StaticPHP\Toolchain\Interface\ToolchainInterface;
|
||||||
use StaticPHP\Toolchain\ZigToolchain;
|
|
||||||
use StaticPHP\Util\DirDiff;
|
use StaticPHP\Util\DirDiff;
|
||||||
use StaticPHP\Util\FileSystem;
|
use StaticPHP\Util\FileSystem;
|
||||||
use StaticPHP\Util\GlobalEnvManager;
|
use StaticPHP\Util\GlobalEnvManager;
|
||||||
@@ -168,8 +167,7 @@ trait unix
|
|||||||
|
|
||||||
#[BeforeStage('php', [self::class, 'makeForUnix'], 'php')]
|
#[BeforeStage('php', [self::class, 'makeForUnix'], 'php')]
|
||||||
#[PatchDescription('Patch Makefile to fix //lib path for Linux builds')]
|
#[PatchDescription('Patch Makefile to fix //lib path for Linux builds')]
|
||||||
#[PatchDescription('Patch BUILD_CC to use system cc instead of zig-cc (prevents minilua crash)')]
|
public function tryPatchMakefileUnix(TargetPackage $package): void
|
||||||
public function tryPatchMakefileUnix(TargetPackage $package, ToolchainInterface $toolchain): void
|
|
||||||
{
|
{
|
||||||
if (SystemTarget::getTargetOS() !== 'Linux') {
|
if (SystemTarget::getTargetOS() !== 'Linux') {
|
||||||
return;
|
return;
|
||||||
@@ -177,11 +175,6 @@ trait unix
|
|||||||
|
|
||||||
// replace //lib with /lib in Makefile
|
// replace //lib with /lib in Makefile
|
||||||
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
|
shell()->cd($package->getSourceDir())->exec('sed -i "s|//lib|/lib|g" Makefile');
|
||||||
|
|
||||||
if ($toolchain instanceof ZigToolchain) {
|
|
||||||
$makefile = "{$package->getSourceDir()}/Makefile";
|
|
||||||
FileSystem::replaceFileRegex($makefile, '/^BUILD_CC\s*=\s*zig-cc\s*$/m', 'BUILD_CC = cc');
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[BeforeStage('php', [self::class, 'makeForUnix'], 'php')]
|
#[BeforeStage('php', [self::class, 'makeForUnix'], 'php')]
|
||||||
|
|||||||
@@ -35,6 +35,10 @@ class ZigToolchain implements UnixToolchainInterface
|
|||||||
GlobalEnvManager::putenv("SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS={$extraCflags}");
|
GlobalEnvManager::putenv("SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS={$extraCflags}");
|
||||||
GlobalEnvManager::putenv('RANLIB=zig-ranlib');
|
GlobalEnvManager::putenv('RANLIB=zig-ranlib');
|
||||||
GlobalEnvManager::putenv('OBJCOPY=zig-objcopy');
|
GlobalEnvManager::putenv('OBJCOPY=zig-objcopy');
|
||||||
|
$compiler_extra = getenv('SPC_COMPILER_EXTRA') ?: '';
|
||||||
|
if (!str_contains($compiler_extra, '-fno-sanitize=undefined')) {
|
||||||
|
GlobalEnvManager::putenv('SPC_COMPILER_EXTRA=' . trim($compiler_extra . ' -fno-sanitize=undefined'));
|
||||||
|
}
|
||||||
$extra_libs = getenv('SPC_EXTRA_LIBS') ?: '';
|
$extra_libs = getenv('SPC_EXTRA_LIBS') ?: '';
|
||||||
if (!str_contains($extra_libs, '-lunwind')) {
|
if (!str_contains($extra_libs, '-lunwind')) {
|
||||||
// Add unwind library if not already present
|
// Add unwind library if not already present
|
||||||
|
|||||||
Reference in New Issue
Block a user