APP := ebpf
BPF_SRC := ebpf.c
BPF_OBJ := $(APP).bpf.o
SKEL := $(APP).skel.h
VMLINUX := vmlinux.h

CLANG := clang
BPFOOL := bpftool

CFLAGS := -O2 -g -Wall
BPF_CFLAGS := -O2 -g -Wall -target bpf -D__TARGET_ARCH_x86 -I/usr/include

LIBS := -lbpf -lelf -lz

.PHONY: all run clean

all: $(APP)

$(VMLINUX):
	$(BPFOOL) btf dump file /sys/kernel/btf/vmlinux format c > $@

$(BPF_OBJ): $(BPF_SRC) $(VMLINUX)
	$(CLANG) $(BPF_CFLAGS) -c $(BPF_SRC) -o $@

$(SKEL): $(BPF_OBJ)
	$(BPFOOL) gen skeleton $< > $@

$(APP): main.c container_worker.c data_structure/list_entry.c thread_mon/thread_mon.c $(SKEL)
	$(CLANG) $(CFLAGS) main.c container_worker.c data_structure/list_entry.c thread_mon/thread_mon.c $(LIBS) -o $@

run: $(APP)
	sudo ./$(APP)

clean:
	rm -f $(APP) *.o *.skel.h vmlinux.h
