static-php-cli/src/SPC/toolchain/ZigToolchain.php

30 lines
925 B
PHP
Raw Normal View History

2025-06-29 16:00:17 +08:00
<?php
declare(strict_types=1);
namespace SPC\toolchain;
2025-07-01 14:01:48 +07:00
use SPC\exception\WrongUsageException;
use SPC\store\pkg\Zig;
use SPC\util\GlobalEnvManager;
2025-06-29 16:00:17 +08:00
class ZigToolchain implements ToolchainInterface
{
2025-07-01 14:01:48 +07:00
public function initEnv(): void
{
// Set environment variables for zig toolchain
2025-07-01 14:02:10 +07:00
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CC=zig-cc');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_CXX=zig-c++');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_AR=ar');
GlobalEnvManager::putenv('SPC_LINUX_DEFAULT_LD=ld');
2025-07-01 14:01:48 +07:00
}
2025-06-29 16:00:17 +08:00
2025-07-01 14:01:48 +07:00
public function afterInit(): void
{
if (!is_dir(Zig::getEnvironment()['PATH'])) {
throw new WrongUsageException('You are building with zig, but zig is not installed, please install zig first. (You can use `doctor` command to install it)');
}
2025-07-01 16:40:12 +07:00
GlobalEnvManager::addPathIfNotExists(Zig::getEnvironment()['PATH']);
2025-07-01 14:01:48 +07:00
}
2025-06-29 16:00:17 +08:00
}