| const std = @import("std"); |
| const builtin = @import("builtin"); |
|
|
| // Zig Version: 0.11.0 |
| // Zig Build Command: zig build |
| // Zig Run Command: zig build -h |
| // zig build run_dolly-v2 |
| // zig build run_gpt-2 |
| // zig build run_gpt-j |
| // zig build run_gpt-neox |
| // zig build run_mnist |
| // zig build run_mpt |
| // zig build run_replit |
| // zig build run_starcoder |
| // zig build run_test-grad0 |
| // zig build run_test-mul-mat0 |
| // zig build run_test-mul-mat2 |
| // zig build run_test-opt |
| // zig build run_test-vec1 |
| // zig build run_test0 |
| // zig build run_test1 |
| // zig build run_test2 |
| // zig build run_test3 |
| // zig build run_zig_test0 |
| // zig build run_zig_test1 |
| // zig build run_zig_test2 |
| // zig build run_zig_test3 |
| pub fn build(b: *std.build.Builder) void { |
| const target = b.standardTargetOptions(.{}); |
| const optimize = b.standardOptimizeOption(.{}); |
| const lib = b.addStaticLibrary(.{ |
| .name = "ggml", |
| .target = target, |
| .optimize = optimize, |
| }); |
| lib.addIncludePath(.{ .path = "./include" }); |
| lib.addIncludePath(.{ .path = "./include/ggml" }); |
| lib.addCSourceFiles(&.{ |
| "src/ggml.c", |
| }, &.{"-std=c11"}); |
| lib.linkLibC(); |
| lib.linkLibCpp(); |
| b.installArtifact(lib); |
|
|
| // examples |
| const examples = .{ |
| "dolly-v2", |
| "gpt-2", |
| "gpt-j", |
| "gpt-neox", |
| "mnist", |
| "mpt", |
| "replit", |
| "starcoder", |
| // "whisper", |
| }; |
| inline for (examples) |name| { |
| const exe = b.addExecutable(.{ |
| .name = name, |
| .target = target, |
| .optimize = optimize, |
| }); |
| exe.addIncludePath(.{ .path = "./include" }); |
| exe.addIncludePath(.{ .path = "./include/ggml" }); |
| exe.addIncludePath(.{ .path = "./examples" }); |
| // exe.addIncludePath("./examples/whisper"); |
| exe.addCSourceFiles(&.{ |
| std.fmt.comptimePrint("examples/{s}/main.cpp", .{name}), |
| "examples/common.cpp", |
| "examples/common-ggml.cpp", |
| // "examples/whisper/whisper.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_" ++ name, "Run examples"); |
| run_step.dependOn(&run_cmd.step); |
| } |
|
|
| // tests |
| const tests = if (builtin.target.cpu.arch == .x86_64) .{ |
| // "test-blas0", |
| // "test-grad0", |
| "test-mul-mat0", |
| // "test-mul-mat1", |
| "test-mul-mat2", |
| // "test-opt", |
| // "test-svd0", |
| // "test-vec0", |
| "test-vec1", |
| // "test-vec2", |
| "test0", |
| "test1", |
| "test2", |
| "test3", |
| } else .{ |
| // "test-blas0", |
| // "test-grad0", |
| "test-mul-mat0", |
| // "test-mul-mat1", |
| "test-mul-mat2", |
| // "test-opt", |
| // "test-svd0", |
| // "test-vec0", |
| // "test-vec1", |
| // "test-vec2", |
| "test0", |
| "test1", |
| "test2", |
| "test3", |
| }; |
| inline for (tests) |name| { |
| const exe = b.addExecutable(.{ |
| .name = name, |
| .target = target, |
| .optimize = optimize, |
| }); |
| exe.addIncludePath(.{ .path = "./include" }); |
| exe.addIncludePath(.{ .path = "./include/ggml" }); |
| exe.addCSourceFiles(&.{ |
| std.fmt.comptimePrint("tests/{s}.c", .{name}), |
| }, &.{"-std=c11"}); |
| 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_" ++ name, "Run tests"); |
| run_step.dependOn(&run_cmd.step); |
| } |
|
|
| // zig_tests |
| const zig_tests = .{ |
| "test0", |
| "test1", |
| "test2", |
| "test3", |
| }; |
| inline for (zig_tests) |name| { |
| const exe = b.addExecutable(.{ |
| .name = name, |
| .root_source_file = .{ .path = std.fmt.comptimePrint("tests/{s}.zig", .{name}) }, |
| .target = target, |
| .optimize = optimize, |
| }); |
| exe.addIncludePath(.{ .path = "./include" }); |
| exe.addIncludePath(.{ .path = "./include/ggml" }); |
| 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_zig_" ++ name, "Run zig_tests"); |
| run_step.dependOn(&run_cmd.step); |
| } |
| } |
|
|