mirror of
https://codeberg.org/ziglang/zig.git
synced 2025-12-06 05:44:20 +00:00
build.zig: Statically link LLVM libraries for experimental targets if requested.
This commit is contained in:
parent
2489b5fd74
commit
f71590d4c4
1 changed files with 55 additions and 2 deletions
57
build.zig
57
build.zig
|
|
@ -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(.{
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue