Pārlūkot izejas kodu

Vlv2Tbl2DevicePkg: Convert BAT/sh Build scripts to Python

Convert Build_IFWI and bld_vlv BAT/sh scripts to OS
independent python script PreBuild.py.  This script
generates the BiosId file.  Standard EDK II build
commands are used to build FW images and capsules.

* Sample VS2015x86 commands for IA32/X64 and DEBUG/RELEASE
  build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
  build -a IA32 -a X64 -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
  build -a IA32        -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
  build -a IA32        -t VS2015x86 -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc

* Sample GCC5 commands for IA32/X64 and DEBUG/RELEASE
  build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
  build -a IA32 -a X64 -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
  build -a IA32        -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
  build -a IA32        -n 5 -t GCC5 -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc

Cc: Zailiang Sun <zailiang.sun@intel.com>
Cc: Yi Qian <yi.qian@intel.com>
Cc: Gary Lin <glin@suse.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Zailiang Sun <zailiang.sun@intel.com>
Reviewed-by: Gary Lin <glin@suse.com>
Michael D Kinney 4 gadi atpakaļ
vecāks
revīzija
bb67f29e01

+ 0 - 118
Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.bat

@@ -1,118 +0,0 @@
-@REM @file
-@REM   Windows batch file to build BIOS ROM
-@REM
-@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-
-SetLocal EnableDelayedExpansion EnableExtensions
-
-:: Assign initial values
-set exitCode=0
-set "Build_Flags= "
-set PLATFORM_PACKAGE=Vlv2TbltDevicePkg
-
-set PLATFORM_PATH=%WORKSPACE%
-if not exist %PLATFORM_PATH%\%PLATFORM_PACKAGE% (
-  if defined PACKAGES_PATH (
-    for %%i IN (%PACKAGES_PATH%) DO (
-      if exist %%~fi\%PLATFORM_PACKAGE% (
-        set PLATFORM_PATH=%%~fi
-        goto PlatformPackageFound
-      )
-    )
-  ) else (
-    echo.
-    echo !!! ERROR !!! Cannot find %PLATFORM_PACKAGE% !!!
-    echo.
-    goto Exit
-  )
-)
-:PlatformPackageFound
-
-:: Parse Optional arguments
-:OptLoop
-if /i "%~1"=="/?" goto Usage
-
-if /i "%~1"=="/l" (
-    set Build_Flags=%Build_Flags% /l
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/y" (
-    set Build_Flags=%Build_Flags% /y
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/m" (
-    set Build_Flags=%Build_Flags% /m
-    shift
-    goto OptLoop
-)
-if /i "%~1" == "/c" (
-    set Build_Flags=%Build_Flags% /c
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/x64" (
-    set Build_Flags=%Build_Flags% /x64
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/IA32" (
-    set Build_Flags=%Build_Flags% /IA32
-    shift
-    goto OptLoop
-)
-
-:: Require 2 input parameters
-if "%~2"=="" goto Usage
-
-:: Assign required arguments
-set Platform_Type=%~1
-set Build_Target=%~2
-
-:: Build BIOS
-echo ======================================================================
-echo Build_IFWI:  Calling BIOS build Script...
-
-call %PLATFORM_PATH%\%PLATFORM_PACKAGE%\bld_vlv.bat %Build_Flags% %Platform_Type% %Build_Target%
-
-if %ERRORLEVEL% NEQ 0 (
-    echo echo  -- Error Building BIOS  & echo.
-    set exitCode=1
-    goto exit
-)
-echo.
-echo Finished Building BIOS.
-goto Exit
-
-:Usage
-echo Script to build BIOS firmware and stitch the entire IFWI.
-echo.
-echo Usage: Build_IFWI.bat [options]  PlatformType  BuildTarget
-echo.
-echo    /c    CleanAll
-echo    /l    Generate build log file
-echo    /y    Generate build report file
-echo    /m    Enable multi-processor build
-echo    /IA32 Set Arch to IA32 (default: X64)
-echo    /X64  Set Arch to X64 (default: X64)
-echo.
-echo        Platform Types:  MNW2
-echo        Build Targets:   Debug, Release  (default: Debug)
-echo.
-echo Examples:
-echo    Build_IFWI.bat MNW2 debug           : X64 Debug build for MinnowMax
-echo    Build_IFWI.bat /IA32 MNW2 release   : IA32 Release build for MinnowMax
-echo.
-set exitCode=1
-
-:Exit
-@REM  CD to platform package.
-cd %PLATFORM_PATH%
-exit /b %exitCode%
-
-EndLocal

+ 0 - 100
Platform/Intel/Vlv2TbltDevicePkg/Build_IFWI.sh

