From 8453f69eeaead5c5915f4cc24f42c68a6dbda049 Mon Sep 17 00:00:00 2001 From: henderkes Date: Tue, 12 May 2026 10:52:23 +0700 Subject: [PATCH] fix BUILD_CC=cc workaround root cause (minijit trips zig default undefined behaviour sanitizer) --- src/Package/Target/php/unix.php | 9 +-------- src/StaticPHP/Toolchain/ZigToolchain.php | 4 ++++ 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/Package/Target/php/unix.php b/src/Package/Target/php/unix.php index 40095b73..b2ab5171 100644 --- a/src/Package/Target/php/unix.php +++ b/src/Package/Target/php/unix.php @@ -20,7 +20,6 @@ use StaticPHP\Package\PhpExtensionPackage; use StaticPHP\Package\TargetPackage; use StaticPHP\Runtime\SystemTarget; use StaticPHP\Toolchain\Interface\ToolchainInterface; -use StaticPHP\Toolchain\ZigToolchain; use StaticPHP\Util\DirDiff; use StaticPHP\Util\FileSystem; use StaticPHP\Util\GlobalEnvManager; @@ -168,8 +167,7 @@ trait unix #[BeforeStage('php', [self::class, 'makeForUnix'], 'php')] #[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, ToolchainInterface $toolchain): void + public function tryPatchMakefileUnix(TargetPackage $package): void { if (SystemTarget::getTargetOS() !== 'Linux') { return; @@ -177,11 +175,6 @@ trait unix // replace //lib with /lib in 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')] diff --git a/src/StaticPHP/Toolchain/ZigToolchain.php b/src/StaticPHP/Toolchain/ZigToolchain.php index 63d2127c..8e65d367 100644 --- a/src/StaticPHP/Toolchain/ZigToolchain.php +++ b/src/StaticPHP/Toolchain/ZigToolchain.php @@ -35,6 +35,10 @@ class ZigToolchain implements UnixToolchainInterface GlobalEnvManager::putenv("SPC_CMD_VAR_PHP_MAKE_EXTRA_CFLAGS={$extraCflags}"); GlobalEnvManager::putenv('RANLIB=zig-ranlib'); 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') ?: ''; if (!str_contains($extra_libs, '-lunwind')) { // Add unwind library if not already present