From 535a21c9f282d753e518a4f60850a61737697dca Mon Sep 17 00:00:00 2001 From: Halil Durak Date: Sat, 18 Oct 2025 16:19:59 +0300 Subject: [PATCH] change the way ada is linked to the build system Link the ada library to ada module rather than building alongside main module. --- build.zig | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/build.zig b/build.zig index eaa4de7e..3bc87607 100644 --- a/build.zig +++ b/build.zig @@ -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); }