2020-05-02 17:43:26 +01:00
|
|
|
const std = @import("std");
|
2021-12-30 03:35:16 +00:00
|
|
|
const builtin = @import("builtin");
|
2022-07-15 17:06:18 +01:00
|
|
|
const shared = @import("src/shared.zig");
|
2020-05-25 22:12:08 +01:00
|
|
|
|
2020-05-07 16:29:40 +01:00
|
|
|
pub fn build(b: *std.build.Builder) !void {
|
2020-04-24 23:19:03 +01:00
|
|
|
const target = b.standardTargetOptions(.{});
|
|
|
|
|
|
|
|
const mode = b.standardReleaseOptions();
|
2022-07-31 22:38:27 +01:00
|
|
|
const exe = b.addExecutable("zls", "src/main.zig");
|
2021-08-28 16:22:41 +01:00
|
|
|
const exe_options = b.addOptions();
|
|
|
|
exe.addOptions("build_options", exe_options);
|
|
|
|
|
|
|
|
exe_options.addOption(
|
2021-10-02 06:37:11 +01:00
|
|
|
shared.ZigVersion,
|
2020-05-07 16:29:40 +01:00
|
|
|
"data_version",
|
2021-10-02 06:37:11 +01:00
|
|
|
b.option(shared.ZigVersion, "data_version", "The Zig version your compiler is.") orelse .master,
|
2020-05-07 16:29:40 +01:00
|
|
|
);
|
2020-05-02 17:43:26 +01:00
|
|
|
|
2021-11-02 15:42:06 +00:00
|
|
|
exe_options.addOption(
|
|
|
|
std.log.Level,
|
|
|
|
"log_level",
|
2021-11-02 15:46:16 +00:00
|
|
|
b.option(std.log.Level, "log_level", "The Log Level to be used.") orelse .info,
|
2021-11-02 15:42:06 +00:00
|
|
|
);
|
|
|
|
|
2022-07-09 09:03:19 +01:00
|
|
|
const enable_tracy = b.option(bool, "enable_tracy", "Whether tracy should be enabled.") orelse false;
|
2022-06-06 04:50:17 +01:00
|
|
|
|
|
|
|
exe_options.addOption(
|
|
|
|
bool,
|
|
|
|
"enable_tracy",
|
|
|
|
enable_tracy,
|
|
|
|
);
|
|
|
|
|
|
|
|
exe_options.addOption(
|
|
|
|
bool,
|
|
|
|
"enable_tracy_allocation",
|
|
|
|
b.option(bool, "enable_tracy_allocation", "Enable using TracyAllocator to monitor allocations.") orelse false,
|
|
|
|
);
|
|
|
|
|
|
|
|
exe_options.addOption(
|
|
|
|
bool,
|
|
|
|
"enable_tracy_callstack",
|
|
|
|
b.option(bool, "enable_tracy_callstack", "Enable callstack graphs.") orelse false,
|
|
|
|
);
|
|
|
|
|
2022-07-18 21:35:00 +01:00
|
|
|
const KNOWN_FOLDERS_DEFAULT_PATH = "src/known-folders/known-folders.zig";
|
|
|
|
const known_folders_path = b.option([]const u8, "known-folders", "Path to known-folders package (default: " ++ KNOWN_FOLDERS_DEFAULT_PATH ++ ")") orelse KNOWN_FOLDERS_DEFAULT_PATH;
|
|
|
|
exe.addPackage(.{ .name = "known-folders", .source = .{ .path = known_folders_path } });
|
2020-05-25 01:22:39 +01:00
|
|
|
|
2022-06-06 04:50:17 +01:00
|
|
|
if (enable_tracy) {
|
|
|
|
const client_cpp = "src/tracy/TracyClient.cpp";
|
|
|
|
|
|
|
|
// On mingw, we need to opt into windows 7+ to get some features required by tracy.
|
|
|
|
const tracy_c_flags: []const []const u8 = if (target.isWindows() and target.getAbi() == .gnu)
|
|
|
|
&[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined", "-D_WIN32_WINNT=0x601" }
|
|
|
|
else
|
|
|
|
&[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined" };
|
|
|
|
|
|
|
|
exe.addIncludePath("src/tracy");
|
|
|
|
exe.addCSourceFile(client_cpp, tracy_c_flags);
|
|
|
|
exe.linkSystemLibraryName("c++");
|
|
|
|
exe.linkLibC();
|
|
|
|
|
|
|
|
if (target.isWindows()) {
|
|
|
|
exe.linkSystemLibrary("dbghelp");
|
|
|
|
exe.linkSystemLibrary("ws2_32");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-24 23:19:03 +01:00
|
|
|
exe.setTarget(target);
|
|
|
|
exe.setBuildMode(mode);
|
|
|
|
exe.install();
|
|
|
|
|
2020-05-25 01:22:39 +01:00
|
|
|
b.installFile("src/special/build_runner.zig", "bin/build_runner.zig");
|
|
|
|
|
2020-05-27 19:58:35 +01:00
|
|
|
const test_step = b.step("test", "Run all the tests");
|
2021-10-01 01:46:10 +01:00
|
|
|
test_step.dependOn(b.getInstallStep());
|
2020-05-27 19:58:35 +01:00
|
|
|
|
2021-03-29 13:02:52 +01:00
|
|
|
var unit_tests = b.addTest("src/unit_tests.zig");
|
2020-05-27 19:58:35 +01:00
|
|
|
unit_tests.setBuildMode(.Debug);
|
2022-05-29 18:19:30 +01:00
|
|
|
unit_tests.setTarget(target);
|
2021-03-29 13:02:52 +01:00
|
|
|
test_step.dependOn(&unit_tests.step);
|
2020-06-30 13:46:43 +01:00
|
|
|
|
|
|
|
var session_tests = b.addTest("tests/sessions.zig");
|
2022-05-28 05:41:44 +01:00
|
|
|
session_tests.addPackage(.{ .name = "header", .source = .{ .path = "src/header.zig" } });
|
2022-07-31 22:39:33 +01:00
|
|
|
session_tests.addPackage(.{ .name = "server", .source = .{ .path = "src/Server.zig" }, .dependencies = exe.packages.items });
|
2020-06-30 13:46:43 +01:00
|
|
|
session_tests.setBuildMode(.Debug);
|
2022-05-29 18:19:30 +01:00
|
|
|
session_tests.setTarget(target);
|
2020-06-30 13:46:43 +01:00
|
|
|
test_step.dependOn(&session_tests.step);
|
2020-04-24 23:19:03 +01:00
|
|
|
}
|