diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-03-26 23:19:35 +0100 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-03-27 00:31:11 +0100 |
| commit | f71590d4c49493b533da81a55962c7429f5b5151 (patch) | |
| tree | 9c236e05c1676ada1708eea0d408b434d8caf6e5 | |
| parent | 2489b5fd74a436ebe0bcdcc5dccf9e89bac08a1c (diff) | |
| download | zig-f71590d4c49493b533da81a55962c7429f5b5151.tar.gz zig-f71590d4c49493b533da81a55962c7429f5b5151.zip | |
build.zig: Statically link LLVM libraries for experimental targets if requested.
| -rw-r--r-- | build.zig | 57 |
1 files changed, 55 insertions, 2 deletions
@@ -326,7 +326,12 @@ pub fn build(b: *std.Build) !void { try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx); } else { // Here we are -Denable-llvm but no cmake integration. - try addStaticLlvmOptionsToModule(exe.root_module); + try addStaticLlvmOptionsToModule(exe.root_module, .{ + .llvm_has_m68k = llvm_has_m68k, + .llvm_has_csky = llvm_has_csky, + .llvm_has_arc = llvm_has_arc, + .llvm_has_xtensa = llvm_has_xtensa, + }); } if (target.result.os.tag == .windows) { // LLVM depends on networking as of version 18. @@ -809,7 +814,12 @@ fn addCmakeCfgOptionsToExe( } } -fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { +fn addStaticLlvmOptionsToModule(mod: *std.Build.Module, options: struct { + llvm_has_m68k: bool, + llvm_has_csky: bool, + llvm_has_arc: bool, + llvm_has_xtensa: bool, +}) !void { // Adds the Zig C++ sources which both stage1 and stage2 need. // // We need this because otherwise zig_clang_cc1_main.cpp ends up pulling @@ -833,6 +843,22 @@ fn addStaticLlvmOptionsToModule(mod: *std.Build.Module) !void { mod.linkSystemLibrary(lib_name, .{}); } + if (options.llvm_has_m68k) for (llvm_libs_m68k) |lib_name| { + mod.linkSystemLibrary(lib_name, .{}); + }; + + if (options.llvm_has_csky) for (llvm_libs_csky) |lib_name| { + mod.linkSystemLibrary(lib_name, .{}); + }; + + if (options.llvm_has_arc) for (llvm_libs_arc) |lib_name| { + mod.linkSystemLibrary(lib_name, .{}); + }; + + if (options.llvm_has_xtensa) for (llvm_libs_xtensa) |lib_name| { + mod.linkSystemLibrary(lib_name, .{}); + }; + mod.linkSystemLibrary("z", .{}); mod.linkSystemLibrary("zstd", .{}); @@ -1321,6 +1347,33 @@ const llvm_libs = [_][]const u8{ "LLVMSupport", "LLVMDemangle", }; +const llvm_libs_m68k = [_][]const u8{ + "LLVMM68kDisassembler", + "LLVMM68kAsmParser", + "LLVMM68kCodeGen", + "LLVMM68kDesc", + "LLVMM68kInfo", +}; +const llvm_libs_csky = [_][]const u8{ + "LLVMCSKYDisassembler", + "LLVMCSKYAsmParser", + "LLVMCSKYCodeGen", + "LLVMCSKYDesc", + "LLVMCSKYInfo", +}; +const llvm_libs_arc = [_][]const u8{ + "LLVMARCDisassembler", + "LLVMARCCodeGen", + "LLVMARCDesc", + "LLVMARCInfo", +}; +const llvm_libs_xtensa = [_][]const u8{ + "LLVMXtensaDisassembler", + "LLVMXtensaAsmParser", + "LLVMXtensaCodeGen", + "LLVMXtensaDesc", + "LLVMXtensaInfo", +}; fn generateLangRef(b: *std.Build) std.Build.LazyPath { const doctest_exe = b.addExecutable(.{ |