@@ -1,100 +0,0 @@
-#!/usr/bin/env bash
-##**********************************************************************
-## Function define
-##**********************************************************************
-function Usage ( ) {
-  echo
-  echo "Script to build BIOS firmware and stitch the entire IFWI."
-  echo
-  echo "Usage: Build_IFWI.sh [options]  PlatformType  BuildTarget"
-  echo
-  echo "   /c    CleanAll"
-  echo "   /l    Generate build log file"
-  echo "   /y    Generate build report file"
-  echo "   /m    Enable multi-processor build"
-  echo "   /IA32 Set Arch to IA32 (default: X64)"
-  echo "   /X64  Set Arch to X64 (default: X64)"
-  echo
-  echo "       Platform Types:  MNW2"
-  echo "       Build Targets:   Debug, Release  (default: Debug)"
-  echo
-  echo "Examples:"
-  echo "   Build_IFWI.sh MNW2 debug           : X64 Debug build for MinnowMax"
-  echo "   Build_IFWI.sh /IA32 MNW2 release   : IA32 Release build for MinnowMax"
-  echo
-  exit 0
-}
-
-set -e
-
-## Assign initial values
-exitCode=0
-Build_Flags=
-
-## Check whether WORKSPACE is set or not
-if [[ -z "$WORKSPACE" ]]; then
-  echo "Please export WORKSPACE before running Build_IFWI.sh"
-  echo "See the details in Readme.md"
-  exit 1
-fi
-
-## Create $WORKSPACE/Conf if necessary
-if [ ! -d $WORKSPACE/Conf ]; then
-  mkdir $WORKSPACE/Conf
-fi
-
-## Parse Optional arguments
-if [ "$1" == "/?" ]; then
-  Usage
-fi
-
-for (( i=1; i<=$#; ))
-  do
-    if [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
-      Build_Flags="$Build_Flags /l"
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
-      Build_Flags="$Build_Flags /y"
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
-      Build_Flags="$Build_Flags /m"
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
-      Build_Flags="$Build_Flags /c"
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
-      Build_Flags="$Build_Flags /x64"
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
-      Build_Flags="$Build_Flags /IA32"
-      shift
-    else
-      break
-    fi
-  done
-
-## Require 2 input parameters
-if [ "$2" == "" ]; then
-  Usage
-fi
-
-## Assign required arguments
-Platform_Type=$1
-Build_Target=$2
-
-## Build BIOS
-echo "======================================================================"
-echo "Build_IFWI:  Calling BIOS build Script..."
-. bld_vlv.sh $Build_Flags $Platform_Type $Build_Target
-
-echo
-echo Finished Building BIOS.
-
-## Start Integration process
-echo ======================================================================
-echo Skip "Build_IFWI:  Calling IFWI Stitching Script..."
-
-echo
-echo Build_IFWI is finished.
-echo The final IFWI file is located in Stitch
-echo ======================================================================

+ 0 - 48
Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsule.fdf

@@ -1,48 +0,0 @@
-## @file
-# FDF file of Platform capsule.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation.
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-##
-
-[FV.SystemFirmwareUpdateCargo]
-FvAlignment        = 16
-ERASE_POLARITY     = 1
-MEMORY_MAPPED      = TRUE
-STICKY_WRITE       = TRUE
-LOCK_CAP           = TRUE
-LOCK_STATUS        = TRUE
-WRITE_DISABLED_CAP = TRUE
-WRITE_ENABLED_CAP  = TRUE
-WRITE_STATUS       = TRUE
-WRITE_LOCK_CAP     = TRUE
-WRITE_LOCK_STATUS  = TRUE
-READ_DISABLED_CAP  = TRUE
-READ_ENABLED_CAP   = TRUE
-READ_STATUS        = TRUE
-READ_LOCK_CAP      = TRUE
-READ_LOCK_STATUS   = TRUE
-
-FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
-    $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.ROM
-  }
-
-[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
-IMAGE_HEADER_INIT_VERSION = 0x02
-IMAGE_TYPE_ID             = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
-IMAGE_INDEX               = 0x1
-HARDWARE_INSTANCE         = 0x0
-MONOTONIC_COUNT           = 0x2
-CERTIFICATE_GUID          = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
-
-FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
-
-[Capsule.Vlv2Rec]
-CAPSULE_GUID                = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
-CAPSULE_FLAGS               = PersistAcrossReset,InitiateReset
-CAPSULE_HEADER_SIZE         = 0x20
-CAPSULE_HEADER_INIT_VERSION = 0x1
-
-FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048

+ 0 - 39
Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleIA32.dsc

@@ -1,39 +0,0 @@
-#/** @file
-# Platform capsule description.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-[Defines]
-  PLATFORM_NAME                  = Vlv2TbltDevicePkg
-  PLATFORM_GUID                  = EE87F258-6ECC-4415-B1D8-23771BEE26E7
-  PLATFORM_VERSION               = 0.1
-  FLASH_DEFINITION               = Vlv2TbltDevicePkg/PlatformCapsule.fdf
-  OUTPUT_DIRECTORY               = Build/Vlv2TbltDevicePkgIA32
-  SUPPORTED_ARCHITECTURES        = IA32|X64
-  BUILD_TARGETS                  = DEBUG|RELEASE
-  SKUID_IDENTIFIER               = DEFAULT
-  POSTBUILD                      = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
-
-###################################################################################################
-#
-# Components Section - list of the modules and components that will be processed by compilation
-#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-#       into firmware volume images. This section is just a list of modules to compile from
-#       source into UEFI-compliant binaries.
-#       It is the FDF file that contains information on combining binary files into firmware
-#       volume images, whose concept is beyond UEFI and is described in PI specification.
-#       Binary modules do not need to be listed in this section, as they should be
-#       specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
-#       Logo (Logo.bmp), and etc.
-#       There may also be modules listed in this section that are not required in the FDF file,
-#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-#       generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################

+ 0 - 39
Platform/Intel/Vlv2TbltDevicePkg/PlatformCapsuleX64.dsc

@@ -1,39 +0,0 @@
-#/** @file
-# Platform capsule description.
-#
-# Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.<BR>
-#
-# SPDX-License-Identifier: BSD-2-Clause-Patent
-#
-#
-#**/
-
-[Defines]
-  PLATFORM_NAME                  = Vlv2TbltDevicePkg
-  PLATFORM_GUID                  = EE87F258-6ECC-4415-B1D8-23771BEE26E7
-  PLATFORM_VERSION               = 0.1
-  FLASH_DEFINITION               = Vlv2TbltDevicePkg/PlatformCapsule.fdf
-  OUTPUT_DIRECTORY               = Build/Vlv2TbltDevicePkgX64
-  SUPPORTED_ARCHITECTURES        = IA32|X64
-  BUILD_TARGETS                  = DEBUG|RELEASE
-  SKUID_IDENTIFIER               = DEFAULT
-  POSTBUILD                      = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
-
-###################################################################################################
-#
-# Components Section - list of the modules and components that will be processed by compilation
-#                      tools and the EDK II tools to generate PE32/PE32+/Coff image files.
-#
-# Note: The EDK II DSC file is not used to specify how compiled binary images get placed
-#       into firmware volume images. This section is just a list of modules to compile from
-#       source into UEFI-compliant binaries.
-#       It is the FDF file that contains information on combining binary files into firmware
-#       volume images, whose concept is beyond UEFI and is described in PI specification.
-#       Binary modules do not need to be listed in this section, as they should be
-#       specified in the FDF file. For example: Shell binary, FAT binary (Fat.efi),
-#       Logo (Logo.bmp), and etc.
-#       There may also be modules listed in this section that are not required in the FDF file,
-#       When a module listed here is excluded from FDF file, then UEFI-compliant binary will be
-#       generated for it, but the binary will not be put into any firmware volume.
-#
-###################################################################################################

+ 27 - 3
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkg.fdf

@@ -711,9 +711,8 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 !endif
 !endif
      }
      }
 
 
-[FV.SETUP_DATA]
-BlockSize          = $(FLASH_BLOCK_SIZE)
-#NumBlocks         = 0x10
+!if $(RECOVERY_ENABLE)
+[FV.SystemFirmwareUpdateCargo]
 FvAlignment        = 16
 FvAlignment        = 16
 ERASE_POLARITY     = 1
 ERASE_POLARITY     = 1
 MEMORY_MAPPED      = TRUE
 MEMORY_MAPPED      = TRUE
@@ -731,6 +730,31 @@ READ_STATUS        = TRUE
 READ_LOCK_CAP      = TRUE
 READ_LOCK_CAP      = TRUE
 READ_LOCK_STATUS   = TRUE
 READ_LOCK_STATUS   = TRUE
 
 
+FILE RAW = AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215 { # PcdEdkiiSystemFirmwareFileGuid
+    FD = Vlv
+#    $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/Vlv.fd
+  }
+
+[FmpPayload.FmpPayloadSystemFirmwareRsa2048]
+IMAGE_HEADER_INIT_VERSION = 0x02
+IMAGE_TYPE_ID             = 4096267b-da0a-42eb-b5eb-fef31d207cb4 # PcdSystemFmpCapsuleImageTypeIdGuid
+IMAGE_INDEX               = 0x1
+HARDWARE_INSTANCE         = 0x0
+MONOTONIC_COUNT           = 0x2
+CERTIFICATE_GUID          = A7717414-C616-4977-9420-844712A735BF # RSA2048SHA256
+
+FV = SystemFirmwareUpdateCargo
+#FILE DATA = $(WORKSPACE)/$(OUTPUT_DIRECTORY)/$(TARGET)_$(TOOL_CHAIN_TAG)/FV/SYSTEMFIRMWAREUPDATECARGO.Fv
+
+[Capsule.Vlv2Rec]
+CAPSULE_GUID                = 6dcbd5ed-e82d-4c44-bda1-7194199ad92a # gEfiFmpCapsuleGuid
+CAPSULE_FLAGS               = PersistAcrossReset,InitiateReset
+CAPSULE_HEADER_SIZE         = 0x20
+CAPSULE_HEADER_INIT_VERSION = 0x1
+
+FMP_PAYLOAD = FmpPayloadSystemFirmwareRsa2048
+!endif
+
 ################################################################################
 ################################################################################
 #
 #
 # Rules are use with the [FV] section's module INF type to define
 # Rules are use with the [FV] section's module INF type to define

+ 9 - 4
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgIA32.dsc

@@ -23,6 +23,8 @@
   BUILD_TARGETS                       = DEBUG|RELEASE
   BUILD_TARGETS                       = DEBUG|RELEASE
   SKUID_IDENTIFIER                    = DEFAULT
   SKUID_IDENTIFIER                    = DEFAULT
   VPD_TOOL_GUID                       = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
   VPD_TOOL_GUID                       = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
+  PREBUILD                            = python Vlv2TbltDevicePkg/PreBuild.py
+  POSTBUILD                           = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
 
 
   DEFINE RC_BINARY_RELEASE        = TRUE
   DEFINE RC_BINARY_RELEASE        = TRUE
   #
   #
@@ -213,7 +215,7 @@
   TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
   TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
 !endif
 !endif
 
 
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
 
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
 
@@ -242,6 +244,10 @@
 
 
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
 
 
+!if $(RECOVERY_ENABLE)
+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
+!endif
+
 [LibraryClasses.IA32.SEC]
 [LibraryClasses.IA32.SEC]
 !if $(PERFORMANCE_ENABLE) == TRUE
 !if $(PERFORMANCE_ENABLE) == TRUE
   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
@@ -718,11 +724,10 @@
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
   gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
   gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
 !if $(RECOVERY_ENABLE)
 !if $(RECOVERY_ENABLE)
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
   gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
   gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
 !endif
 !endif
 
 
 [PcdsDynamicExVpd.common.DEFAULT]
 [PcdsDynamicExVpd.common.DEFAULT]

+ 9 - 4
Platform/Intel/Vlv2TbltDevicePkg/PlatformPkgX64.dsc

@@ -23,6 +23,8 @@
   BUILD_TARGETS                       = DEBUG|RELEASE
   BUILD_TARGETS                       = DEBUG|RELEASE
   SKUID_IDENTIFIER                    = DEFAULT
   SKUID_IDENTIFIER                    = DEFAULT
   VPD_TOOL_GUID                       = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
   VPD_TOOL_GUID                       = 8C3D856A-9BE6-468E-850A-24F7A8D38E08
+  PREBUILD                            = python Vlv2TbltDevicePkg/PreBuild.py
+  POSTBUILD                           = python Vlv2TbltDevicePkg/Feature/Capsule/GenerateCapsule/GenCapsuleAll.py
 
 
   DEFINE RC_BINARY_RELEASE        = TRUE
   DEFINE RC_BINARY_RELEASE        = TRUE
   #
   #
@@ -215,7 +217,7 @@
   TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
   TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf
 !endif
 !endif
 
 
- BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
+  BiosIdLib|BoardModulePkg/Library/BiosIdLib/DxeBiosIdLib.inf
 
 
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
   StallSmmLib|Vlv2TbltDevicePkg/Library/StallSmmLib/StallSmmLib.inf
 
 
@@ -244,6 +246,10 @@
 
 
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
   BootLogoLib|MdeModulePkg/Library/BootLogoLib/BootLogoLib.inf
 
 
+!if $(RECOVERY_ENABLE)
+  EdkiiSystemCapsuleLib|SignedCapsulePkg/Library/EdkiiSystemCapsuleLib/EdkiiSystemCapsuleLib.inf
+!endif
+
 [LibraryClasses.IA32.SEC]
 [LibraryClasses.IA32.SEC]
 !if $(PERFORMANCE_ENABLE) == TRUE
 !if $(PERFORMANCE_ENABLE) == TRUE
   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
   PerformanceLib|MdePkg/Library/BasePerformanceLibNull/BasePerformanceLibNull.inf
@@ -720,11 +726,10 @@
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
   gEfiVLVTokenSpaceGuid.PcdCpuSmramCpuDataAddress|0
   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
   gEfiVLVTokenSpaceGuid.PcdCpuLockBoxSize|0
   gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
   gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence|TRUE
-
-[PcdsDynamicExDefault.X64.DEFAULT]
+  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("$(FMP_MINNOW_MAX_SYSTEM)")}|VOID*|0x10
 !if $(RECOVERY_ENABLE)
 !if $(RECOVERY_ENABLE)
