Commit | Line | Data |
---|---|---|
095ae69b JO |
1 | PERF := . |
2 | MK := Makefile | |
3 | ||
f7c64474 JO |
4 | include config/Makefile.arch |
5 | ||
6 | # FIXME looks like x86 is the only arch running tests ;-) | |
7 | # we need some IS_(32/64) flag to make this generic | |
8 | ifeq ($(IS_X86_64),1) | |
9 | lib = lib64 | |
10 | else | |
11 | lib = lib | |
12 | endif | |
13 | ||
0659e669 JO |
14 | has = $(shell which $1 2>/dev/null) |
15 | ||
095ae69b JO |
16 | # standard single make variable specified |
17 | make_clean_all := clean all | |
18 | make_python_perf_so := python/perf.so | |
19 | make_debug := DEBUG=1 | |
20 | make_no_libperl := NO_LIBPERL=1 | |
21 | make_no_libpython := NO_LIBPYTHON=1 | |
22 | make_no_scripts := NO_LIBPYTHON=1 NO_LIBPERL=1 | |
23 | make_no_newt := NO_NEWT=1 | |
24 | make_no_slang := NO_SLANG=1 | |
25 | make_no_gtk2 := NO_GTK2=1 | |
26 | make_no_ui := NO_NEWT=1 NO_SLANG=1 NO_GTK2=1 | |
27 | make_no_demangle := NO_DEMANGLE=1 | |
28 | make_no_libelf := NO_LIBELF=1 | |
29 | make_no_libunwind := NO_LIBUNWIND=1 | |
9e8c06ea | 30 | make_no_libdw_dwarf_unwind := NO_LIBDW_DWARF_UNWIND=1 |
095ae69b JO |
31 | make_no_backtrace := NO_BACKTRACE=1 |
32 | make_no_libnuma := NO_LIBNUMA=1 | |
33 | make_no_libaudit := NO_LIBAUDIT=1 | |
34 | make_no_libbionic := NO_LIBBIONIC=1 | |
35 | make_tags := tags | |
36 | make_cscope := cscope | |
37 | make_help := help | |
38 | make_doc := doc | |
2a94f6c4 JO |
39 | make_perf_o := perf.o |
40 | make_util_map_o := util/map.o | |
41 | make_util_pmu_bison_o := util/pmu-bison.o | |
c0ec1108 JO |
42 | make_install := install |
43 | make_install_bin := install-bin | |
dbad4189 JO |
44 | make_install_doc := install-doc |
45 | make_install_man := install-man | |
46 | make_install_html := install-html | |
47 | make_install_info := install-info | |
48 | make_install_pdf := install-pdf | |
095ae69b JO |
49 | |
50 | # all the NO_* variable combined | |
51 | make_minimal := NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 | |
52 | make_minimal += NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 | |
53 | make_minimal += NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 | |
9e8c06ea | 54 | make_minimal += NO_LIBDW_DWARF_UNWIND=1 |
095ae69b JO |
55 | |
56 | # $(run) contains all available tests | |
57 | run := make_pure | |
58 | run += make_clean_all | |
59 | run += make_python_perf_so | |
60 | run += make_debug | |
61 | run += make_no_libperl | |
62 | run += make_no_libpython | |
63 | run += make_no_scripts | |
64 | run += make_no_newt | |
65 | run += make_no_slang | |
66 | run += make_no_gtk2 | |
67 | run += make_no_ui | |
68 | run += make_no_demangle | |
69 | run += make_no_libelf | |
70 | run += make_no_libunwind | |
9e8c06ea | 71 | run += make_no_libdw_dwarf_unwind |
095ae69b JO |
72 | run += make_no_backtrace |
73 | run += make_no_libnuma | |
74 | run += make_no_libaudit | |
75 | run += make_no_libbionic | |
095ae69b JO |
76 | run += make_help |
77 | run += make_doc | |
78 | run += make_perf_o | |
79 | run += make_util_map_o | |
2a94f6c4 | 80 | run += make_util_pmu_bison_o |
c0ec1108 JO |
81 | run += make_install |
82 | run += make_install_bin | |
dbad4189 JO |
83 | # FIXME 'install-*' commented out till they're fixed |
84 | # run += make_install_doc | |
85 | # run += make_install_man | |
86 | # run += make_install_html | |
87 | # run += make_install_info | |
88 | # run += make_install_pdf | |
095ae69b JO |
89 | run += make_minimal |
90 | ||
0659e669 JO |
91 | ifneq ($(call has,ctags),) |
92 | run += make_tags | |
93 | endif | |
94 | ifneq ($(call has,cscope),) | |
95 | run += make_cscope | |
96 | endif | |
97 | ||
095ae69b JO |
98 | # $(run_O) contains same portion of $(run) tests with '_O' attached |
99 | # to distinguish O=... tests | |
100 | run_O := $(addsuffix _O,$(run)) | |
101 | ||
102 | # disable some tests for O=... | |
103 | run_O := $(filter-out make_python_perf_so_O,$(run_O)) | |
104 | ||
105 | # define test for each compile as 'test_NAME' variable | |
106 | # with the test itself as a value | |
107 | test_make_tags = test -f tags | |
108 | test_make_cscope = test -f cscope.out | |
109 | ||
110 | test_make_tags_O := $(test_make_tags) | |
111 | test_make_cscope_O := $(test_make_cscope) | |
112 | ||
113 | test_ok := true | |
114 | test_make_help := $(test_ok) | |
115 | test_make_doc := $(test_ok) | |
116 | test_make_help_O := $(test_ok) | |
117 | test_make_doc_O := $(test_ok) | |
118 | ||
119 | test_make_python_perf_so := test -f $(PERF)/python/perf.so | |
120 | ||
2a94f6c4 JO |
121 | test_make_perf_o := test -f $(PERF)/perf.o |
122 | test_make_util_map_o := test -f $(PERF)/util/map.o | |
123 | test_make_util_pmu_bison_o := test -f $(PERF)/util/pmu-bison.o | |
095ae69b | 124 | |
ee4ad93e JO |
125 | define test_dest_files |
126 | for file in $(1); do \ | |
127 | if [ ! -x $$TMP_DEST/$$file ]; then \ | |
128 | echo " failed to find: $$file"; \ | |
129 | fi \ | |
130 | done | |
131 | endef | |
132 | ||
133 | installed_files_bin := bin/perf | |
134 | installed_files_bin += etc/bash_completion.d/perf | |
135 | installed_files_bin += libexec/perf-core/perf-archive | |
136 | ||
f7c64474 JO |
137 | installed_files_plugins := $(lib)/traceevent/plugins/plugin_cfg80211.so |
138 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_scsi.so | |
139 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_xen.so | |
140 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_function.so | |
141 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_sched_switch.so | |
142 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_mac80211.so | |
143 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_kvm.so | |
144 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_kmem.so | |
145 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_hrtimer.so | |
146 | installed_files_plugins += $(lib)/traceevent/plugins/plugin_jbd2.so | |
ee4ad93e JO |
147 | |
148 | installed_files_all := $(installed_files_bin) | |
149 | installed_files_all += $(installed_files_plugins) | |
150 | ||
151 | test_make_install := $(call test_dest_files,$(installed_files_all)) | |
152 | test_make_install_O := $(call test_dest_files,$(installed_files_all)) | |
153 | test_make_install_bin := $(call test_dest_files,$(installed_files_bin)) | |
154 | test_make_install_bin_O := $(call test_dest_files,$(installed_files_bin)) | |
c0ec1108 | 155 | |
dbad4189 JO |
156 | # FIXME nothing gets installed |
157 | test_make_install_man := test -f $$TMP_DEST/share/man/man1/perf.1 | |
158 | test_make_install_man_O := $(test_make_install_man) | |
159 | ||
160 | # FIXME nothing gets installed | |
161 | test_make_install_doc := $(test_ok) | |
162 | test_make_install_doc_O := $(test_ok) | |
163 | ||
164 | # FIXME nothing gets installed | |
165 | test_make_install_html := $(test_ok) | |
166 | test_make_install_html_O := $(test_ok) | |
167 | ||
168 | # FIXME nothing gets installed | |
169 | test_make_install_info := $(test_ok) | |
170 | test_make_install_info_O := $(test_ok) | |
171 | ||
172 | # FIXME nothing gets installed | |
173 | test_make_install_pdf := $(test_ok) | |
174 | test_make_install_pdf_O := $(test_ok) | |
175 | ||
04b01a1d JO |
176 | test_make_python_perf_so_O := test -f $$TMP_O/python/perf.so |
177 | test_make_perf_o_O := test -f $$TMP_O/perf.o | |
178 | test_make_util_map_o_O := test -f $$TMP_O/util/map.o | |
2a94f6c4 | 179 | test_make_util_pmu_bison_o_O := test -f $$TMP_O/util/pmu-bison.o |
095ae69b JO |
180 | |
181 | test_default = test -x $(PERF)/perf | |
182 | test = $(if $(test_$1),$(test_$1),$(test_default)) | |
183 | ||
8ba7cdea | 184 | test_default_O = test -x $$TMP_O/perf |
095ae69b JO |
185 | test_O = $(if $(test_$1),$(test_$1),$(test_default_O)) |
186 | ||
187 | all: | |
188 | ||
189 | ifdef DEBUG | |
190 | d := $(info run $(run)) | |
191 | d := $(info run_O $(run_O)) | |
192 | endif | |
193 | ||
194 | MAKEFLAGS := --no-print-directory | |
195 | ||
196 | clean := @(cd $(PERF); make -s -f $(MK) clean >/dev/null) | |
197 | ||
198 | $(run): | |
199 | $(call clean) | |
c9311674 JO |
200 | @TMP_DEST=$$(mktemp -d); \ |
201 | cmd="cd $(PERF) && make -f $(MK) DESTDIR=$$TMP_DEST $($@)"; \ | |
095ae69b JO |
202 | echo "- $@: $$cmd" && echo $$cmd > $@ && \ |
203 | ( eval $$cmd ) >> $@ 2>&1; \ | |
ee4ad93e | 204 | echo " test: $(call test,$@)" >> $@ 2>&1; \ |
095ae69b | 205 | $(call test,$@) && \ |
c9311674 JO |
206 | rm -f $@ \ |
207 | rm -rf $$TMP_DEST | |
095ae69b JO |
208 | |
209 | $(run_O): | |
210 | $(call clean) | |
8ba7cdea | 211 | @TMP_O=$$(mktemp -d); \ |
c9311674 JO |
212 | TMP_DEST=$$(mktemp -d); \ |
213 | cmd="cd $(PERF) && make -f $(MK) O=$$TMP_O DESTDIR=$$TMP_DEST $($(patsubst %_O,%,$@))"; \ | |
095ae69b JO |
214 | echo "- $@: $$cmd" && echo $$cmd > $@ && \ |
215 | ( eval $$cmd ) >> $@ 2>&1 && \ | |
ee4ad93e | 216 | echo " test: $(call test_O,$@)" >> $@ 2>&1; \ |
095ae69b JO |
217 | $(call test_O,$@) && \ |
218 | rm -f $@ && \ | |
c9311674 JO |
219 | rm -rf $$TMP_O \ |
220 | rm -rf $$TMP_DEST | |
095ae69b | 221 | |
48878053 ACM |
222 | tarpkg: |
223 | @cmd="$(PERF)/tests/perf-targz-src-pkg $(PERF)"; \ | |
224 | echo "- $@: $$cmd" && echo $$cmd > $@ && \ | |
225 | ( eval $$cmd ) >> $@ 2>&1 | |
226 | ||
227 | ||
228 | all: $(run) $(run_O) tarpkg | |
095ae69b JO |
229 | @echo OK |
230 | ||
231 | out: $(run_O) | |
232 | @echo OK | |
233 | ||
48878053 | 234 | .PHONY: all $(run) $(run_O) tarpkg clean |