treble_common.mk: add the vbmeta.img to disable verification

AVB should be disabled for Treble VTS. Otherwise, OEM devices cannot boot
the generic system.img provided by Google.

Bug: 64055917
Test: Compiles and boot a device with the vbmeta.img
Change-Id: I0eaae7beebc8b901d0b4766c2cdc34a27ad02b59
diff --git a/core/Makefile b/core/Makefile
index af3c4cb..966c134 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -2013,6 +2013,14 @@
 vbmetaimage-nodeps:
 	$(build-vbmetaimage-target)
 
+else ifeq (true,$(BOARD_BUILD_DISABLED_VBMETAIMAGE))
+BUILT_DISABLED_VBMETAIMAGE := $(PRODUCT_OUT)/vbmeta.img
+
+INSTALLED_VBMETAIMAGE_TARGET := $(BUILT_DISABLED_VBMETAIMAGE)
+$(INSTALLED_VBMETAIMAGE_TARGET): $(AVBTOOL)
+	$(hide) $(AVBTOOL) make_vbmeta_image \
+	  --flag 2 --padding_size 4096 --output $@
+
 endif # BOARD_AVB_ENABLE
 
 # -----------------------------------------------------------------
diff --git a/target/product/treble_common.mk b/target/product/treble_common.mk
index 52e2441..52af7ea 100644
--- a/target/product/treble_common.mk
+++ b/target/product/treble_common.mk
@@ -214,3 +214,13 @@
 #   Android O.
 PRODUCT_PACKAGES += \
     netutils-wrapper-1.0
+
+# Android Verified Boot (AVB):
+#   Builds a special vbmeta.img that disables AVB verification.
+#   Otherwise, AVB will prevent the device from booting the generic system.img.
+#   Also checks that BOARD_AVB_ENABLE is not set, to prevent adding verity
+#   metadata into system.img.
+ifeq ($(BOARD_AVB_ENABLE),true)
+$(error BOARD_AVB_ENABLE cannot be set for Treble GSI)
+endif
+BOARD_BUILD_DISABLED_VBMETAIMAGE := true