1 ifneq ($(CONFIG_BPF_TOOLCHAIN_HOST
),)
2 BPF_TOOLCHAIN_HOST_PATH
:=$(call qstrip
,$(CONFIG_BPF_TOOLCHAIN_HOST_PATH
))
3 ifneq ($(BPF_TOOLCHAIN_HOST_PATH
),)
4 BPF_PATH
:=$(BPF_TOOLCHAIN_HOST_PATH
)/bin
:$(PATH
)
8 CLANG
:=$(firstword $(shell PATH
='$(BPF_PATH)' which clang clang-13 clang-12 clang-11
))
9 LLVM_VER
:=$(subst clang
,,$(notdir $(CLANG
)))
11 CLANG
:=$(STAGING_DIR_HOST
)/bin
/clang
15 LLVM_PATH
:=$(dir $(CLANG
))
16 LLVM_LLC
:=$(LLVM_PATH
)/llc
$(LLVM_VER
)
17 LLVM_DIS
:=$(LLVM_PATH
)/llvm-dis
$(LLVM_VER
)
18 LLVM_OPT
:=$(LLVM_PATH
)/opt
$(LLVM_VER
)
19 LLVM_STRIP
:=$(LLVM_PATH
)/llvm-strip
$(LLVM_VER
)
22 BPF_ARCH
:=mips
$(if
$(CONFIG_BIG_ENDIAN
),,el
)
24 BPF_HEADERS_DIR
:=$(STAGING_DIR
)/bpf-headers
26 BPF_KERNEL_INCLUDE
:= \
27 -nostdinc
-isystem
$(TOOLCHAIN_DIR
)/include \
28 -I
$(BPF_HEADERS_DIR
)/arch
/$(BPF_KARCH
)/include \
29 -I
$(BPF_HEADERS_DIR
)/arch
/$(BPF_KARCH
)/include/asm
/mach-generic \
30 -I
$(BPF_HEADERS_DIR
)/arch
/$(BPF_KARCH
)/include/generated \
31 -I
$(BPF_HEADERS_DIR
)/include \
32 -I
$(BPF_HEADERS_DIR
)/arch
/$(BPF_KARCH
)/include/uapi \
33 -I
$(BPF_HEADERS_DIR
)/arch
/$(BPF_KARCH
)/include/generated
/uapi \
34 -I
$(BPF_HEADERS_DIR
)/include/uapi \
35 -I
$(BPF_HEADERS_DIR
)/include/generated
/uapi \
36 -I
$(BPF_HEADERS_DIR
)/tools
/lib \
37 -I
$(BPF_HEADERS_DIR
)/tools
/testing
/selftests \
38 -I
$(BPF_HEADERS_DIR
)/samples
/bpf \
39 -include linux
/kconfig.h
-include asm_goto_workaround.h
42 $(BPF_KERNEL_INCLUDE
) -I
$(PKG_BUILD_DIR
) \
43 -D__KERNEL__
-D__BPF_TRACING__ \
44 -D__TARGET_ARCH_
${BPF_KARCH} \
45 -m
$(if
$(CONFIG_BIG_ENDIAN
),big
,little
)-endian \
46 -fno-stack-protector
-Wall \
47 -Wno-unused-value
-Wno-pointer-sign \
48 -Wno-compare-distinct-pointer-types \
49 -Wno-gnu-variable-sized-type-not-at-end \
50 -Wno-address-of-packed-member
-Wno-tautological-compare \
51 -Wno-unknown-warning-option \
52 -fno-asynchronous-unwind-tables \
53 -Wno-uninitialized
-Wno-unused-variable \
55 -O2
-emit-llvm
-Xclang
-disable-llvm-passes
58 $(CLANG
) -g
-target
$(BPF_ARCH
)-linux-gnu
$(BPF_CFLAGS
) $(2) \
59 -c
$(1) -o
$(patsubst %.c
,%.bc
,$(1))
60 $(LLVM_OPT
) -O2
-mtriple
=bpf-pc-linux
< $(patsubst %.c
,%.bc
,$(1)) > $(patsubst %.c
,%.opt
,$(1))
61 $(LLVM_DIS
) < $(patsubst %.c
,%.opt
,$(1)) > $(patsubst %.c
,%.S
,$(1))
62 $(LLVM_LLC
) -march
=bpf
-filetype
=obj
-o
$(patsubst %.c
,%.o
,$(1)) < $(patsubst %.c
,%.S
,$(1))
63 $(LLVM_STRIP
) --strip-debug
$(patsubst %.c
,%.o
,$(1))