Blame view

kernel/linux-imx6_3.14.28/tools/lib/traceevent/Makefile 7.85 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
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
  # trace-cmd version
  EP_VERSION = 1
  EP_PATCHLEVEL = 1
  EP_EXTRAVERSION = 0
  
  # file format version
  FILE_VERSION = 6
  
  MAKEFLAGS += --no-print-directory
  
  
  # Makefiles suck: This macro sets a default value of $(2) for the
  # variable named by $(1), unless the variable has been set by
  # environment or command line. This is necessary for CC and AR
  # because make sets default values, so the simpler ?= approach
  # won't work as expected.
  define allow-override
    $(if $(or $(findstring environment,$(origin $(1))),\
              $(findstring command line,$(origin $(1)))),,\
      $(eval $(1) = $(2)))
  endef
  
  # Allow setting CC and AR, or setting CROSS_COMPILE as a prefix.
  $(call allow-override,CC,$(CROSS_COMPILE)gcc)
  $(call allow-override,AR,$(CROSS_COMPILE)ar)
  
  EXT = -std=gnu99
  INSTALL = install
  
  # Use DESTDIR for installing into a different root directory.
  # This is useful for building a package. The program will be
  # installed in this directory as if it was the root directory.
  # Then the build tool can move it later.
  DESTDIR ?=
  DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
  
  prefix ?= /usr/local
  bindir_relative = bin
  bindir = $(prefix)/$(bindir_relative)
  man_dir = $(prefix)/share/man
  man_dir_SQ = '$(subst ','\'',$(man_dir))'
  
  export man_dir man_dir_SQ INSTALL
  export DESTDIR DESTDIR_SQ
  
  set_plugin_dir := 1
  
  # Set plugin_dir to preffered global plugin location
  # If we install under $HOME directory we go under
  # $(HOME)/.traceevent/plugins
  #
  # We dont set PLUGIN_DIR in case we install under $HOME
  # directory, because by default the code looks under:
  # $(HOME)/.traceevent/plugins by default.
  #
  ifeq ($(plugin_dir),)
  ifeq ($(prefix),$(HOME))
  override plugin_dir = $(HOME)/.traceevent/plugins
  set_plugin_dir := 0
  else
  override plugin_dir = $(prefix)/lib/traceevent/plugins
  endif
  endif
  
  ifeq ($(set_plugin_dir),1)
  PLUGIN_DIR = -DPLUGIN_DIR="$(plugin_dir)"
  PLUGIN_DIR_SQ = '$(subst ','\'',$(PLUGIN_DIR))'
  endif
  
  include $(if $(BUILD_SRC),$(BUILD_SRC)/)../../scripts/Makefile.include
  
  # copy a bit from Linux kbuild
  
  ifeq ("$(origin V)", "command line")
    VERBOSE = $(V)
  endif
  ifndef VERBOSE
    VERBOSE = 0
  endif
  
  ifeq ("$(origin O)", "command line")
    BUILD_OUTPUT := $(O)
  endif
  
  ifeq ($(BUILD_SRC),)
  ifneq ($(OUTPUT),)
  
  define build_output
    $(if $(VERBOSE:1=),@)+$(MAKE) -C $(OUTPUT) \
    BUILD_SRC=$(CURDIR)/ -f $(CURDIR)/Makefile $1
  endef
  
  all: sub-make
  
  $(MAKECMDGOALS): sub-make
  
  sub-make: force
  	$(call build_output, $(MAKECMDGOALS))
  
  
  # Leave processing to above invocation of make
  skip-makefile := 1
  
  endif # OUTPUT
  endif # BUILD_SRC
  
  # We process the rest of the Makefile if this is the final invocation of make
  ifeq ($(skip-makefile),)
  
  srctree		:= $(if $(BUILD_SRC),$(BUILD_SRC),$(CURDIR))
  objtree		:= $(CURDIR)
  src		:= $(srctree)
  obj		:= $(objtree)
  
  export prefix bindir src obj
  
  # Shell quotes
  bindir_SQ = $(subst ','\'',$(bindir))
  bindir_relative_SQ = $(subst ','\'',$(bindir_relative))
  plugin_dir_SQ = $(subst ','\'',$(plugin_dir))
  
  LIB_FILE = libtraceevent.a libtraceevent.so
  
  CONFIG_INCLUDES = 
  CONFIG_LIBS	=
  CONFIG_FLAGS	=
  
  VERSION		= $(EP_VERSION)
  PATCHLEVEL	= $(EP_PATCHLEVEL)
  EXTRAVERSION	= $(EP_EXTRAVERSION)
  
  OBJ		= $@
  N		=
  
  export Q VERBOSE
  
  EVENT_PARSE_VERSION = $(EP_VERSION).$(EP_PATCHLEVEL).$(EP_EXTRAVERSION)
  
  INCLUDES = -I. -I $(srctree)/../../include $(CONFIG_INCLUDES)
  
  # Set compile option CFLAGS if not set elsewhere
  CFLAGS ?= -g -Wall
  
  # Append required CFLAGS
  override CFLAGS += $(CONFIG_FLAGS) $(INCLUDES) $(PLUGIN_DIR_SQ)
  override CFLAGS += $(udis86-flags) -D_GNU_SOURCE
  
  ifeq ($(VERBOSE),1)
    Q =
  else
    Q = @
  endif
  
  do_compile_shared_library =			\
  	($(print_shared_lib_compile)		\
  	$(CC) --shared $^ -o $@)
  
  do_plugin_build =				\
  	($(print_plugin_build)			\
  	$(CC) $(CFLAGS) -shared -nostartfiles -o $@ $<)
  
  do_build_static_lib =				\
  	($(print_static_lib_build)		\
  	$(RM) $@;  $(AR) rcs $@ $^)
  
  
  do_compile = $(QUIET_CC)$(CC) -c $(CFLAGS) $(EXT) $< -o $(obj)/$@;
  
  $(obj)/%.o: $(src)/%.c
  	$(call do_compile)
  
  %.o: $(src)/%.c
  	$(call do_compile)
  
  PEVENT_LIB_OBJS  = event-parse.o
  PEVENT_LIB_OBJS += event-plugin.o
  PEVENT_LIB_OBJS += trace-seq.o
  PEVENT_LIB_OBJS += parse-filter.o
  PEVENT_LIB_OBJS += parse-utils.o
  PEVENT_LIB_OBJS += kbuffer-parse.o
  
  PLUGIN_OBJS  = plugin_jbd2.o
  PLUGIN_OBJS += plugin_hrtimer.o
  PLUGIN_OBJS += plugin_kmem.o
  PLUGIN_OBJS += plugin_kvm.o
  PLUGIN_OBJS += plugin_mac80211.o
  PLUGIN_OBJS += plugin_sched_switch.o
  PLUGIN_OBJS += plugin_function.o
  PLUGIN_OBJS += plugin_xen.o
  PLUGIN_OBJS += plugin_scsi.o
  PLUGIN_OBJS += plugin_cfg80211.o
  
  PLUGINS := $(PLUGIN_OBJS:.o=.so)
  
  ALL_OBJS = $(PEVENT_LIB_OBJS) $(PLUGIN_OBJS)
  
  CMD_TARGETS = $(LIB_FILE) $(PLUGINS)
  
  TARGETS = $(CMD_TARGETS)
  
  
  all: all_cmd
  
  all_cmd: $(CMD_TARGETS)
  
  libtraceevent.so: $(PEVENT_LIB_OBJS)
  	$(QUIET_LINK)$(CC) --shared $^ -o $@
  
  libtraceevent.a: $(PEVENT_LIB_OBJS)
  	$(QUIET_LINK)$(RM) $@; $(AR) rcs $@ $^
  
  plugins: $(PLUGINS)
  
  $(PEVENT_LIB_OBJS): %.o: $(src)/%.c TRACEEVENT-CFLAGS
  	$(QUIET_CC_FPIC)$(CC) -c $(CFLAGS) $(EXT) -fPIC $< -o $@
  
  $(PLUGIN_OBJS): %.o : $(src)/%.c
  	$(QUIET_CC_FPIC)$(CC) -c $(CFLAGS) -fPIC -o $@ $<
  
  $(PLUGINS): %.so: %.o
  	$(QUIET_LINK)$(CC) $(CFLAGS) -shared -nostartfiles -o $@ $<
  
  define make_version.h
    (echo '/* This file is automatically generated. Do not modify. */';		\
     echo \#define VERSION_CODE $(shell						\
     expr $(VERSION) \* 256 + $(PATCHLEVEL));					\
     echo '#define EXTRAVERSION ' $(EXTRAVERSION);				\
     echo '#define VERSION_STRING "'$(VERSION).$(PATCHLEVEL).$(EXTRAVERSION)'"';	\
     echo '#define FILE_VERSION '$(FILE_VERSION);					\
    ) > $1
  endef
  
  define update_version.h
    ($(call make_version.h, $@.tmp);		\
      if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
        rm -f $@.tmp;				\
      else					\
        echo '  UPDATE                 $@';	\
        mv -f $@.tmp $@;				\
      fi);
  endef
  
  ep_version.h: force
  	$(Q)$(N)$(call update_version.h)
  
  VERSION_FILES = ep_version.h
  
  define update_dir
    (echo $1 > $@.tmp;				\
     if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
       rm -f $@.tmp;				\
     else						\
       echo '  UPDATE                 $@';	\
       mv -f $@.tmp $@;				\
     fi);
  endef
  
  ## make deps
  
  all_objs := $(sort $(ALL_OBJS))
  all_deps := $(all_objs:%.o=.%.d)
  
  # let .d file also depends on the source and header files
  define check_deps
    @set -e; $(RM) $@; \
    $(CC) -MM $(CFLAGS) $< > $@.$$$$; \
    sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
    $(RM) $@.$$$$
  endef
  
  $(all_deps): .%.d: $(src)/%.c
  	$(Q)$(call check_deps)
  
  $(all_objs) : %.o : .%.d
  
  dep_includes := $(wildcard $(all_deps))
  
  ifneq ($(dep_includes),)
   include $(dep_includes)
  endif
  
  ### Detect environment changes
  TRACK_CFLAGS = $(subst ','\'',$(CFLAGS)):$(ARCH):$(CROSS_COMPILE)
  
  TRACEEVENT-CFLAGS: force
  	@FLAGS='$(TRACK_CFLAGS)'; \
  	    if test x"$$FLAGS" != x"`cat TRACEEVENT-CFLAGS 2>/dev/null`" ; then \
  		echo 1>&2 "  FLAGS:   * new build flags or cross compiler"; \
  		echo "$$FLAGS" >TRACEEVENT-CFLAGS; \
              fi
  
  tags:	force
  	$(RM) tags
  	find . -name '*.[ch]' | xargs ctags --extra=+f --c-kinds=+px \
  	--regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/'
  
  TAGS:	force
  	$(RM) TAGS
  	find . -name '*.[ch]' | xargs etags \
  	--regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/'
  
  define do_install
  	if [ ! -d '$(DESTDIR_SQ)$2' ]; then		\
  		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2';	\
  	fi;						\
  	$(INSTALL) $1 '$(DESTDIR_SQ)$2'
  endef
  
  define do_install_plugins
  	for plugin in $1; do				\
  	  $(call do_install,$$plugin,$(plugin_dir_SQ));	\
  	done
  endef
  
  install_lib: all_cmd install_plugins
  	$(call QUIET_INSTALL, $(LIB_FILE)) \
  		$(call do_install,$(LIB_FILE),$(bindir_SQ))
  
  install_plugins: $(PLUGINS)
  	$(call QUIET_INSTALL, trace_plugins) \
  		$(call do_install_plugins, $(PLUGINS))
  
  install: install_lib
  
  clean:
  	$(call QUIET_CLEAN, libtraceevent) \
  		$(RM) *.o *~ $(TARGETS) *.a *.so $(VERSION_FILES) .*.d \
  		$(RM) TRACEEVENT-CFLAGS tags TAGS
  
  endif # skip-makefile
  
  PHONY += force plugins
  force:
  
  plugins:
  	@echo > /dev/null
  
  # Declare the contents of the .PHONY variable as phony.  We keep that
  # information in a variable so we can use it in if_changed and friends.
  .PHONY: $(PHONY)