summaryrefslogtreecommitdiff
path: root/backend/api/build.zig
blob: 986c83f9b74ee3bfc4708d46e1581614fe2c243e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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 );
}