xref: /aosp_15_r20/external/trace-cmd/Makefile (revision 58e6ee5f017f6a8912852c892d18457e4bafb554)
1*58e6ee5fSAndroid Build Coastguard Worker# SPDX-License-Identifier: GPL-2.0
2*58e6ee5fSAndroid Build Coastguard Worker# trace-cmd version
3*58e6ee5fSAndroid Build Coastguard WorkerTC_VERSION = 3
4*58e6ee5fSAndroid Build Coastguard WorkerTC_PATCHLEVEL = 0
5*58e6ee5fSAndroid Build Coastguard WorkerTC_EXTRAVERSION = 3
6*58e6ee5fSAndroid Build Coastguard WorkerTRACECMD_VERSION = $(TC_VERSION).$(TC_PATCHLEVEL).$(TC_EXTRAVERSION)
7*58e6ee5fSAndroid Build Coastguard Worker
8*58e6ee5fSAndroid Build Coastguard Workerexport TC_VERSION
9*58e6ee5fSAndroid Build Coastguard Workerexport TC_PATCHLEVEL
10*58e6ee5fSAndroid Build Coastguard Workerexport TC_EXTRAVERSION
11*58e6ee5fSAndroid Build Coastguard Workerexport TRACECMD_VERSION
12*58e6ee5fSAndroid Build Coastguard Worker
13*58e6ee5fSAndroid Build Coastguard WorkerLIBTC_VERSION = 1
14*58e6ee5fSAndroid Build Coastguard WorkerLIBTC_PATCHLEVEL = 1
15*58e6ee5fSAndroid Build Coastguard WorkerLIBTC_EXTRAVERSION = 3
16*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_VERSION = $(LIBTC_VERSION).$(LIBTC_PATCHLEVEL).$(LIBTC_EXTRAVERSION)
17*58e6ee5fSAndroid Build Coastguard Worker
18*58e6ee5fSAndroid Build Coastguard Workerexport LIBTC_VERSION
19*58e6ee5fSAndroid Build Coastguard Workerexport LIBTC_PATCHLEVEL
20*58e6ee5fSAndroid Build Coastguard Workerexport LIBTC_EXTRAVERSION
21*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACECMD_VERSION
22*58e6ee5fSAndroid Build Coastguard Worker
23*58e6ee5fSAndroid Build Coastguard WorkerVERSION_FILE = ltc_version.h
24*58e6ee5fSAndroid Build Coastguard Worker
25*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEEVENT_MIN_VERSION = 1.5
26*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEFS_MIN_VERSION = 1.3
27*58e6ee5fSAndroid Build Coastguard Worker
28*58e6ee5fSAndroid Build Coastguard WorkerMAKEFLAGS += --no-print-directory
29*58e6ee5fSAndroid Build Coastguard Worker
30*58e6ee5fSAndroid Build Coastguard Worker# Makefiles suck: This macro sets a default value of $(2) for the
31*58e6ee5fSAndroid Build Coastguard Worker# variable named by $(1), unless the variable has been set by
32*58e6ee5fSAndroid Build Coastguard Worker# environment or command line. This is necessary for CC and AR
33*58e6ee5fSAndroid Build Coastguard Worker# because make sets default values, so the simpler ?= approach
34*58e6ee5fSAndroid Build Coastguard Worker# won't work as expected.
35*58e6ee5fSAndroid Build Coastguard Workerdefine allow-override
36*58e6ee5fSAndroid Build Coastguard Worker  $(if $(or $(findstring environment,$(origin $(1))),\
37*58e6ee5fSAndroid Build Coastguard Worker            $(findstring command line,$(origin $(1)))),,\
38*58e6ee5fSAndroid Build Coastguard Worker    $(eval $(1) = $(2)))
39*58e6ee5fSAndroid Build Coastguard Workerendef
40*58e6ee5fSAndroid Build Coastguard Worker
41*58e6ee5fSAndroid Build Coastguard Worker# Allow setting CC and AR, or setting CROSS_COMPILE as a prefix.
42*58e6ee5fSAndroid Build Coastguard Worker$(call allow-override,CC,$(CROSS_COMPILE)gcc)
43*58e6ee5fSAndroid Build Coastguard Worker$(call allow-override,AR,$(CROSS_COMPILE)ar)
44*58e6ee5fSAndroid Build Coastguard Worker$(call allow-override,PKG_CONFIG,pkg-config)
45*58e6ee5fSAndroid Build Coastguard Worker$(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/)
46*58e6ee5fSAndroid Build Coastguard Worker$(call allow-override,LDCONFIG,ldconfig)
47*58e6ee5fSAndroid Build Coastguard Worker
48*58e6ee5fSAndroid Build Coastguard Workerexport LD_SO_CONF_PATH LDCONFIG
49*58e6ee5fSAndroid Build Coastguard Worker
50*58e6ee5fSAndroid Build Coastguard WorkerEXT = -std=gnu99
51*58e6ee5fSAndroid Build Coastguard WorkerINSTALL = install
52*58e6ee5fSAndroid Build Coastguard Worker
53*58e6ee5fSAndroid Build Coastguard Worker# Use DESTDIR for installing into a different root directory.
54*58e6ee5fSAndroid Build Coastguard Worker# This is useful for building a package. The program will be
55*58e6ee5fSAndroid Build Coastguard Worker# installed in this directory as if it was the root directory.
56*58e6ee5fSAndroid Build Coastguard Worker# Then the build tool can move it later.
57*58e6ee5fSAndroid Build Coastguard WorkerDESTDIR ?=
58*58e6ee5fSAndroid Build Coastguard WorkerDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
59*58e6ee5fSAndroid Build Coastguard Worker
60*58e6ee5fSAndroid Build Coastguard WorkerLP64 := $(shell echo __LP64__ | ${CC} ${CFLAGS} -E -x c - | tail -n 1)
61*58e6ee5fSAndroid Build Coastguard Workerifeq ($(LP64), 1)
62*58e6ee5fSAndroid Build Coastguard Worker  libdir_relative_temp = lib64
63*58e6ee5fSAndroid Build Coastguard Workerelse
64*58e6ee5fSAndroid Build Coastguard Worker  libdir_relative_temp = lib
65*58e6ee5fSAndroid Build Coastguard Workerendif
66*58e6ee5fSAndroid Build Coastguard Worker
67*58e6ee5fSAndroid Build Coastguard Workerlibdir_relative ?= $(libdir_relative_temp)
68*58e6ee5fSAndroid Build Coastguard Workerprefix ?= /usr/local
69*58e6ee5fSAndroid Build Coastguard Workerbindir_relative = bin
70*58e6ee5fSAndroid Build Coastguard Workerbindir = $(prefix)/$(bindir_relative)
71*58e6ee5fSAndroid Build Coastguard Workerman_dir = $(prefix)/share/man
72*58e6ee5fSAndroid Build Coastguard Workerman_dir_SQ = '$(subst ','\'',$(man_dir))'
73*58e6ee5fSAndroid Build Coastguard Workerhtml_install_SQ = '$(subst ','\'',$(html_install))'
74*58e6ee5fSAndroid Build Coastguard Workerimg_install_SQ = '$(subst ','\'',$(img_install))'
75*58e6ee5fSAndroid Build Coastguard Workerlibdir = $(prefix)/$(libdir_relative)
76*58e6ee5fSAndroid Build Coastguard Workerlibdir_SQ = '$(subst ','\'',$(libdir))'
77*58e6ee5fSAndroid Build Coastguard Workerincludedir = $(prefix)/include
78*58e6ee5fSAndroid Build Coastguard Workerincludedir_SQ = '$(subst ','\'',$(includedir))'
79*58e6ee5fSAndroid Build Coastguard Workerpkgconfig_dir ?= $(word 1,$(shell $(PKG_CONFIG) 		\
80*58e6ee5fSAndroid Build Coastguard Worker			--variable pc_path pkg-config | tr ":" " "))
81*58e6ee5fSAndroid Build Coastguard Worker
82*58e6ee5fSAndroid Build Coastguard Workeretcdir ?= /etc
83*58e6ee5fSAndroid Build Coastguard Workeretcdir_SQ = '$(subst ','\'',$(etcdir))'
84*58e6ee5fSAndroid Build Coastguard Worker
85*58e6ee5fSAndroid Build Coastguard Workerexport man_dir man_dir_SQ html_install html_install_SQ INSTALL
86*58e6ee5fSAndroid Build Coastguard Workerexport img_install img_install_SQ libdir libdir_SQ includedir_SQ
87*58e6ee5fSAndroid Build Coastguard Workerexport DESTDIR DESTDIR_SQ
88*58e6ee5fSAndroid Build Coastguard Worker
89*58e6ee5fSAndroid Build Coastguard Workerifeq ($(prefix),$(HOME))
90*58e6ee5fSAndroid Build Coastguard Workerplugin_tracecmd_dir = $(libdir)/trace-cmd/plugins
91*58e6ee5fSAndroid Build Coastguard Workerpython_dir ?= $(libdir)/trace-cmd/python
92*58e6ee5fSAndroid Build Coastguard Workervar_dir = $(HOME)/.trace-cmd/
93*58e6ee5fSAndroid Build Coastguard Workerelse
94*58e6ee5fSAndroid Build Coastguard Workerpython_dir ?= $(libdir)/trace-cmd/python
95*58e6ee5fSAndroid Build Coastguard WorkerPLUGIN_DIR_TRACECMD = -DPLUGIN_TRACECMD_DIR="$(plugin_tracecmd_dir)"
96*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_DIR = -DPYTHON_DIR="$(python_dir)"
97*58e6ee5fSAndroid Build Coastguard WorkerPLUGIN_DIR_TRACECMD_SQ = '$(subst ','\'',$(PLUGIN_DIR_TRACECMD))'
98*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_DIR_SQ = '$(subst ','\'',$(PYTHON_DIR))'
99*58e6ee5fSAndroid Build Coastguard Workervar_dir = /var
100*58e6ee5fSAndroid Build Coastguard Workerendif
101*58e6ee5fSAndroid Build Coastguard Worker
102*58e6ee5fSAndroid Build Coastguard Worker# Shell quotes
103*58e6ee5fSAndroid Build Coastguard Workerbindir_SQ = $(subst ','\'',$(bindir))
104*58e6ee5fSAndroid Build Coastguard Workerbindir_relative_SQ = $(subst ','\'',$(bindir_relative))
105*58e6ee5fSAndroid Build Coastguard Workerplugin_tracecmd_dir_SQ = $(subst ','\'',$(plugin_tracecmd_dir))
106*58e6ee5fSAndroid Build Coastguard Workerpython_dir_SQ = $(subst ','\'',$(python_dir))
107*58e6ee5fSAndroid Build Coastguard Worker
108*58e6ee5fSAndroid Build Coastguard Workerpound := \#
109*58e6ee5fSAndroid Build Coastguard Worker
110*58e6ee5fSAndroid Build Coastguard WorkerVAR_DIR = -DVAR_DIR="$(var_dir)"
111*58e6ee5fSAndroid Build Coastguard WorkerVAR_DIR_SQ = '$(subst ','\'',$(VAR_DIR))'
112*58e6ee5fSAndroid Build Coastguard Workervar_dir_SQ = '$(subst ','\'',$(var_dir))'
113*58e6ee5fSAndroid Build Coastguard Worker
114*58e6ee5fSAndroid Build Coastguard WorkerHELP_DIR = -DHELP_DIR=$(html_install)
115*58e6ee5fSAndroid Build Coastguard WorkerHELP_DIR_SQ = '$(subst ','\'',$(HELP_DIR))'
116*58e6ee5fSAndroid Build Coastguard Worker#' emacs highlighting gets confused by the above escaped quote.
117*58e6ee5fSAndroid Build Coastguard Worker
118*58e6ee5fSAndroid Build Coastguard WorkerBASH_COMPLETE_DIR ?= $(etcdir)/bash_completion.d
119*58e6ee5fSAndroid Build Coastguard Worker
120*58e6ee5fSAndroid Build Coastguard Workerexport PLUGIN_DIR_TRACECMD
121*58e6ee5fSAndroid Build Coastguard Workerexport PYTHON_DIR
122*58e6ee5fSAndroid Build Coastguard Workerexport PYTHON_DIR_SQ
123*58e6ee5fSAndroid Build Coastguard Workerexport plugin_tracecmd_dir_SQ
124*58e6ee5fSAndroid Build Coastguard Workerexport python_dir_SQ
125*58e6ee5fSAndroid Build Coastguard Workerexport var_dir
126*58e6ee5fSAndroid Build Coastguard Worker
127*58e6ee5fSAndroid Build Coastguard Worker# copy a bit from Linux kbuild
128*58e6ee5fSAndroid Build Coastguard Worker
129*58e6ee5fSAndroid Build Coastguard Workerifeq ("$(origin V)", "command line")
130*58e6ee5fSAndroid Build Coastguard Worker  VERBOSE = $(V)
131*58e6ee5fSAndroid Build Coastguard Workerendif
132*58e6ee5fSAndroid Build Coastguard Workerifndef VERBOSE
133*58e6ee5fSAndroid Build Coastguard Worker  VERBOSE = 0
134*58e6ee5fSAndroid Build Coastguard Workerendif
135*58e6ee5fSAndroid Build Coastguard Worker
136*58e6ee5fSAndroid Build Coastguard WorkerSILENT := $(if $(findstring s,$(filter-out --%,$(MAKEFLAGS))),1)
137*58e6ee5fSAndroid Build Coastguard Worker
138*58e6ee5fSAndroid Build Coastguard WorkerSWIG_DEFINED := $(shell if command -v swig; then echo 1; else echo 0; fi)
139*58e6ee5fSAndroid Build Coastguard Workerifeq ($(SWIG_DEFINED), 0)
140*58e6ee5fSAndroid Build Coastguard WorkerBUILD_PYTHON := report_noswig
141*58e6ee5fSAndroid Build Coastguard WorkerNO_PYTHON = 1
142*58e6ee5fSAndroid Build Coastguard Workerendif
143*58e6ee5fSAndroid Build Coastguard Worker
144*58e6ee5fSAndroid Build Coastguard Workerifndef NO_PYTHON
145*58e6ee5fSAndroid Build Coastguard WorkerPYTHON		:= ctracecmd.so
146*58e6ee5fSAndroid Build Coastguard Worker
147*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_VERS ?= python
148*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_PKGCONFIG_VERS ?= $(PYTHON_VERS)
149*58e6ee5fSAndroid Build Coastguard Worker
150*58e6ee5fSAndroid Build Coastguard Worker# Can build python?
151*58e6ee5fSAndroid Build Coastguard Workerifeq ($(shell sh -c "$(PKG_CONFIG) --cflags $(PYTHON_PKGCONFIG_VERS) > /dev/null 2>&1 && echo y"), y)
152*58e6ee5fSAndroid Build Coastguard Worker	BUILD_PYTHON := $(PYTHON)
153*58e6ee5fSAndroid Build Coastguard Worker	BUILD_PYTHON_WORKS := 1
154*58e6ee5fSAndroid Build Coastguard Workerelse
155*58e6ee5fSAndroid Build Coastguard Worker	BUILD_PYTHON := report_nopythondev
156*58e6ee5fSAndroid Build Coastguard Worker	NO_PYTHON = 1
157*58e6ee5fSAndroid Build Coastguard Workerendif
158*58e6ee5fSAndroid Build Coastguard Workerendif # NO_PYTHON
159*58e6ee5fSAndroid Build Coastguard Worker
160*58e6ee5fSAndroid Build Coastguard Workerexport BUILD_PYTHON_WORKS
161*58e6ee5fSAndroid Build Coastguard Workerexport NO_PYTHON
162*58e6ee5fSAndroid Build Coastguard Worker
163*58e6ee5fSAndroid Build Coastguard Worker# $(call test-build, snippet, ret) -> ret if snippet compiles
164*58e6ee5fSAndroid Build Coastguard Worker#                                  -> empty otherwise
165*58e6ee5fSAndroid Build Coastguard Workertest-build = $(if $(shell sh -c 'echo "$(1)" | \
166*58e6ee5fSAndroid Build Coastguard Worker	$(CC) -o /dev/null -c -x c - > /dev/null 2>&1 && echo y'), $2)
167*58e6ee5fSAndroid Build Coastguard Worker
168*58e6ee5fSAndroid Build Coastguard WorkerUDIS86_AVAILABLE := $(call test-build,\#include <udis86.h>, y)
169*58e6ee5fSAndroid Build Coastguard Workerifneq ($(strip $(UDIS86_AVAILABLE)), y)
170*58e6ee5fSAndroid Build Coastguard WorkerNO_UDIS86 := 1
171*58e6ee5fSAndroid Build Coastguard Workerendif
172*58e6ee5fSAndroid Build Coastguard Worker
173*58e6ee5fSAndroid Build Coastguard Workerifndef NO_UDIS86
174*58e6ee5fSAndroid Build Coastguard Worker# have udis86 disassembler library?
175*58e6ee5fSAndroid Build Coastguard Workerudis86-flags := -DHAVE_UDIS86 -ludis86
176*58e6ee5fSAndroid Build Coastguard Workerudis86-ldflags := -ludis86
177*58e6ee5fSAndroid Build Coastguard Workerendif # NO_UDIS86
178*58e6ee5fSAndroid Build Coastguard Worker
179*58e6ee5fSAndroid Build Coastguard Workerdefine BLK_TC_FLUSH_SOURCE
180*58e6ee5fSAndroid Build Coastguard Worker#include <linux/blktrace_api.h>
181*58e6ee5fSAndroid Build Coastguard Workerint main(void) { return BLK_TC_FLUSH; }
182*58e6ee5fSAndroid Build Coastguard Workerendef
183*58e6ee5fSAndroid Build Coastguard Worker
184*58e6ee5fSAndroid Build Coastguard Worker# have flush/fua block layer instead of barriers?
185*58e6ee5fSAndroid Build Coastguard Workerblk-flags := $(call test-build,$(BLK_TC_FLUSH_SOURCE),-DHAVE_BLK_TC_FLUSH)
186*58e6ee5fSAndroid Build Coastguard Worker
187*58e6ee5fSAndroid Build Coastguard Workerifeq ("$(origin O)", "command line")
188*58e6ee5fSAndroid Build Coastguard Worker
189*58e6ee5fSAndroid Build Coastguard Worker  saved-output := $(O)
190*58e6ee5fSAndroid Build Coastguard Worker  BUILD_OUTPUT := $(shell cd $(O) && /bin/pwd)
191*58e6ee5fSAndroid Build Coastguard Worker  $(if $(BUILD_OUTPUT),, \
192*58e6ee5fSAndroid Build Coastguard Worker    $(error output directory "$(saved-output)" does not exist))
193*58e6ee5fSAndroid Build Coastguard Worker
194*58e6ee5fSAndroid Build Coastguard Workerelse
195*58e6ee5fSAndroid Build Coastguard Worker  BUILD_OUTPUT = $(CURDIR)
196*58e6ee5fSAndroid Build Coastguard Workerendif
197*58e6ee5fSAndroid Build Coastguard Worker
198*58e6ee5fSAndroid Build Coastguard Workersrctree		:= $(if $(BUILD_SRC),$(BUILD_SRC),$(CURDIR))
199*58e6ee5fSAndroid Build Coastguard Workerobjtree		:= $(BUILD_OUTPUT)
200*58e6ee5fSAndroid Build Coastguard Workersrc		:= $(srctree)
201*58e6ee5fSAndroid Build Coastguard Workerobj		:= $(objtree)
202*58e6ee5fSAndroid Build Coastguard Worker
203*58e6ee5fSAndroid Build Coastguard WorkerPKG_CONFIG_SOURCE_FILE = libtracecmd.pc
204*58e6ee5fSAndroid Build Coastguard WorkerPKG_CONFIG_FILE := $(addprefix $(BUILD_OUTPUT)/,$(PKG_CONFIG_SOURCE_FILE))
205*58e6ee5fSAndroid Build Coastguard Worker
206*58e6ee5fSAndroid Build Coastguard Workerexport pkgconfig_dir PKG_CONFIG_FILE
207*58e6ee5fSAndroid Build Coastguard Worker
208*58e6ee5fSAndroid Build Coastguard Workerexport prefix bindir src obj
209*58e6ee5fSAndroid Build Coastguard Worker
210*58e6ee5fSAndroid Build Coastguard WorkerLIBS = -ldl
211*58e6ee5fSAndroid Build Coastguard Worker
212*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_DIR = $(obj)/lib/trace-cmd
213*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_STATIC = $(LIBTRACECMD_DIR)/libtracecmd.a
214*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_SHARED = $(LIBTRACECMD_DIR)/libtracecmd.so.$(LIBTRACECMD_VERSION)
215*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_SHARED_VERSION = $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\.[0-9]*\).*/\1/')
216*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACECMD_SHARED_SO = $(shell echo $(LIBTRACECMD_SHARED) | sed -e 's/\(\.so\).*/\1/')
217*58e6ee5fSAndroid Build Coastguard Worker
218*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACECMD_STATIC LIBTRACECMD_SHARED
219*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACECMD_SHARED_VERSION LIBTRACECMD_SHARED_SO
220*58e6ee5fSAndroid Build Coastguard Worker
221*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEEVENT=libtraceevent
222*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEFS=libtracefs
223*58e6ee5fSAndroid Build Coastguard Worker
224*58e6ee5fSAndroid Build Coastguard WorkerTEST_LIBTRACEEVENT = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) $(LIBTRACEEVENT) > /dev/null 2>&1 && echo y")
225*58e6ee5fSAndroid Build Coastguard WorkerTEST_LIBTRACEFS = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) $(LIBTRACEFS) > /dev/null 2>&1 && echo y")
226*58e6ee5fSAndroid Build Coastguard Worker
227*58e6ee5fSAndroid Build Coastguard Workerifeq ("$(TEST_LIBTRACEEVENT)", "y")
228*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEEVENT_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEEVENT)")
229*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEEVENT_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEEVENT)")
230*58e6ee5fSAndroid Build Coastguard Workerelse
231*58e6ee5fSAndroid Build Coastguard Worker.PHONY: warning
232*58e6ee5fSAndroid Build Coastguard Workerwarning:
233*58e6ee5fSAndroid Build Coastguard Worker	@echo "********************************************"
234*58e6ee5fSAndroid Build Coastguard Worker	@echo "** NOTICE: libtraceevent version $(LIBTRACEEVENT_MIN_VERSION) or higher not found on system"
235*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
236*58e6ee5fSAndroid Build Coastguard Worker	@echo "** Consider installing the latest libtraceevent from your"
237*58e6ee5fSAndroid Build Coastguard Worker	@echo "** distribution, or from source:"
238*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
239*58e6ee5fSAndroid Build Coastguard Worker	@echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ "
240*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
241*58e6ee5fSAndroid Build Coastguard Worker	@echo "********************************************"
242*58e6ee5fSAndroid Build Coastguard Workerendif
243*58e6ee5fSAndroid Build Coastguard Worker
244*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACEEVENT_CFLAGS LIBTRACEEVENT_LDLAGS
245*58e6ee5fSAndroid Build Coastguard Worker
246*58e6ee5fSAndroid Build Coastguard Workerifeq ("$(TEST_LIBTRACEFS)", "y")
247*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEFS_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags $(LIBTRACEFS)")
248*58e6ee5fSAndroid Build Coastguard WorkerLIBTRACEFS_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs $(LIBTRACEFS)")
249*58e6ee5fSAndroid Build Coastguard Workerelse
250*58e6ee5fSAndroid Build Coastguard Worker.PHONY: warning
251*58e6ee5fSAndroid Build Coastguard Workerwarning:
252*58e6ee5fSAndroid Build Coastguard Worker	@echo "********************************************"
253*58e6ee5fSAndroid Build Coastguard Worker	@echo "** NOTICE: libtracefs version $(LIBTRACEFS_MIN_VERSION) or higher not found on system"
254*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
255*58e6ee5fSAndroid Build Coastguard Worker	@echo "** Consider installing the latest libtracefs from your"
256*58e6ee5fSAndroid Build Coastguard Worker	@echo "** distribution, or from source:"
257*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
258*58e6ee5fSAndroid Build Coastguard Worker	@echo "**  https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ "
259*58e6ee5fSAndroid Build Coastguard Worker	@echo "**"
260*58e6ee5fSAndroid Build Coastguard Worker	@echo "********************************************"
261*58e6ee5fSAndroid Build Coastguard Workerendif
262*58e6ee5fSAndroid Build Coastguard Worker
263*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACEFS_CFLAGS LIBTRACEFS_LDLAGS
264*58e6ee5fSAndroid Build Coastguard Worker
265*58e6ee5fSAndroid Build Coastguard WorkerTRACE_LIBS = -L$(LIBTRACECMD_DIR) -ltracecmd	\
266*58e6ee5fSAndroid Build Coastguard Worker	     $(LIBTRACEEVENT_LDLAGS) $(LIBTRACEFS_LDLAGS)
267*58e6ee5fSAndroid Build Coastguard Worker
268*58e6ee5fSAndroid Build Coastguard Workerexport LIBS TRACE_LIBS
269*58e6ee5fSAndroid Build Coastguard Workerexport LIBTRACECMD_DIR
270*58e6ee5fSAndroid Build Coastguard Workerexport Q SILENT VERBOSE EXT
271*58e6ee5fSAndroid Build Coastguard Worker
272*58e6ee5fSAndroid Build Coastguard Worker# Include the utils
273*58e6ee5fSAndroid Build Coastguard Workerinclude scripts/utils.mk
274*58e6ee5fSAndroid Build Coastguard Worker
275*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES = -I$(src)/include -I$(src)/../../include
276*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += -I$(src)/include/trace-cmd
277*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += -I$(src)/lib/trace-cmd/include
278*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += -I$(src)/lib/trace-cmd/include/private
279*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += -I$(src)/tracecmd/include
280*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += $(LIBTRACEEVENT_CFLAGS)
281*58e6ee5fSAndroid Build Coastguard WorkerINCLUDES += $(LIBTRACEFS_CFLAGS)
282*58e6ee5fSAndroid Build Coastguard Worker
283*58e6ee5fSAndroid Build Coastguard Workerinclude $(src)/features.mk
284*58e6ee5fSAndroid Build Coastguard Worker
285*58e6ee5fSAndroid Build Coastguard Worker# Set compile option CFLAGS if not set elsewhere
286*58e6ee5fSAndroid Build Coastguard WorkerCFLAGS ?= -g -Wall
287*58e6ee5fSAndroid Build Coastguard WorkerCPPFLAGS ?=
288*58e6ee5fSAndroid Build Coastguard WorkerLDFLAGS ?=
289*58e6ee5fSAndroid Build Coastguard Worker
290*58e6ee5fSAndroid Build Coastguard Workerifndef NO_VSOCK
291*58e6ee5fSAndroid Build Coastguard WorkerVSOCK_DEFINED := $(shell if (echo "$(pound)include <linux/vm_sockets.h>" | $(CC) -E - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi)
292*58e6ee5fSAndroid Build Coastguard Workerelse
293*58e6ee5fSAndroid Build Coastguard WorkerVSOCK_DEFINED := 0
294*58e6ee5fSAndroid Build Coastguard Workerendif
295*58e6ee5fSAndroid Build Coastguard Worker
296*58e6ee5fSAndroid Build Coastguard Workerexport VSOCK_DEFINED
297*58e6ee5fSAndroid Build Coastguard Workerifeq ($(VSOCK_DEFINED), 1)
298*58e6ee5fSAndroid Build Coastguard WorkerCFLAGS += -DVSOCK
299*58e6ee5fSAndroid Build Coastguard Workerendif
300*58e6ee5fSAndroid Build Coastguard Worker
301*58e6ee5fSAndroid Build Coastguard WorkerPERF_DEFINED := $(shell if (echo "$(pound)include <linux/perf_event.h>" | $(CC) -E - >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi)
302*58e6ee5fSAndroid Build Coastguard Workerexport PERF_DEFINED
303*58e6ee5fSAndroid Build Coastguard Workerifeq ($(PERF_DEFINED), 1)
304*58e6ee5fSAndroid Build Coastguard WorkerCFLAGS += -DPERF
305*58e6ee5fSAndroid Build Coastguard Workerendif
306*58e6ee5fSAndroid Build Coastguard Worker
307*58e6ee5fSAndroid Build Coastguard WorkerZLIB_INSTALLED := $(shell if (printf "$(pound)include <zlib.h>\n void main(){deflateInit(NULL, Z_BEST_COMPRESSION);}" | $(CC) -o /dev/null -x c - -lz >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi)
308*58e6ee5fSAndroid Build Coastguard Workerifeq ($(ZLIB_INSTALLED), 1)
309*58e6ee5fSAndroid Build Coastguard Workerexport ZLIB_INSTALLED
310*58e6ee5fSAndroid Build Coastguard WorkerCFLAGS += -DHAVE_ZLIB
311*58e6ee5fSAndroid Build Coastguard Worker$(info    Have zlib compression support)
312*58e6ee5fSAndroid Build Coastguard Workerendif
313*58e6ee5fSAndroid Build Coastguard Worker
314*58e6ee5fSAndroid Build Coastguard WorkerTEST_LIBZSTD = $(shell sh -c "$(PKG_CONFIG) --atleast-version 1.4.0 libzstd > /dev/null 2>&1 && echo y")
315*58e6ee5fSAndroid Build Coastguard Worker
316*58e6ee5fSAndroid Build Coastguard Workerifeq ("$(TEST_LIBZSTD)", "y")
317*58e6ee5fSAndroid Build Coastguard WorkerLIBZSTD_CFLAGS = $(shell sh -c "$(PKG_CONFIG) --cflags libzstd")
318*58e6ee5fSAndroid Build Coastguard WorkerLIBZSTD_LDLAGS = $(shell sh -c "$(PKG_CONFIG) --libs libzstd")
319*58e6ee5fSAndroid Build Coastguard WorkerCFLAGS += -DHAVE_ZSTD
320*58e6ee5fSAndroid Build Coastguard WorkerZSTD_INSTALLED=1
321*58e6ee5fSAndroid Build Coastguard Worker$(info    Have ZSTD compression support)
322*58e6ee5fSAndroid Build Coastguard Workerelse
323*58e6ee5fSAndroid Build Coastguard Worker$(info	  *************************************************************)
324*58e6ee5fSAndroid Build Coastguard Worker$(info	  ZSTD package not found, best compression algorithm not in use)
325*58e6ee5fSAndroid Build Coastguard Worker$(info	  *************************************************************)
326*58e6ee5fSAndroid Build Coastguard Workerendif
327*58e6ee5fSAndroid Build Coastguard Worker
328*58e6ee5fSAndroid Build Coastguard Workerexport LIBZSTD_CFLAGS LIBZSTD_LDLAGS ZSTD_INSTALLED
329*58e6ee5fSAndroid Build Coastguard Worker
330*58e6ee5fSAndroid Build Coastguard WorkerCUNIT_INSTALLED := $(shell if (printf "$(pound)include <CUnit/Basic.h>\n void main(){CU_initialize_registry();}" | $(CC) -o /dev/null -x c - -lcunit >/dev/null 2>&1) ; then echo 1; else echo 0 ; fi)
331*58e6ee5fSAndroid Build Coastguard Workerexport CUNIT_INSTALLED
332*58e6ee5fSAndroid Build Coastguard Worker
333*58e6ee5fSAndroid Build Coastguard Workerexport CFLAGS
334*58e6ee5fSAndroid Build Coastguard Workerexport INCLUDES
335*58e6ee5fSAndroid Build Coastguard Worker
336*58e6ee5fSAndroid Build Coastguard Worker# Required CFLAGS
337*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += -D_GNU_SOURCE
338*58e6ee5fSAndroid Build Coastguard Worker
339*58e6ee5fSAndroid Build Coastguard Workerifndef NO_PTRACE
340*58e6ee5fSAndroid Build Coastguard Workerifneq ($(call try-cc,$(SOURCE_PTRACE),),y)
341*58e6ee5fSAndroid Build Coastguard Worker	NO_PTRACE = 1
342*58e6ee5fSAndroid Build Coastguard Worker	override CFLAGS += -DWARN_NO_PTRACE
343*58e6ee5fSAndroid Build Coastguard Workerendif
344*58e6ee5fSAndroid Build Coastguard Workerendif
345*58e6ee5fSAndroid Build Coastguard Worker
346*58e6ee5fSAndroid Build Coastguard Workerifdef NO_PTRACE
347*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += -DNO_PTRACE
348*58e6ee5fSAndroid Build Coastguard Workerendif
349*58e6ee5fSAndroid Build Coastguard Worker
350*58e6ee5fSAndroid Build Coastguard Workerifndef NO_AUDIT
351*58e6ee5fSAndroid Build Coastguard Workerifneq ($(call try-cc,$(SOURCE_AUDIT),-laudit),y)
352*58e6ee5fSAndroid Build Coastguard Worker	NO_AUDIT = 1
353*58e6ee5fSAndroid Build Coastguard Worker	override CFLAGS += -DWARN_NO_AUDIT
354*58e6ee5fSAndroid Build Coastguard Workerendif
355*58e6ee5fSAndroid Build Coastguard Workerendif
356*58e6ee5fSAndroid Build Coastguard Worker
357*58e6ee5fSAndroid Build Coastguard Workerifdef NO_AUDIT
358*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += -DNO_AUDIT
359*58e6ee5fSAndroid Build Coastguard Workerelse
360*58e6ee5fSAndroid Build Coastguard WorkerLIBS += -laudit
361*58e6ee5fSAndroid Build Coastguard Workerendif
362*58e6ee5fSAndroid Build Coastguard Worker
363*58e6ee5fSAndroid Build Coastguard Worker# Append required CFLAGS
364*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += $(INCLUDES) $(VAR_DIR)
365*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += $(PLUGIN_DIR_TRACECMD_SQ)
366*58e6ee5fSAndroid Build Coastguard Workeroverride CFLAGS += $(udis86-flags) $(blk-flags)
367*58e6ee5fSAndroid Build Coastguard Workeroverride LDFLAGS += $(udis86-ldflags)
368*58e6ee5fSAndroid Build Coastguard Worker
369*58e6ee5fSAndroid Build Coastguard WorkerCMD_TARGETS = trace-cmd $(BUILD_PYTHON)
370*58e6ee5fSAndroid Build Coastguard Worker
371*58e6ee5fSAndroid Build Coastguard Worker###
372*58e6ee5fSAndroid Build Coastguard Worker#    Default we just build trace-cmd
373*58e6ee5fSAndroid Build Coastguard Worker#
374*58e6ee5fSAndroid Build Coastguard Worker#    If you want all libraries, then do: make libs
375*58e6ee5fSAndroid Build Coastguard Worker###
376*58e6ee5fSAndroid Build Coastguard Worker
377*58e6ee5fSAndroid Build Coastguard Workerall: all_cmd plugins show_other_make
378*58e6ee5fSAndroid Build Coastguard Worker
379*58e6ee5fSAndroid Build Coastguard Workerall_cmd: $(CMD_TARGETS)
380*58e6ee5fSAndroid Build Coastguard Worker
381*58e6ee5fSAndroid Build Coastguard WorkerBUILD_PREFIX := $(BUILD_OUTPUT)/build_prefix
382*58e6ee5fSAndroid Build Coastguard Worker
383*58e6ee5fSAndroid Build Coastguard Worker$(BUILD_PREFIX): force
384*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(call build_prefix,$(prefix))
385*58e6ee5fSAndroid Build Coastguard Worker
386*58e6ee5fSAndroid Build Coastguard Worker$(PKG_CONFIG_FILE) : ${PKG_CONFIG_SOURCE_FILE}.template $(BUILD_PREFIX) $(VERSION_FILE)
387*58e6ee5fSAndroid Build Coastguard Worker	$(Q) $(call do_make_pkgconfig_file,$(prefix))
388*58e6ee5fSAndroid Build Coastguard Worker
389*58e6ee5fSAndroid Build Coastguard Workertrace-cmd: force $(LIBTRACECMD_STATIC) \
390*58e6ee5fSAndroid Build Coastguard Worker	force $(obj)/lib/trace-cmd/plugins/tracecmd_plugin_dir
391*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/tracecmd $(obj)/tracecmd/$@
392*58e6ee5fSAndroid Build Coastguard Worker
393*58e6ee5fSAndroid Build Coastguard Worker$(LIBTRACECMD_STATIC): force
394*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd $@
395*58e6ee5fSAndroid Build Coastguard Worker
396*58e6ee5fSAndroid Build Coastguard Worker$(LIBTRACECMD_SHARED): force
397*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd libtracecmd.so
398*58e6ee5fSAndroid Build Coastguard Worker
399*58e6ee5fSAndroid Build Coastguard Workerlibtracecmd.a: $(LIBTRACECMD_STATIC)
400*58e6ee5fSAndroid Build Coastguard Workerlibtracecmd.so: $(LIBTRACECMD_SHARED)
401*58e6ee5fSAndroid Build Coastguard Worker
402*58e6ee5fSAndroid Build Coastguard Workerlibs: $(LIBTRACECMD_SHARED) $(PKG_CONFIG_FILE)
403*58e6ee5fSAndroid Build Coastguard Worker
404*58e6ee5fSAndroid Build Coastguard WorkerVERSION = $(LIBTC_VERSION)
405*58e6ee5fSAndroid Build Coastguard WorkerPATCHLEVEL = $(LIBTC_PATCHLEVEL)
406*58e6ee5fSAndroid Build Coastguard WorkerEXTRAVERSION = $(LIBTC_EXTRAVERSION)
407*58e6ee5fSAndroid Build Coastguard Worker
408*58e6ee5fSAndroid Build Coastguard Workerdefine make_version.h
409*58e6ee5fSAndroid Build Coastguard Worker  (echo '/* This file is automatically generated. Do not modify. */';		\
410*58e6ee5fSAndroid Build Coastguard Worker   echo \#define VERSION_CODE $(shell						\
411*58e6ee5fSAndroid Build Coastguard Worker   expr $(VERSION) \* 256 + $(PATCHLEVEL));					\
412*58e6ee5fSAndroid Build Coastguard Worker   echo '#define EXTRAVERSION ' $(EXTRAVERSION);				\
413*58e6ee5fSAndroid Build Coastguard Worker   echo '#define VERSION_STRING "'$(VERSION).$(PATCHLEVEL).$(EXTRAVERSION)'"';	\
414*58e6ee5fSAndroid Build Coastguard Worker  ) > $1
415*58e6ee5fSAndroid Build Coastguard Workerendef
416*58e6ee5fSAndroid Build Coastguard Worker
417*58e6ee5fSAndroid Build Coastguard Workerdefine update_version.h
418*58e6ee5fSAndroid Build Coastguard Worker  ($(call make_version.h, $@.tmp);		\
419*58e6ee5fSAndroid Build Coastguard Worker    if [ -r $@ ] && cmp -s $@ $@.tmp; then	\
420*58e6ee5fSAndroid Build Coastguard Worker      rm -f $@.tmp;				\
421*58e6ee5fSAndroid Build Coastguard Worker    else					\
422*58e6ee5fSAndroid Build Coastguard Worker      echo '  UPDATE                 $@';	\
423*58e6ee5fSAndroid Build Coastguard Worker      mv -f $@.tmp $@;				\
424*58e6ee5fSAndroid Build Coastguard Worker    fi);
425*58e6ee5fSAndroid Build Coastguard Workerendef
426*58e6ee5fSAndroid Build Coastguard Worker
427*58e6ee5fSAndroid Build Coastguard Worker$(VERSION_FILE): force
428*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(call update_version.h)
429*58e6ee5fSAndroid Build Coastguard Worker
430*58e6ee5fSAndroid Build Coastguard Workergui: force
431*58e6ee5fSAndroid Build Coastguard Worker	@echo "***************************"
432*58e6ee5fSAndroid Build Coastguard Worker	@echo "  KernelShark has moved!"
433*58e6ee5fSAndroid Build Coastguard Worker	@echo "  Please use its new home at https://git.kernel.org/pub/scm/utils/trace-cmd/kernel-shark.git/"
434*58e6ee5fSAndroid Build Coastguard Worker	@echo "***************************"
435*58e6ee5fSAndroid Build Coastguard Worker
436*58e6ee5fSAndroid Build Coastguard Workertest: force $(LIBTRACECMD_STATIC)
437*58e6ee5fSAndroid Build Coastguard Workerifneq ($(CUNIT_INSTALLED),1)
438*58e6ee5fSAndroid Build Coastguard Worker	$(error CUnit framework not installed, cannot build unit tests))
439*58e6ee5fSAndroid Build Coastguard Workerendif
440*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/utest $@
441*58e6ee5fSAndroid Build Coastguard Worker
442*58e6ee5fSAndroid Build Coastguard Workerplugins_tracecmd: force $(obj)/lib/trace-cmd/plugins/tracecmd_plugin_dir
443*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd/plugins
444*58e6ee5fSAndroid Build Coastguard Worker
445*58e6ee5fSAndroid Build Coastguard Workerplugins: plugins_tracecmd
446*58e6ee5fSAndroid Build Coastguard Worker
447*58e6ee5fSAndroid Build Coastguard Worker$(obj)/lib/trace-cmd/plugins/tracecmd_plugin_dir: force
448*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd/plugins $@
449*58e6ee5fSAndroid Build Coastguard Worker
450*58e6ee5fSAndroid Build Coastguard Workershow_other_make:
451*58e6ee5fSAndroid Build Coastguard Worker	@echo "Note: to build man pages, type \"make doc\""
452*58e6ee5fSAndroid Build Coastguard Worker	@echo "      to build unit tests, type \"make test\""
453*58e6ee5fSAndroid Build Coastguard Worker
454*58e6ee5fSAndroid Build Coastguard WorkerPHONY += show_other_make
455*58e6ee5fSAndroid Build Coastguard Worker
456*58e6ee5fSAndroid Build Coastguard Workerdefine find_tag_files
457*58e6ee5fSAndroid Build Coastguard Worker	find . -name '\.pc' -prune -o -name '*\.[ch]' -print -o -name '*\.[ch]pp' \
458*58e6ee5fSAndroid Build Coastguard Worker		! -name '\.#' -print
459*58e6ee5fSAndroid Build Coastguard Workerendef
460*58e6ee5fSAndroid Build Coastguard Worker
461*58e6ee5fSAndroid Build Coastguard Workertags:	force
462*58e6ee5fSAndroid Build Coastguard Worker	$(RM) tags
463*58e6ee5fSAndroid Build Coastguard Worker	$(call find_tag_files) | xargs ctags --extra=+f --c-kinds=+px
464*58e6ee5fSAndroid Build Coastguard Worker
465*58e6ee5fSAndroid Build Coastguard WorkerTAGS:	force
466*58e6ee5fSAndroid Build Coastguard Worker	$(RM) TAGS
467*58e6ee5fSAndroid Build Coastguard Worker	$(call find_tag_files) | xargs etags
468*58e6ee5fSAndroid Build Coastguard Worker
469*58e6ee5fSAndroid Build Coastguard Workercscope: force
470*58e6ee5fSAndroid Build Coastguard Worker	$(RM) cscope*
471*58e6ee5fSAndroid Build Coastguard Worker	$(call find_tag_files) | cscope -b -q
472*58e6ee5fSAndroid Build Coastguard Worker
473*58e6ee5fSAndroid Build Coastguard Workerinstall_plugins_tracecmd: force
474*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd/plugins install_plugins
475*58e6ee5fSAndroid Build Coastguard Worker
476*58e6ee5fSAndroid Build Coastguard Workerinstall_plugins: install_plugins_tracecmd
477*58e6ee5fSAndroid Build Coastguard Worker
478*58e6ee5fSAndroid Build Coastguard Workerinstall_python: force
479*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/python $@
480*58e6ee5fSAndroid Build Coastguard Worker
481*58e6ee5fSAndroid Build Coastguard Workerinstall_bash_completion: force
482*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(call do_install_data,$(src)/tracecmd/trace-cmd.bash,$(BASH_COMPLETE_DIR))
483*58e6ee5fSAndroid Build Coastguard Worker
484*58e6ee5fSAndroid Build Coastguard Workerinstall_cmd: all_cmd install_plugins install_python install_bash_completion
485*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(call do_install,$(obj)/tracecmd/trace-cmd,$(bindir_SQ))
486*58e6ee5fSAndroid Build Coastguard Worker
487*58e6ee5fSAndroid Build Coastguard Workerinstall: install_cmd
488*58e6ee5fSAndroid Build Coastguard Worker	@echo "Note: to install man pages, type \"make install_doc\""
489*58e6ee5fSAndroid Build Coastguard Worker
490*58e6ee5fSAndroid Build Coastguard Workerinstall_gui: force
491*58e6ee5fSAndroid Build Coastguard Worker	@echo "Nothing to do here."
492*58e6ee5fSAndroid Build Coastguard Worker	@echo " Have you tried https://git.kernel.org/pub/scm/utils/trace-cmd/kernel-shark.git/"
493*58e6ee5fSAndroid Build Coastguard Worker
494*58e6ee5fSAndroid Build Coastguard Workerinstall_libs: libs
495*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/lib/trace-cmd/ $@
496*58e6ee5fSAndroid Build Coastguard Worker
497*58e6ee5fSAndroid Build Coastguard Workerdoc:
498*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/Documentation all
499*58e6ee5fSAndroid Build Coastguard Worker
500*58e6ee5fSAndroid Build Coastguard Workerdoc_clean:
501*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/Documentation clean
502*58e6ee5fSAndroid Build Coastguard Worker
503*58e6ee5fSAndroid Build Coastguard Workerinstall_doc:
504*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/Documentation install
505*58e6ee5fSAndroid Build Coastguard Worker
506*58e6ee5fSAndroid Build Coastguard Workerclean:
507*58e6ee5fSAndroid Build Coastguard Worker	$(RM) *.o *~ *.a *.so .*.d
508*58e6ee5fSAndroid Build Coastguard Worker	$(RM) tags TAGS cscope* $(PKG_CONFIG_SOURCE_FILE) $(VERSION_FILE)
509*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/lib/trace-cmd clean
510*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/lib/trace-cmd/plugins clean
511*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/utest clean
512*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/python clean
513*58e6ee5fSAndroid Build Coastguard Worker	$(MAKE) -C $(src)/tracecmd clean
514*58e6ee5fSAndroid Build Coastguard Worker
515*58e6ee5fSAndroid Build Coastguard Workerdefine build_uninstall_script
516*58e6ee5fSAndroid Build Coastguard Worker	$(Q)mkdir $(BUILD_OUTPUT)/tmp_build
517*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src) DESTDIR=$(BUILD_OUTPUT)/tmp_build O=$(BUILD_OUTPUT) $1 > /dev/null
518*58e6ee5fSAndroid Build Coastguard Worker	$(Q)find $(BUILD_OUTPUT)/tmp_build ! -type d -printf "%P\n" > $(BUILD_OUTPUT)/build_$2
519*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(RM) -rf $(BUILD_OUTPUT)/tmp_build
520*58e6ee5fSAndroid Build Coastguard Workerendef
521*58e6ee5fSAndroid Build Coastguard Worker
522*58e6ee5fSAndroid Build Coastguard Workerbuild_uninstall: $(BUILD_PREFIX)
523*58e6ee5fSAndroid Build Coastguard Worker	$(call build_uninstall_script,install,uninstall)
524*58e6ee5fSAndroid Build Coastguard Worker
525*58e6ee5fSAndroid Build Coastguard Worker$(BUILD_OUTPUT)/build_uninstall: build_uninstall
526*58e6ee5fSAndroid Build Coastguard Worker
527*58e6ee5fSAndroid Build Coastguard Workerbuild_libs_uninstall: $(BUILD_PREFIX)
528*58e6ee5fSAndroid Build Coastguard Worker	$(call build_uninstall_script,install_libs,libs_uninstall)
529*58e6ee5fSAndroid Build Coastguard Worker
530*58e6ee5fSAndroid Build Coastguard Worker$(BUILD_OUTPUT)/build_libs_uninstall: build_libs_uninstall
531*58e6ee5fSAndroid Build Coastguard Worker
532*58e6ee5fSAndroid Build Coastguard Workerdefine uninstall_file
533*58e6ee5fSAndroid Build Coastguard Worker	if [ -f $(DESTDIR)/$1 -o -h $(DESTDIR)/$1 ]; then \
534*58e6ee5fSAndroid Build Coastguard Worker		$(call print_uninstall,$(DESTDIR)/$1)$(RM) $(DESTDIR)/$1; \
535*58e6ee5fSAndroid Build Coastguard Worker	fi;
536*58e6ee5fSAndroid Build Coastguard Workerendef
537*58e6ee5fSAndroid Build Coastguard Worker
538*58e6ee5fSAndroid Build Coastguard Workeruninstall: $(BUILD_OUTPUT)/build_uninstall
539*58e6ee5fSAndroid Build Coastguard Worker	@$(foreach file,$(shell cat $(BUILD_OUTPUT)/build_uninstall),$(call uninstall_file,$(file)))
540*58e6ee5fSAndroid Build Coastguard Worker
541*58e6ee5fSAndroid Build Coastguard Workeruninstall_libs: $(BUILD_OUTPUT)/build_libs_uninstall
542*58e6ee5fSAndroid Build Coastguard Worker	@$(foreach file,$(shell cat $(BUILD_OUTPUT)/build_libs_uninstall),$(call uninstall_file,$(file)))
543*58e6ee5fSAndroid Build Coastguard Worker
544*58e6ee5fSAndroid Build Coastguard Worker##### PYTHON STUFF #####
545*58e6ee5fSAndroid Build Coastguard Worker
546*58e6ee5fSAndroid Build Coastguard Workerreport_noswig: force
547*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo
548*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo "    NO_PYTHON forced: swig not installed, not compiling python plugins"
549*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo
550*58e6ee5fSAndroid Build Coastguard Worker
551*58e6ee5fSAndroid Build Coastguard Workerreport_nopythondev: force
552*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo
553*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo "    python-dev is not installed, not compiling python plugins"
554*58e6ee5fSAndroid Build Coastguard Worker	$(Q)echo
555*58e6ee5fSAndroid Build Coastguard Worker
556*58e6ee5fSAndroid Build Coastguard Workerifndef NO_PYTHON
557*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_INCLUDES = `$(PKG_CONFIG) --cflags $(PYTHON_PKGCONFIG_VERS)`
558*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_LDFLAGS = `$(PKG_CONFIG) --libs $(PYTHON_PKGCONFIG_VERS)` \
559*58e6ee5fSAndroid Build Coastguard Worker		$(shell $(PYTHON_VERS)-config --ldflags)
560*58e6ee5fSAndroid Build Coastguard WorkerPYGTK_CFLAGS = `$(PKG_CONFIG) --cflags pygtk-2.0`
561*58e6ee5fSAndroid Build Coastguard Workerelse
562*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_INCLUDES =
563*58e6ee5fSAndroid Build Coastguard WorkerPYTHON_LDFLAGS =
564*58e6ee5fSAndroid Build Coastguard WorkerPYGTK_CFLAGS =
565*58e6ee5fSAndroid Build Coastguard Workerendif
566*58e6ee5fSAndroid Build Coastguard Worker
567*58e6ee5fSAndroid Build Coastguard Workerexport PYTHON_INCLUDES
568*58e6ee5fSAndroid Build Coastguard Workerexport PYTHON_LDFLAGS
569*58e6ee5fSAndroid Build Coastguard Workerexport PYGTK_CFLAGS
570*58e6ee5fSAndroid Build Coastguard Worker
571*58e6ee5fSAndroid Build Coastguard Workerctracecmd.so: force $(LIBTRACECMD_STATIC)
572*58e6ee5fSAndroid Build Coastguard Worker	$(Q)$(MAKE) -C $(src)/python $@
573*58e6ee5fSAndroid Build Coastguard Worker
574*58e6ee5fSAndroid Build Coastguard WorkerPHONY += python
575*58e6ee5fSAndroid Build Coastguard Workerpython: $(PYTHON)
576*58e6ee5fSAndroid Build Coastguard Worker
577*58e6ee5fSAndroid Build Coastguard Worker
578*58e6ee5fSAndroid Build Coastguard Workerdist:
579*58e6ee5fSAndroid Build Coastguard Worker	git archive --format=tar --prefix=trace-cmd-$(TRACECMD_VERSION)/ HEAD \
580*58e6ee5fSAndroid Build Coastguard Worker		> ../trace-cmd-$(TRACECMD_VERSION).tar
581*58e6ee5fSAndroid Build Coastguard Worker	cat ../trace-cmd-$(TRACECMD_VERSION).tar | \
582*58e6ee5fSAndroid Build Coastguard Worker		bzip2 -c9 > ../trace-cmd-$(TRACECMD_VERSION).tar.bz2
583*58e6ee5fSAndroid Build Coastguard Worker	cat ../trace-cmd-$(TRACECMD_VERSION).tar | \
584*58e6ee5fSAndroid Build Coastguard Worker		xz -e -c8 > ../trace-cmd-$(TRACECMD_VERSION).tar.xz
585*58e6ee5fSAndroid Build Coastguard Worker
586*58e6ee5fSAndroid Build Coastguard WorkerPHONY += force
587*58e6ee5fSAndroid Build Coastguard Workerforce:
588*58e6ee5fSAndroid Build Coastguard Worker
589*58e6ee5fSAndroid Build Coastguard Worker# Declare the contents of the .PHONY variable as phony.  We keep that
590*58e6ee5fSAndroid Build Coastguard Worker# information in a variable so we can use it in if_changed and friends.
591*58e6ee5fSAndroid Build Coastguard Worker.PHONY: $(PHONY)
592