summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitmodules3
-rw-r--r--pkg/zlib/build.zig70
m---------vendor/zlib0
3 files changed, 73 insertions, 0 deletions
diff --git a/.gitmodules b/.gitmodules
index 44fc6953f..e9cf6369c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,3 +13,6 @@
[submodule "vendor/mach-sdk/sdk-linux-aarch64"]
path = vendor/mach-sdk/sdk-linux-aarch64
url = https://github.com/hexops/sdk-linux-aarch64.git
+[submodule "vendor/zlib"]
+ path = vendor/zlib
+ url = https://github.com/madler/zlib.git
diff --git a/pkg/zlib/build.zig b/pkg/zlib/build.zig
new file mode 100644
index 000000000..bc41daa00
--- /dev/null
+++ b/pkg/zlib/build.zig
@@ -0,0 +1,70 @@
+const std = @import("std");
+
+/// Directories with our includes.
+const root = thisDir() ++ "../../../vendor/zlib/";
+const include_path = root;
+
+pub const pkg = std.build.Pkg{
+ .name = "zlib",
+ .source = .{ .path = thisDir() ++ "/main.zig" },
+};
+
+fn thisDir() []const u8 {
+ return std.fs.path.dirname(@src().file) orelse ".";
+}
+
+pub fn link(b: *std.build.Builder, step: *std.build.LibExeObjStep) !*std.build.LibExeObjStep {
+ const lib = try buildLib(b, step);
+ step.linkLibrary(lib);
+ step.addIncludePath(include_path);
+ return lib;
+}
+
+pub fn buildLib(
+ b: *std.build.Builder,
+ step: *std.build.LibExeObjStep,
+) !*std.build.LibExeObjStep {
+ const lib = b.addStaticLibrary("z", null);
+ lib.setTarget(step.target);
+ lib.setBuildMode(step.build_mode);
+
+ // Include
+ lib.addIncludePath(include_path);
+
+ // Link
+ lib.linkLibC();
+
+ // Compile
+ var flags = std.ArrayList([]const u8).init(b.allocator);
+ defer flags.deinit();
+
+ try flags.appendSlice(&.{
+ "-DHAVE_SYS_TYPES_H",
+ "-DHAVE_STDINT_H",
+ "-DHAVE_STDDEF_H",
+ "-DZ_HAVE_UNISTD_H",
+ });
+
+ // C files
+ lib.addCSourceFiles(srcs, flags.items);
+
+ return lib;
+}
+
+const srcs = &.{
+ root ++ "adler32.c",
+ root ++ "compress.c",
+ root ++ "crc32.c",
+ root ++ "deflate.c",
+ root ++ "gzclose.c",
+ root ++ "gzlib.c",
+ root ++ "gzread.c",
+ root ++ "gzwrite.c",
+ root ++ "inflate.c",
+ root ++ "infback.c",
+ root ++ "inftrees.c",
+ root ++ "inffast.c",
+ root ++ "trees.c",
+ root ++ "uncompr.c",
+ root ++ "zutil.c",
+};
diff --git a/vendor/zlib b/vendor/zlib
new file mode 160000
+Subproject 21767c654d31d2dccdde4330529775c6c5fd538