diff --git a/src/SPC/store/scripts/zig-cc.sh b/src/SPC/store/scripts/zig-cc.sh index fe9e2c83..4b0b7049 100644 --- a/src/SPC/store/scripts/zig-cc.sh +++ b/src/SPC/store/scripts/zig-cc.sh @@ -37,7 +37,7 @@ done TARGET="" if [ -n "$SPC_TARGET" ]; then TARGET="-target $SPC_TARGET" -else +fi output=$(zig cc $TARGET -lstdc++ $COMPILER_EXTRA "${PARSED_ARGS[@]}" 2>&1) status=$? diff --git a/src/SPC/toolchain/ZigToolchain.php b/src/SPC/toolchain/ZigToolchain.php index 493287fc..fce9bb5d 100644 --- a/src/SPC/toolchain/ZigToolchain.php +++ b/src/SPC/toolchain/ZigToolchain.php @@ -30,5 +30,6 @@ class ZigToolchain implements ToolchainInterface 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)'); } + GlobalEnvManager::addPathIfNotExists(Zig::getEnvironment()['PATH']); } } diff --git a/src/SPC/util/SPCTarget.php b/src/SPC/util/SPCTarget.php index 5288b18b..03f26223 100644 --- a/src/SPC/util/SPCTarget.php +++ b/src/SPC/util/SPCTarget.php @@ -96,11 +96,11 @@ class SPCTarget if ($target === false) { return PHP_OS_FAMILY; } - // TODO: zig target parser like below? return match (true) { - str_contains($target, 'linux') => 'Linux', - str_contains($target, 'macos') => 'Darwin', - str_contains($target, 'windows') => 'Windows', + str_contains($target, '-linux') => 'Linux', + str_contains($target, '-macos') => 'Darwin', + str_contains($target, '-windows') => 'Windows', + str_contains($target, '-native') => PHP_OS_FAMILY, default => throw new WrongUsageException('Cannot parse target.'), }; }