const std = @import("std"); pub fn build( b: *std.Build ) void { const target = b.standardTargetOptions( .{} ); const optimize = b.standardOptimizeOption( .{} ); const opts = .{ .target = target, .optimize = optimize }; const exe = b.addExecutable(.{ .name = "axonbox-backend", .root_source_file = b.path( "src/main.zig" ), .target = target, .optimize = optimize, }); const zap = b.dependency("zap", .{ .target = target, .optimize = optimize, .openssl = true, // set to true to enable TLS support } ); const jwt = b.dependency( "jwt", opts ); const json = b.dependency( "json", opts ); const uuid = b.dependency( "uuid", opts ); const getty = b.dependency( "getty", opts ); const tls12 = b.dependency( "tls12", opts ); const sqlite = b.dependency( "sqlite", opts ); const smtp = b.dependency( "smtp_client", opts ); const websocket = b.dependency( "websocket", opts ); exe.root_module.addImport( "zap", zap.module( "zap" ) ); exe.root_module.addImport( "jwt", jwt.module( "jwt" ) ); exe.root_module.addImport( "json", json.module( "json" ) ); exe.root_module.addImport( "uuid", uuid.module( "uuid" ) ); exe.root_module.addImport( "getty", getty.module( "getty" ) ); exe.root_module.addImport( "tls12", tls12.module( "zig-tls12" ) ); exe.root_module.addImport( "sqlite", sqlite.module( "sqlite" ) ); exe.root_module.addImport( "smtp_client", smtp.module( "smtp_client" ) ); exe.root_module.addImport( "websocket", websocket.module( "websocket" ) ); //zls stuff const check_exe = b.addExecutable(.{ .name = "axonbox-backend", .root_source_file = b.path( "src/main.zig" ), .target = target, .optimize = optimize, }); for( exe.root_module.import_table.keys() ) |key| check_exe.root_module.addImport( key, exe.root_module.import_table.get( key ) orelse unreachable ); check_exe.linkLibrary( sqlite.artifact( "sqlite" ) ); const check = b.step( "check", "check compile result" ); check.dependOn( &check_exe.step ); exe.linkLibrary( sqlite.artifact( "sqlite" ) ); b.installArtifact( exe ); const run_cmd = b.addRunArtifact( exe ); run_cmd.step.dependOn( b.getInstallStep() ); if( b.args ) |args| { run_cmd.addArgs( args ); } const run_step = b.step( "run", "Run the app" ); run_step.dependOn( &run_cmd.step ); }