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