feat(build): add zig system detection

This commit is contained in:
phaneron 2024-06-27 23:52:34 -04:00
parent f886ab5bc3
commit 823f0da277

162
zig/system.zig Normal file
View file

@ -0,0 +1,162 @@
const std = @import("std");
pub fn add_defines(b: *std.Build, compile_step: *std.build.Step.Compile) {
const target = b.standardTargetOptions(.{});
const t = target.result;
// define size of pointer
var is64Bits = true;
var is32Bits = false;
switch (t.cpu.arch) {
.x86 => {
is32Bits = true;
is64Bits = false;
},
.x86_64 => {
is32Bits = false;
is64Bits = true;
}
}
if (is64Bits) {
compile_step.defineCMacro("WHOA_ARCH_64", "1");
}
if (is32Bits) {
compile_step.defineCMacro("WHOA_ARCH_32", "1");
}
// define operating system
var isDarwin = false;
var isLinux = false;
var isWindows = false;
switch (t.os.tag) {
.windows => {
isWindows = true;
},
.macos => {
isDarwin = true;
},
.linux => {
isLinux = true;
}
}
if (isWindows) {
compile_step.defineCMacro("WHOA_SYSTEM_WIN", "1");
}
if (isDarwin) {
compile_step.defineCMacro("WHOA_SYSTEM_MAC", "1");
}
if (isLinux) {
compile_step.defineCMacro("WHOA_SYSTEM_LINUX", "1");
}
// define operating system version
const WHOA_WIN_UNK = "9999";
const WHOA_WIN_XP = "510";
const WHOA_WIN_VISTA = "600";
const WHOA_WIN_7 = "610";
const WHOA_WIN_8 = "620";
const WHOA_WIN_8_1 = "630";
const WHOA_WIN_10 = "1000";
const WHOA_MAC_UNK = "9999";
const WHOA_MAC_10_8 = "1008";
const WHOA_MAC_10_9 = "1009";
const WHOA_MAC_10_10 = "1010";
const WHOA_MAC_10_11 = "1011";
const WHOA_MAC_10_12 = "1012";
const WHOA_MAC_10_13 = "1013";
const WHOA_MAC_10_14 = "1014";
const WHOA_MAC_10_15 = "1015";
const WHOA_MAC_11_0 = "1100";
const WHOA_LINUX_UNK = "9999";
var system_version = "9999";
if (isWindows) {
switch (t.os.semver.min.major) {
5 => {
system_version = WHOA_WIN_XP;
},
6 => {
system_version = WHOA_WIN_VISTA;
},
7 => {
system_version = WHOA_WIN_7;
},
8 => {
system_version = WHOA_WIN_8;
if (t.os.semver.min.minor == 1) {
system_version = WHOA_WIN_8_1;
}
},
10 => {
system_version = WHOA_WIN_10;
}
}
} else if (isDarwin) {
system_version = WHOA_MAC_UNK;
switch (t.os.semver.min.major) {
10 => {
system_version = WHOA_MAC_10_8;
switch (t.os.semver.min.minor) {
8 => {
system_version = WHOA_MAC_10_8;
},
9 => {
system_version = WHOA_MAC_10_9;
},
10 => {
system_version = WHOA_MAC_10_10;
},
11 => {
system_version = WHOA_MAC_10_11;
},
12 => {
system_version = WHOA_MAC_10_12;
},
13 => {
system_version = WHOA_MAC_10_13;
},
14 => {
system_version = WHOA_MAC_10_14;
},
15 => {
system_version = WHOA_MAC_10_15;
}
}
},
11 => {
system_version = WHOA_MAC_11_0;
}
}
} else if (isLinux) {
system_version = WHOA_LINUX_UNK;
}
compile_step.defineCMacro("WHOA_SYSTEM_VERSION", system_version);
}