https://github.com/cilium/cilium
Raw File
Tip revision: 06915ce2fa25ae46d76f24c250cf2d622380a8e7 authored by Maxim Mikityanskiy on 26 July 2023, 13:32:44 UTC
Prepare for release v1.11.19
Tip revision: 06915ce
Makefile.bpf
# Copyright 2017-2020 Authors of Cilium
# SPDX-License-Identifier: Apache-2.0

FLAGS := -I$(ROOT_DIR)/bpf/include -I$(ROOT_DIR)/bpf -D__NR_CPUS__=$(shell nproc --all) -O2 -g

CLANG_FLAGS := ${FLAGS} -target bpf -std=gnu89 -nostdinc -emit-llvm
# eBPF verifier enforces unaligned access checks where necessary, so don't
# let clang complain too early.
CLANG_FLAGS += -Wall -Wextra -Werror -Wshadow
CLANG_FLAGS += -Wno-address-of-packed-member
CLANG_FLAGS += -Wno-unknown-warning-option
CLANG_FLAGS += -Wno-gnu-variable-sized-type-not-at-end
CLANG_FLAGS += -Wdeclaration-after-statement
LLC_FLAGS := -march=bpf -mattr=dwarfris
# Mimics the mcpu values set by cilium-agent. See GetBPFCPU().
ifeq ("$(KERNEL)","49")
LLC_FLAGS += -mcpu=v1
else ifeq ("$(KERNEL)","netnext")
LLC_FLAGS += -mcpu=v3
else
LLC_FLAGS += -mcpu=v2
endif

# BUILD_PERMUTATIONS_DEP is a dummy file dependency that ensures all targets
# are rebuilt when the 'build_all' target is run.
BUILD_PERMUTATIONS_DEP := .rebuild_all
LIB := $(shell find $(ROOT_DIR)/bpf -name '*.h') $(BUILD_PERMUTATIONS_DEP)
BPF_C := $(patsubst %.o,%.c,$(BPF))
BPF_ASM := $(patsubst %.o,%.s,$(BPF))

CLANG ?= clang
LLC   ?= llc

HOST_CC    ?= gcc
HOST_STRIP ?= strip

ifeq ($(IMAGE_CROSS_TARGET_PLATFORM),linux/arm64)
  HOST_CC = aarch64-linux-gnu-gcc
  HOST_STRIP = aarch64-linux-gnu-strip
endif

# Define all at the top here so that Makefiles which include this one will hit
# the 'all' target first (which we expect to be overridden by the includer).
all:

.PHONY: $(BUILD_PERMUTATIONS_DEP)
$(BUILD_PERMUTATIONS_DEP):
	@touch $(BUILD_PERMUTATIONS_DEP)

force:

%.ll: %.c $(LIB)
	@$(ECHO_CC)
	$(QUIET) ${CLANG} ${CLANG_FLAGS} -c $< -o $@

%.s: %.ll
	@$(ECHO_CC)
	$(QUIET) ${LLC} $(LLC_FLAGS) -filetype=asm -o $@ $(patsubst %.s,%.ll,$@)

checkpatch:
	@$(ECHO_CHECK) "(checkpatch)"
	$(QUIET) $(CONTAINER_ENGINE) container run --rm \
		--workdir /workspace \
		--volume $(CURDIR)/..:/workspace \
		--user "$(shell id -u):$(shell id -g)" \
		cilium/cilium-checkpatch:e6a6843cef50a43c38819badb55a21061967ce64

coccicheck:
	$(QUIET) $(foreach TARGET,$(shell find $(ROOT_DIR)/contrib/coccinelle/ -name '*.cocci'), \
		spatch --no-show-diff --sp-file ${TARGET} --include-headers --very-quiet --dir . ; )

check: coccicheck checkpatch
	@$(ECHO_CHECK)/*.c
	$(QUIET) sparse -Wsparse-all ${FLAGS} $(ROOT_DIR)/$(RELATIVE_DIR)/*.c
	$(QUIET) $(CLANG) ${CLANG_FLAGS} --analyze $(ROOT_DIR)/$(RELATIVE_DIR)/*.c
	$(QUIET) $(foreach SUBDIR,$(SUBDIRS), \
		$(MAKE) $(SUBMAKEOPTS) -C $(SUBDIR) $@ &&) true

preprocess: $(LIB)
	$(QUIET) $(foreach TARGET,$(shell find $(ROOT_DIR)/$(RELATIVE_DIR)/ -name 'bpf_*.c'), \
		echo "  GEN   $(patsubst %.c,%.i,${TARGET})"; \
		${CLANG} $(FLAGS) -E -target bpf -c ${TARGET} -o $(patsubst %.c,%.i,${TARGET}); )
	$(QUIET) $(foreach SUBDIR,$(SUBDIRS), \
		$(MAKE) $(SUBMAKEOPTS) -C $(SUBDIR) $@ &&) true

assembly: $(BPF_C) $(LIB) $(BPF_ASM)
	$(QUIET) $(foreach SUBDIR,$(SUBDIRS), \
		$(MAKE) $(SUBMAKEOPTS) -C $(SUBDIR) $@ &&) true

.PHONY: all force checkpatch coccicheck check preprocess assembly
back to top