1# Rename $1 to $2 only if file content differs. Otherwise just delete $1. 2define mv-if-changed 3 if cmp -s $2 $1; then \ 4 rm -f $1; \ 5 else \ 6 $(cmd-echo-silent) ' UPD $2'; \ 7 mv $1 $2; \ 8 fi 9endef 10 11define update-buildcount 12 @$(cmd-echo-silent) ' UPD $(1)' 13 $(q)if [ ! -f $(1) ]; then \ 14 mkdir -p $(dir $(1)); \ 15 echo 1 >$(1); \ 16 else \ 17 expr 0`cat $(1)` + 1 >$(1); \ 18 fi 19endef 20 21# filter-out to workaround objdump warning 22version-o-cflags = $(filter-out -g3,$(CFLAGS) $(core-platform-cflags) \ 23 $(platform-cflags) $(cflagscore)) 24# SOURCE_DATE_EPOCH defined for reproducible builds 25ifneq ($(SOURCE_DATE_EPOCH),) 26date-opts = -d @$(SOURCE_DATE_EPOCH) 27endif 28DATE_STR = `LC_ALL=C date -u $(date-opts)` 29CORE_CC_VERSION = `$(CCcore) -v 2>&1 | grep "version " | sed 's/ *$$//'` 30define gen-version-o 31 $(call update-buildcount,$(link-out-dir)/.buildcount) 32 @$(cmd-echo-silent) ' GEN $(link-out-dir)/version.o' 33 $(q)cd $(link-out-dir) && \ 34 BUILD_COUNT_STR=`cat .buildcount` && \ 35 echo -e "const char core_v_str[] =" \ 36 "\"$(TEE_IMPL_VERSION) \"" \ 37 "\"($(CORE_CC_VERSION)) \"" \ 38 "\"#$${BUILD_COUNT_STR} \"" \ 39 "\"$(DATE_STR) \"" \ 40 "\"$(CFG_KERN_LINKER_ARCH)\";\n" \ 41 | $(CCcore) $(version-o-cflags) \ 42 -xc - -c -o version.o 43endef 44