diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2024-10-03 21:53:22 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-03 21:53:22 +0200 |
| commit | 9b273f6b9acaf288920e8320adaa34f30348e97f (patch) | |
| tree | e7e9aff879d1662028514a4685bc31b22d23facd /src | |
| parent | 69ce7f0e085b5fb3bf7356e9999940c60c79cfe2 (diff) | |
| parent | 537a873b171b521d422704fc1f9c23f8d3b954ea (diff) | |
| download | zig-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.zig | 2 | ||||
| -rw-r--r-- | src/clang.zig | 2 | ||||
| -rw-r--r-- | src/libcxx.zig | 2 | ||||
| -rw-r--r-- | src/link/C.zig | 2 | ||||
| -rw-r--r-- | src/link/Coff/lld.zig | 6 | ||||
| -rw-r--r-- | src/main.zig | 2 | ||||
| -rw-r--r-- | src/target.zig | 4 |
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, } |
