aboutsummaryrefslogtreecommitdiff
path: root/build.zig
diff options
context:
space:
mode:
authorsjinzh <sjinzh@gmail.com>2023-06-25 13:45:44 +0800
committerGitHub <noreply@github.com>2023-06-25 08:45:44 +0300
commite65ca7e14ac76c4046091da39d41a9017abaa9b3 (patch)
tree63f8ac12a1274b8c2fbf284b5ec40fe60c7040b0 /build.zig
parent5ec8dd5a3c6a9a109351d2257bb9d53869bd0a94 (diff)
zig : upgrade build system support (#1981)
* upgrade zig build system support * zig : add new line at the end of the file --------- Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
Diffstat (limited to 'build.zig')
-rw-r--r--build.zig91
1 files changed, 44 insertions, 47 deletions
diff --git a/build.zig b/build.zig
index 306127f..49c159e 100644
--- a/build.zig
+++ b/build.zig
@@ -1,61 +1,58 @@
const std = @import("std");
+// Zig Version: 0.11.0-dev.3379+629f0d23b
pub fn build(b: *std.build.Builder) void {
const target = b.standardTargetOptions(.{});
- const optimize = b.standardReleaseOptions();
- const want_lto = b.option(bool, "lto", "Want -fLTO");
-
- const lib = b.addStaticLibrary("llama", null);
- lib.want_lto = want_lto;
- lib.setTarget(target);
- lib.setBuildMode(optimize);
+ const optimize = b.standardOptimizeOption(.{});
+ const lib = b.addStaticLibrary(.{
+ .name = "llama",
+ .target = target,
+ .optimize = optimize,
+ });
+ lib.linkLibC();
lib.linkLibCpp();
lib.addIncludePath(".");
- lib.addIncludePath("examples");
+ lib.addIncludePath("./examples");
lib.addCSourceFiles(&.{
"ggml.c",
}, &.{"-std=c11"});
lib.addCSourceFiles(&.{
"llama.cpp",
}, &.{"-std=c++11"});
- lib.install();
-
- const build_args = .{ .b = b, .lib = lib, .target = target, .optimize = optimize, .want_lto = want_lto };
-
- const exe = build_example("main", build_args);
- _ = build_example("quantize", build_args);
- _ = build_example("perplexity", build_args);
- _ = build_example("embedding", build_args);
-
- // create "zig build run" command for ./main
-
- const run_cmd = exe.run();
- run_cmd.step.dependOn(b.getInstallStep());
- if (b.args) |args| {
- run_cmd.addArgs(args);
+ b.installArtifact(lib);
+
+ const examples = .{
+ "main",
+ "baby-llama",
+ "embedding",
+ // "metal",
+ "perplexity",
+ "quantize",
+ "quantize-stats",
+ "save-load-state",
+ // "server",
+ "simple",
+ "train-text-from-scratch",
+ };
+
+ inline for (examples) |example_name| {
+ const exe = b.addExecutable(.{
+ .name = example_name,
+ .target = target,
+ .optimize = optimize,
+ });
+ exe.addIncludePath(".");
+ exe.addIncludePath("./examples");
+ exe.addCSourceFiles(&.{
+ std.fmt.comptimePrint("examples/{s}/{s}.cpp", .{example_name, example_name}),
+ "examples/common.cpp",
+ }, &.{"-std=c++11"});
+ exe.linkLibrary(lib);
+ b.installArtifact(exe);
+ const run_cmd = b.addRunArtifact(exe);
+ run_cmd.step.dependOn(b.getInstallStep());
+ if (b.args) |args| run_cmd.addArgs(args);
+ const run_step = b.step("run_" ++ example_name, "Run the app");
+ run_step.dependOn(&run_cmd.step);
}
-
- const run_step = b.step("run", "Run the app");
- run_step.dependOn(&run_cmd.step);
-}
-
-fn build_example(comptime name: []const u8, args: anytype) *std.build.LibExeObjStep {
- const b = args.b;
- const lib = args.lib;
- const want_lto = args.want_lto;
-
- const exe = b.addExecutable(name, null);
- exe.want_lto = want_lto;
- lib.setTarget(args.target);
- lib.setBuildMode(args.optimize);
- exe.addIncludePath(".");
- exe.addIncludePath("examples");
- exe.addCSourceFiles(&.{
- std.fmt.comptimePrint("examples/{s}/{s}.cpp", .{name, name}),
- "examples/common.cpp",
- }, &.{"-std=c++11"});
- exe.linkLibrary(lib);
- exe.install();
-
- return exe;
}