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