update zig build system for mingw static lib conventions
parent
7b8ba871a9
commit
2f8983e2f6
|
@ -1064,11 +1064,7 @@ pub const Target = union(enum) {
|
|||
}
|
||||
|
||||
pub fn oFileExt(self: Target) []const u8 {
|
||||
const abi = switch (self) {
|
||||
.Native => builtin.abi,
|
||||
.Cross => |t| t.abi,
|
||||
};
|
||||
return switch (abi) {
|
||||
return switch (self.getAbi()) {
|
||||
builtin.Abi.msvc => ".obj",
|
||||
else => ".o",
|
||||
};
|
||||
|
@ -1081,11 +1077,31 @@ pub const Target = union(enum) {
|
|||
};
|
||||
}
|
||||
|
||||
pub fn libFileExt(self: Target) []const u8 {
|
||||
return switch (self.getOs()) {
|
||||
.windows => ".lib",
|
||||
else => ".a",
|
||||
};
|
||||
pub fn staticLibSuffix(self: Target) []const u8 {
|
||||
if (self.isWasm()) {
|
||||
return ".wasm";
|
||||
}
|
||||
switch (self.getAbi()) {
|
||||
.msvc => return ".lib",
|
||||
else => return ".a",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn dynamicLibSuffix(self: Target) []const u8 {
|
||||
if (self.isDarwin()) {
|
||||
return ".dylib";
|
||||
}
|
||||
switch (self.getOs()) {
|
||||
.windows => return ".dll",
|
||||
else => return ".so",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn libPrefix(self: Target) []const u8 {
|
||||
switch (self.getAbi()) {
|
||||
.msvc => return "",
|
||||
else => return "lib",
|
||||
}
|
||||
}
|
||||
|
||||
pub fn getOs(self: Target) builtin.Os {
|
||||
|
@ -1109,6 +1125,17 @@ pub const Target = union(enum) {
|
|||
}
|
||||
}
|
||||
|
||||
pub fn isMinGW(self: Target) bool {
|
||||
return self.isWindows() and self.isGnu();
|
||||
}
|
||||
|
||||
pub fn isGnu(self: Target) bool {
|
||||
return switch (self.getAbi()) {
|
||||
.gnu, .gnuabin32, .gnuabi64, .gnueabi, .gnueabihf, .gnux32 => true,
|
||||
else => false,
|
||||
};
|
||||
}
|
||||
|
||||
pub fn isDarwin(self: Target) bool {
|
||||
return switch (self.getOs()) {
|
||||
.ios, .macosx, .watchos, .tvos => true,
|
||||
|
@ -1324,37 +1351,27 @@ pub const LibExeObjStep = struct {
|
|||
},
|
||||
.Lib => {
|
||||
if (!self.is_dynamic) {
|
||||
switch (self.target.getOs()) {
|
||||
.windows => {
|
||||
self.out_filename = self.builder.fmt("{}.lib", self.name);
|
||||
},
|
||||
else => {
|
||||
if (self.target.isWasm()) {
|
||||
self.out_filename = self.builder.fmt("{}.wasm", self.name);
|
||||
} else {
|
||||
self.out_filename = self.builder.fmt("lib{}.a", self.name);
|
||||
}
|
||||
},
|
||||
}
|
||||
self.out_filename = self.builder.fmt(
|
||||
"{}{}{}",
|
||||
self.target.libPrefix(),
|
||||
self.name,
|
||||
self.target.staticLibSuffix(),
|
||||
);
|
||||
self.out_lib_filename = self.out_filename;
|
||||
} else {
|
||||
switch (self.target.getOs()) {
|
||||
.ios, .macosx => {
|
||||
self.out_filename = self.builder.fmt("lib{}.{d}.{d}.{d}.dylib", self.name, self.version.major, self.version.minor, self.version.patch);
|
||||
self.major_only_filename = self.builder.fmt("lib{}.{d}.dylib", self.name, self.version.major);
|
||||
self.name_only_filename = self.builder.fmt("lib{}.dylib", self.name);
|
||||
self.out_lib_filename = self.out_filename;
|
||||
},
|
||||
.windows => {
|
||||
self.out_filename = self.builder.fmt("{}.dll", self.name);
|
||||
self.out_lib_filename = self.builder.fmt("{}.lib", self.name);
|
||||
},
|
||||
else => {
|
||||
self.out_filename = self.builder.fmt("lib{}.so.{d}.{d}.{d}", self.name, self.version.major, self.version.minor, self.version.patch);
|
||||
self.major_only_filename = self.builder.fmt("lib{}.so.{d}", self.name, self.version.major);
|
||||
self.name_only_filename = self.builder.fmt("lib{}.so", self.name);
|
||||
self.out_lib_filename = self.out_filename;
|
||||
},
|
||||
if (self.target.isDarwin()) {
|
||||
self.out_filename = self.builder.fmt("lib{}.{d}.{d}.{d}.dylib", self.name, self.version.major, self.version.minor, self.version.patch);
|
||||
self.major_only_filename = self.builder.fmt("lib{}.{d}.dylib", self.name, self.version.major);
|
||||
self.name_only_filename = self.builder.fmt("lib{}.dylib", self.name);
|
||||
self.out_lib_filename = self.out_filename;
|
||||
} else if (self.target.isWindows()) {
|
||||
self.out_filename = self.builder.fmt("{}.dll", self.name);
|
||||
self.out_lib_filename = self.builder.fmt("{}.lib", self.name);
|
||||
} else {
|
||||
self.out_filename = self.builder.fmt("lib{}.so.{d}.{d}.{d}", self.name, self.version.major, self.version.minor, self.version.patch);
|
||||
self.major_only_filename = self.builder.fmt("lib{}.so.{d}", self.name, self.version.major);
|
||||
self.name_only_filename = self.builder.fmt("lib{}.so", self.name);
|
||||
self.out_lib_filename = self.out_filename;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue