1*f74ee329SQinxin Xia# SPDX-License-Identifier: GPL-2.0 2*f74ee329SQinxin Xiainclude ../scripts/Makefile.include 3*f74ee329SQinxin Xia 4*f74ee329SQinxin Xiabindir ?= /usr/bin 5*f74ee329SQinxin Xia 6*f74ee329SQinxin Xia# This will work when dma is built in tools env. where srctree 7*f74ee329SQinxin Xia# isn't set and when invoked from selftests build, where srctree 8*f74ee329SQinxin Xia# is set to ".". building_out_of_srctree is undefined for in srctree 9*f74ee329SQinxin Xia# builds 10*f74ee329SQinxin Xiaifndef building_out_of_srctree 11*f74ee329SQinxin Xiasrctree := $(patsubst %/,%,$(dir $(CURDIR))) 12*f74ee329SQinxin Xiasrctree := $(patsubst %/,%,$(dir $(srctree))) 13*f74ee329SQinxin Xiaendif 14*f74ee329SQinxin Xia 15*f74ee329SQinxin Xia# Do not use make's built-in rules 16*f74ee329SQinxin Xia# (this improves performance and avoids hard-to-debug behaviour); 17*f74ee329SQinxin XiaMAKEFLAGS += -r 18*f74ee329SQinxin Xia 19*f74ee329SQinxin Xiaoverride CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include 20*f74ee329SQinxin Xia 21*f74ee329SQinxin XiaALL_TARGETS := dma_map_benchmark 22*f74ee329SQinxin XiaALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS)) 23*f74ee329SQinxin Xia 24*f74ee329SQinxin Xiaall: $(ALL_PROGRAMS) 25*f74ee329SQinxin Xia 26*f74ee329SQinxin Xiaexport srctree OUTPUT CC LD CFLAGS 27*f74ee329SQinxin Xiainclude $(srctree)/tools/build/Makefile.include 28*f74ee329SQinxin Xia 29*f74ee329SQinxin Xia# 30*f74ee329SQinxin Xia# We need the following to be outside of kernel tree 31*f74ee329SQinxin Xia# 32*f74ee329SQinxin Xia$(OUTPUT)include/linux/map_benchmark.h: ../../include/uapi/linux/map_benchmark.h 33*f74ee329SQinxin Xia mkdir -p $(OUTPUT)include/linux 2>&1 || true 34*f74ee329SQinxin Xia ln -sf $(CURDIR)/../../include/uapi/linux/map_benchmark.h $@ 35*f74ee329SQinxin Xia 36*f74ee329SQinxin Xiaprepare: $(OUTPUT)include/linux/map_benchmark.h 37*f74ee329SQinxin Xia 38*f74ee329SQinxin XiaFORCE: 39*f74ee329SQinxin Xia 40*f74ee329SQinxin XiaDMA_MAP_BENCHMARK = dma_map_benchmark 41*f74ee329SQinxin Xia$(DMA_MAP_BENCHMARK): prepare FORCE 42*f74ee329SQinxin Xia $(CC) $(CFLAGS) $(DMA_MAP_BENCHMARK).c -o $(DMA_MAP_BENCHMARK) 43*f74ee329SQinxin Xia 44*f74ee329SQinxin Xiaclean: 45*f74ee329SQinxin Xia rm -f $(ALL_PROGRAMS) 46*f74ee329SQinxin Xia rm -rf $(OUTPUT)include 47*f74ee329SQinxin Xia find $(or $(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete -o -name '\.*.cmd' -delete 48*f74ee329SQinxin Xia 49*f74ee329SQinxin Xiainstall: $(ALL_PROGRAMS) 50*f74ee329SQinxin Xia install -d -m 755 $(DESTDIR)$(bindir); \ 51*f74ee329SQinxin Xia for program in $(ALL_PROGRAMS); do \ 52*f74ee329SQinxin Xia install $$program $(DESTDIR)$(bindir); \ 53*f74ee329SQinxin Xia done 54*f74ee329SQinxin Xia 55*f74ee329SQinxin Xia.PHONY: all install clean prepare FORCE 56