|
1 | | -# SPDX-License-Identifier: GPL-2.0 |
2 | | -# Makefile for vm tools |
3 | | -# |
4 | | -VAR_CFLAGS := $(shell pkg-config --cflags libtracefs 2>/dev/null) |
5 | | -VAR_LDLIBS := $(shell pkg-config --libs libtracefs 2>/dev/null) |
| 1 | +# SPDX-License-Identifier: GPL-2.0-only |
6 | 2 |
|
7 | | -TARGETS = latency-collector |
8 | | -CFLAGS = -Wall -Wextra -g -O2 $(VAR_CFLAGS) |
9 | | -LDFLAGS = -lpthread $(VAR_LDLIBS) |
| 3 | +ifeq ($(srctree),) |
| 4 | + srctree := $(patsubst %/,%,$(dir $(CURDIR))) |
| 5 | + srctree := $(patsubst %/,%,$(dir $(srctree))) |
| 6 | + srctree := $(patsubst %/,%,$(dir $(srctree))) |
| 7 | +endif |
10 | 8 |
|
11 | | -all: $(TARGETS) |
| 9 | +include $(srctree)/tools/scripts/Makefile.include |
12 | 10 |
|
13 | | -%: %.c |
14 | | - $(CC) $(CFLAGS) -o $@ $< $(LDFLAGS) |
| 11 | +# O is an alias for OUTPUT |
| 12 | +OUTPUT := $(O) |
15 | 13 |
|
16 | | -clean: |
17 | | - $(RM) latency-collector |
| 14 | +ifeq ($(OUTPUT),) |
| 15 | + OUTPUT := $(CURDIR) |
| 16 | +else |
| 17 | + # subdir is used by the ../Makefile in $(call descend,) |
| 18 | + ifneq ($(subdir),) |
| 19 | + OUTPUT := $(OUTPUT)/$(subdir) |
| 20 | + endif |
| 21 | +endif |
| 22 | + |
| 23 | +ifneq ($(patsubst %/,,$(lastword $(OUTPUT))),) |
| 24 | + OUTPUT := $(OUTPUT)/ |
| 25 | +endif |
| 26 | + |
| 27 | +LATENCY-COLLECTOR := $(OUTPUT)latency-collector |
| 28 | +LATENCY-COLLECTOR_IN := $(LATENCY-COLLECTOR)-in.o |
| 29 | + |
| 30 | +export CC := gcc |
| 31 | +export LD := ld |
| 32 | +export AR := ar |
| 33 | +export PKG_CONFIG := pkg-config |
| 34 | + |
| 35 | +FEATURE_TESTS := libtraceevent |
| 36 | +FEATURE_TESTS += libtracefs |
| 37 | +FEATURE_DISPLAY := libtraceevent |
| 38 | +FEATURE_DISPLAY += libtracefs |
| 39 | + |
| 40 | +ifeq ($(V),1) |
| 41 | + Q = |
| 42 | +else |
| 43 | + Q = @ |
| 44 | +endif |
| 45 | + |
| 46 | +all: $(LATENCY-COLLECTOR) |
| 47 | + |
| 48 | +include $(srctree)/tools/build/Makefile.include |
| 49 | + |
| 50 | +# check for dependencies only on required targets |
| 51 | +NON_CONFIG_TARGETS := clean install |
18 | 52 |
|
19 | | -prefix ?= /usr/local |
20 | | -sbindir ?= ${prefix}/sbin |
| 53 | +config := 1 |
| 54 | +ifdef MAKECMDGOALS |
| 55 | +ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),) |
| 56 | + config := 0 |
| 57 | +endif |
| 58 | +endif |
21 | 59 |
|
22 | | -install: all |
23 | | - install -d $(DESTDIR)$(sbindir) |
24 | | - install -m 755 -p $(TARGETS) $(DESTDIR)$(sbindir) |
| 60 | +ifeq ($(config),1) |
| 61 | + include $(srctree)/tools/build/Makefile.feature |
| 62 | + include Makefile.config |
| 63 | +endif |
| 64 | + |
| 65 | +CFLAGS += $(INCLUDES) $(LIB_INCLUDES) |
| 66 | + |
| 67 | +export CFLAGS OUTPUT srctree |
| 68 | + |
| 69 | +$(LATENCY-COLLECTOR): $(LATENCY-COLLECTOR_IN) |
| 70 | + $(QUIET_LINK)$(CC) $(LDFLAGS) -o $(LATENCY-COLLECTOR) $(LATENCY-COLLECTOR_IN) $(EXTLIBS) |
| 71 | + |
| 72 | +latency-collector.%: fixdep FORCE |
| 73 | + make -f $(srctree)/tools/build/Makefile.build dir=. $@ |
| 74 | + |
| 75 | +$(LATENCY-COLLECTOR_IN): fixdep FORCE |
| 76 | + make $(build)=latency-collector |
| 77 | + |
| 78 | +INSTALL := install |
| 79 | +MKDIR := mkdir |
| 80 | +STRIP := strip |
| 81 | +BINDIR := /usr/bin |
| 82 | + |
| 83 | +install: |
| 84 | + @$(MKDIR) -p $(DESTDIR)$(BINDIR) |
| 85 | + $(call QUIET_INSTALL,latency-collector)$(INSTALL) $(LATENCY-COLLECTOR) -m 755 $(DESTDIR)$(BINDIR) |
| 86 | + @$(STRIP) $(DESTDIR)$(BINDIR)/latency-collector |
| 87 | + |
| 88 | +clean: |
| 89 | + $(call QUIET_CLEAN, latency-collector) |
| 90 | + $(Q)find . -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete |
| 91 | + $(Q)@rm -f latency-collector fixdep FEATURE-DUMP |
| 92 | + $(Q)rm -rf feature |
| 93 | +.PHONY: FORCE clean install |
0 commit comments