From 897cb003511880c7d05c444e8d369f50dd0684be Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sun, 12 Oct 2025 16:42:38 +0800 Subject: [PATCH] Use failsafe for SPC_EXTRA_PHP_VARS --- config/env.ini | 1 + src/SPC/builder/Extension.php | 4 +++- src/SPC/builder/linux/LinuxBuilder.php | 4 +++- src/SPC/toolchain/ZigToolchain.php | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/config/env.ini b/config/env.ini index 4b9f294a..0fbcd693 100644 --- a/config/env.ini +++ b/config/env.ini @@ -34,6 +34,7 @@ ; SPC_LINUX_DEFAULT_CC: the default compiler for linux. (For alpine linux: `gcc`, default: `$GNU_ARCH-linux-musl-gcc`) ; SPC_LINUX_DEFAULT_CXX: the default c++ compiler for linux. (For alpine linux: `g++`, default: `$GNU_ARCH-linux-musl-g++`) ; SPC_LINUX_DEFAULT_AR: the default archiver for linux. (For alpine linux: `ar`, default: `$GNU_ARCH-linux-musl-ar`) +; SPC_EXTRA_PHP_VARS: the extra vars for building php, used in `configure` and `make` command. [global] ; Build concurrency for make -jN, default is CPU_COUNT, this value are used in every libs. diff --git a/src/SPC/builder/Extension.php b/src/SPC/builder/Extension.php index 9e36aeff..a8e87519 100644 --- a/src/SPC/builder/Extension.php +++ b/src/SPC/builder/Extension.php @@ -427,13 +427,15 @@ class Extension logger()->info("Extension [{$this->getName()}] patched before shared configure"); } + $phpvars = getenv('SPC_EXTRA_PHP_VARS') ?: ''; + shell()->cd($this->source_dir) ->setEnv($env) ->appendEnv($this->getExtraEnv()) ->exec( './configure ' . $this->getUnixConfigureArg(true) . ' --with-php-config=' . BUILD_BIN_PATH . '/php-config ' . - '--enable-shared --disable-static ' . getenv('SPC_EXTRA_PHP_VARS') + "--enable-shared --disable-static {$phpvars}" ); if ($this->patchBeforeSharedMake()) { diff --git a/src/SPC/builder/linux/LinuxBuilder.php b/src/SPC/builder/linux/LinuxBuilder.php index 2a3c8912..d62e97bd 100644 --- a/src/SPC/builder/linux/LinuxBuilder.php +++ b/src/SPC/builder/linux/LinuxBuilder.php @@ -95,6 +95,8 @@ class LinuxBuilder extends UnixBuilderBase // 'LIBS' => SPCTarget::getRuntimeLibs(), // do not pass static libraries here yet, they may contain polyfills for libc functions! ]); + $phpvars = getenv('SPC_EXTRA_PHP_VARS') ?: ''; + $embed_type = getenv('SPC_CMD_VAR_PHP_EMBED_TYPE') ?: 'static'; if ($embed_type !== 'static' && SPCTarget::isStatic()) { throw new WrongUsageException( @@ -116,7 +118,7 @@ class LinuxBuilder extends UnixBuilderBase $json_74 . $zts . $maxExecutionTimers . - getenv('SPC_EXTRA_PHP_VARS') . ' ' . + "{$phpvars} " . $this->makeStaticExtensionArgs() . ' ' )); diff --git a/src/SPC/toolchain/ZigToolchain.php b/src/SPC/toolchain/ZigToolchain.php index c3da766d..bb423db2 100644 --- a/src/SPC/toolchain/ZigToolchain.php +++ b/src/SPC/toolchain/ZigToolchain.php @@ -67,7 +67,7 @@ class ZigToolchain implements ToolchainInterface $cflags = getenv('SPC_DEFAULT_C_FLAGS') ?: getenv('CFLAGS') ?: ''; $has_avx512 = str_contains($cflags, '-mavx512') || str_contains($cflags, '-march=x86-64-v4'); if (!$has_avx512) { - f_putenv('SPC_EXTRA_PHP_VARS=php_cv_have_avx512=no php_cv_have_avx512vbmi=no'); + GlobalEnvManager::putenv('SPC_EXTRA_PHP_VARS=php_cv_have_avx512=no php_cv_have_avx512vbmi=no'); } }