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