1 include ../scripts/Makefile.include
4 ifeq ($(MAKECMDGOALS),)
5 # no target specified, trigger the whole suite
7 @echo "Testing Makefile"; $(MAKE) -sf tests/make MK=Makefile
8 @echo "Testing Makefile.perf"; $(MAKE) -sf tests/make MK=Makefile.perf
10 # run only specific test over 'Makefile'
12 @echo "Testing Makefile"; $(MAKE) -sf tests/make MK=Makefile $@
17 # As per kernel Makefile, avoid funny character set dependencies
21 export LC_COLLATE LC_NUMERIC
24 srctree := $(patsubst %/,%,$(dir $(shell pwd)))
25 srctree := $(patsubst %/,%,$(dir $(srctree)))
26 #$(info Determined 'srctree' to be $(srctree))
29 include $(srctree)/tools/scripts/Makefile.arch
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)
39 has = $(shell which $1 2>/dev/null)
41 # standard single make variable specified
42 make_clean_all := clean all
43 make_python_perf_so := python/perf.so
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
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
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
86 # $(run) contains all available tests
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
94 run += make_python_perf_so
96 run += make_no_libperl
97 run += make_no_libpython
98 run += make_no_scripts
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
116 run += make_util_map_o
117 run += make_util_pmu_bison_o
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
131 ifneq ($(call has,ctags),)
134 ifneq ($(call has,cscope),)
138 # $(run_O) contains same portion of $(run) tests with '_O' attached
139 # to distinguish O=... tests
140 run_O := $(addsuffix _O,$(run))
142 # disable some tests for O=...
143 run_O := $(filter-out make_python_perf_so_O,$(run_O))
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
150 test_make_tags_O := $(test_make_tags)
151 test_make_cscope_O := $(test_make_cscope)
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)
159 test_make_python_perf_so := test -f $(PERF)/python/perf.so
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
165 define test_dest_files
166 for file in $(1); do \
167 if [ ! -x $$TMP_DEST/$$file ]; then \
168 echo " failed to find: $$file"; \
173 installed_files_bin := bin/perf
174 installed_files_bin += etc/bash_completion.d/perf
175 installed_files_bin += libexec/perf-core/perf-archive
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
188 installed_files_all := $(installed_files_bin)
189 installed_files_all += $(installed_files_plugins)
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))
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))
202 test_make_install_prefix_slash := $(test_make_install_prefix)
203 test_make_install_prefix_slash_O := $(test_make_install_prefix_O)
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)
209 # FIXME nothing gets installed
210 test_make_install_doc := $(test_ok)
211 test_make_install_doc_O := $(test_ok)
213 # FIXME nothing gets installed
214 test_make_install_html := $(test_ok)
215 test_make_install_html_O := $(test_ok)
217 # FIXME nothing gets installed
218 test_make_install_info := $(test_ok)
219 test_make_install_info_O := $(test_ok)
221 # FIXME nothing gets installed
222 test_make_install_pdf := $(test_ok)
223 test_make_install_pdf_O := $(test_ok)
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
230 test_default = test -x $(PERF)/perf
231 test = $(if $(test_$1),$(test_$1),$(test_default))
233 test_default_O = test -x $$TMP_O/perf
234 test_O = $(if $(test_$1),$(test_$1),$(test_default_O))
239 run := $(shell shuf -e $(run))
240 run_O := $(shell shuf -e $(run_O))
244 d := $(info run $(run))
245 d := $(info run_O $(run_O))
248 MAKEFLAGS := --no-print-directory
250 clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null)
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; \
260 rm -rf $@ $$TMP_DEST || (cat $@ ; false)
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)
274 @cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \
275 echo "- $@: $$cmd" && echo $$cmd > $@ && \
276 ( eval $$cmd ) >> $@ 2>&1 && \
280 @echo "- make -C <kernelsrc> tools/perf"
282 (make -C ../.. tools/perf) > $@ 2>&1 && \
283 test -x perf && rm -f $@ || (cat $@ ; false)
285 make_kernelsrc_tools:
286 @echo "- make -C <kernelsrc>/tools perf"
288 (make -C ../../tools perf) > $@ 2>&1 && \
289 test -x perf && rm -f $@ || (cat $@ ; false)
291 all: $(run) $(run_O) tarpkg make_kernelsrc make_kernelsrc_tools
297 .PHONY: all $(run) $(run_O) tarpkg clean make_kernelsrc make_kernelsrc_tools