mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 12:59:04 +00:00
std.build.LibExeObjStep: avoid putting static libs inside static libs
This commit is contained in:
parent
7ea3937c5a
commit
6d38dba72e
@ -585,12 +585,16 @@ pub fn linkLibrary(self: *LibExeObjStep, lib: *LibExeObjStep) void {
|
||||
}
|
||||
|
||||
pub fn isDynamicLibrary(self: *LibExeObjStep) bool {
|
||||
return self.kind == .lib and self.linkage != null and self.linkage.? == .dynamic;
|
||||
return self.kind == .lib and self.linkage == Linkage.dynamic;
|
||||
}
|
||||
|
||||
pub fn isStaticLibrary(self: *LibExeObjStep) bool {
|
||||
return self.kind == .lib and self.linkage != Linkage.dynamic;
|
||||
}
|
||||
|
||||
pub fn producesPdbFile(self: *LibExeObjStep) bool {
|
||||
if (!self.target.isWindows() and !self.target.isUefi()) return false;
|
||||
if (self.strip != null and self.strip.?) return false;
|
||||
if (self.strip == true) return false;
|
||||
return self.isDynamicLibrary() or self.kind == .exe or self.kind == .test_exe;
|
||||
}
|
||||
|
||||
@ -1132,16 +1136,19 @@ fn make(step: *Step) !void {
|
||||
.obj => {
|
||||
try zig_args.append(other.getOutputSource().getPath(builder));
|
||||
},
|
||||
.lib => {
|
||||
.lib => l: {
|
||||
if (self.isStaticLibrary() and other.isStaticLibrary()) {
|
||||
// Avoid putting a static library inside a static library.
|
||||
break :l;
|
||||
}
|
||||
|
||||
const full_path_lib = other.getOutputLibSource().getPath(builder);
|
||||
try zig_args.append(full_path_lib);
|
||||
|
||||
if (other.linkage) |linkage| {
|
||||
if (linkage == .dynamic and !self.target.isWindows()) {
|
||||
if (fs.path.dirname(full_path_lib)) |dirname| {
|
||||
try zig_args.append("-rpath");
|
||||
try zig_args.append(dirname);
|
||||
}
|
||||
if (other.linkage == Linkage.dynamic and !self.target.isWindows()) {
|
||||
if (fs.path.dirname(full_path_lib)) |dirname| {
|
||||
try zig_args.append("-rpath");
|
||||
try zig_args.append(dirname);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user