@@ -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 (.{
0 commit comments