mirror of
https://code.blicky.net/yorhel/ncdu.git
synced 2026-01-12 17:08:39 -09:00
`null` here indicates to Zig that it should decide for itself whether to enable PIE or not. On some targets (like macOS or OpenBSD), it is required and so current default will cause unneccessary build error. Behavior for `-Dpie=false` and `-Dpie=true` is not changed. Signed-off-by: Eric Joldasov <bratishkaerik@landless-city.net>
53 lines
1.6 KiB
Zig
53 lines
1.6 KiB
Zig
// SPDX-FileCopyrightText: Yorhel <projects@yorhel.nl>
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
const std = @import("std");
|
|
|
|
pub fn build(b: *std.Build) void {
|
|
const target = b.standardTargetOptions(.{});
|
|
const optimize = b.standardOptimizeOption(.{});
|
|
|
|
const pie = b.option(bool, "pie", "Build with PIE support (by default: target-dependant)");
|
|
const strip = b.option(bool, "strip", "Strip debugging info (by default false)") orelse false;
|
|
|
|
const main_mod = b.createModule(.{
|
|
.root_source_file = b.path("src/main.zig"),
|
|
.target = target,
|
|
.optimize = optimize,
|
|
.strip = strip,
|
|
.link_libc = true,
|
|
});
|
|
main_mod.linkSystemLibrary("ncursesw", .{});
|
|
main_mod.linkSystemLibrary("zstd", .{});
|
|
|
|
const exe = b.addExecutable(.{
|
|
.name = "ncdu",
|
|
.root_module = main_mod,
|
|
});
|
|
exe.pie = pie;
|
|
// https://github.com/ziglang/zig/blob/faccd79ca5debbe22fe168193b8de54393257604/build.zig#L745-L748
|
|
if (target.result.os.tag.isDarwin()) {
|
|
// useful for package maintainers
|
|
exe.headerpad_max_install_names = true;
|
|
}
|
|
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", "Run the app");
|
|
run_step.dependOn(&run_cmd.step);
|
|
|
|
const unit_tests = b.addTest(.{
|
|
.root_module = main_mod,
|
|
});
|
|
unit_tests.pie = pie;
|
|
|
|
const run_unit_tests = b.addRunArtifact(unit_tests);
|
|
|
|
const test_step = b.step("test", "Run unit tests");
|
|
test_step.dependOn(&run_unit_tests.step);
|
|
}
|