CLANG ?= clang
LLVM_STRIP ?= llvm-strip
BPFTOOL ?= bpftool

INCLUDES := -I/usr/include -I/usr/include/bpf
CFLAGS := -g -O2 -Wall

all: simple_qdisc.bpf.o load_qdisc

# Generate vmlinux.h if not present
vmlinux.h:
	$(BPFTOOL) btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h

# Compile BPF program
simple_qdisc.bpf.o: simple_qdisc.bpf.c vmlinux.h
	$(CLANG) -g -O2 -target bpf -D__TARGET_ARCH_x86_64 \
		$(INCLUDES) -c simple_qdisc.bpf.c -o simple_qdisc.bpf.o
	$(LLVM_STRIP) -g simple_qdisc.bpf.o

# Compile loader
load_qdisc: load_qdisc.c
	$(CC) $(CFLAGS) $(INCLUDES) load_qdisc.c -o load_qdisc -lbpf

clean:
	rm -f simple_qdisc.bpf.o load_qdisc vmlinux.h

.PHONY: all clean
