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