change the way ada is linked to the build system

Link the ada library to ada module rather than building alongside main module.
This commit is contained in:
Halil Durak
2025-10-18 16:19:59 +03:00
parent 51a328d357
commit 535a21c9f2

View File

@@ -853,23 +853,31 @@ fn buildCurl(b: *Build, m: *Build.Module) !void {
pub fn buildAda(b: *Build, m: *Build.Module) !void {
const ada_dep = b.dependency("ada-singleheader", .{});
const dep_root = ada_dep.path("");
// Private module that binds ada functions.
const ada_mod = b.createModule(.{
.root_source_file = b.path("vendor/ada/root.zig"),
.target = m.resolved_target,
.optimize = m.optimize,
});
// Expose headers; note that "ada.h" is a C++ header so no use here.
ada_mod.addIncludePath(dep_root);
ada_mod.addCSourceFiles(.{
.root = dep_root,
.files = &.{"ada.cpp"},
.flags = &.{"-std=c++20"},
const ada_lib = b.addLibrary(.{
.name = "ada",
.root_module = b.createModule(.{
.link_libcpp = true,
.target = m.resolved_target,
.optimize = m.optimize,
}),
.linkage = .static,
});
ada_lib.addCSourceFile(.{
.file = ada_dep.path("ada.cpp"),
.flags = &.{ "-std=c++20", "-O3" },
.language = .cpp,
});
ada_lib.installHeader(ada_dep.path("ada_c.h"), "ada_c.h");
// Link the library to ada module.
ada_mod.linkLibrary(ada_lib);
// Expose ada module to main module.
m.addImport("ada", ada_mod);
}