gpu: host1x: Use a signed return type for do_relocs()
[cascardo/linux.git] / tools / perf / tests / make
1 include ../scripts/Makefile.include
2
3 ifndef MK
4 ifeq ($(MAKECMDGOALS),)
5 # no target specified, trigger the whole suite
6 all:
7         @echo "Testing Makefile";      $(MAKE) -sf tests/make MK=Makefile
8         @echo "Testing Makefile.perf"; $(MAKE) -sf tests/make MK=Makefile.perf
9 else
10 # run only specific test over 'Makefile'
11 %:
12         @echo "Testing Makefile";      $(MAKE) -sf tests/make MK=Makefile $@
13 endif
14 else
15 PERF := .
16
17 # As per kernel Makefile, avoid funny character set dependencies
18 unexport LC_ALL
19 LC_COLLATE=C
20 LC_NUMERIC=C
21 export LC_COLLATE LC_NUMERIC
22
23 ifeq ($(srctree),)
24 srctree := $(patsubst %/,%,$(dir $(shell pwd)))
25 srctree := $(patsubst %/,%,$(dir $(srctree)))
26 #$(info Determined 'srctree' to be $(srctree))
27 endif
28
29 include $(srctree)/tools/scripts/Makefile.arch
30
31 # FIXME looks like x86 is the only arch running tests ;-)
32 # we need some IS_(32/64) flag to make this generic
33 ifeq ($(ARCH)$(IS_64_BIT), x861)
34 lib = lib64
35 else
36 lib = lib
37 endif
38
39 has = $(shell which $1 2>/dev/null)
40
41 # standard single make variable specified
42 make_clean_all      := clean all
43 make_python_perf_so := python/perf.so
44 make_debug          := DEBUG=1
45 make_no_libperl     := NO_LIBPERL=1
46 make_no_libpython   := NO_LIBPYTHON=1
47 make_no_scripts     := NO_LIBPYTHON=1 NO_LIBPERL=1
48 make_no_newt        := NO_NEWT=1
49 make_no_slang       := NO_SLANG=1
50 make_no_gtk2        := NO_GTK2=1
51 make_no_ui          := NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
52 make_no_demangle    := NO_DEMANGLE=1
53 make_no_libelf      := NO_LIBELF=1
54 make_no_libunwind   := NO_LIBUNWIND=1
55 make_no_libdw_dwarf_unwind := NO_LIBDW_DWARF_UNWIND=1
56 make_no_backtrace   := NO_BACKTRACE=1
57 make_no_libnuma     := NO_LIBNUMA=1
58 make_no_libaudit    := NO_LIBAUDIT=1
59 make_no_libbionic   := NO_LIBBIONIC=1
60 make_no_auxtrace    := NO_AUXTRACE=1
61 make_no_libbpf      := NO_LIBBPF=1
62 make_tags           := tags
63 make_cscope         := cscope
64 make_help           := help
65 make_doc            := doc
66 make_perf_o           := perf.o
67 make_util_map_o       := util/map.o
68 make_util_pmu_bison_o := util/pmu-bison.o
69 make_install        := install
70 make_install_bin    := install-bin
71 make_install_doc    := install-doc
72 make_install_man    := install-man
73 make_install_html   := install-html
74 make_install_info   := install-info
75 make_install_pdf    := install-pdf
76 make_install_prefix       := install prefix=/tmp/krava
77 make_install_prefix_slash := install prefix=/tmp/krava/
78 make_static         := LDFLAGS=-static
79
80 # all the NO_* variable combined
81 make_minimal        := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1
82 make_minimal        += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1
83 make_minimal        += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1
84 make_minimal        += NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1
85
86 # $(run) contains all available tests
87 run := make_pure
88 # Targets 'clean all' can be run together only through top level
89 # Makefile because we detect clean target in Makefile.perf and
90 # disable features detection
91 ifeq ($(MK),Makefile)
92 run += make_clean_all
93 endif
94 run += make_python_perf_so
95 run += make_debug
96 run += make_no_libperl
97 run += make_no_libpython
98 run += make_no_scripts
99 run += make_no_newt
100 run += make_no_slang
101 run += make_no_gtk2
102 run += make_no_ui
103 run += make_no_demangle
104 run += make_no_libelf
105 run += make_no_libunwind
106 run += make_no_libdw_dwarf_unwind
107 run += make_no_backtrace
108 run += make_no_libnuma
109 run += make_no_libaudit
110 run += make_no_libbionic
111 run += make_no_auxtrace
112 run += make_no_libbpf
113 run += make_help
114 run += make_doc
115 run += make_perf_o
116 run += make_util_map_o
117 run += make_util_pmu_bison_o
118 run += make_install
119 run += make_install_bin
120 run += make_install_prefix
121 run += make_install_prefix_slash
122 # FIXME 'install-*' commented out till they're fixed
123 # run += make_install_doc
124 # run += make_install_man
125 # run += make_install_html
126 # run += make_install_info
127 # run += make_install_pdf
128 run += make_minimal
129 run += make_static
130
131 ifneq ($(call has,ctags),)
132 run += make_tags
133 endif
134 ifneq ($(call has,cscope),)
135 run += make_cscope
136 endif
137
138 # $(run_O) contains same portion of $(run) tests with '_O' attached
139 # to distinguish O=... tests
140 run_O := $(addsuffix _O,$(run))
141
142 # disable some tests for O=...
143 run_O := $(filter-out make_python_perf_so_O,$(run_O))
144
145 # define test for each compile as 'test_NAME' variable
146 # with the test itself as a value
147 test_make_tags   = test -f tags
148 test_make_cscope = test -f cscope.out
149
150 test_make_tags_O   := $(test_make_tags)
151 test_make_cscope_O := $(test_make_cscope)
152
153 test_ok          := true
154 test_make_help   := $(test_ok)
155 test_make_doc    := $(test_ok)
156 test_make_help_O := $(test_ok)
157 test_make_doc_O  := $(test_ok)
158
159 test_make_python_perf_so := test -f $(PERF)/python/perf.so
160
161 test_make_perf_o           := test -f $(PERF)/perf.o
162 test_make_util_map_o       := test -f $(PERF)/util/map.o
163 test_make_util_pmu_bison_o := test -f $(PERF)/util/pmu-bison.o
164
165 define test_dest_files
166   for file in $(1); do                          \
167     if [ ! -x $$TMP_DEST/$$file ]; then         \
168       echo "  failed to find: $$file";          \
169     fi                                          \
170   done
171 endef
172
173 installed_files_bin := bin/perf
174 installed_files_bin += etc/bash_completion.d/perf
175 installed_files_bin += libexec/perf-core/perf-archive
176
177 installed_files_plugins := $(lib)/traceevent/plugins/plugin_cfg80211.so
178 installed_files_plugins += $(lib)/traceevent/plugins/plugin_scsi.so
179 installed_files_plugins += $(lib)/traceevent/plugins/plugin_xen.so
180 installed_files_plugins += $(lib)/traceevent/plugins/plugin_function.so
181 installed_files_plugins += $(lib)/traceevent/plugins/plugin_sched_switch.so
182 installed_files_plugins += $(lib)/traceevent/plugins/plugin_mac80211.so
183 installed_files_plugins += $(lib)/traceevent/plugins/plugin_kvm.so
184 installed_files_plugins += $(lib)/traceevent/plugins/plugin_kmem.so
185 installed_files_plugins += $(lib)/traceevent/plugins/plugin_hrtimer.so
186 installed_files_plugins += $(lib)/traceevent/plugins/plugin_jbd2.so
187
188 installed_files_all := $(installed_files_bin)
189 installed_files_all += $(installed_files_plugins)
190
191 test_make_install       := $(call test_dest_files,$(installed_files_all))
192 test_make_install_O     := $(call test_dest_files,$(installed_files_all))
193 test_make_install_bin   := $(call test_dest_files,$(installed_files_bin))
194 test_make_install_bin_O := $(call test_dest_files,$(installed_files_bin))
195
196 # We prefix all installed files for make_install_prefix(_slash)
197 # with '/tmp/krava' to match installed/prefix-ed files.
198 installed_files_all_prefix := $(addprefix /tmp/krava/,$(installed_files_all))
199 test_make_install_prefix   :=  $(call test_dest_files,$(installed_files_all_prefix))
200 test_make_install_prefix_O :=  $(call test_dest_files,$(installed_files_all_prefix))
201
202 test_make_install_prefix_slash   := $(test_make_install_prefix)
203 test_make_install_prefix_slash_O := $(test_make_install_prefix_O)
204
205 # FIXME nothing gets installed
206 test_make_install_man    := test -f $$TMP_DEST/share/man/man1/perf.1
207 test_make_install_man_O  := $(test_make_install_man)
208
209 # FIXME nothing gets installed
210 test_make_install_doc    := $(test_ok)
211 test_make_install_doc_O  := $(test_ok)
212
213 # FIXME nothing gets installed
214 test_make_install_html   := $(test_ok)
215 test_make_install_html_O := $(test_ok)
216
217 # FIXME nothing gets installed
218 test_make_install_info   := $(test_ok)
219 test_make_install_info_O := $(test_ok)
220
221 # FIXME nothing gets installed
222 test_make_install_pdf    := $(test_ok)
223 test_make_install_pdf_O  := $(test_ok)
224
225 test_make_python_perf_so_O    := test -f $$TMP_O/python/perf.so
226 test_make_perf_o_O            := test -f $$TMP_O/perf.o
227 test_make_util_map_o_O        := test -f $$TMP_O/util/map.o
228 test_make_util_pmu_bison_o_O := test -f $$TMP_O/util/pmu-bison.o
229
230 test_default = test -x $(PERF)/perf
231 test = $(if $(test_$1),$(test_$1),$(test_default))
232
233 test_default_O = test -x $$TMP_O/perf
234 test_O = $(if $(test_$1),$(test_$1),$(test_default_O))
235
236 all:
237
238 ifdef SHUF
239 run := $(shell shuf -e $(run))
240 run_O := $(shell shuf -e $(run_O))
241 endif
242
243 ifdef DEBUG
244 d := $(info run   $(run))
245 d := $(info run_O $(run_O))
246 endif
247
248 MAKEFLAGS := --no-print-directory
249
250 clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null)
251
252 $(run):
253         $(call clean)
254         @TMP_DEST=$$(mktemp -d); \
255         cmd="cd $(PERF) && make -f $(MK) DESTDIR=$$TMP_DEST $($@)"; \
256         echo "- $@: $$cmd" && echo $$cmd > $@ && \
257         ( eval $$cmd ) >> $@ 2>&1; \
258         echo "  test: $(call test,$@)" >> $@ 2>&1; \
259         $(call test,$@) && \
260         rm -rf $@ $$TMP_DEST || (cat $@ ; false)
261
262 $(run_O):
263         $(call clean)
264         @TMP_O=$$(mktemp -d); \
265         TMP_DEST=$$(mktemp -d); \
266         cmd="cd $(PERF) && make -f $(MK) O=$$TMP_O DESTDIR=$$TMP_DEST $($(patsubst %_O,%,$@))"; \
267         echo "- $@: $$cmd" && echo $$cmd > $@ && \
268         ( eval $$cmd ) >> $@ 2>&1 && \
269         echo "  test: $(call test_O,$@)" >> $@ 2>&1; \
270         $(call test_O,$@) && \
271         rm -rf $@ $$TMP_O $$TMP_DEST || (cat $@ ; false)
272
273 tarpkg:
274         @cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \
275         echo "- $@: $$cmd" && echo $$cmd > $@ && \
276         ( eval $$cmd ) >> $@ 2>&1 && \
277         rm -f $@
278
279 make_kernelsrc:
280         @echo "- make -C <kernelsrc> tools/perf"
281         $(call clean); \
282         (make -C ../.. tools/perf) > $@ 2>&1 && \
283         test -x perf && rm -f $@ || (cat $@ ; false)
284
285 make_kernelsrc_tools:
286         @echo "- make -C <kernelsrc>/tools perf"
287         $(call clean); \
288         (make -C ../../tools perf) > $@ 2>&1 && \
289         test -x perf && rm -f $@ || (cat $@ ; false)
290
291 all: $(run) $(run_O) tarpkg make_kernelsrc make_kernelsrc_tools
292         @echo OK
293
294 out: $(run_O)
295         @echo OK
296
297 .PHONY: all $(run) $(run_O) tarpkg clean make_kernelsrc make_kernelsrc_tools
298 endif # ifndef MK