feat(build): add zig build script

This commit is contained in:
phaneron 2024-06-28 04:07:57 -04:00
parent 25b12dee7b
commit fa11d11f46
3 changed files with 187 additions and 1 deletions

158
build.zig Normal file
View file

@ -0,0 +1,158 @@
const std = @import("std");
const system = @import("system");
pub fn build(b: *std.Build) void {
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const t = target.result;
// Squall library
const storm = b.addStaticLibrary(.{
.name = "storm",
.target = target,
.optimize = optimize
});
// Link C++ standard library
storm.linkLibCpp();
// Add system detection defines
system.add_defines(storm);
// Get dependencies
const mem = b.dependency("mem", .{});
const bc = b.dependency("bc", .{});
// Publicly link mem
storm.addIncludePath(mem.path("."));
storm.linkLibrary(mem.artifact("mem"));
// Link bc
storm.addIncludePath(bc.path("."));
storm.linkLibrary(bc.artifact("bc"));
// Include squall project directory
storm.addIncludePath(b.path("."));
const storm_compiler_flags = [_][]const u8 {
"-std=c++11",
"-Wno-invalid-offsetof"
};
const storm_sources = [_][]const u8 {
"storm/big/BigBuffer.cpp",
"storm/big/BigData.cpp",
"storm/big/BigStack.cpp",
"storm/big/Ops.cpp",
"storm/hash/HashKey.cpp",
"storm/queue/CSBasePriority.cpp",
"storm/queue/CSBasePriorityQueue.cpp",
"storm/string/bjhash.cpp",
"storm/thread/CCritSect.cpp",
"storm/thread/CSRWLock.cpp",
"storm/thread/S_Thread.cpp",
"storm/thread/SCritSect.cpp",
"storm/thread/SEvent.cpp",
"storm/thread/SSemaphore.cpp",
"storm/thread/SSyncObject.cpp",
"storm/thread/SThread.cpp",
"storm/Atomic.cpp",
"storm/Big.cpp",
"storm/Command.cpp",
"storm/Crypto.cpp",
"storm/Error.cpp",
"storm/Log.cpp",
"storm/Region.cpp",
"storm/String.cpp",
"storm/Thread.cpp",
"storm/Unicode.cpp"
};
const storm_windows_sources = [_][]const u8{
"storm/error/win/Display.cpp",
"storm/error/win/Error.cpp",
"storm/thread/win/S_Thread.cpp",
"storm/thread/win/SRWLock.cpp",
"storm/thread/win/Thread.cpp"
};
const storm_macos_sources = [_][]const u8{
"storm/thread/mac/S_Thread.mm",
"storm/thread/mac/SThreadRunner.mm",
"storm/thread/mac/Thread.mm"
};
const storm_linux_sources = [_][]const u8{
"storm/thread/linux/S_Thread.cpp",
"storm/thread/linux/Thread.cpp"
};
storm.addCSourceFiles(.{
.files = &storm_sources,
.flags = &storm_compiler_flags
});
switch (t.os.tag) {
.windows => {
storm.addCSourceFiles(.{
.files = &storm_windows_sources,
.flags = &storm_compiler_flags
});
},
.macos => {
storm.addCSourceFiles(.{
.files = &storm_macos_sources,
.flags = &storm_compiler_flags
});
},
else => {
storm.addCSourceFiles(.{
.files = &storm_linux_sources,
.flags = &storm_compiler_flags
});
}
}
// StormTest executable
const storm_test_exe = b.addExecutable(.{
.name = "StormTest",
.target = target,
.optimize = optimize
});
// Link C++ standard library
storm_test_exe.linkLibCpp();
// Add system detection defines
system.add_defines(storm_test_exe);
storm_test_exe.linkLibrary(storm);
storm_test_exe.addIncludePath(mem.path("."));
storm_test_exe.addIncludePath(b.path("."));
storm_test_exe.addCSourceFiles(.{
.files = &.{
"test/big/Ops.cpp",
"test/Array.cpp",
"test/Atomic.cpp",
"test/Big.cpp",
"test/Crypto.cpp",
"test/Hash.cpp",
"test/List.cpp",
"test/Log.cpp",
"test/Memory.cpp",
"test/Queue.cpp",
"test/Region.cpp",
"test/String.cpp",
"test/Test.cpp",
"test/Thread.cpp",
"test/Unicode.cpp",
},
.flags = &storm_compiler_flags
});
b.installArtifact(storm_test_exe);
b.installArtifact(storm);
}

19
build.zig.zon Normal file
View file

@ -0,0 +1,19 @@
.{
.name = "squall",
.version = "1.0.0",
.paths = .{ "LICENSE", "README.md", "build.zig", "build.zig.zon" },
.dependencies = .{
.system = .{
.url = "https://github.com/thunderbrewhq/system/archive/refs/heads/master.zip",
.hash = "1220d6a6e4e2f836c1c22eb128e6c74c773ea191bfbaac02601dcb5238c2b0874182",
},
.bc = .{
.url = "https://github.com/thunderbrewhq/bc/archive/refs/heads/master.zip",
.hash = "12202ac82de86543714d79a8c055b7357fd8c4c6ba3bf73ec4f1cdd5771885c728ad",
},
.mem = .{
.url = "https://github.com/thunderbrewhq/mem/archive/refs/heads/master.zip",
.hash = "122037f90f957dec643fe16e0092c8b971b7dd0a0f8096d00fa134e254053fbced87",
},
},
}

View file

@ -1,6 +1,15 @@
#ifndef STORM_MEMORY_HPP #ifndef STORM_MEMORY_HPP
#define STORM_MEMORY_HPP #define STORM_MEMORY_HPP
#include <mem/Memory.hpp> #include <cstdint>
#include <cstdlib>
void* SMemAlloc(size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
void SMemFree(void* ptr);
void SMemFree(void* ptr, const char* filename, int32_t linenumber, uint32_t flags);
void* SMemReAlloc(void* ptr, size_t bytes, const char* filename, int32_t linenumber, uint32_t flags);
#endif #endif