xref: /aosp_15_r20/external/libtracefs/scripts/utils.mk (revision 287e80b3a36113050663245e7f2c00d274188f18)
1*287e80b3SSadaf Ebrahimi# SPDX-License-Identifier: LGPL-2.1
2*287e80b3SSadaf Ebrahimi
3*287e80b3SSadaf Ebrahimi# Utils
4*287e80b3SSadaf Ebrahimi
5*287e80b3SSadaf Ebrahimi PWD		:= $(shell /bin/pwd)
6*287e80b3SSadaf Ebrahimi GOBJ		= $(notdir $(strip $@))
7*287e80b3SSadaf Ebrahimi BASE1		= $(notdir $(strip $1))
8*287e80b3SSadaf Ebrahimi BASE2		= $(notdir $(strip $2))
9*287e80b3SSadaf Ebrahimi BASEPWD	= $(notdir $(strip $(PWD)))
10*287e80b3SSadaf Ebrahimi
11*287e80b3SSadaf Ebrahimi
12*287e80b3SSadaf Ebrahimiifeq ($(VERBOSE),1)
13*287e80b3SSadaf Ebrahimi  Q =
14*287e80b3SSadaf Ebrahimi  S =
15*287e80b3SSadaf Ebrahimielse
16*287e80b3SSadaf Ebrahimi  Q = @
17*287e80b3SSadaf Ebrahimi  S = -s
18*287e80b3SSadaf Ebrahimiendif
19*287e80b3SSadaf Ebrahimi
20*287e80b3SSadaf Ebrahimi# Use empty print_* macros if either SILENT or VERBOSE.
21*287e80b3SSadaf Ebrahimiifeq ($(findstring 1,$(SILENT)$(VERBOSE)),1)
22*287e80b3SSadaf Ebrahimi  print_compile =
23*287e80b3SSadaf Ebrahimi  print_app_build =
24*287e80b3SSadaf Ebrahimi  print_fpic_compile =
25*287e80b3SSadaf Ebrahimi  print_shared_lib_compile =
26*287e80b3SSadaf Ebrahimi  print_plugin_obj_compile =
27*287e80b3SSadaf Ebrahimi  print_plugin_build =
28*287e80b3SSadaf Ebrahimi  print_install =
29*287e80b3SSadaf Ebrahimi  print_uninstall =
30*287e80b3SSadaf Ebrahimi  print_update =
31*287e80b3SSadaf Ebrahimi  print_descend =
32*287e80b3SSadaf Ebrahimi  print_clean =
33*287e80b3SSadaf Ebrahimi  print_extract =
34*287e80b3SSadaf Ebrahimi  print_sample_build =
35*287e80b3SSadaf Ebrahimi  print_sample_obj =
36*287e80b3SSadaf Ebrahimielse
37*287e80b3SSadaf Ebrahimi  print_compile =		echo '  COMPILE            '$(GOBJ);
38*287e80b3SSadaf Ebrahimi  print_app_build =		echo '  BUILD              '$(GOBJ);
39*287e80b3SSadaf Ebrahimi  print_fpic_compile =		echo '  COMPILE FPIC       '$(GOBJ);
40*287e80b3SSadaf Ebrahimi  print_shared_lib_compile =	echo '  COMPILE SHARED LIB '$(GOBJ);
41*287e80b3SSadaf Ebrahimi  print_plugin_obj_compile =	echo '  COMPILE PLUGIN OBJ '$(GOBJ);
42*287e80b3SSadaf Ebrahimi  print_plugin_build =		echo '  BUILD PLUGIN       '$(GOBJ);
43*287e80b3SSadaf Ebrahimi  print_static_lib_build =	echo '  BUILD STATIC LIB   '$(GOBJ);
44*287e80b3SSadaf Ebrahimi  print_install =		echo '  INSTALL     '$1'	to	$(DESTDIR_SQ)$2';
45*287e80b3SSadaf Ebrahimi  print_uninstall =		echo '  UNINSTALL     $(DESTDIR_SQ)$1';
46*287e80b3SSadaf Ebrahimi  print_update =		echo '  UPDATE             '$(GOBJ);
47*287e80b3SSadaf Ebrahimi  print_descend =		echo '  DESCEND            '$(BASE1) $(BASE2);
48*287e80b3SSadaf Ebrahimi  print_clean =			echo '  CLEAN              '$(BASEPWD);
49*287e80b3SSadaf Ebrahimi  print_extract =		echo '  EXTRACT            '$(GOBJ);
50*287e80b3SSadaf Ebrahimi  print_sample_build =		echo '  COMPILE SAMPLE     '$(GOBJ);
51*287e80b3SSadaf Ebrahimi  print_sample_obj =		echo '  COMPILE SAMPLE OBJ '$(GOBJ);
52*287e80b3SSadaf Ebrahimiendif
53*287e80b3SSadaf Ebrahimi
54*287e80b3SSadaf Ebrahimido_fpic_compile =					\
55*287e80b3SSadaf Ebrahimi	($(print_fpic_compile)				\
56*287e80b3SSadaf Ebrahimi	$(CC) -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@ -MP -c $(CPPFLAGS) $(CFLAGS) $(EXT) -fPIC $< -o $@)
57*287e80b3SSadaf Ebrahimi
58*287e80b3SSadaf Ebrahimido_compile =							\
59*287e80b3SSadaf Ebrahimi	($(if $(GENERATE_PIC), $(do_fpic_compile),		\
60*287e80b3SSadaf Ebrahimi	 $(print_compile)					\
61*287e80b3SSadaf Ebrahimi	 $(CC) -Wp,-MMD,$(@D)/.$(@F).d,-MT,$@ -MP -c $(CPPFLAGS) $(CFLAGS) $(EXT) $< -o $@))
62*287e80b3SSadaf Ebrahimi
63*287e80b3SSadaf Ebrahimido_app_build =						\
64*287e80b3SSadaf Ebrahimi	($(print_app_build)				\
65*287e80b3SSadaf Ebrahimi	$(CC) $^ -rdynamic -o $@ $(LDFLAGS) $(CONFIG_LIBS) $(LIBS))
66*287e80b3SSadaf Ebrahimi
67*287e80b3SSadaf Ebrahimido_build_static_lib =				\
68*287e80b3SSadaf Ebrahimi	($(print_static_lib_build)		\
69*287e80b3SSadaf Ebrahimi	if [ -f $@ ]; then			\
70*287e80b3SSadaf Ebrahimi	    mv $@ $@.rm; $(RM) $@.rm;		\
71*287e80b3SSadaf Ebrahimi	fi;					\
72*287e80b3SSadaf Ebrahimi	$(AR) rcs $@ $^)
73*287e80b3SSadaf Ebrahimi
74*287e80b3SSadaf Ebrahimido_compile_shared_library =			\
75*287e80b3SSadaf Ebrahimi	($(print_shared_lib_compile)		\
76*287e80b3SSadaf Ebrahimi	$(CC) --shared $^ '-Wl,-soname,$(1),-rpath=$$ORIGIN' -o $@ $(LDFLAGS) $(LIBS))
77*287e80b3SSadaf Ebrahimi
78*287e80b3SSadaf Ebrahimido_compile_plugin_obj =				\
79*287e80b3SSadaf Ebrahimi	($(print_plugin_obj_compile)		\
80*287e80b3SSadaf Ebrahimi	$(CC) -c $(CPPFLAGS) $(CFLAGS) -fPIC -o $@ $<)
81*287e80b3SSadaf Ebrahimi
82*287e80b3SSadaf Ebrahimido_plugin_build =				\
83*287e80b3SSadaf Ebrahimi	($(print_plugin_build)			\
84*287e80b3SSadaf Ebrahimi	$(CC) $(CFLAGS) $(LDFLAGS) -shared -nostartfiles -o $@ $<)
85*287e80b3SSadaf Ebrahimi
86*287e80b3SSadaf Ebrahimido_compile_python_plugin_obj =			\
87*287e80b3SSadaf Ebrahimi	($(print_plugin_obj_compile)		\
88*287e80b3SSadaf Ebrahimi	$(CC) -c $(CPPFLAGS) $(CFLAGS) $(PYTHON_DIR_SQ) $(PYTHON_INCLUDES) -fPIC -o $@ $<)
89*287e80b3SSadaf Ebrahimi
90*287e80b3SSadaf Ebrahimido_python_plugin_build =			\
91*287e80b3SSadaf Ebrahimi	($(print_plugin_build)			\
92*287e80b3SSadaf Ebrahimi	$(CC) $< -shared $(LDFLAGS) $(PYTHON_LDFLAGS) -o $@)
93*287e80b3SSadaf Ebrahimi
94*287e80b3SSadaf Ebrahimido_clean =					\
95*287e80b3SSadaf Ebrahimi	($(print_clean)				\
96*287e80b3SSadaf Ebrahimi	$(RM) $1)
97*287e80b3SSadaf Ebrahimi
98*287e80b3SSadaf Ebrahimiextract_example =				\
99*287e80b3SSadaf Ebrahimi	$(Q)($(print_extract)			\
100*287e80b3SSadaf Ebrahimi	cat $1 | sed -ne '/^EXAMPLE/,/FILES/ { /EXAMPLE/,+2d ; /^FILES/d ;  /^--/d ; p}' > $2)
101*287e80b3SSadaf Ebrahimi
102*287e80b3SSadaf Ebrahimido_sample_build =							\
103*287e80b3SSadaf Ebrahimi	$(Q)($(print_sample_build)					\
104*287e80b3SSadaf Ebrahimi	$(CC) -o $1 $2 $(CFLAGS) $(LIBTRACEFS_STATIC) $(LIBTRACEEVENT_LIBS) -lpthread)
105*287e80b3SSadaf Ebrahimi
106*287e80b3SSadaf Ebrahimido_sample_obj =									\
107*287e80b3SSadaf Ebrahimi	$(Q)($(print_sample_obj)						\
108*287e80b3SSadaf Ebrahimi	$(CC) -g -Wall -c $(CFLAGS) -o $1 $2 -I../include/ $(LIBTRACEEVENT_INCLUDES))
109*287e80b3SSadaf Ebrahimi
110*287e80b3SSadaf Ebrahimiifneq ($(findstring $(MAKEFLAGS), w),w)
111*287e80b3SSadaf EbrahimiPRINT_DIR = --no-print-directory
112*287e80b3SSadaf Ebrahimielse
113*287e80b3SSadaf EbrahimiNO_SUBDIR = :
114*287e80b3SSadaf Ebrahimiendif
115*287e80b3SSadaf Ebrahimi
116*287e80b3SSadaf Ebrahimi#
117*287e80b3SSadaf Ebrahimi# Define a callable command for descending to a new directory
118*287e80b3SSadaf Ebrahimi#
119*287e80b3SSadaf Ebrahimi# Call by doing: $(call descend,directory[,target])
120*287e80b3SSadaf Ebrahimi#
121*287e80b3SSadaf Ebrahimidescend = \
122*287e80b3SSadaf Ebrahimi	($(print_descend)		\
123*287e80b3SSadaf Ebrahimi	mkdir -p $(obj)/$(BASE1); \
124*287e80b3SSadaf Ebrahimi	$(MAKE) $(PRINT_DIR) bdir=$(obj)/$(BASE1) -C $(1) $(2))
125*287e80b3SSadaf Ebrahimi
126*287e80b3SSadaf Ebrahimidescend_clean = \
127*287e80b3SSadaf Ebrahimi	$(MAKE) $(PRINT_DIR) bdir=$(obj)/$(BASE1) -C $(1) clean
128*287e80b3SSadaf Ebrahimi
129*287e80b3SSadaf Ebrahimidefine make_version.h
130*287e80b3SSadaf Ebrahimi	(echo '/* This file is automatically generated. Do not modify. */';		\
131*287e80b3SSadaf Ebrahimi	echo \#define VERSION_CODE $(shell						\
132*287e80b3SSadaf Ebrahimi	expr $(VERSION) \* 256 + $(PATCHLEVEL));					\
133*287e80b3SSadaf Ebrahimi	echo '#define EXTRAVERSION ' $(EXTRAVERSION);					\
134*287e80b3SSadaf Ebrahimi	echo '#define VERSION_STRING "'$(VERSION).$(PATCHLEVEL).$(EXTRAVERSION)'"';	\
135*287e80b3SSadaf Ebrahimi	echo '#define FILE_VERSION '$(FILE_VERSION);					\
136*287e80b3SSadaf Ebrahimi	if [ -d $(src)/.git ]; then							\
137*287e80b3SSadaf Ebrahimi	  d=`git diff`;									\
138*287e80b3SSadaf Ebrahimi	  x="";										\
139*287e80b3SSadaf Ebrahimi	  if [ ! -z "$$d" ]; then x="+"; fi;						\
140*287e80b3SSadaf Ebrahimi	  echo '#define VERSION_GIT "'$(shell 						\
141*287e80b3SSadaf Ebrahimi		git log -1 --pretty=format:"%H" 2>/dev/null)$$x'"';			\
142*287e80b3SSadaf Ebrahimi	else										\
143*287e80b3SSadaf Ebrahimi	  echo '#define VERSION_GIT "not-a-git-repo"';					\
144*287e80b3SSadaf Ebrahimi	fi										\
145*287e80b3SSadaf Ebrahimi	) > $1
146*287e80b3SSadaf Ebrahimiendef
147*287e80b3SSadaf Ebrahimi
148*287e80b3SSadaf Ebrahimidefine update_version.h
149*287e80b3SSadaf Ebrahimi	($(call make_version.h, $@.tmp);				\
150*287e80b3SSadaf Ebrahimi	if [ -r $@ ] && cmp -s $@ $@.tmp; then				\
151*287e80b3SSadaf Ebrahimi		rm -f $@.tmp;						\
152*287e80b3SSadaf Ebrahimi	else								\
153*287e80b3SSadaf Ebrahimi		$(print_update)						\
154*287e80b3SSadaf Ebrahimi		mv -f $@.tmp $@;					\
155*287e80b3SSadaf Ebrahimi	fi);
156*287e80b3SSadaf Ebrahimiendef
157*287e80b3SSadaf Ebrahimi
158*287e80b3SSadaf Ebrahimidefine update_dir
159*287e80b3SSadaf Ebrahimi	(echo $1 > $@.tmp;	\
160*287e80b3SSadaf Ebrahimi	if [ -r $@ ] && cmp -s $@ $@.tmp; then				\
161*287e80b3SSadaf Ebrahimi		rm -f $@.tmp;						\
162*287e80b3SSadaf Ebrahimi	else								\
163*287e80b3SSadaf Ebrahimi		$(print_update)						\
164*287e80b3SSadaf Ebrahimi		mv -f $@.tmp $@;					\
165*287e80b3SSadaf Ebrahimi	fi);
166*287e80b3SSadaf Ebrahimiendef
167*287e80b3SSadaf Ebrahimi
168*287e80b3SSadaf Ebrahimidefine build_prefix
169*287e80b3SSadaf Ebrahimi	(echo $1 > $@.tmp;	\
170*287e80b3SSadaf Ebrahimi	if [ -r $@ ] && cmp -s $@ $@.tmp; then				\
171*287e80b3SSadaf Ebrahimi		rm -f $@.tmp;						\
172*287e80b3SSadaf Ebrahimi	else								\
173*287e80b3SSadaf Ebrahimi		$(print_update)						\
174*287e80b3SSadaf Ebrahimi		mv -f $@.tmp $@;					\
175*287e80b3SSadaf Ebrahimi	fi);
176*287e80b3SSadaf Ebrahimiendef
177*287e80b3SSadaf Ebrahimi
178*287e80b3SSadaf Ebrahimidefine do_install_mkdir
179*287e80b3SSadaf Ebrahimi	if [ ! -d '$(DESTDIR_SQ)$1' ]; then		\
180*287e80b3SSadaf Ebrahimi		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1';	\
181*287e80b3SSadaf Ebrahimi	fi
182*287e80b3SSadaf Ebrahimiendef
183*287e80b3SSadaf Ebrahimi
184*287e80b3SSadaf Ebrahimidefine do_install
185*287e80b3SSadaf Ebrahimi	$(print_install)				\
186*287e80b3SSadaf Ebrahimi	$(call do_install_mkdir,$2);			\
187*287e80b3SSadaf Ebrahimi	$(INSTALL) $(if $3,-m $3,) $1 '$(DESTDIR_SQ)$2'
188*287e80b3SSadaf Ebrahimiendef
189*287e80b3SSadaf Ebrahimi
190*287e80b3SSadaf Ebrahimidefine do_install_pkgconfig_file
191*287e80b3SSadaf Ebrahimi	if [ -n "${pkgconfig_dir}" ]; then 					\
192*287e80b3SSadaf Ebrahimi		$(call do_install,$(PKG_CONFIG_FILE),$(pkgconfig_dir),644); 	\
193*287e80b3SSadaf Ebrahimi	else 									\
194*287e80b3SSadaf Ebrahimi		(echo Failed to locate pkg-config directory) 1>&2;		\
195*287e80b3SSadaf Ebrahimi	fi
196*287e80b3SSadaf Ebrahimiendef
197