diff --git a/.gitignore b/.gitignore index 6eba11841..c25f47317 100644 --- a/.gitignore +++ b/.gitignore @@ -85,4 +85,7 @@ src/stamp-h1 /bazel-* +zig-out/ +zig-cache/ + # End diff --git a/build.zig b/build.zig new file mode 100644 index 000000000..95cc59f57 --- /dev/null +++ b/build.zig @@ -0,0 +1,55 @@ +const std = @import("std"); + +pub fn build(b: *std.Build) !void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + try b.updateFile("src/config.h.generic", "src/config.h"); + try b.updateFile("src/pcre2.h.generic", "src/pcre2.h"); + try b.updateFile("src/pcre2_chartables.c.dist", "src/pcre2_chartables.c"); + + const lib = b.addStaticLibrary(.{ + .name = "pcre2", + .target = target, + .optimize = optimize, + }); + lib.addIncludePath("src"); + lib.addCSourceFiles(&.{ + "src/pcre2_auto_possess.c", + "src/pcre2_chkdint.c", + "src/pcre2_compile.c", + "src/pcre2_config.c", + "src/pcre2_context.c", + "src/pcre2_convert.c", + "src/pcre2_dfa_match.c", + "src/pcre2_error.c", + "src/pcre2_extuni.c", + "src/pcre2_find_bracket.c", + "src/pcre2_maketables.c", + "src/pcre2_match.c", + "src/pcre2_match_data.c", + "src/pcre2_newline.c", + "src/pcre2_ord2utf.c", + "src/pcre2_pattern_info.c", + "src/pcre2_script_run.c", + "src/pcre2_serialize.c", + "src/pcre2_string_utils.c", + "src/pcre2_study.c", + "src/pcre2_substitute.c", + "src/pcre2_substring.c", + "src/pcre2_tables.c", + "src/pcre2_ucd.c", + "src/pcre2_ucptables.c", + "src/pcre2_valid_utf.c", + "src/pcre2_xclass.c", + "src/pcre2_chartables.c", + }, &.{ + "-std=c99", + "-DHAVE_CONFIG_H", + "-DPCRE2_CODE_UNIT_WIDTH=8", + "-DPCRE2_STATIC", + }); + lib.installHeader("src/pcre2.h", "pcre2.h"); + lib.linkLibC(); + lib.install(); +}