commit 17a4224cb893dad486de24d22168bc505458a3d1 Author: torque Date: Sun Sep 3 20:41:02 2023 -0700 init diff --git a/build.zig b/build.zig new file mode 100644 index 0000000..063a75a --- /dev/null +++ b/build.zig @@ -0,0 +1,30 @@ +// This file is licensed under the CC0 1.0 license. +// See: https://creativecommons.org/publicdomain/zero/1.0/legalcode + +const std = @import("std"); +const cmark_build = @import("./cmark.build.zig"); + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + const cmark = b.addModule("cmark", .{ + .source_file = .{ .path = "src/cmark.zig" }, + }); + + const cmark_c = cmark_build.cmark_lib(b, .{ + .target = target, + .optimize = optimize, + }); + + _ = cmark; + + const cmarktest = b.addExecutable(.{ + .name = "cmtest", + .root_source_file = .{ .path = "src/cmark.zig" }, + }); + + cmarktest.linkLibrary(cmark_c); + + b.installArtifact(cmarktest); +} diff --git a/cmark.build.zig b/cmark.build.zig new file mode 100644 index 0000000..77b3e2c --- /dev/null +++ b/cmark.build.zig @@ -0,0 +1,98 @@ +// This file is licensed under the CC0 1.0 license. +// See: https://creativecommons.org/publicdomain/zero/1.0/legalcode + +const std = @import("std"); + +const CmarkBuildOptions = struct { + name: []const u8 = "cmark-c", + target: std.zig.CrossTarget, + optimize: std.builtin.OptimizeMode, +}; + +pub fn cmark_lib( + b: *std.Build, + options: CmarkBuildOptions, +) *std.Build.Step.Compile { + const lib = b.addStaticLibrary(.{ + .name = options.name, + .target = options.target, + .optimize = options.optimize, + }); + + const cflags = [_][]const u8{}; + + lib.linkLibC(); + lib.addCSourceFiles(&common_sources, &cflags); + lib.addIncludePath(.{ .path = cmark_src_prefix ++ "include" }); + + const config_h = b.addConfigHeader(.{ + .style = .{ .cmake = .{ .path = cmark_src_prefix ++ "config.h.in" } }, + }, .{ + .HAVE_STDBOOL_H = void{}, + .HAVE___ATTRIBUTE__ = void{}, + .HAVE___BUILTIN_EXPECT = void{}, + }); + + const cmark_version_h = b.addConfigHeader(.{ + .style = .{ .cmake = .{ .path = cmark_src_prefix ++ "cmark_version.h.in" } }, + }, .{ + .PROJECT_VERSION_MAJOR = 0, + .PROJECT_VERSION_MINOR = 30, + .PROJECT_VERSION_PATCH = 3, + }); + + lib.addConfigHeader(config_h); + lib.addConfigHeader(cmark_version_h); + lib.addIncludePath(.{ .path = cmark_zig_prefix }); + lib.installConfigHeader(cmark_version_h, .{ .dest_rel_path = "cmark_version.h" }); + + inline for (install_headers) |header| { + lib.installHeader(header.base_dir ++ header.name, header.name); + } + + b.installArtifact(lib); + + return lib; +} + +pub fn build(b: *std.Build) void { + const target = b.standardTargetOptions(.{}); + const optimize = b.standardOptimizeOption(.{}); + + _ = cmark_lib(b, .{ .target = target, .optimize = optimize }); +} + +const cmark_src_prefix = "deps/cmark/src/"; +const cmark_zig_prefix = "src/"; + +const Header = struct { + base_dir: [:0]const u8, + name: [:0]const u8, +}; + +const install_headers = [_]Header{ + .{ .base_dir = cmark_src_prefix, .name = "cmark.h" }, + .{ .base_dir = cmark_zig_prefix, .name = "cmark_export.h" }, +}; + +const common_sources = [_][]const u8{ + cmark_src_prefix ++ "cmark.c", + cmark_src_prefix ++ "node.c", + cmark_src_prefix ++ "iterator.c", + cmark_src_prefix ++ "blocks.c", + cmark_src_prefix ++ "inlines.c", + cmark_src_prefix ++ "scanners.c", + cmark_src_prefix ++ "utf8.c", + cmark_src_prefix ++ "buffer.c", + cmark_src_prefix ++ "references.c", + cmark_src_prefix ++ "render.c", + cmark_src_prefix ++ "man.c", + cmark_src_prefix ++ "xml.c", + cmark_src_prefix ++ "html.c", + cmark_src_prefix ++ "commonmark.c", + cmark_src_prefix ++ "latex.c", + cmark_src_prefix ++ "houdini_href_e.c", + cmark_src_prefix ++ "houdini_html_e.c", + cmark_src_prefix ++ "houdini_html_u.c", + cmark_src_prefix ++ "cmark_ctype.c", +}; diff --git a/readme.adoc b/readme.adoc new file mode 100644 index 0000000..e69de29 diff --git a/src/cmark.zig b/src/cmark.zig new file mode 100644 index 0000000..e69de29 diff --git a/src/cmark_export.h b/src/cmark_export.h new file mode 100644 index 0000000..fb18545 --- /dev/null +++ b/src/cmark_export.h @@ -0,0 +1,33 @@ +#ifndef CMARK_EXPORT_H +#define CMARK_EXPORT_H + +#ifdef CMARK_STATIC_DEFINE +# define CMARK_EXPORT +# define CMARK_NO_EXPORT +#else +# ifndef CMARK_EXPORT +# ifdef cmark_EXPORTS +# define CMARK_EXPORT __attribute__((visibility("default"))) +# else +# define CMARK_EXPORT __attribute__((visibility("default"))) +# endif +# endif + +# ifndef CMARK_NO_EXPORT +# define CMARK_NO_EXPORT __attribute__((visibility("hidden"))) +# endif +#endif + +#ifndef CMARK_DEPRECATED +# define CMARK_DEPRECATED __attribute__ ((__deprecated__)) +#endif + +#ifndef CMARK_DEPRECATED_EXPORT +# define CMARK_DEPRECATED_EXPORT CMARK_EXPORT CMARK_DEPRECATED +#endif + +#ifndef CMARK_DEPRECATED_NO_EXPORT +# define CMARK_DEPRECATED_NO_EXPORT CMARK_NO_EXPORT CMARK_DEPRECATED +#endif + +#endif /* CMARK_EXPORT_H */