Add suffix support for SPC_TARGET

This commit is contained in:
crazywhalecc 2025-06-28 23:11:26 +08:00
parent c23c5ae614
commit a6364389ba
No known key found for this signature in database
GPG Key ID: 1F4BDD59391F2680
3 changed files with 23 additions and 1 deletions

View File

@ -43,6 +43,8 @@ class SPCTarget
return false; return false;
} }
$env = strtolower($env); $env = strtolower($env);
// ver
$env = explode('@', $env)[0];
return $env === $target; return $env === $target;
} }
@ -53,7 +55,9 @@ class SPCTarget
return false; return false;
} }
$env = strtolower($env); $env = strtolower($env);
return str_ends_with($env, '-static') || $env === self::MUSL_STATIC; // ver
$env = explode('@', $env)[0];
return str_ends_with($env, '-static');
} }
public static function initTargetForToolchain(string $toolchain): void public static function initTargetForToolchain(string $toolchain): void
@ -80,4 +84,12 @@ class SPCTarget
$toolchainClass = self::TOOLCHAIN_LIST[$toolchain]; $toolchainClass = self::TOOLCHAIN_LIST[$toolchain];
(new $toolchainClass())->afterInit(getenv('SPC_TARGET')); (new $toolchainClass())->afterInit(getenv('SPC_TARGET'));
} }
public static function getTargetSuffix(): ?string
{
$target = getenv('SPC_TARGET');
$target = strtolower($target);
// ver
return explode('@', $target)[1] ?? null;
}
} }

View File

@ -9,11 +9,16 @@ use SPC\builder\linux\SystemUtil as LinuxSystemUtil;
use SPC\builder\macos\SystemUtil as MacOSSystemUtil; use SPC\builder\macos\SystemUtil as MacOSSystemUtil;
use SPC\exception\WrongUsageException; use SPC\exception\WrongUsageException;
use SPC\util\GlobalEnvManager; use SPC\util\GlobalEnvManager;
use SPC\util\SPCTarget;
class ClangNativeToolchain implements ToolchainInterface class ClangNativeToolchain implements ToolchainInterface
{ {
public function initEnv(string $target): void public function initEnv(string $target): void
{ {
// native toolchain does not support versioning
if (SPCTarget::getTargetSuffix() !== null) {
throw new WrongUsageException('Clang native toolchain does not support versioning.');
}
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=clang'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=clang');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=clang++'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=clang++');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=ar'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=ar');

View File

@ -9,11 +9,16 @@ use SPC\builder\linux\SystemUtil as LinuxSystemUtil;
use SPC\builder\macos\SystemUtil as MacOSSystemUtil; use SPC\builder\macos\SystemUtil as MacOSSystemUtil;
use SPC\exception\WrongUsageException; use SPC\exception\WrongUsageException;
use SPC\util\GlobalEnvManager; use SPC\util\GlobalEnvManager;
use SPC\util\SPCTarget;
class GccNativeToolchain implements ToolchainInterface class GccNativeToolchain implements ToolchainInterface
{ {
public function initEnv(string $target): void public function initEnv(string $target): void
{ {
// native toolchain does not support versioning
if (SPCTarget::getTargetSuffix() !== null) {
throw new WrongUsageException('gcc native toolchain does not support versioning.');
}
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=gcc'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=gcc');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=g++'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=g++');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=ar'); GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=ar');