+  gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0x0}|VOID*|0x100
   gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
   gEfiSignedCapsulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{GUID("AF9C9EB2-12AD-4D3E-A4D4-96F6C9966215")}|VOID*|0x10
-  gEfiMdeModulePkgTokenSpaceGuid.PcdSystemFmpCapsuleImageTypeIdGuid|{GUID("4096267b-da0a-42eb-b5eb-fef31d207cb4")}|VOID*|0x10
 !endif
 !endif
 
 
 [PcdsDynamicExVpd.common.DEFAULT]
 [PcdsDynamicExVpd.common.DEFAULT]

+ 348 - 0
Platform/Intel/Vlv2TbltDevicePkg/PreBuild.py

@@ -0,0 +1,348 @@
+## @file
+# PreBuild operations for Vlv2TbltDevicePkg
+#
+# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+
+'''
+PreBuild
+'''
+
+import os
+import sys
+import argparse
+import subprocess
+import glob
+import shutil
+import struct
+import datetime
+
+#
+# Globals for help information
+#
+__prog__        = 'PreBuild'
+__copyright__   = 'Copyright (c) 2019, Intel Corporation. All rights reserved.'
+__description__ = 'Vlv2Tbl2DevicePkg pre-build operations.\n'
+
+#
+# Globals
+#
+gWorkspace = ''
+gBaseToolsPath = ''
+gArgs      = None
+
+def LogAlways(Message):
+    sys.stdout.write (__prog__ + ': ' + Message + '\n')
+    sys.stdout.flush()
+
+def Log(Message):
+    global gArgs
+    if not gArgs.Verbose:
+        return
+    sys.stdout.write (__prog__ + ': ' + Message + '\n')
+    sys.stdout.flush()
+
+def Error(Message, ExitValue=1):
+    sys.stderr.write (__prog__ + ': ERROR: ' + Message + '\n')
+    sys.exit (ExitValue)
+
+def RelativePath(target):
+    global gWorkspace
+    Log('RelativePath' + target)
+    return os.path.relpath (target, gWorkspace)
+
+def NormalizePath(target):
+    if isinstance(target, tuple):
+        return os.path.normpath (os.path.join (*target))
+    else:
+        return os.path.normpath (target)
+
+def RemoveFile(target):
+    target = NormalizePath(target)
+    if not target or target == os.pathsep:
+        Error ('RemoveFile() invalid target')
+    if os.path.exists(target):
+        os.remove (target)
+        Log ('remove %s' % (RelativePath (target)))
+
+def RemoveDirectory(target):
+    target = NormalizePath(target)
+    if not target or target == os.pathsep:
+        Error ('RemoveDirectory() invalid target')
+    if os.path.exists(target):
+        Log ('rmdir %s' % (RelativePath (target)))
+        shutil.rmtree(target)
+
+def CreateDirectory(target):
+    target = NormalizePath(target)
+    if not os.path.exists(target):
+        Log ('mkdir %s' % (RelativePath (target)))
+        os.makedirs (target)
+
+def Copy(src, dst):
+    src = NormalizePath(src)
+    dst = NormalizePath(dst)
+    for File in glob.glob(src):
+        Log ('copy %s -> %s' % (RelativePath (File), RelativePath (dst)))
+        shutil.copy (File, dst)
+
+def GenCapsuleDevice (BaseName, PayloadFileName, Guid, Version, Lsv, CapsulesPath, CapsulesSubDir):
+    global gBaseToolsPath
+    LogAlways ('Generate Capsule: {0} {1:08x} {2:08x} {3}'.format (Guid, Version, Lsv, PayloadFileName))
+
+    VersionString = '.'.join([str(ord(x)) for x in struct.pack('>I', Version).decode()])
+
+    FmpCapsuleFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cap'))
+    Command = GenerateCapsuleCommand.format (
+                FMP_CAPSULE_GUID    = Guid,
+                FMP_CAPSULE_VERSION = Version,
+                FMP_CAPSULE_LSV     = Lsv,
+                BASE_TOOLS_PATH     = gBaseToolsPath,
+                FMP_CAPSULE_FILE    = FmpCapsuleFile,
+                FMP_CAPSULE_PAYLOAD = PayloadFileName
+                )
+    Command = ' '.join(Command.splitlines()).strip()
+    if gArgs.Verbose:
+        Command = Command + ' -v'
+
+    Log (Command)
+
+    Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+    ProcessOutput = Process.communicate()
+
+    if Process.returncode == 0:
+        Log (ProcessOutput[0].decode())
+    else:
+        LogAlways (Command)
+        LogAlways (ProcessOutput[0].decode())
+        Error ('GenerateCapsule returned an error')
+
+    Copy (PayloadFileName, (CapsulesPath, 'firmware.bin'))
+    MetaInfoXml = MetaInfoXmlTemplate
+    MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_GUID', Guid)
+    MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_BASE_NAME', BaseName)
+    MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_VERSION_DECIMAL', str(Version))
+    MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_STRING', VersionString)
+    MetaInfoXml = MetaInfoXml.replace ('FMP_CAPSULE_DATE', str(datetime.date.today()))
+    f = open (NormalizePath ((CapsulesPath, 'firmware.metainfo.xml')), 'w')
+    f.write(MetaInfoXml)
+    f.close()
+
+    f = open (NormalizePath ((CapsulesPath, 'Lvfs.ddf')), 'w')
+    f.write(LvfsDdfTemplate)
+    f.close()
+
+    if sys.platform == "win32":
+        Command = 'makecab /f ' + NormalizePath ((CapsulesPath, 'Lvfs.ddf'))
+    else:
+        Command = 'gcab --create firmware.cab firmware.bin firmware.metainfo.xml'
+    Log (Command)
+
+    Process = subprocess.Popen(Command, cwd=CapsulesPath, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+    ProcessOutput = Process.communicate()
+
+    if Process.returncode == 0:
+        Log (ProcessOutput[0].decode())
+    else:
+        LogAlways (Command)
+        LogAlways (ProcessOutput[0].decode())
+        Error ('GenerateCapsule returned an error')
+
+    FmpCabinetFile = NormalizePath ((CapsulesPath, CapsulesSubDir, BaseName + '.' + VersionString + '.cab'))
+
+    Copy ((CapsulesPath, 'firmware.cab'), FmpCabinetFile)
+
+    RemoveFile ((CapsulesPath, 'firmware.cab'))
+    RemoveFile ((CapsulesPath, 'setup.inf'))
+    RemoveFile ((CapsulesPath, 'setup.rpt'))
+    RemoveFile ((CapsulesPath, 'Lvfs.ddf'))
+    RemoveFile ((CapsulesPath, 'firmware.metainfo.xml'))
+    RemoveFile ((CapsulesPath, 'firmware.bin'))
+
+BiosIdTemplate = '''
+BOARD_ID       = MNW2MAX
+BOARD_REV      = $BOARD_REV
+BOARD_EXT      = $ARCH
+VERSION_MAJOR  = 0090
+BUILD_TYPE     = $BUILD_TYPE
+VERSION_MINOR  = 01
+'''
+
+
+if __name__ == '__main__':
+    #
+    # Create command line argument parser object
+    #
+    parser = argparse.ArgumentParser (
+                        prog = __prog__,
+                        description = __description__ + __copyright__,
+                        conflict_handler = 'resolve'
+                        )
+    parser.add_argument (
+             '-a', '--arch', dest = 'Arch', nargs = '+', action = 'append',
+             required = True,
+             help = '''ARCHS is one of list: IA32, X64, IPF, ARM, AARCH64 or EBC,
+                       which overrides target.txt's TARGET_ARCH definition. To
+                       specify more archs, please repeat this option.'''
+             )
+    parser.add_argument (
+             '-t', '--tagname', dest = 'ToolChain', required = True,
+             help = '''Using the Tool Chain Tagname to build the platform,
+                       overriding target.txt's TOOL_CHAIN_TAG definition.'''
+             )
+    parser.add_argument (
+             '-p', '--platform', dest = 'PlatformFile', required = True,
+             help = '''Build the platform specified by the DSC file name argument,
+                       overriding target.txt's ACTIVE_PLATFORM definition.'''
+             )
+    parser.add_argument (
+             '-b', '--buildtarget', dest = 'BuildTarget', required = True,
+             help = '''Using the TARGET to build the platform, overriding
+                       target.txt's TARGET definition.'''
+             )
+    parser.add_argument (
+             '--conf=', dest = 'ConfDirectory', required = True,
+             help = '''Specify the customized Conf directory.'''
+             )
+    parser.add_argument (
+             '-D', '--define', dest = 'Define', nargs='*', action = 'append',
+             help = '''Macro: "Name [= Value]".'''
+             )
+    parser.add_argument (
+             '-v', '--verbose', dest = 'Verbose', action = 'store_true',
+             help = '''Turn on verbose output with informational messages printed'''
+             )
+    parser.add_argument (
+             '--package', dest = 'Package', nargs = '*', action = 'append',
+             help = '''The directory name of a package of tests to copy'''
+             )
+
+    #
+    # Parse command line arguments
+    #
+    gArgs, remaining = parser.parse_known_args()
+    gArgs.BuildType = 'all'
+    for BuildType in ['all', 'fds', 'genc', 'genmake', 'clean', 'cleanall', 'modules', 'libraries', 'run']:
+        if BuildType in remaining:
+            gArgs.BuildType = BuildType
+            remaining.remove(BuildType)
+            break
+    gArgs.Remaining = ' '.join(remaining)
+
+    #
+    # Get WORKSPACE environment variable
+    #
+    try:
+        gWorkspace = os.environ['WORKSPACE']
+    except:
+        Error ('WORKSPACE environment variable not set')
+
+    #
+    # Get PACKAGES_PATH and generate prioritized list of paths
+    #
+    PathList = [gWorkspace]
+    try:
+        PathList += os.environ['PACKAGES_PATH'].split(os.pathsep)
+    except:
+        pass
+
+    #
+    # Determine full path to BaseTools
+    #
+    Vlv2Tbl2DevicePkgPath = ''
+    for Path in PathList:
+        if gBaseToolsPath == '':
+            if os.path.exists (os.path.join (Path, 'BaseTools')):
+                gBaseToolsPath = os.path.join (Path, 'BaseTools')
+        if Vlv2Tbl2DevicePkgPath == '':
+            if os.path.exists (os.path.join (Path, 'Vlv2TbltDevicePkg')):
+                Vlv2Tbl2DevicePkgPath = os.path.join (Path, 'Vlv2TbltDevicePkg')
+    if gBaseToolsPath == '':
+        Error ('Can not find BaseTools in WORKSPACE or PACKAGES_PATH')
+    if Vlv2Tbl2DevicePkgPath == '':
+        Error ('Can not find Vlv2Tbl2DevicePkg in WORKSPACE or PACKAGES_PATH')
+
+    #
+    # Parse OUTPUT_DIRECTORY from DSC file
+    #
+    for Path in PathList:
+        if os.path.exists (os.path.join (Path, gArgs.PlatformFile)):
+            Dsc = open (os.path.join (Path, gArgs.PlatformFile), 'r').readlines()
+            break
+    for Line in Dsc:
+        if Line.strip().startswith('OUTPUT_DIRECTORY'):
+            OutputDirectory = Line.strip().split('=')[1].strip()
+            break
+
+    #
+    # Determine full paths to EDK II build directory, EDK II build output
+    # directory and the CPU arch of the UEFI phase.
+    #
+    CommandDir = os.path.dirname(sys.argv[0])
+    EdkiiBuildDir = os.path.join (gWorkspace, OutputDirectory)
+    EdkiiBuildOutput = os.path.join (EdkiiBuildDir, gArgs.BuildTarget + '_' + gArgs.ToolChain)
+    UefiArch = gArgs.Arch[0][0]
+    if len (gArgs.Arch) > 1:
+        if ['X64'] in gArgs.Arch:
+            UefiArch = 'X64'
+
+    if gArgs.BuildType == 'run':
+        Error ("'run' target not supported")
+    if gArgs.BuildType == 'clean':
+        sys.exit (0)
+
+    #
+    # Create output directories to put BiosId files
+    #
+    try:
+        CreateDirectory ((gWorkspace, 'Build'))
+    except:
+        pass
+    try:
+        CreateDirectory ((EdkiiBuildDir))
+    except:
+        pass
+    try:
+        CreateDirectory ((EdkiiBuildOutput))
+    except:
+        pass
+
+    #
+    # Generate BiosId files
+    #
+    BiosId = BiosIdTemplate
+    if sys.platform == "win32":
+        # Built from a Windows Host OS
+        BiosId = BiosId.replace ('$BOARD_REV', 'W')
+    else:
+        # Built from a Linux/Unix/Mac Host OS
+        BiosId = BiosId.replace ('$BOARD_REV', 'L')
+    if UefiArch == 'X64':
+      BiosId = BiosId.replace ('$ARCH', 'X64')
+    else:
+      BiosId = BiosId.replace ('$ARCH', 'I32')
+    BiosId = BiosId.replace ('$BUILD_TYPE', gArgs.BuildTarget[0])
+
+    BiosIdFileName = NormalizePath ((EdkiiBuildOutput, 'BiosId.env'))
+    f = open (BiosIdFileName, 'w')
+    f.write(BiosId)
+    f.close()
+
+    Command = 'python ' + NormalizePath ((Vlv2Tbl2DevicePkgPath, '../Tools/GenBiosId/GenBiosId.py'))
+    Command = Command + ' -i '  + BiosIdFileName
+    Command = Command + ' -o '  + NormalizePath ((EdkiiBuildOutput, 'BiosId.bin'))
+    Command = Command + ' -ot ' + NormalizePath ((EdkiiBuildOutput, 'BiosId.txt'))
+
+    LogAlways (Command)
+
+    Process = subprocess.Popen(Command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
+    ProcessOutput = Process.communicate()
+
+    if Process.returncode == 0:
+        Log (ProcessOutput[0].decode())
+    else:
+        LogAlways (Command)
+        LogAlways (ProcessOutput[0].decode())
+        Error ('GenBiosId returned an error')

+ 40 - 24
Platform/Intel/Vlv2TbltDevicePkg/Readme.md

@@ -57,12 +57,15 @@ powershell Expand-Archive nasm-2.13.03-win64.zip .
 
 
 set WORKSPACE=%CD%
 set WORKSPACE=%CD%
 set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
 set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
+set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
 path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
 path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
 
 
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
+cd %WORKSPACE%\edk2
 
 
-Build_IFWI.bat /m MNW2 Debug
+edksetup.bat Rebuild
+
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc
 ```
 ```
 
 
 Once all the code and tools are downloaded and installed, only the following
 Once all the code and tools are downloaded and installed, only the following
@@ -72,8 +75,14 @@ directory used to install the source and binaries.
 ```
 ```
 set WORKSPACE=%CD%
 set WORKSPACE=%CD%
 set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
 set PACKAGES_PATH=%WORKSPACE%\edk2;%WORKSPACE%\edk2-platforms\Silicon\Intel;%WORKSPACE%\edk2-platforms\Platform\Intel;%WORKSPACE%\edk2-non-osi\Silicon\Intel
+set EDK_TOOLS_PATH=%WORKSPACE%\edk2\BaseTools
 path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
 path=%path%;%WORKSPACE%\openssl-1.0.2r-x64_86-win64
 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
 set NASM_PREFIX=%WORKSPACE%\nasm-2.13.03\
+
+cd %WORKSPACE%\edk2
+
+edksetup.bat Rebuild
+
 ```
 ```
 
 
 Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
 Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
@@ -82,39 +91,43 @@ rebuilt using the following commands.
 * Build X64 Debug Image with report file
 * Build X64 Debug Image with report file
 
 
 ```
 ```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /y MNW2 Debug
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgX64.dsc -y Vlv.report
 ```
 ```
 
 
 * Build X64 Release Image with build log
 * Build X64 Release Image with build log
 
 
 ```
 ```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /l MNW2 Release
+build -a IA32 -a X64 -n 5 -t VS2015x86 -b RELEASE Vlv2TbltDevicePkg\PlatformPkgX64.dsc -j Vlv.log
 ```
 ```
 
 
 * Build IA32 Debug Image
 * Build IA32 Debug Image
 
 
 ```
 ```
-cd edk2-platforms\Platform\Intel\Vlv2TbltDevicePkg
-Build_IFWI.bat /m /IA32 MNW2 Debug
+build -a IA32 -n 5 -t VS2015x86 -b DEBUG -p Vlv2TbltDevicePkg\PlatformPkgIA32.dsc
 ```
 ```
 
 
 The generated firmware image is the build output directory below WORKSPACE.  For
 The generated firmware image is the build output directory below WORKSPACE.  For
 exampple, the X64 Debug Image is at:
 exampple, the X64 Debug Image is at:
 
 
-`Build\Vlv2TbltDevicePkg\DEBUG_VS2015x86\FV\Vlv.ROM`
+`Build\Vlv2TbltDevicePkgX64\DEBUG_VS2015x86\FV\Vlv.fd`
 
 
 And the IA32 Release image is at:
 And the IA32 Release image is at:
 
 
-`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.ROM`
+`Build\Vlv2TbltDevicePkgIA32\RELEASE_VS2015x86\FV\Vlv.fd`
 
 
 The X64 CapsuleApp and generated UEFI Capsules are in the directory
 The X64 CapsuleApp and generated UEFI Capsules are in the directory
 
 
-`Build\Vlv2TbltDevicePkg\Capsules`
+`Build\Vlv2TbltDevicePkgX64\Capsules`
 
 
 # Linux Pre-requisites
 # Linux Pre-requisites
 
 
+* git
+* python
+* iasl
+* nasm
+* openssl
+* gcab
+
 # Download and Build MinnowMax using Linux/GCC
 # Download and Build MinnowMax using Linux/GCC
 
 
 Run the script below from an empty directory.  The script clones the EDK II
 Run the script below from an empty directory.  The script clones the EDK II
@@ -132,10 +145,12 @@ git clone https://github.com/tianocore/edk2-platforms.git
 git clone https://github.com/tianocore/edk2-non-osi.git
 git clone https://github.com/tianocore/edk2-non-osi.git
 
 
 export WORKSPACE=$PWD
 export WORKSPACE=$PWD
+export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms/Silicon/Intel:$WORKSPACE/edk2-platforms/Platform/Intel:$WORKSPACE/edk2-non-osi/Silicon/Intel
+cd $WORKSPACE/edk2
 
 
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
+. edksetup.sh
 
 
-./Build_IFWI.sh /m MNW2 Debug
+build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc
 ```
 ```
 
 
 Once all the code is downloaded and installed, only the following commands are
 Once all the code is downloaded and installed, only the following commands are
@@ -143,7 +158,11 @@ required to setup the environment.  Run these from the same directory used to
 install the source and binaries.
 install the source and binaries.
 
 
 ```
 ```
-export WORKSPACE=$PWD/edk2
+export WORKSPACE=$PWD
+export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms/Silicon/Intel:$WORKSPACE/edk2-platforms/Platform/Intel:$WORKSPACE/edk2-non-osi/Silicon/Intel
+cd $WORKSPACE/edk2
+
+. edksetup.sh
 ```
 ```
 
 
 Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
 Once the environment is setup, the MinnowBoard MAX firmware and capsules can be
@@ -152,36 +171,33 @@ rebuilt using the following commands.
 * Build X64 Debug Image with report file
 * Build X64 Debug Image with report file
 
 
 ```
 ```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /y MNW2 Debug
+build -a IA32 -a X64 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -y Vlv.report
 ```
 ```
 
 
 * Build X64 Release Image with build log
 * Build X64 Release Image with build log
 
 
 ```
 ```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /l MNW2 Release
+build -a IA32 -a X64 -n 5 -t GCC5 -b RELEASE -p Vlv2TbltDevicePkg/PlatformPkgX64.dsc -j Vlv.log
 ```
 ```
 
 
 * Build IA32 Debug Image
 * Build IA32 Debug Image
 
 
 ```
 ```
-cd edk2-platforms/Platform/Intel/Vlv2TbltDevicePkg
-./Build_IFWI.sh /m /IA32 MNW2 Debug
+build -a IA32 -n 5 -t GCC5 -b DEBUG -p Vlv2TbltDevicePkg/PlatformPkgIA32.dsc
 ```
 ```
 
 
 The generated firmware image is the build output directory below WORKSPACE.  For
 The generated firmware image is the build output directory below WORKSPACE.  For
 exampple, the X64 Debug Image is at:
 exampple, the X64 Debug Image is at:
 
 
-`Build/Vlv2TbltDevicePkg/DEBUG_GCC5/FV/Vlv.ROM`
+`Build/Vlv2TbltDevicePkgX64/DEBUG_GCC5/FV/Vlv.fd`
 
 
 And the IA32 Release image is at:
 And the IA32 Release image is at:
 
 
-`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.ROM`
+`Build/Vlv2TbltDevicePkgIA32/RELEASE_GCC5/FV/Vlv.fd`
 
 
 The X64 CapsuleApp and generated UEFI Capsules are in the directory
 The X64 CapsuleApp and generated UEFI Capsules are in the directory
 
 
-`Build/Vlv2TbltDevicePkg/Capsules`
+`Build/Vlv2TbltDevicePkgX64/Capsules`
 
 
 # Use DediProg to update FLASH image on a MinnowBoard MAX Target
 # Use DediProg to update FLASH image on a MinnowBoard MAX Target
 
 
@@ -192,7 +208,7 @@ The X64 CapsuleApp and generated UEFI Capsules are in the directory
 * Boot MinnowBoard MAX to the Boot Manager
 * Boot MinnowBoard MAX to the Boot Manager
 * Boot the `EFI Internal Shell` boot option
 * Boot the `EFI Internal Shell` boot option
 * Mount the USB FLASH Drive (usually `FS1`)
 * Mount the USB FLASH Drive (usually `FS1`)
-* Use `cd` command to go to `Capsules/TestCert` directory
+* Use `cd` command to go to `Capsules/TestCert_*` directory
 * Run the following command to apply all four capsules
 * Run the following command to apply all four capsules
 
 
 ```
 ```

+ 0 - 303
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.bat

@@ -1,303 +0,0 @@
-@REM @file
-@REM   Windows batch file to build BIOS ROM
-@REM
-@REM Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
-@REM SPDX-License-Identifier: BSD-2-Clause-Patent
-@REM
-
-@echo off
-setlocal EnableDelayedExpansion EnableExtensions
-echo.
-echo %date%  %time%
-echo.
-
-::**********************************************************************
-:: Initial Setup
-::**********************************************************************
-if %WORKSPACE:~-1%==\ set WORKSPACE=%WORKSPACE:~0,-1%
-set /a build_threads=1
-set "Build_Flags= "
-set exitCode=0
-set Arch=X64
-set GenLog=FALSE
-set GenReport=FALSE
-set Clean=FALSE
-set PLATFORM_NAME=Vlv2TbltDevicePkg
-
-::**********************************************************************
-:: Detect full path to the edk2 repo
-::**********************************************************************
-set CORE_PATH=%WORKSPACE%
-if not exist %CORE_PATH%\edksetup.bat (
-  if defined PACKAGES_PATH (
-    for %%i IN (%PACKAGES_PATH%) DO (
-      if exist %%~fi\edksetup.bat (
-        set CORE_PATH=%%~fi
-        goto CorePathFound
-      )
-    )
-  ) else (
-    echo.
-    echo !!! ERROR !!! Cannot find edksetup.bat !!!
-    echo.
-    goto BldFail
-  )
-)
-:CorePathFound
-
-::**********************************************************************
-:: Detect full path to the Vlv2TbltDevicePkg
-::**********************************************************************
-set PLATFORM_PACKAGE=%WORKSPACE%\%PLATFORM_NAME%
-if not exist %PLATFORM_PACKAGE% (
-  if defined PACKAGES_PATH (
-    for %%i IN (%PACKAGES_PATH%) DO (
-      if exist %%~fi\%PLATFORM_NAME% (
-        set PLATFORM_PACKAGE=%%~fi\%PLATFORM_NAME%
-        goto PlatformPackageFound
-      )
-    )
-  ) else (
-    echo.
-    echo !!! ERROR !!! Cannot find %PLATFORM_NAME% !!!
-    echo.
-    goto BldFail
-  )
-)
-:PlatformPackageFound
-
-cd %CORE_PATH%
-
-::**********************************************************************
-:: Run edksetup.bat and make sure tools are up to date
-::**********************************************************************
-
-call %CORE_PATH%\edksetup.bat Rebuild
-@echo off
-
-::**********************************************************************
-:: Parse command line arguments
-::**********************************************************************
-
-:: Optional arguments
-:OptLoop
-if /i "%~1"=="/?" goto Usage
-
-if /i "%~1"=="/l" (
-    set GenLog=TRUE
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/y" (
-    set GenReport=TRUE
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/m" (
-    if defined NUMBER_OF_PROCESSORS (
-        set /a build_threads=%NUMBER_OF_PROCESSORS%+1
-    )
-    shift
-    goto OptLoop
-)
-if /i "%~1" == "/c" (
-    set Clean=TRUE
-    shift
-    goto OptLoop
-)
-
-if /i "%~1"=="/x64" (
-    set Arch=X64
-    shift
-    goto OptLoop
-)
-if /i "%~1"=="/IA32" (
-    set Arch=IA32
-    shift
-    goto OptLoop
-)
-
-:: Required argument(s)
-if "%~1"=="" goto Usage
-
-if /i "%~2" == "RELEASE" (
-    set target=RELEASE
-) else (
-    set target=DEBUG
-)
-
-::**********************************************************************
-:: Detect TOOL_CHAIN_TAG
-::**********************************************************************
-
-echo.
-echo Setting the Build environment for VS2015/VS2013/VS2012/VS2010/VS2008...
-if defined VS140COMNTOOLS (
-  if not defined VSINSTALLDIR call "%VS140COMNTOOLS%\vsvars32.bat"
-  if /I "%VS140COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 14.0\Common7\Tools\" (
-    set TOOL_CHAIN_TAG=VS2015
-  ) else (
-    set TOOL_CHAIN_TAG=VS2015x86
-  ) 
-) else if defined VS120COMNTOOLS (
-  if not defined VSINSTALLDIR call "%VS120COMNTOOLS%\vsvars32.bat"
-  if /I "%VS120COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\" (
-    set TOOL_CHAIN_TAG=VS2013
-  ) else (
-    set TOOL_CHAIN_TAG=VS2013x86
-  )
-) else if defined VS110COMNTOOLS (
-  if not defined VSINSTALLDIR call "%VS110COMNTOOLS%\vsvars32.bat"
-  if /I "%VS110COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 11.0\Common7\Tools\" (
-    set TOOL_CHAIN_TAG=VS2012
-  ) else (
-    set TOOL_CHAIN_TAG=VS2012x86
-  )
-) else if defined VS100COMNTOOLS (
-  if not defined VSINSTALLDIR call "%VS100COMNTOOLS%\vsvars32.bat"
-  if /I "%VS100COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 10.0\Common7\Tools\" (
-    set TOOL_CHAIN_TAG=VS2010
-  ) else (
-    set TOOL_CHAIN_TAG=VS2010x86
-  )
-) else if defined VS90COMNTOOLS (
-  if not defined VSINSTALLDIR call "%VS90COMNTOOLS%\vsvars32.bat"
-  if /I "%VS90COMNTOOLS%" == "C:\Program Files\Microsoft Visual Studio 9.0\Common7\Tools\" (
-     set TOOL_CHAIN_TAG=VS2008
-  ) else (
-     set TOOL_CHAIN_TAG=VS2008x86
-  )
-) else (
-  echo  --ERROR: VS2015/VS2013/VS2012/VS2010/VS2008 not installed correctly. VS140COMNTOOLS/VS120COMNTOOLS/VS110COMNTOOLS/VS100COMNTOOLS/VS90COMNTOOLS not defined ^^!
-  echo.
-  goto :BldFail
-)
-
-::**********************************************************************
-:: Generate BUILD_PATH and make sure the directory exists
-::**********************************************************************
-
-echo Ensuring correct build directory is present
-if not exist %WORKSPACE%\Build mkdir %WORKSPACE%\Build
-if not exist %WORKSPACE%\Build\%PLATFORM_NAME%%Arch% mkdir %WORKSPACE%\Build\%PLATFORM_NAME%%Arch%
-set BUILD_PATH=%WORKSPACE%\Build\%PLATFORM_NAME%%Arch%\%TARGET%_%TOOL_CHAIN_TAG%
-if not exist %BUILD_PATH% mkdir %BUILD_PATH%
-
-::**********************************************************************
-:: Check for clean operation
-::**********************************************************************
-
-if "%Clean%"=="TRUE" (
-  echo Removing previous build files ...
-  if exist %BUILD_PATH% (
-    rmdir /s/q %BUILD_PATH%
-  )
-  if exist %WORKSPACE%\Conf\.cache (
-    rmdir /s/q %WORKSPACE%\Conf\.cache
-  )
-  echo.
-  goto :Exit
-)
-
-::**********************************************************************
-:: Generate Build_Flags
-::**********************************************************************
-
-set Build_Flags=%Build_Flags% -b %TARGET%
-if "%Arch%"=="IA32" (
-    set Build_Flags=%Build_Flags% -a IA32
-) else if "%Arch%"=="X64" (
-    set Build_Flags=%Build_Flags% -a IA32 -a X64
-)
-set Build_Flags=%Build_Flags% -t %TOOL_CHAIN_TAG%
-set Build_Flags=%Build_Flags% -n %build_threads%
-set Capsule_Build_Flags=%Build_Flags%
-set Build_Flags=%Build_Flags% -p %PLATFORM_PACKAGE%/PlatformPkg%Arch%.dsc
-if "%GenLog%"=="TRUE" (
-  set Build_Flags=%Build_Flags% -j %BUILD_PATH%\%PLATFORM_NAME%.log
-)
-if "%GenReport%"=="TRUE" (
-  set Build_Flags=%Build_Flags% -y %BUILD_PATH%\%PLATFORM_NAME%.report
-)
-
-::**********************************************************************
-:: Generate BIOS ID
-::**********************************************************************
-
-echo BOARD_ID       = MNW2MAX >  %BUILD_PATH%/BiosId.env
-echo BOARD_REV      = W       >> %BUILD_PATH%/BiosId.env
-if "%Arch%"=="IA32" (
-  echo BOARD_EXT      = I32   >> %BUILD_PATH%/BiosId.env
-)
-if "%Arch%"=="X64" (
-  echo BOARD_EXT      = X64   >> %BUILD_PATH%/BiosId.env
-)
-echo VERSION_MAJOR  = 0090    >> %BUILD_PATH%/BiosId.env
-if "%TARGET%"=="DEBUG" (
-  echo BUILD_TYPE     = D     >> %BUILD_PATH%/BiosId.env
-)
-if "%TARGET%"=="RELEASE" (
-  echo BUILD_TYPE     = R     >> %BUILD_PATH%/BiosId.env
-)
-echo VERSION_MINOR  = 01      >> %BUILD_PATH%/BiosId.env
-
-%WORKSPACE%\edk2-platforms\Platform\Intel\Tools\GenBiosId\GenBiosId.py -i %BUILD_PATH%/BiosId.env -o %BUILD_PATH%/BiosId.bin -ot %BUILD_PATH%/BiosId.txt
-
-::**********************************************************************
-:: Build BIOS
-::**********************************************************************
-
-echo.
-echo Invoking EDK2 build...
-echo build %Build_Flags%
-
-call build %Build_Flags%
-
-if %ERRORLEVEL% NEQ 0 goto BldFail
-
-copy %BUILD_PATH%\FV\VLV.fd %BUILD_PATH%\FV\Vlv.ROM
-
-::**********************************************************************
-:: Build Capsules
-::**********************************************************************
-echo Invoking EDK2 build for capsules...
-echo build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
-call build %Capsule_Build_Flags% -p %PLATFORM_PACKAGE%\PlatformCapsule%Arch%.dsc
-
-goto Exit
-
-:Usage
-echo.
-echo ***************************************************************************
-echo Build BIOS rom for VLV platforms.
-echo.
-echo Usage: bld_vlv.bat [options] PlatformType [Build Target]
-echo.
-echo    /c    CleanAll
-echo    /l    Generate build log file
-echo    /y    Generate build report file
-echo    /m    Enable multi-processor build
-echo    /IA32 Set Arch to IA32 (default: X64)
-echo    /X64  Set Arch to X64 (default: X64)
-echo.
-echo        Platform Types:  MNW2
-echo        Build Targets:   Debug, Release  (default: Debug)
-echo.
-echo Examples:
-echo    bld_vlv.bat MNW2                 : X64 Debug build for MinnowMax
-echo    bld_vlv.bat /IA32 MNW2 release   : IA32 Release build for MinnowMax
-echo.
-echo ***************************************************************************
-set exitCode=1
-goto Exit
-
-:BldFail
-set exitCode=1
-echo  -- Error:  EDKII BIOS Build has failed!
-echo See EDK2.log for more details
-
-:Exit
-echo %date%  %time%
-exit /b %exitCode%
-
-EndLocal

