|
@@ -1,61 +1,58 @@
|
|
|
const std = @import("std");
|
|
const std = @import("std");
|
|
|
|
|
|
|
|
|
|
+// Zig Version: 0.11.0-dev.3379+629f0d23b
|
|
|
pub fn build(b: *std.build.Builder) void {
|
|
pub fn build(b: *std.build.Builder) void {
|
|
|
const target = b.standardTargetOptions(.{});
|
|
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.linkLibCpp();
|
|
|
lib.addIncludePath(".");
|
|
lib.addIncludePath(".");
|
|
|
- lib.addIncludePath("examples");
|
|
|
|
|
|
|
+ lib.addIncludePath("./examples");
|
|
|
lib.addCSourceFiles(&.{
|
|
lib.addCSourceFiles(&.{
|
|
|
"ggml.c",
|
|
"ggml.c",
|
|
|
}, &.{"-std=c11"});
|
|
}, &.{"-std=c11"});
|
|
|
lib.addCSourceFiles(&.{
|
|
lib.addCSourceFiles(&.{
|
|
|
"llama.cpp",
|
|
"llama.cpp",
|
|
|
}, &.{"-std=c++11"});
|
|
}, &.{"-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;
|
|
|
|
|
}
|
|
}
|