tetragon
1SHELL=/bin/bash # needed for the *.{o,ll,i,s} pattern in the clean target
2
3CLANG ?= clang
4LLC ?= llc
5
6# Build the BPF programs for the detected architecture, default to x86, and
7# allow easy overriding by using ?= for cross-compilation
8UNAME_M := $(shell uname -m)
9ifeq ($(UNAME_M),x86_64)
10BPF_TARGET_ARCH ?= x86
11endif
12ifeq ($(UNAME_M),aarch64)
13BPF_TARGET_ARCH ?= arm64
14endif
15BPF_TARGET_ARCH ?= x86
16
17ROOT_DIR := $(dir $(lastword $(MAKEFILE_LIST)))
18
19IDIR = $(ROOT_DIR)include/
20LIBBPF = $(ROOT_DIR)libbpf/
21LDIR = $(ROOT_DIR)lib
22DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS))
23
24FLAGS := -I$(ROOT_DIR) \
25-Wall -Werror \
26-Wno-address-of-packed-member -Wno-compare-distinct-pointer-types -Wno-unknown-warning-option \
27-O2
28
29DEBUG ?= 0
30ifeq ($(DEBUG),1)
31__DEBUG_FLAGS = -DTETRAGON_BPF_DEBUG
32endif
33
34CLANG_FLAGS += $(FLAGS) -I $(LIBBPF) -I $(IDIR) -I $(LDIR) -target bpf -emit-llvm -g -D__TARGET_ARCH_$(BPF_TARGET_ARCH) -fdebug-default-version=4 $(__DEBUG_FLAGS)
35LLC_FLAGS := -march=bpf -mcpu=v2 -mattr=dwarfris
36LLC_FLAGS_ALU32 := -march=bpf -mcpu=v3 -mattr=dwarfris
37