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>
This commit is contained in:
sjinzh 2023-06-25 13:45:44 +08:00 committed by GitHub
parent 5ec8dd5a3c
commit e65ca7e14a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -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 optimize = b.standardOptimizeOption(.{});
const want_lto = b.option(bool, "lto", "Want -fLTO"); const lib = b.addStaticLibrary(.{
.name = "llama",
const lib = b.addStaticLibrary("llama", null); .target = target,
lib.want_lto = want_lto; .optimize = optimize,
lib.setTarget(target); });
lib.setBuildMode(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(); b.installArtifact(lib);
const build_args = .{ .b = b, .lib = lib, .target = target, .optimize = optimize, .want_lto = want_lto }; const examples = .{
"main",
"baby-llama",
"embedding",
// "metal",
"perplexity",
"quantize",
"quantize-stats",
"save-load-state",
// "server",
"simple",
"train-text-from-scratch",
};
const exe = build_example("main", build_args); inline for (examples) |example_name| {
_ = build_example("quantize", build_args); const exe = b.addExecutable(.{
_ = build_example("perplexity", build_args); .name = example_name,
_ = build_example("embedding", build_args); .target = target,
.optimize = optimize,
// create "zig build run" command for ./main });
exe.addIncludePath(".");
const run_cmd = exe.run(); exe.addIncludePath("./examples");
run_cmd.step.dependOn(b.getInstallStep()); exe.addCSourceFiles(&.{
if (b.args) |args| { std.fmt.comptimePrint("examples/{s}/{s}.cpp", .{example_name, example_name}),
run_cmd.addArgs(args); "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;
} }