summaryrefslogtreecommitdiffstats
path: root/ebpf/Makefile.am
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--ebpf/Makefile.am31
1 files changed, 31 insertions, 0 deletions
diff --git a/ebpf/Makefile.am b/ebpf/Makefile.am
new file mode 100644
index 0000000..ad32efd
--- /dev/null
+++ b/ebpf/Makefile.am
@@ -0,0 +1,31 @@
+EXTRA_DIST= include bypass_filter.c filter.c lb.c vlan_filter.c xdp_filter.c \
+ xdp_lb.c bpf_helpers.h hash_func01.h
+
+if BUILD_EBPF
+
+# Maintaining a local copy of UAPI linux/bpf.h
+BPF_CFLAGS = -Iinclude
+
+BPF_TARGETS = lb.bpf
+BPF_TARGETS += filter.bpf
+BPF_TARGETS += bypass_filter.bpf
+BPF_TARGETS += xdp_filter.bpf
+BPF_TARGETS += xdp_lb.bpf
+BPF_TARGETS += vlan_filter.bpf
+
+all: $(BPF_TARGETS)
+
+
+$(BPF_TARGETS): %.bpf: %.c
+# From C-code to LLVM-IR format suffix .ll (clang -S -emit-llvm)
+ ${CLANG} -Wall $(BPF_CFLAGS) -O2 \
+ -I/usr/include/$(build_cpu)-$(build_os)/ \
+ -D__KERNEL__ -D__ASM_SYSREG_H \
+ -target bpf -S -emit-llvm $< -o ${@:.bpf=.ll}
+# From LLVM-IR to BPF-bytecode in ELF-obj file
+ ${LLC} -march=bpf -filetype=obj ${@:.bpf=.ll} -o $@
+ ${RM} ${@:.bpf=.ll}
+
+CLEANFILES = *.bpf *.ll
+
+endif