| 1 |
|
| 2 | OUTPUT := .output
|
| 3 | abs_out := $(abspath $(OUTPUT))
|
| 4 |
|
| 5 | CLANG ?= clang
|
| 6 | LLC ?= llc
|
| 7 | LLVM_STRIP ?= llvm-strip
|
| 8 |
|
| 9 | TOOLS_PATH := $(abspath ../../../../tools)
|
| 10 | BPFTOOL_SRC := $(TOOLS_PATH)/bpf/bpftool
|
| 11 | BPFTOOL_OUTPUT := $(abs_out)/bpftool
|
| 12 | DEFAULT_BPFTOOL := $(BPFTOOL_OUTPUT)/bootstrap/bpftool
|
| 13 | BPFTOOL ?= $(DEFAULT_BPFTOOL)
|
| 14 |
|
| 15 | LIBBPF_SRC := $(TOOLS_PATH)/lib/bpf
|
| 16 | LIBBPF_OUTPUT := $(abs_out)/libbpf
|
| 17 | LIBBPF_DESTDIR := $(LIBBPF_OUTPUT)
|
| 18 | LIBBPF_INCLUDE := $(LIBBPF_DESTDIR)/include
|
| 19 | BPFOBJ := $(LIBBPF_OUTPUT)/libbpf.a
|
| 20 |
|
| 21 | INCLUDES := -I$(OUTPUT) -I$(LIBBPF_INCLUDE) -I$(TOOLS_PATH)/include/uapi
|
| 22 | CFLAGS := -g -Wall
|
| 23 |
|
| 24 | ifeq ($(V),1)
|
| 25 | Q =
|
| 26 | msg =
|
| 27 | else
|
| 28 | Q = @
|
| 29 | msg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))";
|
| 30 | MAKEFLAGS += --no-print-directory
|
| 31 | submake_extras := feature_display=0
|
| 32 | endif
|
| 33 |
|
| 34 | .DELETE_ON_ERROR:
|
| 35 |
|
| 36 | .PHONY: all clean
|
| 37 |
|
| 38 | all: iterators.lskel-little-endian.h
|
| 39 |
|
| 40 | big: iterators.lskel-big-endian.h
|
| 41 |
|
| 42 | clean:
|
| 43 | $(call msg,CLEAN)
|
| 44 | $(Q)rm -rf $(OUTPUT) iterators
|
| 45 |
|
| 46 | iterators.lskel-%.h: $(OUTPUT)/%/iterators.bpf.o | $(BPFTOOL)
|
| 47 | $(call msg,GEN-SKEL,$@)
|
| 48 | $(Q)$(BPFTOOL) gen skeleton -L $< > $@
|
| 49 |
|
| 50 | $(OUTPUT)/%/iterators.bpf.o: iterators.bpf.c $(BPFOBJ) | $(OUTPUT)
|
| 51 | $(call msg,BPF,$@)
|
| 52 | $(Q)mkdir -p $(@D)
|
| 53 | $(Q)$(CLANG) -g -O2 --target=bpf -m$* $(INCLUDES) \
|
| 54 | -c $(filter %.c,$^) -o $@ && \
|
| 55 | $(LLVM_STRIP) -g $@
|
| 56 |
|
| 57 | $(OUTPUT) $(LIBBPF_OUTPUT) $(BPFTOOL_OUTPUT):
|
| 58 | $(call msg,MKDIR,$@)
|
| 59 | $(Q)mkdir -p $@
|
| 60 |
|
| 61 | $(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(LIBBPF_OUTPUT)
|
| 62 | $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) \
|
| 63 | OUTPUT=$(abspath $(dir $@))/ prefix= \
|
| 64 | DESTDIR=$(LIBBPF_DESTDIR) $(abspath $@) install_headers
|
| 65 |
|
| 66 | $(DEFAULT_BPFTOOL): | $(BPFTOOL_OUTPUT)
|
| 67 | $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOL_SRC) OUTPUT=$(BPFTOOL_OUTPUT)/ bootstrap
|