From 433043c0c84175db8f399d048cfee334626e13f7 Mon Sep 17 00:00:00 2001 From: henderkes Date: Tue, 19 May 2026 23:22:52 +0700 Subject: [PATCH] fix macOS --- src/StaticPHP/Doctor/Item/LlvmToolsCheck.php | 12 +++++++++++- src/StaticPHP/Package/PackageBuilder.php | 8 ++++++-- src/StaticPHP/Toolchain/ClangNativeToolchain.php | 1 - 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/StaticPHP/Doctor/Item/LlvmToolsCheck.php b/src/StaticPHP/Doctor/Item/LlvmToolsCheck.php index 1a1c7efb..cc14af94 100644 --- a/src/StaticPHP/Doctor/Item/LlvmToolsCheck.php +++ b/src/StaticPHP/Doctor/Item/LlvmToolsCheck.php @@ -7,13 +7,23 @@ namespace StaticPHP\Doctor\Item; use Package\Artifact\llvm_tools; use StaticPHP\Attribute\Doctor\CheckItem; use StaticPHP\Attribute\Doctor\FixItem; +use StaticPHP\Attribute\Doctor\OptionalCheck; +use StaticPHP\DI\ApplicationContext; use StaticPHP\Doctor\CheckResult; use StaticPHP\Package\PackageInstaller; +use StaticPHP\Toolchain\Interface\ToolchainInterface; +use StaticPHP\Toolchain\ZigToolchain; +#[OptionalCheck([self::class, 'optionalCheck'])] class LlvmToolsCheck { + public static function optionalCheck(): bool + { + return ApplicationContext::get(ToolchainInterface::class) instanceof ZigToolchain; + } + /** @noinspection PhpUnused */ - #[CheckItem('if llvm-tools (objcopy/strip/profdata) are built', limit_os: 'Linux', level: 798)] + #[CheckItem('if llvm-tools (objcopy/strip/profdata) are built', level: 798)] public function checkLlvmTools(): CheckResult { $binDir = PKG_ROOT_PATH . '/llvm-tools/bin'; diff --git a/src/StaticPHP/Package/PackageBuilder.php b/src/StaticPHP/Package/PackageBuilder.php index 4169e5fb..ff7ac2c1 100644 --- a/src/StaticPHP/Package/PackageBuilder.php +++ b/src/StaticPHP/Package/PackageBuilder.php @@ -11,6 +11,8 @@ use StaticPHP\Exception\SPCInternalException; use StaticPHP\Exception\WrongUsageException; use StaticPHP\Runtime\Shell\Shell; use StaticPHP\Runtime\SystemTarget; +use StaticPHP\Toolchain\Interface\ToolchainInterface; +use StaticPHP\Toolchain\ZigToolchain; use StaticPHP\Util\FileSystem; use StaticPHP\Util\GlobalPathTrait; use StaticPHP\Util\InteractiveTerm; @@ -178,7 +180,7 @@ class PackageBuilder if (SystemTarget::getTargetOS() === 'Darwin') { shell()->exec("dsymutil -f {$binary_path} -o {$debug_file}"); } elseif (SystemTarget::getTargetOS() === 'Linux') { - $objcopy = getenv('OBJCOPY'); + $objcopy = getenv('OBJCOPY') ?: 'objcopy'; if ($eu_strip = LinuxUtil::findCommand('eu-strip')) { shell() ->exec("{$eu_strip} -f {$debug_file} {$binary_path}") @@ -200,7 +202,9 @@ class PackageBuilder */ public function stripBinary(string $binary_path): void { - $strip = PKG_ROOT_PATH . '/llvm-tools/bin/llvm-strip'; + $strip = ApplicationContext::tryGet(ToolchainInterface::class) instanceof ZigToolchain + ? PKG_ROOT_PATH . '/llvm-tools/bin/llvm-strip' + : 'strip'; shell()->exec(match (SystemTarget::getTargetOS()) { 'Darwin' => "{$strip} -S {$binary_path}", 'Linux' => "{$strip} --strip-unneeded {$binary_path}", diff --git a/src/StaticPHP/Toolchain/ClangNativeToolchain.php b/src/StaticPHP/Toolchain/ClangNativeToolchain.php index 0b679852..7602c3ed 100644 --- a/src/StaticPHP/Toolchain/ClangNativeToolchain.php +++ b/src/StaticPHP/Toolchain/ClangNativeToolchain.php @@ -38,7 +38,6 @@ class ClangNativeToolchain implements UnixToolchainInterface default => throw new EnvironmentException(__CLASS__ . ' is not supported on ' . PHP_OS_FAMILY . '.'), }; } - GlobalEnvManager::putenv('OBJCOPY=' . PKG_ROOT_PATH . '/llvm-tools/bin/llvm-objcopy'); } public function getCompilerInfo(): ?string