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