1*f0fdfefbSAlexei Starovoitov# SPDX-License-Identifier: GPL-2.0 2*f0fdfefbSAlexei StarovoitovOUTPUT := .output 3*f0fdfefbSAlexei StarovoitovCLANG ?= clang 4*f0fdfefbSAlexei StarovoitovLLC ?= llc 5*f0fdfefbSAlexei StarovoitovLLVM_STRIP ?= llvm-strip 6*f0fdfefbSAlexei StarovoitovDEFAULT_BPFTOOL := $(OUTPUT)/sbin/bpftool 7*f0fdfefbSAlexei StarovoitovBPFTOOL ?= $(DEFAULT_BPFTOOL) 8*f0fdfefbSAlexei StarovoitovLIBBPF_SRC := $(abspath ../../../../tools/lib/bpf) 9*f0fdfefbSAlexei StarovoitovBPFOBJ := $(OUTPUT)/libbpf.a 10*f0fdfefbSAlexei StarovoitovBPF_INCLUDE := $(OUTPUT) 11*f0fdfefbSAlexei StarovoitovINCLUDES := -I$(OUTPUT) -I$(BPF_INCLUDE) -I$(abspath ../../../../tools/lib) \ 12*f0fdfefbSAlexei Starovoitov -I$(abspath ../../../../tools/include/uapi) 13*f0fdfefbSAlexei StarovoitovCFLAGS := -g -Wall 14*f0fdfefbSAlexei Starovoitov 15*f0fdfefbSAlexei Starovoitovabs_out := $(abspath $(OUTPUT)) 16*f0fdfefbSAlexei Starovoitovifeq ($(V),1) 17*f0fdfefbSAlexei StarovoitovQ = 18*f0fdfefbSAlexei Starovoitovmsg = 19*f0fdfefbSAlexei Starovoitovelse 20*f0fdfefbSAlexei StarovoitovQ = @ 21*f0fdfefbSAlexei Starovoitovmsg = @printf ' %-8s %s%s\n' "$(1)" "$(notdir $(2))" "$(if $(3), $(3))"; 22*f0fdfefbSAlexei StarovoitovMAKEFLAGS += --no-print-directory 23*f0fdfefbSAlexei Starovoitovsubmake_extras := feature_display=0 24*f0fdfefbSAlexei Starovoitovendif 25*f0fdfefbSAlexei Starovoitov 26*f0fdfefbSAlexei Starovoitov.DELETE_ON_ERROR: 27*f0fdfefbSAlexei Starovoitov 28*f0fdfefbSAlexei Starovoitov.PHONY: all clean 29*f0fdfefbSAlexei Starovoitov 30*f0fdfefbSAlexei Starovoitovall: iterators.skel.h 31*f0fdfefbSAlexei Starovoitov 32*f0fdfefbSAlexei Starovoitovclean: 33*f0fdfefbSAlexei Starovoitov $(call msg,CLEAN) 34*f0fdfefbSAlexei Starovoitov $(Q)rm -rf $(OUTPUT) iterators 35*f0fdfefbSAlexei Starovoitov 36*f0fdfefbSAlexei Starovoitoviterators.skel.h: $(OUTPUT)/iterators.bpf.o | $(BPFTOOL) 37*f0fdfefbSAlexei Starovoitov $(call msg,GEN-SKEL,$@) 38*f0fdfefbSAlexei Starovoitov $(Q)$(BPFTOOL) gen skeleton $< > $@ 39*f0fdfefbSAlexei Starovoitov 40*f0fdfefbSAlexei Starovoitov 41*f0fdfefbSAlexei Starovoitov$(OUTPUT)/iterators.bpf.o: iterators.bpf.c $(BPFOBJ) | $(OUTPUT) 42*f0fdfefbSAlexei Starovoitov $(call msg,BPF,$@) 43*f0fdfefbSAlexei Starovoitov $(Q)$(CLANG) -g -O2 -target bpf $(INCLUDES) \ 44*f0fdfefbSAlexei Starovoitov -c $(filter %.c,$^) -o $@ && \ 45*f0fdfefbSAlexei Starovoitov $(LLVM_STRIP) -g $@ 46*f0fdfefbSAlexei Starovoitov 47*f0fdfefbSAlexei Starovoitov$(OUTPUT): 48*f0fdfefbSAlexei Starovoitov $(call msg,MKDIR,$@) 49*f0fdfefbSAlexei Starovoitov $(Q)mkdir -p $(OUTPUT) 50*f0fdfefbSAlexei Starovoitov 51*f0fdfefbSAlexei Starovoitov$(BPFOBJ): $(wildcard $(LIBBPF_SRC)/*.[ch] $(LIBBPF_SRC)/Makefile) | $(OUTPUT) 52*f0fdfefbSAlexei Starovoitov $(Q)$(MAKE) $(submake_extras) -C $(LIBBPF_SRC) \ 53*f0fdfefbSAlexei Starovoitov OUTPUT=$(abspath $(dir $@))/ $(abspath $@) 54*f0fdfefbSAlexei Starovoitov 55*f0fdfefbSAlexei Starovoitov$(DEFAULT_BPFTOOL): 56*f0fdfefbSAlexei Starovoitov $(Q)$(MAKE) $(submake_extras) -C ../../../../tools/bpf/bpftool \ 57*f0fdfefbSAlexei Starovoitov prefix= OUTPUT=$(abs_out)/ DESTDIR=$(abs_out) install 58