opensnitch/ebpf_prog/Makefile

60 lines
1.7 KiB
Makefile
Raw Normal View History

# OpenSnitch - 2023
#
# On Debian based distros we need the following 2 directories.
# Otherwise, just use the kernel headers from the kernel sources.
#
KERNEL_DIR ?= /lib/modules/$(shell uname -r)/source
KERNEL_HEADERS ?= /usr/src/linux-headers-$(shell uname -r)/
CLANG ?= clang
LLC ?= llc
LLVM_STRIP ?= llvm-strip -g
ARCH ?= $(shell uname -m)
# as in /usr/src/linux-headers-*/arch/
# TODO: extract correctly the archs, and add more if needed.
ifeq ($(ARCH),x86_64)
ARCH := x86
else ifeq ($(ARCH),i686)
ARCH := x86
else ifeq ($(ARCH),armv7l)
ARCH := arm
else ifeq ($(ARCH),aarch64)
ARCH := arm64
endif
ifeq ($(ARCH),arm)
# on previous archs, it fails with "SMP not supported on pre-ARMv6"
EXTRA_FLAGS = "-D__LINUX_ARM_ARCH__=7"
endif
BIN := opensnitch.o opensnitch-procs.o opensnitch-dns.o
CLANG_FLAGS = -I. \
-I$(KERNEL_HEADERS)/arch/$(ARCH)/include/generated/ \
-I$(KERNEL_HEADERS)/include \
-include $(KERNEL_DIR)/include/linux/kconfig.h \
-I$(KERNEL_DIR)/include \
-I$(KERNEL_DIR)/include/uapi \
-I$(KERNEL_DIR)/include/generated/uapi \
-I$(KERNEL_DIR)/arch/$(ARCH)/include \
-I$(KERNEL_DIR)/arch/$(ARCH)/include/generated \
-I$(KERNEL_DIR)/arch/$(ARCH)/include/uapi \
-I$(KERNEL_DIR)/arch/$(ARCH)/include/generated/uapi \
-I$(KERNEL_DIR)/tools/testing/selftests/bpf/ \
-D__KERNEL__ -D__BPF_TRACING__ -Wno-unused-value -Wno-pointer-sign \
-D__TARGET_ARCH_$(ARCH) -Wno-compare-distinct-pointer-types \
$(EXTRA_FLAGS) \
-Wno-gnu-variable-sized-type-not-at-end \
-Wno-address-of-packed-member -Wno-tautological-compare \
-Wno-unknown-warning-option \
-g -O2 -emit-llvm
all: $(BIN)
%.o: %.c
$(CLANG) $(CLANG_FLAGS) -c $< -o $@.partial
$(LLC) -march=bpf -mcpu=generic -filetype=obj -o $@ $@.partial
rm -f $@.partial
clean:
rm -f *.o *.partial