aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-10-03 21:53:22 +0200
committerGitHub <noreply@github.com>2024-10-03 21:53:22 +0200
commit9b273f6b9acaf288920e8320adaa34f30348e97f (patch)
treee7e9aff879d1662028514a4685bc31b22d23facd /src
parent69ce7f0e085b5fb3bf7356e9999940c60c79cfe2 (diff)
parent537a873b171b521d422704fc1f9c23f8d3b954ea (diff)
downloadzig-9b273f6b9acaf288920e8320adaa34f30348e97f.tar.gz
zig-9b273f6b9acaf288920e8320adaa34f30348e97f.zip
Merge pull request #21570 from alexrp/windows-itanium
Initial port work for `*-windows-itanium` support.
Diffstat (limited to 'src')
-rw-r--r--src/Compilation.zig2
-rw-r--r--src/clang.zig2
-rw-r--r--src/libcxx.zig2
-rw-r--r--src/link/C.zig2
-rw-r--r--src/link/Coff/lld.zig6
-rw-r--r--src/main.zig2
-rw-r--r--src/target.zig4
7 files changed, 10 insertions, 10 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 227b6e67ef..1c4a3b2262 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -2631,7 +2631,7 @@ fn addNonIncrementalStuffToCacheManifest(
const target = comp.root_mod.resolved_target.result;
if (comp.libc_installation) |libc_installation| {
man.hash.addOptionalBytes(libc_installation.crt_dir);
- if (target.abi == .msvc) {
+ if (target.abi == .msvc or target.abi == .itanium) {
man.hash.addOptionalBytes(libc_installation.msvc_lib_dir);
man.hash.addOptionalBytes(libc_installation.kernel32_lib_dir);
}
diff --git a/src/clang.zig b/src/clang.zig
index cb58a92bd0..904eca3c3f 100644
--- a/src/clang.zig
+++ b/src/clang.zig
@@ -64,7 +64,7 @@ pub const APValueKind = enum(c_int) {
pub const APValue = extern struct {
Kind: APValueKind,
- Data: if (builtin.os.tag == .windows and builtin.abi == .msvc) [52]u8 else [68]u8,
+ Data: if (builtin.os.tag == .windows and (builtin.abi == .msvc or builtin.abi == .itanium)) [52]u8 else [68]u8,
pub const getKind = ZigClangAPValue_getKind;
extern fn ZigClangAPValue_getKind(*const APValue) APValueKind;
diff --git a/src/libcxx.zig b/src/libcxx.zig
index 1baa6df1b1..11deff91c9 100644
--- a/src/libcxx.zig
+++ b/src/libcxx.zig
@@ -221,7 +221,7 @@ pub fn buildLibCXX(comp: *Compilation, prog_node: std.Progress.Node) BuildError!
for (libcxx_files) |cxx_src| {
var cflags = std.ArrayList([]const u8).init(arena);
- if ((target.os.tag == .windows and target.abi == .msvc) or target.os.tag == .wasi) {
+ if ((target.os.tag == .windows and (target.abi == .msvc or target.abi == .itanium)) or target.os.tag == .wasi) {
// Filesystem stuff isn't supported on WASI and Windows (MSVC).
if (std.mem.startsWith(u8, cxx_src, "src/filesystem/"))
continue;
diff --git a/src/link/C.zig b/src/link/C.zig
index a674b256b0..7a5bf780b4 100644
--- a/src/link/C.zig
+++ b/src/link/C.zig
@@ -398,7 +398,7 @@ fn abiDefines(self: *C, target: std.Target) !std.ArrayList(u8) {
errdefer defines.deinit();
const writer = defines.writer();
switch (target.abi) {
- .msvc => try writer.writeAll("#define ZIG_TARGET_ABI_MSVC\n"),
+ .msvc, .itanium => try writer.writeAll("#define ZIG_TARGET_ABI_MSVC\n"),
else => {},
}
try writer.print("#define ZIG_TARGET_MAX_INT_ALIGNMENT {d}\n", .{
diff --git a/src/link/Coff/lld.zig b/src/link/Coff/lld.zig
index 9225399c94..651c76c7f1 100644
--- a/src/link/Coff/lld.zig
+++ b/src/link/Coff/lld.zig
@@ -93,7 +93,7 @@ pub fn linkWithLLD(self: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_no
man.hash.add(comp.libc_installation != null);
if (comp.libc_installation) |libc_installation| {
man.hash.addBytes(libc_installation.crt_dir.?);
- if (target.abi == .msvc) {
+ if (target.abi == .msvc or target.abi == .itanium) {
man.hash.addBytes(libc_installation.msvc_lib_dir.?);
man.hash.addBytes(libc_installation.kernel32_lib_dir.?);
}
@@ -256,7 +256,7 @@ pub fn linkWithLLD(self: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_no
if (comp.libc_installation) |libc_installation| {
try argv.append(try allocPrint(arena, "-LIBPATH:{s}", .{libc_installation.crt_dir.?}));
- if (target.abi == .msvc) {
+ if (target.abi == .msvc or target.abi == .itanium) {
try argv.append(try allocPrint(arena, "-LIBPATH:{s}", .{libc_installation.msvc_lib_dir.?}));
try argv.append(try allocPrint(arena, "-LIBPATH:{s}", .{libc_installation.kernel32_lib_dir.?}));
}
@@ -499,7 +499,7 @@ pub fn linkWithLLD(self: *Coff, arena: Allocator, tid: Zcu.PerThread.Id, prog_no
continue;
}
}
- if (target.abi == .msvc) {
+ if (target.abi == .msvc or target.abi == .itanium) {
argv.appendAssumeCapacity(lib_basename);
continue;
}
diff --git a/src/main.zig b/src/main.zig
index fe951ee727..0d833e5505 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -3876,7 +3876,7 @@ fn createModule(
};
}
- if (builtin.target.os.tag == .windows and target.abi == .msvc and
+ if (builtin.target.os.tag == .windows and (target.abi == .msvc or target.abi == .itanium) and
external_system_libs.len != 0)
{
if (create_module.libc_installation == null) {
diff --git a/src/target.zig b/src/target.zig
index 8b0271b4f3..7667303704 100644
--- a/src/target.zig
+++ b/src/target.zig
@@ -31,7 +31,7 @@ pub fn libcNeedsLibUnwind(target: std.Target) bool {
.wasi, // Wasm/WASI currently doesn't offer support for libunwind, so don't link it.
=> false,
- .windows => target.abi != .msvc,
+ .windows => target.abi.isGnu(),
else => true,
};
}
@@ -87,7 +87,7 @@ pub fn hasValgrindSupport(target: std.Target) bool {
.aarch64_be,
=> {
return target.os.tag == .linux or target.os.tag == .solaris or target.os.tag == .illumos or
- (target.os.tag == .windows and target.abi != .msvc);
+ (target.os.tag == .windows and target.abi.isGnu());
},
else => return false,
}