build.zig: teach --compress-debug-sections

Now that #11863 is landed, let's expose it to the zig programs that
build stuff via `build.zig`. "Benchmarks" with [turbonss](https://git.sr.ht/~motiejus/turbonss):

Built with:

    $ zig build -Dtarget=x86_64-linux-gnu.2.19 -Dcpu=x86_64_v3 -Drelease-small=true

*Debug, uncompressed*

    174K turbonss-analyze
    161K turbonss-getent
    1.2M turbonss-unix2db
    448K libnss_turbo.so.2.0.0

*Debug, compressed*

     78K turbonss-analyze
     86K turbonss-getent
    572K turbonss-unix2db
    190K libnss_turbo.so.2.0.0

*Stripped, for completeness*

     17K turbonss-analyze
     20K turbonss-getent
    197K turbonss-unix2db
     26K libnss_turbo.so.2.0.0
This commit is contained in:
Motiejus Jakštys 2022-07-20 14:31:04 +03:00 committed by Andrew Kelley
parent c1f3aca602
commit fd9b55a640

View File

@ -1474,6 +1474,8 @@ pub const LibExeObjStep = struct {
major_only_filename: ?[]const u8,
name_only_filename: ?[]const u8,
strip: bool,
// keep in sync with src/link.zig:CompressDebugSections
compress_debug_sections: enum { none, zlib } = .none,
lib_paths: ArrayList([]const u8),
rpaths: ArrayList([]const u8),
framework_dirs: ArrayList([]const u8),
@ -2688,6 +2690,12 @@ pub const LibExeObjStep = struct {
if (self.strip) {
try zig_args.append("--strip");
}
switch (self.compress_debug_sections) {
.none => {},
.zlib => try zig_args.append("--compress-debug-sections=zlib"),
}
if (self.link_eh_frame_hdr) {
try zig_args.append("--eh-frame-hdr");
}