xref: /linux/tools/dma/Makefile (revision a7405aa92feec2598cedc1b6c651beb1848240fe)
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