forked from LostRuins/koboldcpp
-
Notifications
You must be signed in to change notification settings - Fork 26
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
22 changed files
with
452 additions
and
211 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.