+ 0 - 222
Platform/Intel/Vlv2TbltDevicePkg/bld_vlv.sh

@@ -1,222 +0,0 @@
-#!/usr/bin/env bash
-##**********************************************************************
-## Function define
-##**********************************************************************
-function Usage() {
-  echo
-  echo "***************************************************************************"
-  echo "Build BIOS rom for VLV platforms."
-  echo
-  echo "Usage: bld_vlv.sh  [options] PlatformType [Build Target]"
-  echo
-  echo "   /c    CleanAll"
-  echo "   /l    Generate build log file"
-  echo "   /y    Generate build report file"
-  echo "   /m    Enable multi-processor build"
-  echo "   /IA32 Set Arch to IA32 (default: X64)"
-  echo "   /X64  Set Arch to X64 (default: X64)"
-  echo
-  echo "       Platform Types:  MNW2"
-  echo "       Build Targets:   Debug, Release  (default: Debug)"
-  echo
-  echo "Examples:"
-  echo "   bld_vlv.sh MNW2                 : X64 Debug build for MinnowMax"
-  echo "   bld_vlv.sh /IA32 MNW2 release   : IA32 Release build for MinnowMax"
-  echo "***************************************************************************"
-  exit 0
-}
-
-set -e
-
-cd ..
-echo -e $(date)
-##**********************************************************************
-## Initial Setup
-##**********************************************************************
-#build_threads=($NUMBER_OF_PROCESSORS)+1
-Build_Flags=
-exitCode=0
-build_threads=1
-Arch=X64
-GenLog=FALSE
-GenReport=FALSE
-Clean=FALSE
-
-
-export CORE_PATH=$WORKSPACE/edk2
-export PLATFORM_PATH=$WORKSPACE/edk2-platforms/Platform/Intel/
-export SILICON_PATH=$WORKSPACE/edk2-platforms/Silicon/Intel/
-export BINARY_PATH=$WORKSPACE/edk2-non-osi/Silicon/Intel/
-export PACKAGES_PATH=$PLATFORM_PATH:$SILICON_PATH:$BINARY_PATH:$CORE_PATH
-
-## Setup EDK environment. Edksetup puts new copies of target.txt, tools_def.txt, build_rule.txt in WorkSpace\Conf
-## Also run edksetup as soon as possible to avoid it from changing environment variables we're overriding
-cd $CORE_PATH
-. edksetup.sh BaseTools
-make -C BaseTools
-
-## Define platform specific environment variables.
-PLATFORM_NAME=Vlv2TbltDevicePkg
-PLATFORM_PACKAGE=Vlv2TbltDevicePkg
-PLATFORM_PKG_PATH=$PLATFORM_PATH/$PLATFORM_PACKAGE
-
-cd $PLATFORM_PKG_PATH
-
-##**********************************************************************
-## Parse command line arguments
-##**********************************************************************
-
-## Optional arguments
-for (( i=1; i<=$#; ))
-  do
-    if [ "$1" == "/?" ]; then
-      Usage
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/L" ]; then
-      GenLog=TRUE
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/Y" ]; then
-      GenReport=TRUE
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/M" ]; then
-      build_threads=8
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/C" ]; then
-      Clean=TRUE
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/X64" ]; then
-      Arch=X64
-      shift
-    elif [ "$(echo $1 | tr 'a-z' 'A-Z')" == "/IA32" ]; then
-      Arch=IA32
-      shift
-    else
-      break
-    fi
-  done
-
-## Required argument(s)
-if [ "$2" == "" ]; then
-  Usage
-fi
-
-echo "Setting  $1  platform configuration and BIOS ID..."
-
-if [ "$(echo $2 | tr 'a-z' 'A-Z')" == "RELEASE" ]; then
-  export TARGET=RELEASE
-else
-  export TARGET=DEBUG
-fi
-
-##**********************************************************************
-## Detect TOOL_CHAIN_TAG
-##**********************************************************************
-gcc_version=$(gcc -v 2>&1 | tail -1 | awk '{print $3}')
-case $gcc_version in
-      [1-3].*|4.[0-7].*)
-        echo MNW2 requires GCC4.8 or later
-        exit 1
-        ;;
-      4.8.*)
-        export TOOL_CHAIN_TAG=GCC48
-        ;;
-      4.9.*|6.[0-2].*)
-        export TOOL_CHAIN_TAG=GCC49
-        ;;
-      *)
-        export TOOL_CHAIN_TAG=GCC5
-        ;;
-esac
-
-##**********************************************************************
-## Generate $BUILD_PATH and make sure the directory exists
-##**********************************************************************
-if [ ! -d ${WORKSPACE}/Build ]; then
-  mkdir ${WORKSPACE}/Build
-fi
-
-if [ ! -d ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch} ]; then
-  mkdir ${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}
-fi
-BUILD_PATH=${WORKSPACE}/Build/${PLATFORM_NAME}${Arch}/${TARGET}_${TOOL_CHAIN_TAG}
-
-if [ ! -d $BUILD_PATH ]; then
-  mkdir $BUILD_PATH
-fi
-
-##**********************************************************************
-## Check for clean operation
-##**********************************************************************
-if [ $Clean == "TRUE" ]; then
-  echo Removing previous build files ...
-  if [ -d ${BUILD_PATH} ]; then
-    rm -r ${BUILD_PATH}
-  fi
-  if [ -d ${WORKSPACE}/Conf/.cache ]; then
-    rm -r ${WORKSPACE}/Conf/.cache
-  fi
-  exit 0
-fi
-
-##**********************************************************************
-## Generate Build_Flags
-##**********************************************************************
-
-Build_Flags="$Build_Flags -b $TARGET"
-if [ $Arch == "IA32" ]; then
-  Build_Flags="$Build_Flags -a IA32"
-else
-  Build_Flags="$Build_Flags -a IA32 -a X64"
-fi
-Build_Flags="$Build_Flags -t $TOOL_CHAIN_TAG"
-Build_Flags="$Build_Flags -n $build_threads"
-Capsule_Build_Flags="$Build_Flags"
-Build_Flags="$Build_Flags -p ${PLATFORM_PKG_PATH}/PlatformPkg${Arch}.dsc"
-if [ $GenLog == "TRUE" ]; then
-  Build_Flags="$Build_Flags -j ${BUILD_PATH}/${PLATFORM_NAME}.log"
-fi
-if [ $GenReport == "TRUE" ]; then
-  Build_Flags="$Build_Flags -y ${BUILD_PATH}/${PLATFORM_NAME}.report"
-fi
-
-##**********************************************************************
-## Generate BIOS ID
-##**********************************************************************
-
-echo BOARD_ID       = MNW2MAX >  $BUILD_PATH/BiosId.env
-echo BOARD_REV      = L       >> $BUILD_PATH/BiosId.env
-if [ $Arch == "IA32" ]; then
-  echo BOARD_EXT      = I32   >> $BUILD_PATH/BiosId.env
-fi
-if [ $Arch == "X64" ]; then
-  echo BOARD_EXT      = X64   >> $BUILD_PATH/BiosId.env
-fi
-echo VERSION_MAJOR  = 0090    >> $BUILD_PATH/BiosId.env
-if [ $TARGET == "DEBUG" ]; then
-  echo BUILD_TYPE     = D     >> $BUILD_PATH/BiosId.env
-fi
-if [ $TARGET == "RELEASE" ]; then
-  echo BUILD_TYPE     = R     >> $BUILD_PATH/BiosId.env
-fi
-echo VERSION_MINOR  = 01      >> $BUILD_PATH/BiosId.env
-
-python $WORKSPACE/edk2-platforms/Platform/Intel/Tools/GenBiosId/GenBiosId.py -i $BUILD_PATH/BiosId.env -o $BUILD_PATH/BiosId.bin -ot $BUILD_PATH/BiosId.txt
-
-##**********************************************************************
-## Build BIOS
-##**********************************************************************
-echo "Invoking EDK2 build..."
-echo build $Build_Flags
-build $Build_Flags
-
-cp -f $BUILD_PATH/FV/VLV.fd $BUILD_PATH/FV/Vlv.ROM
-
-##**********************************************************************
-## Build Capsules
-##**********************************************************************
-echo "Invoking EDK2 build for capsules..."
-echo build $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
-build      $Capsule_Build_Flags -p $PLATFORM_PKG_PATH/PlatformCapsule${Arch}.dsc
-
-echo
-echo -------------------- The EDKII BIOS build has successfully completed. --------------------
-echo