From a097484a5185aef616037bc9af54968d9d47965e Mon Sep 17 00:00:00 2001 From: DubbleClick Date: Sat, 5 Jul 2025 14:26:04 +0700 Subject: [PATCH] update isStatic check to ignore SPC_LIBC if using Gcc/Clang/Musl toolchain --- src/SPC/util/SPCTarget.php | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/SPC/util/SPCTarget.php b/src/SPC/util/SPCTarget.php index de487f4f..1ea0c1fc 100644 --- a/src/SPC/util/SPCTarget.php +++ b/src/SPC/util/SPCTarget.php @@ -6,6 +6,11 @@ namespace SPC\util; use SPC\builder\linux\SystemUtil; use SPC\exception\WrongUsageException; +use SPC\toolchain\ClangNativeToolchain; +use SPC\toolchain\GccNativeToolchain; +use SPC\toolchain\MuslToolchain; +use SPC\toolchain\ToolchainManager; +use SPC\toolchain\ZigToolchain; /** * SPC build target constants and toolchain initialization. @@ -18,6 +23,15 @@ class SPCTarget */ public static function isStatic(): bool { + if (ToolchainManager::getToolchainClass() === MuslToolchain::class) { + return true; + } + if (ToolchainManager::getToolchainClass() === GccNativeToolchain::class) { + return PHP_OS_FAMILY === 'Linux' && SystemUtil::isMuslDist(); + } + if (ToolchainManager::getToolchainClass() === ClangNativeToolchain::class) { + return PHP_OS_FAMILY === 'Linux' && SystemUtil::isMuslDist(); + } // if SPC_LIBC is set, it means the target is static, remove it when 3.0 is released if ($target = getenv('SPC_TARGET')) { if (str_contains($target, '-macos') || str_contains($target, '-native') && PHP_OS_FAMILY === 'Darwin') {