Blame view

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