rainier_defconfig: Add multi-target support

Through OpenBMC and PLDM file.io, Power10 will support multiple MRW
definitions as part of one driver.

In order to achieve this in a staged approach, this commit introduces a
new 'openpower-pnor-p10' package that still creates the expected
pnor-related artifacts and intermediate files, while also creating the
individual files for each of the PNOR partitions (PAYLOAD, BOOTKERNEL)
inside the images/mmc directory. Each of those files will be suffixed
with ".P10" for target-agnostic files, or "uppercase-xml-name" (i.e.,
RAINIER_2U_XML) for target-specific files.

This patch also creates packages rainier-2u-xml and rainier-4u-xml(based
on machine-xml) that are both built and included in rainier_defconfig,
with rainier_2u_xml also serving as the 'legacy' pnor for smooth
transitions purposes.

Several other packages makefiles had to be reworked, but that should
allow both legacy openpower-pnor as well as the new mmc variant to build.

Signed-off-by: Klaus Heinrich Kiwi <klaus@linux.vnet.ibm.com>
diff --git a/openpower/package/pkg-versions.mk b/openpower/package/pkg-versions.mk
index be50245..3d967bf 100644
--- a/openpower/package/pkg-versions.mk
+++ b/openpower/package/pkg-versions.mk
@@ -58,7 +58,7 @@
 	rm -rf $$(OPENPOWER_VERSION_DIR)/$(1).tmp_patch.txt; \
 fi
 
-endef ###
+endef # $(2)_OPENPOWER_PATCH_FILE
 
 ### Create subpackage version file
 define $(2)_OPENPOWER_VERSION_FILE
@@ -103,11 +103,15 @@
 # Add new line to version.txt
 echo "" >> $$($(2)_VERSION_FILE);
 
-endef ###
+endef # $(2)_OPENPOWER_VERSION_FILE
 
-# Add appropriate templates to hooks
+# Add appropriate templates to hooks if they're not there already
+ifeq (,$$(findstring $(2)_OPENPOWER_PATCH_FILE,$$($(2)_POST_PATCH_HOOKS)))
 $(2)_POST_PATCH_HOOKS += $(2)_OPENPOWER_PATCH_FILE
+endif
+ifeq (,$$(findstring $(2)_OPENPOWER_VERSION_FILE,$$($(2)_PRE_CONFIGURE_HOOKS)))
 $(2)_PRE_CONFIGURE_HOOKS += $(2)_OPENPOWER_VERSION_FILE
+endif
 
 # Top-level rule to print or generate a subpackage version
 $(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
@@ -128,99 +132,114 @@
 		@echo "	End creating version string..."
 		@echo -n "	version: "; cat $$($(2)_VERSION_FILE) | xargs echo
 
-endef
+endef # OPENPOWER_SUBPACKAGE_VERSION
 
-define OPENPOWER_VERSION
 
-UPPER_CASE_PKG = $(call UPPERCASE,$(1))
-$$(UPPER_CASE_PKG)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
+####
+# $(1) is the lowercase package version
+# $(2) is the uppercase pacakge version
+####
+define INNER_OPENPOWER_VERSION
+
+$(2)_VERSION_FILE = $$(OPENPOWER_VERSION_DIR)/$(1).version.txt
+ifeq ($$(BR2_PACKAGE_OPENPOWER_PNOR_P10),y)
+UPPER_CASE_SIGN_MODE = $(call UPPERCASE,$$(BR2_OPENPOWER_P10_SECUREBOOT_SIGN_MODE))
+CONFIG_NAME = $$(BR2_OPENPOWER_P10_CONFIG_NAME)
+VERSIONED_SUBPACKAGES = $$(OPENPOWER_PNOR_P10_VERSIONED_SUBPACKAGES)
+else
 UPPER_CASE_SIGN_MODE = $(call UPPERCASE,$$(BR2_OPENPOWER_SECUREBOOT_SIGN_MODE))
+CONFIG_NAME = $$(BR2_OPENPOWER_CONFIG_NAME)
+VERSIONED_SUBPACKAGES = $$(OPENPOWER_VERSIONED_SUBPACKAGES)
+endif
 
-$$(eval $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), \
+$$(eval $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), \
 		$$(call OPENPOWER_SUBPACKAGE_VERSION,$$(pkg),$$(call UPPERCASE,$$(pkg)))))
 
 ### Combine subpackage files into one version file
-define $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
+define $(2)_OPENPOWER_VERSION_FILE
 
 mkdir -p "$$(OPENPOWER_VERSION_DIR)"
 
 # Add vendor or default open-power
 if [ -n "$$(OPBUILD_VENDOR)" ]; then \
-echo -n "$$(OPBUILD_VENDOR)-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(OPBUILD_VENDOR)-" > $$($(2)_VERSION_FILE); \
 else \
-echo -n "open-power-" > $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "open-power-" > $$($(2)_VERSION_FILE); \
 fi
 
 # Add platform or default from defconfig
 if [ -n "$$(OPBUILD_PLATFORM)" ]; then \
