diff --git a/src/SPC/builder/linux/SystemUtil.php b/src/SPC/builder/linux/SystemUtil.php index 1ccc39da..419f69fe 100644 --- a/src/SPC/builder/linux/SystemUtil.php +++ b/src/SPC/builder/linux/SystemUtil.php @@ -6,6 +6,8 @@ namespace SPC\builder\linux; use SPC\builder\traits\UnixSystemUtilTrait; use SPC\exception\RuntimeException; +use SPC\toolchain\ToolchainManager; +use SPC\toolchain\ZigToolchain; class SystemUtil { @@ -231,8 +233,7 @@ class SystemUtil public static function getExtraRuntimeObjects(): string { - $cc = getenv('CC'); - if (!$cc || !str_contains($cc, 'zig')) { + if (ToolchainManager::getToolchainClass() !== ZigToolchain::class) { return ''; } diff --git a/src/SPC/toolchain/ToolchainManager.php b/src/SPC/toolchain/ToolchainManager.php index 5d39977a..772de18c 100644 --- a/src/SPC/toolchain/ToolchainManager.php +++ b/src/SPC/toolchain/ToolchainManager.php @@ -20,11 +20,11 @@ class ToolchainManager public static function getToolchainClass(): string { $libc = getenv('SPC_LIBC'); - if ($libc !== false) { + if ($libc !== false && !getenv('SPC_TARGET')) { logger()->warning('SPC_LIBC is deprecated, please use SPC_TARGET instead.'); return match ($libc) { 'musl' => SystemUtil::isMuslDist() ? GccNativeToolchain::class : MuslToolchain::class, - 'glibc' => !SystemUtil::isMuslDist() ? GccNativeToolchain::class : throw new WrongUsageException('SPC_TARGET must be musl for musl dist.'), + 'glibc' => !SystemUtil::isMuslDist() ? GccNativeToolchain::class : throw new WrongUsageException('SPC_LIBC must be musl for musl dist.'), default => throw new WrongUsageException('Unsupported SPC_LIBC value: ' . $libc), }; } diff --git a/src/SPC/util/SPCConfigUtil.php b/src/SPC/util/SPCConfigUtil.php index 64a54653..3cedf11f 100644 --- a/src/SPC/util/SPCConfigUtil.php +++ b/src/SPC/util/SPCConfigUtil.php @@ -6,12 +6,13 @@ namespace SPC\util; use SPC\builder\BuilderBase; use SPC\builder\BuilderProvider; -use SPC\builder\linux\SystemUtil; use SPC\builder\macos\MacOSBuilder; use SPC\exception\FileSystemException; use SPC\exception\RuntimeException; use SPC\exception\WrongUsageException; use SPC\store\Config; +use SPC\toolchain\ToolchainManager; +use SPC\toolchain\ZigToolchain; use Symfony\Component\Console\Input\ArgvInput; class SPCConfigUtil @@ -71,7 +72,7 @@ class SPCConfigUtil if ($this->builder->hasCpp()) { $libs .= $this->builder instanceof MacOSBuilder ? ' -lc++' : ' -lstdc++'; } - if (SystemUtil::getCCType() === 'clang') { + if (ToolchainManager::getToolchainClass() === ZigToolchain::class) { $libs .= ' -lunwind'; } // mimalloc must come first diff --git a/src/globals/test-extensions.php b/src/globals/test-extensions.php index 0bed26e6..0233298b 100644 --- a/src/globals/test-extensions.php +++ b/src/globals/test-extensions.php @@ -72,7 +72,7 @@ $with_libs = match (PHP_OS_FAMILY) { // You can use `common`, `bulk`, `minimal` or `none`. // note: combination is only available for *nix platform. Windows must use `none` combination $base_combination = match (PHP_OS_FAMILY) { - 'Linux', 'Darwin' => 'common', + 'Linux', 'Darwin' => 'minimal', 'Windows' => 'none', }; @@ -214,9 +214,6 @@ switch ($argv[1] ?? null) { passthru($prefix . $down_cmd, $retcode); break; case 'build_cmd': - if ($zig) { - passthru("{$prefix}install-pkg zig --debug", $retcode); - } passthru($prefix . $build_cmd . ' --build-cli --build-micro', $retcode); break; case 'build_embed_cmd':