diff --git a/codes/c/.gitignore b/codes/c/.gitignore new file mode 100644 index 000000000..47714a499 --- /dev/null +++ b/codes/c/.gitignore @@ -0,0 +1,4 @@ +# zig build system files +zig-cache/ +zig-out/ +*.exe \ No newline at end of file diff --git a/codes/c/build.zig b/codes/c/build.zig new file mode 100644 index 000000000..95a17a7b5 --- /dev/null +++ b/codes/c/build.zig @@ -0,0 +1,145 @@ +// File: build.zig +// Created Time: 2023-01-07 +// Author: sjinzh (sjinzh@gmail.com) + +const std = @import("std"); + +// Zig Version: 0.10.0 +// Build Command: zig build +pub fn build(b: *std.build.Builder) void { + const target = b.standardTargetOptions(.{}); + const mode = b.standardReleaseOptions(); + + // Section: "Time Complexity" + // Source File: "chapter_computational_complexity/time_complexity.c" + // Run Command: zig build run_time_complexity + const exe_time_complexity = b.addExecutable("time_complexity", null); + exe_time_complexity.addCSourceFile("chapter_computational_complexity/time_complexity.c", &[_][]const u8{"-std=c99"}); + exe_time_complexity.linkSystemLibrary("c"); + exe_time_complexity.setTarget(target); + exe_time_complexity.setBuildMode(mode); + exe_time_complexity.install(); + const run_cmd_time_complexity = exe_time_complexity.run(); + run_cmd_time_complexity.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_time_complexity.addArgs(args); + const run_step_time_complexity = b.step("run_time_complexity", "Run time_complexity"); + run_step_time_complexity.dependOn(&run_cmd_time_complexity.step); + + // Source File: "chapter_computational_complexity/worst_best_time_complexity.c" + // Run Command: zig build run_worst_best_time_complexity + const exe_worst_best_time_complexity = b.addExecutable("worst_best_time_complexity", null); + exe_worst_best_time_complexity.addCSourceFile("chapter_computational_complexity/worst_best_time_complexity.c", &[_][]const u8{"-std=c99"}); + exe_worst_best_time_complexity.linkSystemLibrary("c"); + exe_worst_best_time_complexity.setTarget(target); + exe_worst_best_time_complexity.setBuildMode(mode); + exe_worst_best_time_complexity.install(); + const run_cmd_worst_best_time_complexity = exe_worst_best_time_complexity.run(); + run_cmd_worst_best_time_complexity.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_worst_best_time_complexity.addArgs(args); + const run_step_worst_best_time_complexity = b.step("run_worst_best_time_complexity", "Run worst_best_time_complexity"); + run_step_worst_best_time_complexity.dependOn(&run_cmd_worst_best_time_complexity.step); + + // Section: "Array" + // Source File: "chapter_array_and_linkedlist/array.c" + // Run Command: zig build run_array + const exe_array = b.addExecutable("array", null); + exe_array.addCSourceFile("chapter_array_and_linkedlist/array.c", &[_][]const u8{"-std=c99"}); + exe_array.linkSystemLibrary("c"); + exe_array.setTarget(target); + exe_array.setBuildMode(mode); + exe_array.install(); + const run_cmd_array = exe_array.run(); + run_cmd_array.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_array.addArgs(args); + const run_step_array = b.step("run_array", "Run array"); + run_step_array.dependOn(&run_cmd_array.step); + + // Section: "Bubble Sort" + // Source File: "chapter_sorting/bubble_sort.c" + // Run Command: zig build run_bubble_sort + const exe_bubble_sort = b.addExecutable("bubble_sort", null); + exe_bubble_sort.addCSourceFile("chapter_sorting/bubble_sort.c", &[_][]const u8{"-std=c99"}); + exe_bubble_sort.linkSystemLibrary("c"); + exe_bubble_sort.setTarget(target); + exe_bubble_sort.setBuildMode(mode); + exe_bubble_sort.install(); + const run_cmd_bubble_sort = exe_bubble_sort.run(); + run_cmd_bubble_sort.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_bubble_sort.addArgs(args); + const run_step_bubble_sort = b.step("run_bubble_sort", "Run bubble_sort"); + run_step_bubble_sort.dependOn(&run_cmd_bubble_sort.step); + + // Section: "Insertion Sort" + // Source File: "chapter_sorting/insertion_sort.c" + // Run Command: zig build run_insertion_sort + const exe_insertion_sort = b.addExecutable("insertion_sort", null); + exe_insertion_sort.addCSourceFile("chapter_sorting/insertion_sort.c", &[_][]const u8{"-std=c99"}); + exe_insertion_sort.linkSystemLibrary("c"); + exe_insertion_sort.setTarget(target); + exe_insertion_sort.setBuildMode(mode); + exe_insertion_sort.install(); + const run_cmd_insertion_sort = exe_insertion_sort.run(); + run_cmd_insertion_sort.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_insertion_sort.addArgs(args); + const run_step_insertion_sort = b.step("run_insertion_sort", "Run insertion_sort"); + run_step_insertion_sort.dependOn(&run_cmd_insertion_sort.step); + + // Section: "Binary Tree" + // Source File: "chapter_tree/binary_tree.c" + // Run Command: zig build run_binary_tree + const exe_binary_tree = b.addExecutable("binary_tree", null); + exe_binary_tree.addCSourceFile("chapter_tree/binary_tree.c", &[_][]const u8{"-std=c99"}); + exe_binary_tree.linkSystemLibrary("c"); + exe_binary_tree.setTarget(target); + exe_binary_tree.setBuildMode(mode); + exe_binary_tree.install(); + const run_cmd_binary_tree = exe_binary_tree.run(); + run_cmd_binary_tree.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_binary_tree.addArgs(args); + const run_step_binary_tree = b.step("run_binary_tree", "Run binary_tree"); + run_step_binary_tree.dependOn(&run_cmd_binary_tree.step); + + // Section: "Binary Tree Types" + // Source File: "chapter_tree/binary_tree_bfs.c" + // Run Command: zig build run_binary_tree_bfs + const exe_binary_tree_bfs = b.addExecutable("binary_tree_bfs", null); + exe_binary_tree_bfs.addCSourceFile("chapter_tree/binary_tree_bfs.c", &[_][]const u8{"-std=c99"}); + exe_binary_tree_bfs.linkSystemLibrary("c"); + exe_binary_tree_bfs.setTarget(target); + exe_binary_tree_bfs.setBuildMode(mode); + exe_binary_tree_bfs.install(); + const run_cmd_binary_tree_bfs = exe_binary_tree_bfs.run(); + run_cmd_binary_tree_bfs.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_binary_tree_bfs.addArgs(args); + const run_step_binary_tree_bfs = b.step("run_binary_tree_bfs", "Run binary_tree_bfs"); + run_step_binary_tree_bfs.dependOn(&run_cmd_binary_tree_bfs.step); + + // Source File: "chapter_tree/binary_tree_dfs.c" + // Run Command: zig build run_binary_tree_dfs + const exe_binary_tree_dfs = b.addExecutable("binary_tree_dfs", null); + exe_binary_tree_dfs.addCSourceFile("chapter_tree/binary_tree_dfs.c", &[_][]const u8{"-std=c99"}); + exe_binary_tree_dfs.linkSystemLibrary("c"); + exe_binary_tree_dfs.setTarget(target); + exe_binary_tree_dfs.setBuildMode(mode); + exe_binary_tree_dfs.install(); + const run_cmd_binary_tree_dfs = exe_binary_tree_dfs.run(); + run_cmd_binary_tree_dfs.step.dependOn(b.getInstallStep()); + if (b.args) |args| run_cmd_binary_tree_dfs.addArgs(args); + const run_step_binary_tree_dfs = b.step("run_binary_tree_dfs", "Run binary_tree_bfs"); + run_step_binary_tree_dfs.dependOn(&run_cmd_binary_tree_dfs.step); + + // // Section: "Binary Search Tree" + // // Source File: "chapter_tree/binary_search_tree.c" + // // Run Command: zig build run_binary_search_tree + // const exe_binary_search_tree = b.addExecutable("binary_search_tree", null); + // exe_binary_search_tree.addCSourceFile("chapter_tree/binary_search_tree.c", &[_][]const u8{"-std=c99"}); + // exe_binary_search_tree.linkSystemLibrary("c"); + // exe_binary_search_tree.setTarget(target); + // exe_binary_search_tree.setBuildMode(mode); + // exe_binary_search_tree.install(); + // const run_cmd_exe_binary_search_tree = exe_binary_search_tree.run(); + // run_cmd_exe_binary_search_tree.step.dependOn(b.getInstallStep()); + // if (b.args) |args| run_cmd_exe_binary_search_tree.addArgs(args); + // const run_step_binary_search_tree = b.step("run_binary_search_tree", "Run binary_search_tree"); + // run_step_binary_search_tree.dependOn(&run_cmd_exe_binary_search_tree.step); +} \ No newline at end of file