-echo -n "$$(OPBUILD_PLATFORM)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(OPBUILD_PLATFORM)-" >> $$($(2)_VERSION_FILE); \
 else \
-echo -n "$$(BR2_OPENPOWER_CONFIG_NAME)-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "$$(CONFIG_NAME)-" >> $$($(2)_VERSION_FILE); \
 fi
 
 # Add op-build version
 # Order: OPBUILD_VERSION, tag, commit, unknown
 if [ -n "$$(OPBUILD_VERSION)" ]; then \
-	echo -n "$$(OPBUILD_VERSION)" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+	echo -n "$$(OPBUILD_VERSION)" >> $$($(2)_VERSION_FILE); \
 else \
 cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty || echo "unknown") \
 	| xargs echo -n \
-	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+	>> $$($(2)_VERSION_FILE); \
 fi
 
 # Flag whether op-build is production signed
 if [ "$$(UPPER_CASE_SIGN_MODE)" == 'PRODUCTION' ]; then \
-	echo -n "-prod" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+	echo -n "-prod" >> $$($(2)_VERSION_FILE); \
 fi
 
-# Add new line to $$($$(UPPER_CASE_PKG)_VERSION_FILE)
-echo "" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+# Add new line to $$($(2)_VERSION_FILE)
+echo "" >> $$($(2)_VERSION_FILE);
 
 # Add a specific line for op-build if it has been overwritten
 if [ -n "$$(OPBUILD_VENDOR)" ]; then \
-echo -n "	op-build-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+echo -n "	op-build-" >> $$($(2)_VERSION_FILE); \
 (cd "$$(BR2_EXTERNAL_OP_BUILD_PATH)"; (git describe --always --dirty  || echo "unknown")) \
 	| xargs echo \
-	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+	>> $$($(2)_VERSION_FILE); \
 fi
 
 # Include the currently checked-out buildroot version
-echo -n "	buildroot-" >> $$($$(UPPER_CASE_PKG)_VERSION_FILE);
+echo -n "	buildroot-" >> $$($(2)_VERSION_FILE);
 (git describe --always --dirty || echo "unknown") \
 	| xargs echo \
-	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); \
+	>> $$($(2)_VERSION_FILE); \
 
 
-# Combing subpackage version files into $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+# Combing subpackage version files into $$($(2)_VERSION_FILE)
 $$(foreach verFile,$$(ALL_SUBPACKAGE_VERSIONS),
 	if [ -f $$(verFile) ]; then cat $$(verFile) \
-	>> $$($$(UPPER_CASE_PKG)_VERSION_FILE); fi )
+	>>$$($(2)_VERSION_FILE); fi )
 
-endef ###
+endef #  $(2)_OPENPOWER_VERSION_FILE
 
-$$(UPPER_CASE_PKG)_PRE_BUILD_HOOKS += $$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE
+$(2)_PRE_BUILD_HOOKS += $(2)_OPENPOWER_VERSION_FILE
 
 # Top-level rule to print or generate openpower-pnor version
-$(1)-version: $$(if $$(wildcard $$($$(UPPER_CASE_PKG)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
+$(1)-version: $$(if $$(wildcard $$($(2)_VERSION_FILE)),$(1)-print-version,$(1)-build-version)
 
 # Rule to print out pnor version
 $(1)-print-version:
-		@echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
-		@cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+		@echo "=== $(2)_VERSION ==="
+		@cat $$($(2)_VERSION_FILE)
 		@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
 
 # Rule to generate pnor version
-$(1)-build-version: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-version)
-		@$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
-		@echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
-		@cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+$(1)-build-version: $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), $$(pkg)-version)
+		@$$($(2)_OPENPOWER_VERSION_FILE)
+		@echo "=== $(2)_VERSION ==="
+		@cat $$($(2)_VERSION_FILE)
 		@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
 
 # Rule to force re-generation of all versioned subpackages
-$(1)-build-version-all: $$(foreach pkg,$$(OPENPOWER_VERSIONED_SUBPACKAGES), $$(pkg)-build-version)
-		@$$($$(UPPER_CASE_PKG)_OPENPOWER_VERSION_FILE)
-		@echo "=== $$(UPPER_CASE_PKG)_VERSION ==="
-		@cat $$($$(UPPER_CASE_PKG)_VERSION_FILE)
+$(1)-build-version-all: $$(foreach pkg,$$(VERSIONED_SUBPACKAGES), $$(pkg)-build-version)
+		@$$($(2)_OPENPOWER_VERSION_FILE)
+		@echo "=== $(2)_VERSION ==="
+		@cat $$($(2)_VERSION_FILE)
 		@echo ""; echo "**See openpower/package/VERSION.readme for detailed info on package strings"; echo ""
 
-endef
+endef # INNER_OPENPOWER_VERSION
+
+OPENPOWER_VERSION = $(call INNER_OPENPOWER_VERSION,$(pkgname),$(call UPPERCASE,$(pkgname)))
+