Jakub Kicinski | 71bb428 | 2017-10-04 20:10:04 -0700 | [diff] [blame^] | 1 | include ../../scripts/Makefile.include |
| 2 | |
| 3 | include ../../scripts/utilities.mak |
| 4 | |
| 5 | ifeq ($(srctree),) |
| 6 | srctree := $(patsubst %/,%,$(dir $(CURDIR))) |
| 7 | srctree := $(patsubst %/,%,$(dir $(srctree))) |
| 8 | srctree := $(patsubst %/,%,$(dir $(srctree))) |
| 9 | #$(info Determined 'srctree' to be $(srctree)) |
| 10 | endif |
| 11 | |
| 12 | ifneq ($(objtree),) |
| 13 | #$(info Determined 'objtree' to be $(objtree)) |
| 14 | endif |
| 15 | |
| 16 | ifneq ($(OUTPUT),) |
| 17 | #$(info Determined 'OUTPUT' to be $(OUTPUT)) |
| 18 | # Adding $(OUTPUT) as a directory to look for source files, |
| 19 | # because use generated output files as sources dependency |
| 20 | # for flex/bison parsers. |
| 21 | VPATH += $(OUTPUT) |
| 22 | export VPATH |
| 23 | endif |
| 24 | |
| 25 | ifeq ($(V),1) |
| 26 | Q = |
| 27 | else |
| 28 | Q = @ |
| 29 | endif |
| 30 | |
| 31 | BPF_DIR = $(srctree)/tools/lib/bpf/ |
| 32 | |
| 33 | ifneq ($(OUTPUT),) |
| 34 | BPF_PATH=$(OUTPUT) |
| 35 | else |
| 36 | BPF_PATH=$(BPF_DIR) |
| 37 | endif |
| 38 | |
| 39 | LIBBPF = $(BPF_PATH)libbpf.a |
| 40 | |
| 41 | $(LIBBPF): FORCE |
| 42 | $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) $(OUTPUT)libbpf.a FEATURES_DUMP=$(FEATURE_DUMP_EXPORT) |
| 43 | |
| 44 | $(LIBBPF)-clean: |
| 45 | $(call QUIET_CLEAN, libbpf) |
| 46 | $(Q)$(MAKE) -C $(BPF_DIR) OUTPUT=$(OUTPUT) clean >/dev/null |
| 47 | |
| 48 | prefix = /usr |
| 49 | |
| 50 | CC = gcc |
| 51 | |
| 52 | CFLAGS += -O2 |
| 53 | CFLAGS += -W -Wall -Wextra -Wno-unused-parameter -Wshadow |
| 54 | CFLAGS += -D__EXPORTED_HEADERS__ -I$(srctree)/tools/include/uapi -I$(srctree)/tools/include -I$(srctree)/tools/lib/bpf |
| 55 | LIBS = -lelf -lbfd -lopcodes $(LIBBPF) |
| 56 | |
| 57 | include $(wildcard *.d) |
| 58 | |
| 59 | all: $(OUTPUT)bpftool |
| 60 | |
| 61 | SRCS=$(wildcard *.c) |
| 62 | OBJS=$(patsubst %.c,$(OUTPUT)%.o,$(SRCS)) |
| 63 | |
| 64 | $(OUTPUT)bpftool: $(OBJS) $(LIBBPF) |
| 65 | $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $^ $(LIBS) |
| 66 | |
| 67 | $(OUTPUT)%.o: %.c |
| 68 | $(QUIET_CC)$(COMPILE.c) -MMD -o $@ $< |
| 69 | |
| 70 | clean: $(LIBBPF)-clean |
| 71 | $(call QUIET_CLEAN, bpftool) |
| 72 | $(Q)rm -rf $(OUTPUT)bpftool $(OUTPUT)*.o $(OUTPUT)*.d |
| 73 | |
| 74 | install: |
| 75 | install $(OUTPUT)bpftool $(prefix)/sbin/bpftool |
| 76 | |
| 77 | FORCE: |
| 78 | |
| 79 | .PHONY: all clean FORCE |
| 80 | .DEFAULT_GOAL := all |