diff --git a/src/SPC/toolchain/ClangNativeToolchain.php b/src/SPC/toolchain/ClangNativeToolchain.php index fb0bea46..aef844d7 100644 --- a/src/SPC/toolchain/ClangNativeToolchain.php +++ b/src/SPC/toolchain/ClangNativeToolchain.php @@ -10,6 +10,9 @@ use SPC\builder\macos\SystemUtil as MacOSSystemUtil; use SPC\exception\WrongUsageException; use SPC\util\GlobalEnvManager; +/** + * Toolchain implementation for system clang compiler. + */ class ClangNativeToolchain implements ToolchainInterface { public function initEnv(): void @@ -20,6 +23,9 @@ class ClangNativeToolchain implements ToolchainInterface GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_LD=ld'); } + /** + * @throws WrongUsageException + */ public function afterInit(): void { foreach (['CC', 'CXX', 'AR', 'LD'] as $env) { diff --git a/src/SPC/util/GlobalEnvManager.php b/src/SPC/util/GlobalEnvManager.php index 23ae242d..f5dafea2 100644 --- a/src/SPC/util/GlobalEnvManager.php +++ b/src/SPC/util/GlobalEnvManager.php @@ -15,6 +15,8 @@ class GlobalEnvManager { private static array $env_cache = []; + private static bool $initialized = false; + public static function getInitializedEnv(): array { return self::$env_cache; @@ -28,6 +30,9 @@ class GlobalEnvManager */ public static function init(): void { + if (self::$initialized) { + return; + } // Check pre-defined env vars exists if (getenv('BUILD_ROOT_PATH') === false) { throw new RuntimeException('You must include src/globals/internal-env.php before using GlobalEnvManager'); @@ -85,6 +90,7 @@ class GlobalEnvManager self::putenv("{$k}={$v}"); } } + self::$initialized = true; } public static function putenv(string $val): void