[misc] Fix make headers

This commit is contained in:
Jarred Sumner
2022-08-03 19:13:08 -07:00
parent cf81ee5f41
commit 440eba7c9b
2 changed files with 53 additions and 32 deletions

View File

@@ -304,51 +304,52 @@ pub fn build(b: *std.build.Builder) !void {
var obj_step = b.step("obj", "Build bun as a .o file");
var obj = b.addObject(bun_executable_name, exe.root_src.?.path);
var opts = b.addOptions();
const is_baseline = arch.isX86() and (obj.target.cpu_model == .baseline or
!std.Target.x86.featureSetHas(obj.target.getCpuFeatures(), .avx2));
var git_sha: [:0]const u8 = "";
if (std.os.getenvZ("GITHUB_SHA") orelse std.os.getenvZ("GIT_SHA")) |sha| {
git_sha = std.heap.page_allocator.dupeZ(u8, sha) catch unreachable;
} else {
sha: {
const result = std.ChildProcess.exec(.{
.allocator = std.heap.page_allocator,
.argv = &.{
"git",
"rev-parse",
"--short",
"HEAD",
},
.cwd = b.pathFromRoot("."),
.expand_arg0 = .expand,
}) catch {
std.debug.print("Warning: failed to get git HEAD", .{});
break :sha;
};
git_sha = std.heap.page_allocator.dupeZ(u8, result.stdout) catch unreachable;
}
}
const is_canary = (std.os.getenvZ("BUN_CANARY") orelse "0")[0] == '1';
{
obj.setTarget(target);
addPicoHTTP(obj, false);
obj.setMainPkgPath(b.pathFromRoot("."));
var opts = b.addOptions();
opts.addOption(
bool,
"bindgen",
false,
);
const is_baseline = arch.isX86() and (obj.target.cpu_model == .baseline or
!std.Target.x86.featureSetHas(obj.target.getCpuFeatures(), .avx2));
opts.addOption(
bool,
"baseline",
is_baseline,
);
var git_sha: [:0]const u8 = "";
if (std.os.getenvZ("GITHUB_SHA") orelse std.os.getenvZ("GIT_SHA")) |sha| {
git_sha = std.heap.page_allocator.dupeZ(u8, sha) catch unreachable;
} else {
sha: {
const result = std.ChildProcess.exec(.{
.allocator = std.heap.page_allocator,
.argv = &.{
"git",
"rev-parse",
"--short",
"HEAD",
},
.cwd = b.pathFromRoot("."),
.expand_arg0 = .expand,
}) catch {
std.debug.print("Warning: failed to get git HEAD", .{});
break :sha;
};
git_sha = std.heap.page_allocator.dupeZ(u8, result.stdout) catch unreachable;
}
}
const is_canary = (std.os.getenvZ("BUN_CANARY") orelse "0")[0] == '1';
opts.addOption([:0]const u8, "sha", git_sha);
opts.addOption(bool, "is_canary", is_canary);
obj.addOptions("build_options", opts);
@@ -413,13 +414,21 @@ pub fn build(b: *std.build.Builder) !void {
var headers_obj: *std.build.LibExeObjStep = b.addObject("headers", "src/bindgen.zig");
defer headers_step.dependOn(&headers_obj.step);
try configureObjectStep(b, headers_obj, target, obj.main_pkg_path.?);
var opts = b.addOptions();
opts.addOption(
var headers_opts = b.addOptions();
headers_opts.addOption(
bool,
"bindgen",
true,
);
headers_obj.addOptions("build_options", opts);
headers_opts.addOption(
bool,
"baseline",
is_baseline,
);
headers_opts.addOption([:0]const u8, "sha", git_sha);
headers_opts.addOption(bool, "is_canary", is_canary);
headers_obj.addOptions("build_options", headers_opts);
headers_obj.linkLibCpp();
}