diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ba2fe7..ee46aa1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,7 +9,7 @@ on: - master jobs: - lint: + test: runs-on: ubuntu-latest steps: - name: checkout @@ -18,22 +18,10 @@ jobs: - name: setup-zig uses: mlugg/setup-zig@v1 with: - version: 0.13.0 - - - name: lint - run: | - zig fmt --check src/ build.zig build.zig.zon + version: 0.14.0 - test: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v2 + - name: lint + run: zig fmt --check src/ build.zig build.zig.zon - - name: setup-zig - uses: mlugg/setup-zig@v1 - with: - version: 0.13.0 - - name: build run: zig build test \ No newline at end of file diff --git a/build.zig b/build.zig index d824504..b7c1c58 100644 --- a/build.zig +++ b/build.zig @@ -8,14 +8,26 @@ pub fn build(b: *std.Build) void { const zstd_dep = b.dependency("zstd", .{}); - const zstd_lib = b.addStaticLibrary(.{ - .name = "zstd", + const translate_c = b.addTranslateC(.{ + .root_source_file = b.path("src/headers.h"), .target = target, .optimize = optimize, }); + translate_c.addIncludePath(zstd_dep.path("lib")); + + const force_pic = b.option(bool, "force_pic", "Forces PIC enabled for this library"); + const zstd_lib = b.addLibrary(.{ + .name = "zstd", + .linkage = .static, + .root_module = b.createModule(.{ + .target = target, + .optimize = optimize, + .pic = force_pic, + }), + }); b.installArtifact(zstd_lib); + zstd_lib.linkLibC(); - zstd_lib.addIncludePath(zstd_dep.path("lib")); zstd_lib.installHeader(zstd_dep.path("lib/zstd.h"), "zstd.h"); zstd_lib.installHeader(zstd_dep.path("lib/zstd_errors.h"), "zstd_errors.h"); @@ -60,6 +72,7 @@ pub fn build(b: *std.Build) void { .root_source_file = b.path("src/lib.zig"), }); zstd_mod.linkLibrary(zstd_lib); + zstd_mod.addAnonymousImport("c", .{ .root_source_file = translate_c.getOutput() }); const tests_exe = b.addTest(.{ .target = target, diff --git a/build.zig.zon b/build.zig.zon index 837f6fe..6a8bec6 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,10 +1,11 @@ .{ - .name = "zstd", + .name = .zstd, + .fingerprint = 0x72fd505e092a0bf1, .version = "0.0.1", .dependencies = .{ .zstd = .{ - .url = "https://github.com/facebook/zstd/archive/794ea1b0afca0f020f4e57b6732332231fb23c70.tar.gz", - .hash = "1220cc97075e331a87cb201c03a018a1522325d6aa844619a461462fbfdaedb38c42", + .url = "git+https://github.com/facebook/zstd#794ea1b0afca0f020f4e57b6732332231fb23c70", + .hash = "N-V-__8AAGHFfQBd9HkISearYAEoBRuWI2GQG3Bvdcv_4uuN", }, }, .paths = .{ diff --git a/libzstd.a b/libzstd.a new file mode 100644 index 0000000..e69de29 diff --git a/src/c.zig b/src/c.zig deleted file mode 100644 index a87c0d4..0000000 --- a/src/c.zig +++ /dev/null @@ -1,4 +0,0 @@ -pub usingnamespace @cImport({ - @cInclude("zstd.h"); - @cInclude("zstd_errors.h"); -}); diff --git a/src/compress.zig b/src/compress.zig index f538fdf..2ae048b 100644 --- a/src/compress.zig +++ b/src/compress.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const c = @import("c.zig"); +const c = @import("c"); const InBuffer = @import("types.zig").InBuffer; const OutBuffer = @import("types.zig").OutBuffer; const ResetDirective = @import("types.zig").ResetDirective; diff --git a/src/decompress.zig b/src/decompress.zig index 253074d..d2a6335 100644 --- a/src/decompress.zig +++ b/src/decompress.zig @@ -1,5 +1,5 @@ const std = @import("std"); -const c = @import("c.zig"); +const c = @import("c"); const InBuffer = @import("types.zig").InBuffer; const OutBuffer = @import("types.zig").OutBuffer; const ResetDirective = @import("types.zig").ResetDirective; diff --git a/src/error.zig b/src/error.zig index 8ba06ce..438a639 100644 --- a/src/error.zig +++ b/src/error.zig @@ -1,4 +1,4 @@ -const c = @import("c.zig"); +const c = @import("c"); pub const Error = error{ Generic, diff --git a/src/headers.h b/src/headers.h new file mode 100644 index 0000000..6d6a525 --- /dev/null +++ b/src/headers.h @@ -0,0 +1,2 @@ +#include "zstd.h" +#include "zstd_errors.h" \ No newline at end of file diff --git a/src/lib.zig b/src/lib.zig index 71c55a0..c48b8b6 100644 --- a/src/lib.zig +++ b/src/lib.zig @@ -1,7 +1,10 @@ -pub const c = @import("c.zig"); -pub usingnamespace @import("compress.zig"); -pub usingnamespace @import("decompress.zig"); -pub usingnamespace @import("types.zig"); -pub usingnamespace @import("error.zig"); -pub usingnamespace @import("reader.zig"); -pub usingnamespace @import("writer.zig"); +const compress = @import("compress.zig"); +const decompress = @import("decompress.zig"); +const types = @import("types.zig"); +const errors = @import("error.zig"); +const reader = @import("reader.zig"); +const writer = @import("writer.zig"); + +pub const Compressor = compress.Compressor; +pub const writerCtx = writer.writerCtx; +pub const Reader = reader.Reader;