summaryrefslogtreecommitdiff
path: root/xtask/src/main.rs
blob: 1009eefacbbd566e022ded2f5a7a391d50077e8d (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
use anyhow::Result;
use std::process::Command;

fn main() -> Result<()> {
    let args: Vec<String> = std::env::args().collect();

    if args.len() < 2 {
        eprintln!("Usage: cargo xtask build-ebpf");
        std::process::exit(1);
    }

    match args[1].as_str() {
        "build-ebpf" => build_ebpf()?,
        _ => eprintln!("Unknown command: {}", args[1]),
    }

    Ok(())
}

fn build_ebpf() -> Result<()> {
    let status = Command::new("cargo")
        .args(&[
            "+nightly",
            "build",
            "--target=bpfel-unknown-none",
            "--release",
            "-Z",
            "build-std=core",
            "--manifest-path=packet-detector-ebpf/Cargo.toml",
        ])
        .status()?;

    if !status.success() {
        anyhow::bail!("Failed to build eBPF program");
    }

    Ok(())
}