From cc7a22922c84875015412f496a9f2a059cfca4e6 Mon Sep 17 00:00:00 2001 From: henderkes Date: Fri, 17 Apr 2026 14:17:39 +0700 Subject: [PATCH] add -lcompiler_rt to SPC_COMPILER_EXTRA instead --- src/SPC/builder/Extension.php | 3 +-- src/SPC/builder/linux/LinuxBuilder.php | 3 ++- src/SPC/toolchain/ZigToolchain.php | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/SPC/builder/Extension.php b/src/SPC/builder/Extension.php index 8517f1e5..331d2986 100644 --- a/src/SPC/builder/Extension.php +++ b/src/SPC/builder/Extension.php @@ -233,8 +233,7 @@ class Extension if (preg_match('/^(.*_SHARED_LIBADD\s*=\s*)(.*)$/m', $makefileContent, $matches)) { $prefix = $matches[1]; $currentLibs = trim($matches[2]); - $lzig = ToolchainManager::getToolchainClass() === ZigToolchain::class ? '-lcompiler_rt -lunwind' : ''; - $newLibs = clean_spaces("{$currentLibs} {$staticLibs} {$lstdcpp} {$lzig}"); + $newLibs = clean_spaces("{$currentLibs} {$staticLibs} {$lstdcpp}"); $deduplicatedLibs = deduplicate_flags($newLibs); FileSystem::replaceFileRegex( diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index d959aade..ffc034a7 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -65,7 +65,8 @@ class LinuxBuilder extends UnixBuilderBase // php 8.5 contains opcache extension by default, // if opcache_jit is enabled for 8.5 or opcache enabled, // we need to disable undefined behavior sanitizer. - f_putenv('SPC_COMPILER_EXTRA=-fno-sanitize=undefined'); + $compiler_extra = getenv('SPC_COMPILER_EXTRA') ?: ''; + f_putenv('SPC_COMPILER_EXTRA=' . trim($compiler_extra . ' -fno-sanitize=undefined')); } if ($this->getOption('enable-zts', false)) { diff --git a/src/SPC/toolchain/ZigToolchain.php b/src/SPC/toolchain/ZigToolchain.php index 1b7cc70d..6ff67769 100644 --- a/src/SPC/toolchain/ZigToolchain.php +++ b/src/SPC/toolchain/ZigToolchain.php @@ -64,6 +64,12 @@ class ZigToolchain implements ToolchainInterface $extra_libs = trim($extra_libs . ' -lunwind'); GlobalEnvManager::putenv("SPC_EXTRA_LIBS={$extra_libs}"); } + $compiler_extra = getenv('SPC_COMPILER_EXTRA') ?: ''; + if (!str_contains($compiler_extra, '-lcompiler_rt')) { + // Add unwind library if not already present + $compiler_extra = trim($compiler_extra . ' -lcompiler_rt'); + GlobalEnvManager::putenv("SPC_COMPILER_EXTRA={$compiler_extra}"); + } $cflags = getenv('SPC_DEFAULT_C_FLAGS') ?: getenv('CFLAGS') ?: ''; $has_avx512 = str_contains($cflags, '-mavx512') || str_contains($cflags, '-march=x86-64-v4'); if (!$has_avx512) {