diff --git a/openpower/package/Config.in b/openpower/package/Config.in
index a3cedf5..3082392 100755
--- a/openpower/package/Config.in
+++ b/openpower/package/Config.in
@@ -7,6 +7,7 @@
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/rainier-2u-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/rainier-4u-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/everest-xml/Config.in"
+source "$BR2_EXTERNAL_OP_BUILD_PATH/package/bonnell-xml/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-pnor/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/openpower-pnor-p10/Config.in"
 source "$BR2_EXTERNAL_OP_BUILD_PATH/package/petitboot/Config.in"
diff --git a/openpower/package/bonnell-xml/Config.in b/openpower/package/bonnell-xml/Config.in
new file mode 100644
index 0000000..96c00b0
--- /dev/null
+++ b/openpower/package/bonnell-xml/Config.in
@@ -0,0 +1,86 @@
+menu "Bonnell XML (MRW)"
+
+config BR2_PACKAGE_BONNELL_XML
+        bool "bonnell_xml"
+
+if BR2_PACKAGE_BONNELL_XML
+
+choice
+	prompt "Bonnell XML location"
+
+config BR2_BONNELL_XML_GITHUB_PROJECT
+       bool "OpenPOWER Github project name"
+
+config BR2_BONNELL_XML_CUSTOM_GIT
+       bool "Custom URL of Bonnell xml repository"
+
+endchoice
+
+config BR2_BONNELL_XML_FILTER_UNWANTED_ATTRIBUTES
+       bool "Filter Unwanted Attributes"
+       default y
+
+config BR2_BONNELL_XML_OPPOWERVM_ATTRIBUTES
+       bool "OPPOWERVM Attributes/Target"
+       default y
+
+config BR2_BONNELL_XML_TARGET_TYPES_OPENPOWER_XML
+       bool "Include target_types_openpower.xml"
+       default y
+
+config BR2_BONNELL_XML_CUSTOM_GIT_VALUE
+	string "URL of Bonnell xml repository"
+	depends on BR2_BONNELL_XML_CUSTOM_GIT
+
+config BR2_BONNELL_XML_GITHUB_PROJECT_VALUE
+       string "The Github project name (e.g. bonnell-xml)"
+       default "bonnell-xml"
+       depends on BR2_BONNELL_XML_GITHUB_PROJECT
+
+config BR2_BONNELL_XML_VERSION
+       string "Version of Bonnell XML"
+
+config BR2_BONNELL_XML_FILENAME
+       string "Bonnell XML filename (e.g. bonnell-mrw.xml)"
+       default "bonnell-mrw.xml"
+       help
+           The name of the MRW XML file. Note that this file MUST
+           come with the '.xml' prefix (all lowercase)
+
+config BR2_BONNELL_XML_SYSTEM_FILENAME
+       string "Targeting Bonnell system xml filename"
+       default ""
+       help
+           Defines the name of the system XML filename
+           to be used when creating targeting binary image
+
+config BR2_BONNELL_XML_TARGETING_FILENAME
+       string "Targeting Bonnell mrw xml filename"
+       default ""
+       help
+           Defines the name of the mrw XML filename
+           to be used when creating targeting binary image
+
+config BR2_BONNELL_XML_BIOS_FILENAME
+       string "BIOS Bonnell metadata XML filename"
+       default "Bonnell-MRW_bios.xml"
+       help
+           Defines the name of the BIOS XML filename
+           to parse when generating BIOS metadata
+
+config BR2_BONNELL_XML_TARGETING_BIN_FILENAME
+       string "Name of the openpower binary targeting file"
+       default "Bonnell-MRW.targeting.bin"
+       help
+           String used to define name of openpower targeting binary file
+
+config BR2_BONNELL_XML_TARGETING_ECC_FILENAME
+       string "Name of the openpower binary targeting ecc file"
+       default "Bonnell-MRW.targeting.bin.ecc"
+       help
+           String used to define name of openpower
+           targeting binary file, ecc protected
+
+endif
+
+endmenu
diff --git a/openpower/package/bonnell-xml/bonnell-xml.mk b/openpower/package/bonnell-xml/bonnell-xml.mk
new file mode 100644
index 0000000..1081317
--- /dev/null
+++ b/openpower/package/bonnell-xml/bonnell-xml.mk
@@ -0,0 +1,214 @@
+################################################################################
+# bonnell-xml
+#
+################################################################################
+
+BONNELL_XML_VERSION ?= $(call qstrip,$(BR2_BONNELL_XML_VERSION))
+ifeq ($(BR2_BONNELL_XML_GITHUB_PROJECT),y)
+BONNELL_XML_SITE = $(call github,openbmc,$(BR2_BONNELL_XML_GITHUB_PROJECT_VALUE),$(BONNELL_XML_VERSION))
+else ifeq ($(BR2_BONNELL_XML_CUSTOM_GIT),y)
+BONNELL_XML_SITE_METHOD = git
+BONNELL_XML_SITE = $(BR2_BONNELL_XML_CUSTOM_GIT_VALUE)
+endif
+
+BONNELL_XML_LICENSE = Apache-2.0
+BONNELL_XML_LICENSE_FILES = LICENSE
+BONNELL_XML_DEPENDENCIES += hostboot-p10
+
+BONNELL_XML_INSTALL_IMAGES = YES
+BONNELL_XML_INSTALL_TARGET = YES
+
+BONNELL_XML_MRW_SCRATCH=$(STAGING_DIR)/openpower_mrw_scratch
+BONNELL_XML_MRW_HB_TOOLS=$(STAGING_DIR)/hostboot_build_images
+
+# Defines for BIOS metadata creation
+BONNELL_XML_BIOS_SCHEMA_FILE = $(BONNELL_XML_MRW_HB_TOOLS)/bios.xsd
+BONNELL_XML_BIOS_CONFIG_FILE = \
+    $(call qstrip,$(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_BIOS_FILENAME))
+BONNELL_XML_BIOS_METADATA_FILE = \
+    $(call qstrip,$(BONNELL_XML_MRW_HB_TOOLS)/$(BR2_OPENPOWER_P10_CONFIG_NAME)_bios_metadata.xml)
+BONNELL_XML_PETITBOOT_XSLT_FILE = $(BONNELL_XML_MRW_HB_TOOLS)/bios_metadata_petitboot.xslt
+BONNELL_XML_PETITBOOT_BIOS_METADATA_FILE = \
+    $(call qstrip, \
+        $(BONNELL_XML_MRW_HB_TOOLS)/$(BR2_OPENPOWER_P10_CONFIG_NAME)_bios_metadata_petitboot.xml)
+# XXX TODO: Figure out what to do with the bios_metadata.xml. Right now, the last xml
+#           package file processed 'wins' and all previously processed xml packages are
+#           overriden.
+BONNELL_XML_PETITBOOT_BIOS_INITRAMFS_FILE = \
+    $(TARGET_DIR)/usr/share/bios_metadata.xml
+
+ifeq ($(BR2_BONNELL_XML_OPPOWERVM_ATTRIBUTES),y)
+BONNELL_XML_OPPOWERVM_ATTR_XML = $(BONNELL_XML_MRW_HB_TOOLS)/attribute_types_oppowervm.xml
+BONNELL_XML_OPPOWERVM_TARGET_XML = $(BONNELL_XML_MRW_HB_TOOLS)/target_types_oppowervm.xml
+endif
+ifeq ($(BR2_BONNELL_XML_TARGET_TYPES_OPENPOWER_XML),y)
+BONNELL_XML_TARGET_TYPES_OPENPOWER_XML = $(BONNELL_XML_MRW_HB_TOOLS)/target_types_openpower.xml
+endif
+WOF_TOOL = wof_data_xlator.pl
+WOF_BIN_OVERRIDE_LIST = wof_bins_for_override.txt
+
+# Defines for SPD file creation
+NEXT_EC=10
+IMAGE_TOKEN=--ecImg_10
+
+define build_ecImgs
+    $(eval SPD_FILES_TOKENED += $$(addprefix $(2) , $(1)))
+    $(eval NEXT_EC=$(shell echo $$(($(NEXT_EC)+10))))
+    $(eval IMAGE_TOKEN = --ecImg_$(NEXT_EC))
+endef
+
+define BONNELL_XML_FILTER_UNWANTED_ATTRIBUTES
+       chmod +x $(BONNELL_XML_MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
+
+       $(BONNELL_XML_MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl \
+            --tgt-xml $(BONNELL_XML_MRW_HB_TOOLS)/target_types_merged.xml \
+            --tgt-xml $(BONNELL_XML_MRW_HB_TOOLS)/target_types_hb.xml \
+            --tgt-xml $(BONNELL_XML_MRW_HB_TOOLS)/target_types_oppowervm.xml \
+            --tgt-xml $(BONNELL_XML_MRW_HB_TOOLS)/target_types_openpower.xml \
+            --mrw-xml $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip, \
+                $(BR2_BONNELL_XML_TARGETING_FILENAME))
+
+       cp  $(call qstrip, $(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_TARGETING_FILENAME)).updated \
+           $(call qstrip,$(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_TARGETING_FILENAME))
+endef
+
+define BONNELL_XML_BUILD_CMDS
+        # copy the machine xml where the common lives
+        $(INSTALL) -m 0644 -D $(@D)/$(call qstrip,$(BR2_BONNELL_XML_FILENAME)) \
+            $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip,$(BR2_BONNELL_XML_FILENAME))
+        $(INSTALL) -m 0644 -D $(@D)/$(call qstrip,$(BR2_BONNELL_XML_BIOS_FILENAME)) \
+            $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip,$(BR2_BONNELL_XML_BIOS_FILENAME))
+        $(eval WOF_SETS_DIR = $$(patsubst %.xml,%.WofSetBins,$(call qstrip,$(BR2_BONNELL_XML_FILENAME))))
+        $(eval WOF_SETS_TAR = $(WOF_SETS_DIR).tar.gz)
+	if [ -e $(@D)/$(call qstrip,$(WOF_SETS_TAR)) ]; then \
+	    $(INSTALL) -m 0644 -D $(@D)/$(call qstrip,$(WOF_SETS_TAR)) \
+	        $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip,$(WOF_SETS_TAR)); \
+	fi
+
+        # generate the system mrw xml
+        perl -I $(BONNELL_XML_MRW_HB_TOOLS) \
+        $(BONNELL_XML_MRW_HB_TOOLS)/processMrw.pl -x \
+            $(call qstrip,$(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_FILENAME)) \
+            -o $(call qstrip,$(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_TARGETING_FILENAME))
+
+	$(if $(BR2_BONNELL_XML_FILTER_UNWANTED_ATTRIBUTES), $(call BONNELL_XML_FILTER_UNWANTED_ATTRIBUTES))
+
+        # merge in any system specific attributes, hostboot attributes
+        $(BONNELL_XML_MRW_HB_TOOLS)/mergexml.sh \
+            $(call qstrip,$(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_SYSTEM_FILENAME)) \
+            $(BONNELL_XML_MRW_HB_TOOLS)/attribute_types.xml \
+            $(BONNELL_XML_MRW_HB_TOOLS)/attribute_types_hb.xml \
+            $(BONNELL_XML_OPPOWERVM_ATTR_XML) \
+            $(BONNELL_XML_MRW_HB_TOOLS)/attribute_types_openpower.xml \
+            $(BONNELL_XML_MRW_HB_TOOLS)/target_types_merged.xml \
+            $(BONNELL_XML_MRW_HB_TOOLS)/target_types_hb.xml \
+            $(BONNELL_XML_OPPOWERVM_TARGET_XML) \
+            $(BONNELL_XML_TARGET_TYPES_OPENPOWER_XML) \
+            $(call qstrip, \
+                $(BONNELL_XML_MRW_SCRATCH)/$(BR2_BONNELL_XML_TARGETING_FILENAME)) \
+            > $(BONNELL_XML_MRW_HB_TOOLS)/$(call qstrip, \
+                $(BR2_BONNELL_XML_TARGETING_FILENAME))_temporary_hb.hb.xml;
+
+        # creating the targeting binary
+        # XXX TODO: xmltohb.pl creates a 'targeting.bin' in the output directory, we want
+        #           that file to be unique if we don't want to risk collisions on eventual
+        #           parallel builds
+        $(BONNELL_XML_MRW_HB_TOOLS)/xmltohb.pl  \
+            --hb-xml-file=$(BONNELL_XML_MRW_HB_TOOLS)/$(call qstrip, \
+                $(BR2_BONNELL_XML_TARGETING_FILENAME))_temporary_hb.hb.xml \
+            --fapi-attributes-xml-file=$(BONNELL_XML_MRW_HB_TOOLS)/fapiattrs.xml \
+            --src-output-dir=$(BONNELL_XML_MRW_HB_TOOLS)/ \
+            --img-output-dir=$(BONNELL_XML_MRW_HB_TOOLS)/ \
+            --vmm-consts-file=$(BONNELL_XML_MRW_HB_TOOLS)/vmmconst.h --noshort-enums \
+            --bios-xml-file=$(BONNELL_XML_BIOS_CONFIG_FILE) \
+            --bios-schema-file=$(BONNELL_XML_BIOS_SCHEMA_FILE) \
+            --bios-output-file=$(BONNELL_XML_BIOS_METADATA_FILE)
+
+        # Transform BIOS XML into Petitboot specific BIOS XML via the schema
+        xsltproc -o \
+            $(BONNELL_XML_PETITBOOT_BIOS_METADATA_FILE) \
+            $(BONNELL_XML_PETITBOOT_XSLT_FILE) \
+            $(BONNELL_XML_BIOS_METADATA_FILE)
+
+        # Create the wofdata
+        if [ -e $(BONNELL_XML_MRW_HB_TOOLS)/$(WOF_TOOL) ]; then \
+            chmod +x $(BONNELL_XML_MRW_HB_TOOLS)/$(WOF_TOOL); \
+        fi
+
+        # Create WOF override image
+	$(eval WOF_OVERRIDE_BIN = $$(patsubst %.xml,%.wofdata,$(call qstrip,$(BR2_BONNELL_XML_FILENAME))))
+	if [ -e $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_TAR) ]; then \
+	    rm $(BONNELL_XML_MRW_SCRATCH)/$(WOF_OVERRIDE_BIN); \
+	    cd $(BONNELL_XML_MRW_SCRATCH) && mkdir $(WOF_SETS_DIR); \
+            cd $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_DIR) && tar -xzvf $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_TAR); \
+            cd $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_DIR)/WofSetBins && ls | grep -i "\.bin" > $(WOF_BIN_OVERRIDE_LIST); \
+	    cd $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_DIR)/WofSetBins && $(BONNELL_XML_MRW_HB_TOOLS)/$(WOF_TOOL) --create $(BONNELL_XML_MRW_SCRATCH)/$(WOF_OVERRIDE_BIN) --combine $(BONNELL_XML_MRW_SCRATCH)/$(WOF_SETS_DIR)/WofSetBins/$(WOF_BIN_OVERRIDE_LIST); \
+	else \
+	    cd $(BONNELL_XML_MRW_SCRATCH) && dd if=/dev/zero of=$(WOF_OVERRIDE_BIN) bs=4096 count=1; \
+	fi
+
+        # Create SPD image, if necessary
+        $(eval PSPD_BIN = $$(patsubst %.xml,%.PSPD.bin,$(call qstrip,$(BR2_BONNELL_XML_FILENAME))))
+        $(eval SPD_IMAGE_FILES = $$(wildcard $(BONNELL_XML_MRW_SCRATCH)/*.pspddata*))
+
+        # Cleanup old PSPD.bin
+        if [ -e "$(BONNELL_XML_MRW_SCRATCH)/$(PSPD_BIN)" ]; then \
+            rm $(BONNELL_XML_MRW_SCRATCH)/$(PSPD_BIN); \
+        fi
+
+        $(foreach spd_image_file, $(SPD_IMAGE_FILES), \
+            $(call build_ecImgs,$(spd_image_file),$(IMAGE_TOKEN)))
+
+        # SPD_FILES_TOKENED is what is used as input for the --ecImg_'s to buildSPDImages.pl
+        #
+        # If SPD_FILES_TOKENED is empty we get zero SPD Images built (tocCount=0)
+        #
+        # SPD_ARG_ITEMS (will only output debug info if buildSPDImages.pl will result in tocCount more than zero)
+        $(foreach spd_arg, $(SPD_FILES_TOKENED), echo SPD_ARG_ITEMS $(spd_arg);)
+
+        # If we have SPD images the PSPD.bin will be built containing the data, otherwise we get PSPD.bin with all FF's
+        if [ -e "$(BONNELL_XML_MRW_HB_TOOLS)/buildSPDImages.pl" ] && [ -n "$(SPD_IMAGE_FILES)" ]; then \
+            chmod +x $(BONNELL_XML_MRW_HB_TOOLS)/buildSPDImages.pl; \
+            echo "*** RUNNING buildSPDImages.pl ***";\
+            $(BONNELL_XML_MRW_HB_TOOLS)/buildSPDImages.pl --spdOutBin $(BONNELL_XML_MRW_SCRATCH)/$(PSPD_BIN) $(SPD_FILES_TOKENED); \
+        fi
+
+        # Create the MEMD binary
+        if [ -e $(BONNELL_XML_MRW_HB_TOOLS)/memd_creation.pl ]; then \
+            chmod +x $(BONNELL_XML_MRW_HB_TOOLS)/memd_creation.pl; \
+        fi
+
+        if [ -d $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip, \
+            $(BR2_BONNELL_XML_FILENAME:.xml=.memd_binaries)) ]; then \
+            $(BONNELL_XML_MRW_HB_TOOLS)/memd_creation.pl \
+                -memd_dir $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip, \
+                    $(BR2_BONNELL_XML_FILENAME:.xml=.memd_binaries)) \
+                -memd_output $(BONNELL_XML_MRW_SCRATCH)/$(call qstrip, \
+                    $(BR2_BONNELL_XML_FILENAME:.xml=.memd_output.dat)); \
+        fi
+
+endef
+
+define BONNELL_XML_INSTALL_IMAGES_CMDS
+        mv $(BONNELL_XML_MRW_HB_TOOLS)/targeting.bin $(call qstrip, \
+            $(BONNELL_XML_MRW_HB_TOOLS)/$(BR2_BONNELL_XML_TARGETING_BIN_FILENAME))
+        if [ -e $(BONNELL_XML_MRW_HB_TOOLS)/targeting.bin.protected ]; then \
+            mv -v $(BONNELL_XML_MRW_HB_TOOLS)/targeting.bin.protected \
+                $(call qstrip, \
+                    $(BONNELL_XML_MRW_HB_TOOLS)/$(BR2_BONNELL_XML_TARGETING_BIN_FILENAME)).protected; \
+        fi
+        if [ -e $(BONNELL_XML_MRW_HB_TOOLS)/targeting.bin.unprotected ]; then \
+            mv -v $(BONNELL_XML_MRW_HB_TOOLS)/targeting.bin.unprotected \
+                $(call qstrip, \
+                    $(BONNELL_XML_MRW_HB_TOOLS)/$(BR2_BONNELL_XML_TARGETING_BIN_FILENAME)).unprotected; \
+        fi
+endef
+
+define BONNELL_XML_INSTALL_TARGET_CMDS
+        # Install Petitboot specific BIOS XML into initramfs's usr/share/ dir
+        $(INSTALL) -D -m 0644 \
+            $(BONNELL_XML_PETITBOOT_BIOS_METADATA_FILE) \
+            $(BONNELL_XML_PETITBOOT_BIOS_INITRAMFS_FILE)
+endef
+
+$(eval $(generic-package))
diff --git a/openpower/package/openpower-pnor-p10/Config.in b/openpower/package/openpower-pnor-p10/Config.in
index 3e3830e..2213753 100644
--- a/openpower/package/openpower-pnor-p10/Config.in
+++ b/openpower/package/openpower-pnor-p10/Config.in
@@ -12,6 +12,7 @@
         select BR2_PACKAGE_RAINIER_2U_XML
         select BR2_PACKAGE_RAINIER_4U_XML
         select BR2_PACKAGE_HCODE_P10
+        select BR2_PACKAGE_BONNELL_XML
         help
             Utilites for building a targeting Power10 binary image
 
diff --git a/openpower/package/rainier-2u-xml/rainier-2u-xml.mk b/openpower/package/rainier-2u-xml/rainier-2u-xml.mk
index 9f6da2a..c06ae43 100644
--- a/openpower/package/rainier-2u-xml/rainier-2u-xml.mk
+++ b/openpower/package/rainier-2u-xml/rainier-2u-xml.mk
@@ -47,15 +47,6 @@
 WOF_TOOL = wof_data_xlator.pl
 WOF_BIN_OVERRIDE_LIST = wof_bins_for_override.txt
 
-NEXT_EC=10
-IMAGE_TOKEN=--ecImg_10
-
-define build_ecImgs
-    $(eval SPD_FILES_TOKENED += $$(addprefix $(2) , $(1)))
-    $(eval NEXT_EC=$(shell echo $$(($(NEXT_EC)+10))))
-    $(eval IMAGE_TOKEN = --ecImg_$(NEXT_EC))
-endef
-
 define RAINIER_2U_XML_FILTER_UNWANTED_ATTRIBUTES
        chmod +x $(RAINIER_2U_XML_MRW_HB_TOOLS)/filter_out_unwanted_attributes.pl
 
@@ -146,31 +137,6 @@
 	    cd $(RAINIER_2U_XML_MRW_SCRATCH) && dd if=/dev/zero of=$(WOF_OVERRIDE_BIN) bs=4096 count=1; \
 	fi
 
-	$(eval PSPD_BIN = $$(patsubst %.xml,%.PSPD.bin,$(call qstrip,$(BR2_RAINIER_2U_XML_FILENAME))))
-        $(eval SPD_IMAGE_FILES = $$(wildcard $(RAINIER_2U_XML_MRW_SCRATCH)/*.pspddata*))
-
-        # Cleanup old PSPD.bin
-        if [ -e "$(RAINIER_2U_XML_MRW_SCRATCH)/$(PSPD_BIN)" ]; then \
-            rm $(RAINIER_2U_XML_MRW_SCRATCH)/$(PSPD_BIN); \
-        fi
-
-        $(foreach spd_image_file, $(SPD_IMAGE_FILES), \
-            $(call build_ecImgs,$(spd_image_file),$(IMAGE_TOKEN)))
-
-        # SPD_FILES_TOKENED is what is used as input for the --ecImg_'s to buildSPDImages.pl
-        #
-        # If SPD_FILES_TOKENED is empty we get zero SPD Images built (tocCount=0)
-        #
-        # SPD_ARG_ITEMS (will only output debug info if buildSPDImages.pl will result in tocCount more than zero)
-        $(foreach spd_arg, $(SPD_FILES_TOKENED), echo SPD_ARG_ITEMS $(spd_arg);)
-
-        # If we have SPD images the PSPD.bin will be built containing the data, otherwise we get PSPD.bin with all FF's
-        if [ -e "$(RAINIER_2U_XML_MRW_HB_TOOLS)/buildSPDImages.pl" ] && [ -n "$(SPD_IMAGE_FILES)" ]; then \
-            chmod +x $(RAINIER_2U_XML_MRW_HB_TOOLS)/buildSPDImages.pl; \
-            echo "*** RUNNING buildSPDImages.pl ***";\
-            $(RAINIER_2U_XML_MRW_HB_TOOLS)/buildSPDImages.pl --spdOutBin $(RAINIER_2U_XML_MRW_SCRATCH)/$(PSPD_BIN) $(SPD_FILES_TOKENED); \
-        fi
-
         # Create the MEMD binary
         if [ -e $(RAINIER_2U_XML_MRW_HB_TOOLS)/memd_creation.pl ]; then \
             chmod +x $(RAINIER_2U_XML_MRW_HB_TOOLS)/memd_creation.pl; \
