| ... | @@ -214,11 +214,6 @@ pub fn build(b: *std.Build) !void { | ... | @@ -214,11 +214,6 @@ pub fn build(b: *std.Build) !void { |
| 214 | | 214 | |
| 215 | test_step.dependOn(&exe.step); | 215 | test_step.dependOn(&exe.step); |
| 216 | | 216 | |
| 217 | if (target.result.os.tag == .windows and target.result.abi == .gnu) { | | |
| 218 | // LTO is currently broken on mingw, this can be removed when it's fixed. | | |
| 219 | exe.want_lto = false; | | |
| 220 | } | | |
| 221 | | | |
| 222 | const use_llvm = b.option(bool, "use-llvm", "Use the llvm backend"); | 217 | const use_llvm = b.option(bool, "use-llvm", "Use the llvm backend"); |
| 223 | exe.use_llvm = use_llvm; | 218 | exe.use_llvm = use_llvm; |
| 224 | exe.use_lld = use_llvm; | 219 | exe.use_lld = use_llvm; |
| ... | @@ -331,7 +326,12 @@ pub fn build(b: *std.Build) !void { | ... | @@ -331,7 +326,12 @@ pub fn build(b: *std.Build) !void { |
| 331 | try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx); | 326 | try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx); |
| 332 | } else { | 327 | } else { |
| 333 | // Here we are -Denable-llvm but no cmake integration. | 328 | // Here we are -Denable-llvm but no cmake integration. |
| 334 | try addStaticLlvmOptionsToModule(exe.root_module); | 329 | try addStaticLlvmOptionsToModule(exe.root_module, .{ |
| | 330 | .llvm_has_m68k = llvm_has_m68k, |
| | 331 | .llvm_has_csky = llvm_has_csky, |
| | 332 | .llvm_has_arc = llvm_has_arc, |
| | 333 | .llvm_has_xtensa = llvm_has_xtensa, |
| | 334 | }); |
| 335 | } | 335 | } |
| 336 | if (target.result.os.tag == .windows) { | 336 | if (target.result.os.tag == .windows) { |
| 337 | // LLVM depends on networking as of version 18. | 337 | // LLVM depends on networking as of version 18. |
| ... | @@ -359,11 +359,7 @@ pub fn build(b: *std.Build) !void { | ... | @@ -359,11 +359,7 @@ pub fn build(b: *std.Build) !void { |
| 359 | &[_][]const u8{ tracy_path, "public", "TracyClient.cpp" }, | 359 | &[_][]const u8{ tracy_path, "public", "TracyClient.cpp" }, |
| 360 | ); | 360 | ); |
| 361 | | 361 | |
| 362 | // On mingw, we need to opt into windows 7+ to get some features required by tracy. | 362 | const tracy_c_flags: []const []const u8 = &.{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined" }; |
| 363 | const tracy_c_flags: []const []const u8 = if (target.result.os.tag == .windows and target.result.abi == .gnu) | | |
| 364 | &[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined", "-D_WIN32_WINNT=0x601" } | | |
| 365 | else | | |
| 366 | &[_][]const u8{ "-DTRACY_ENABLE=1", "-fno-sanitize=undefined" }; | | |
| 367 | | 363 | |
| 368 | exe.root_module.addIncludePath(.{ .cwd_relative = tracy_path }); | 364 | exe.root_module.addIncludePath(.{ .cwd_relative = tracy_path }); |
| 369 | exe.root_module.addCSourceFile(.{ .file = .{ .cwd_relative = client_cpp }, .flags = tracy_c_flags }); | 365 | exe.root_module.addCSourceFile(.{ .file = .{ .cwd_relative = client_cpp }, .flags = tracy_c_flags }); |
| ... | @@ -818,7 +814,12 @@ fn addCmakeCfgOptionsToExe( | ... | @@ -818,7 +814,12 @@ fn addCmakeCfgOptionsToExe( |
| 818 | } | 814 | } |
| 819 | } | 815 | } |
| 820 | | 816 | |
| 821 | fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { | 817 | fn addStaticLlvmOptionsToModule(mod: *std.Build.Module, options: struct { |
| | 818 | llvm_has_m68k: bool, |
| | 819 | llvm_has_csky: bool, |
| | 820 | llvm_has_arc: bool, |
| | 821 | llvm_has_xtensa: bool, |
| | 822 | }) !void { |
| 822 | // Adds the Zig C++ sources which both stage1 and stage2 need. | 823 | // Adds the Zig C++ sources which both stage1 and stage2 need. |
| 823 | // | 824 | // |
| 824 | // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling | 825 | // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling |
| ... | @@ -842,6 +843,22 @@ fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { | ... | @@ -842,6 +843,22 @@ fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { |
| 842 | mod.linkSystemLibrary(lib_name, .{}); | 843 | mod.linkSystemLibrary(lib_name, .{}); |
| 843 | } | 844 | } |
| 844 | | 845 | |
| | 846 | if (options.llvm_has_m68k) for (llvm_libs_m68k) |lib_name| { |
| | 847 | mod.linkSystemLibrary(lib_name, .{}); |
| | 848 | }; |
| | 849 | |
| | 850 | if (options.llvm_has_csky) for (llvm_libs_csky) |lib_name| { |
| | 851 | mod.linkSystemLibrary(lib_name, .{}); |
| | 852 | }; |
| | 853 | |
| | 854 | if (options.llvm_has_arc) for (llvm_libs_arc) |lib_name| { |
| | 855 | mod.linkSystemLibrary(lib_name, .{}); |
| | 856 | }; |
| | 857 | |
| | 858 | if (options.llvm_has_xtensa) for (llvm_libs_xtensa) |lib_name| { |
| | 859 | mod.linkSystemLibrary(lib_name, .{}); |
| | 860 | }; |
| | 861 | |
| 845 | mod.linkSystemLibrary("z", .{}); | 862 | mod.linkSystemLibrary("z", .{}); |
| 846 | mod.linkSystemLibrary("zstd", .{}); | 863 | mod.linkSystemLibrary("zstd", .{}); |
| 847 | | 864 | |
| ... | @@ -1330,6 +1347,33 @@ const llvm_libs = [_][]const u8{ | ... | @@ -1330,6 +1347,33 @@ const llvm_libs = [_][]const u8{ |
| 1330 | "LLVMSupport", | 1347 | "LLVMSupport", |
| 1331 | "LLVMDemangle", | 1348 | "LLVMDemangle", |
| 1332 | }; | 1349 | }; |
| | 1350 | const llvm_libs_m68k = [_][]const u8{ |
| | 1351 | "LLVMM68kDisassembler", |
| | 1352 | "LLVMM68kAsmParser", |
| | 1353 | "LLVMM68kCodeGen", |
| | 1354 | "LLVMM68kDesc", |
| | 1355 | "LLVMM68kInfo", |
| | 1356 | }; |
| | 1357 | const llvm_libs_csky = [_][]const u8{ |
| | 1358 | "LLVMCSKYDisassembler", |
| | 1359 | "LLVMCSKYAsmParser", |
| | 1360 | "LLVMCSKYCodeGen", |
| | 1361 | "LLVMCSKYDesc", |
| | 1362 | "LLVMCSKYInfo", |
| | 1363 | }; |
| | 1364 | const llvm_libs_arc = [_][]const u8{ |
| | 1365 | "LLVMARCDisassembler", |
| | 1366 | "LLVMARCCodeGen", |
| | 1367 | "LLVMARCDesc", |
| | 1368 | "LLVMARCInfo", |
| | 1369 | }; |
| | 1370 | const llvm_libs_xtensa = [_][]const u8{ |
| | 1371 | "LLVMXtensaDisassembler", |
| | 1372 | "LLVMXtensaAsmParser", |
| | 1373 | "LLVMXtensaCodeGen", |
| | 1374 | "LLVMXtensaDesc", |
| | 1375 | "LLVMXtensaInfo", |
| | 1376 | }; |
| 1333 | | 1377 | |
| 1334 | fn generateLangRef(b: *std.Build) std.Build.LazyPath { | 1378 | fn generateLangRef(b: *std.Build) std.Build.LazyPath { |
| 1335 | const doctest_exe = b.addExecutable(.{ | 1379 | const doctest_exe = b.addExecutable(.{ |