ext-stamp-absprefix = $(call ext-absprefix,$(call stamp-type,$1))
ext-stamp-tool = $(call tool,$(call stamp-type,$1),$2)
+$(foreach e,$(EXTERNALS),\
+ $(eval $e_VERSION := $$(shell cd $$(call ext-srcdir,$e) && $$(abs_srcdir)/auto-version)))
+
EXTSTAMPS = $(call ext-stamps,$(EXTERNALS),$(FLAVOURS))
$(EXTSTAMPS): \
CLEANFILES += $(OUTDIR)/pkg/lib/*/lib*.so $(OUTDIR)/lib*.so
+###--------------------------------------------------------------------------
+### Android string resource generation.
+
+GENSTRINGS += package=PACKAGE
+GENSTRINGS += version=VERSION
+GENSTRINGS += vsn=VSN
+
+$(foreach e,$(EXTERNALS),\
+ $(eval GENSTRINGS += $e_version=$e_VERSION))
+
+BUILD := $(shell uuid -v4)
+GENSTRINGS += build_uuid=BUILD
+
+genstring-name = $(firstword $(subst =, ,$1))
+genstring-value = $($(word 2,$(subst =, ,$1)))
+
+define gen-strings
+ $(V_AT)mkdir -p $(dir $1)
+ $(call v_tag,GEN)set -e; rm -f $1.new; exec >$1.new; \
+ echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; \
+ echo "<resources>"; \
+ $(foreach g,$(GENSTRINGS), \
+ echo " <string name=\"auto_$(call genstring-name,$g)\">$(call genstring-value,$g)</string>";) \
+ echo "</resources>"
+ $(V_AT)mv $1.new $1
+endef
+$(OUTDIR)/res.dummy/values/auto.xml: Makefile
+ $(call gen-strings,$@)
+
###--------------------------------------------------------------------------
### Java and Scala building.
AAPTFLAGS = \
--min-sdk-version $(MINAPI) --target-sdk-version $(TARGETAPI) \
- --version-name "$(VERSION)" --version-code $(VSN)
+ --version-name "$(VERSION)" --version-code $(VSN) --auto-add-overlay
-$(OUTDIR)/src/R.java: AndroidManifest.xml
+$(OUTDIR)/src/R.java: AndroidManifest.xml $(OUTDIR)/res.dummy/values/auto.xml
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,AAPT)aapt package $(AAPTFLAGS) \
- -M AndroidManifest.xml -S res/ -I $(ANDROID_JAR) \
+ -M AndroidManifest.xml -S res/ -S $(OUTDIR)/res.dummy/ \
+ -I $(ANDROID_JAR) \
-J $(dir $@) --generate-dependencies
CLEANFILES += $(OUTDIR)/src/R.java $(OUTDIR)/src/R.java.d
-include $(OUTDIR)/src/R.java.d
$(V_AT)mkdir -p $(dir $@)
$(call v_tag,DX)dx --dex --output=$@ $(CLASSDIR) $(JARDIR)
+$(OUTDIR)/res.volatile/values/auto.xml: $(INSTFILES)
+ $(call gen-strings,$@)
+
$(foreach v,$(VARIANTS),$(OUTDIR)/tripe-$v.unsigned.apk): \
-$(OUTDIR)/tripe-%.unsigned.apk: $(INSTFILES)
+$(OUTDIR)/tripe-%.unsigned.apk: $(INSTFILES) $(OUTDIR)/res.volatile/values/auto.xml
$(call v_tag,AAPT)aapt package -f $(AAPTFLAGS) $(AAPTFLAGS.$*) \
- -M AndroidManifest.xml -S res/ -I $(ANDROID_JAR) \
- -F $@ $(OUTDIR)/pkg/
+ -M AndroidManifest.xml -S res/ -S $(OUTDIR)/res.volatile/ \
+ -I $(ANDROID_JAR) -F $@ $(OUTDIR)/pkg/
$(foreach v,$(VARIANTS),$(OUTDIR)/tripe-$v.signed.apk): \
$(OUTDIR)/tripe-%.signed.apk: $(OUTDIR)/tripe-%.unsigned.apk $$(KEYSTORE.$$*)