| ... | ... | @@ -326,7 +326,12 @@ pub fn build(b: *std.Build) !void { |
| 326 | 326 | try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx); |
| 327 | 327 | } else { |
| 328 | 328 | // Here we are -Denable-llvm but no cmake integration. |
| 329 | | 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 | }); |
| 330 | 335 | } |
| 331 | 336 | if (target.result.os.tag == .windows) { |
| 332 | 337 | // LLVM depends on networking as of version 18. |
| ... | ... | @@ -809,7 +814,12 @@ fn addCmakeCfgOptionsToExe( |
| 809 | 814 | } |
| 810 | 815 | } |
| 811 | 816 | |
| 812 | | 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 { |
| 813 | 823 | // Adds the Zig C++ sources which both stage1 and stage2 need. |
| 814 | 824 | // |
| 815 | 825 | // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling |
| ... | ... | @@ -833,6 +843,22 @@ fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { |
| 833 | 843 | mod.linkSystemLibrary(lib_name, .{}); |
| 834 | 844 | } |
| 835 | 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 | |
| 836 | 862 | mod.linkSystemLibrary("z", .{}); |
| 837 | 863 | mod.linkSystemLibrary("zstd", .{}); |
| 838 | 864 | |
| ... | ... | @@ -1321,6 +1347,33 @@ const llvm_libs = [_][]const u8{ |
| 1321 | 1347 | "LLVMSupport", |
| 1322 | 1348 | "LLVMDemangle", |
| 1323 | 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 | }; |
| 1324 | 1377 | |
| 1325 | 1378 | fn generateLangRef(b: *std.Build) std.Build.LazyPath { |
| 1326 | 1379 | const doctest_exe = b.addExecutable(.{ |