]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Sync BaseTools Trunk (version r2518) to EDKII main trunk.
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 10 Apr 2012 07:18:20 +0000 (07:18 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 10 Apr 2012 07:18:20 +0000 (07:18 +0000)
Signed-off-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13178 6f19259b-4bc3-4df7-8a09-765794883524

109 files changed:
BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc [deleted file]
BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf [deleted file]
BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec [deleted file]
BaseTools/Bin/Win32/BPDG.exe
BaseTools/Bin/Win32/BootSectImage.exe
BaseTools/Bin/Win32/EfiLdrImage.exe
BaseTools/Bin/Win32/EfiRom.exe
BaseTools/Bin/Win32/Fpd2Dsc.exe [deleted file]
BaseTools/Bin/Win32/GenBootSector.exe
BaseTools/Bin/Win32/GenCrc32.exe
BaseTools/Bin/Win32/GenDepex.exe
BaseTools/Bin/Win32/GenFds.exe
BaseTools/Bin/Win32/GenFfs.exe
BaseTools/Bin/Win32/GenFv.exe
BaseTools/Bin/Win32/GenFw.exe
BaseTools/Bin/Win32/GenPage.exe
BaseTools/Bin/Win32/GenPatchPcdTable.exe
BaseTools/Bin/Win32/GenSec.exe
BaseTools/Bin/Win32/GenVtf.exe
BaseTools/Bin/Win32/LzmaCompress.exe
BaseTools/Bin/Win32/LzmaF86Compress.bat [new file with mode: 0644]
BaseTools/Bin/Win32/MigrationMsa2Inf.exe [deleted file]
BaseTools/Bin/Win32/PatchPcdValue.exe
BaseTools/Bin/Win32/Spd2Dec.exe [deleted file]
BaseTools/Bin/Win32/Split.exe
BaseTools/Bin/Win32/TargetTool.exe
BaseTools/Bin/Win32/TianoCompress.exe
BaseTools/Bin/Win32/Trim.exe
BaseTools/Bin/Win32/UPT.exe
BaseTools/Bin/Win32/VfrCompile.exe
BaseTools/Bin/Win32/VolInfo.exe
BaseTools/Bin/Win32/build.exe
BaseTools/BinWrappers/PosixLike/fpd2dsc [deleted symlink]
BaseTools/BinWrappers/PosixLike/msa2inf [deleted symlink]
BaseTools/BinWrappers/PosixLike/spd2dec [deleted symlink]
BaseTools/BuildEnv
BaseTools/Conf/XMLSchema/FarManifest.xsd [deleted file]
BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd [deleted file]
BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd [deleted file]
BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd [deleted file]
BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd [deleted file]
BaseTools/Conf/XMLSchema/NamingConvention.xsd [deleted file]
BaseTools/Conf/XMLSchema/SurfaceArea.xsd [deleted file]
BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig [deleted file]
BaseTools/Conf/XMLSchema/WorkspaceContent.xsd [deleted file]
BaseTools/Conf/build_rule.template
BaseTools/Conf/tools_def.template
BaseTools/Source/C/GNUmakefile
BaseTools/Source/C/Include/Common/BuildVersion.h
BaseTools/Source/C/Include/Common/UefiInternalFormRepresentation.h
BaseTools/Source/C/LzmaCompress/GNUmakefile
BaseTools/Source/C/LzmaCompress/LzmaCompress.c
BaseTools/Source/C/LzmaCompress/LzmaF86Compress.bat [new file with mode: 0644]
BaseTools/Source/C/LzmaCompress/Makefile
BaseTools/Source/C/LzmaCompress/Sdk/C/Bra.h [new file with mode: 0644]
BaseTools/Source/C/LzmaCompress/Sdk/C/Bra86.c [new file with mode: 0644]
BaseTools/Source/C/Makefile
BaseTools/Source/C/VfrCompile/VfrFormPkg.cpp
BaseTools/Source/C/VfrCompile/VfrFormPkg.h
BaseTools/Source/C/VfrCompile/VfrUtilityLib.cpp
BaseTools/Source/C/VfrCompile/VfrUtilityLib.h
BaseTools/Source/Python/AutoGen/AutoGen.py
BaseTools/Source/Python/AutoGen/BuildEngine.py
BaseTools/Source/Python/AutoGen/GenC.py
BaseTools/Source/Python/Common/BuildVersion.py
BaseTools/Source/Python/Common/DataType.py
BaseTools/Source/Python/Common/Expression.py
BaseTools/Source/Python/Common/GlobalData.py
BaseTools/Source/Python/Common/String.py
BaseTools/Source/Python/Ecc/Ecc.py
BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaDataTable.py
BaseTools/Source/Python/Ecc/MetaFileWorkspace/MetaFileParser.py
BaseTools/Source/Python/Fdb/__init__.py [deleted file]
BaseTools/Source/Python/FixFlash/__init__.py [deleted file]
BaseTools/Source/Python/GenFds/FdfParser.py
BaseTools/Source/Python/GenFds/Ffs.py
BaseTools/Source/Python/GenFds/GenFds.py
BaseTools/Source/Python/GenFds/GenFdsGlobalVariable.py
BaseTools/Source/Python/Makefile
BaseTools/Source/Python/MigrationMsa2Inf/AutoGenExterns.py [deleted file]
BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py [deleted file]
BaseTools/Source/Python/MigrationMsa2Inf/__init__.py [deleted file]
BaseTools/Source/Python/MkBOM/__init__.py [deleted file]
BaseTools/Source/Python/UPT/BuildVersion.py
BaseTools/Source/Python/Workspace/MetaFileParser.py
BaseTools/Source/Python/Workspace/MetaFileTable.py
BaseTools/Source/Python/Workspace/WorkspaceDatabase.py
BaseTools/Source/Python/build/BuildReport.py
BaseTools/Source/Python/build/build.py
BaseTools/Source/Python/fpd2dsc/EdkIIWorkspaceGuidsInfo.py [deleted file]
BaseTools/Source/Python/fpd2dsc/LoadFpd.py [deleted file]
BaseTools/Source/Python/fpd2dsc/MigrationUtilities.py [deleted file]
BaseTools/Source/Python/fpd2dsc/StoreDsc.py [deleted file]
BaseTools/Source/Python/fpd2dsc/__init__.py [deleted file]
BaseTools/Source/Python/fpd2dsc/fpd2dsc.py [deleted file]
BaseTools/Source/Python/msa2inf/ConvertModule.py [deleted file]
BaseTools/Source/Python/msa2inf/EdkIIWorkspaceGuidsInfo.py [deleted file]
BaseTools/Source/Python/msa2inf/LoadMsa.py [deleted file]
BaseTools/Source/Python/msa2inf/Msa2Inf.py [deleted file]
BaseTools/Source/Python/msa2inf/StoreInf.py [deleted file]
BaseTools/Source/Python/msa2inf/__init__.py [deleted file]
BaseTools/Source/Python/spd2dec/ConvertPackage.py [deleted file]
BaseTools/Source/Python/spd2dec/LoadSpd.py [deleted file]
BaseTools/Source/Python/spd2dec/Spd2Dec.py [deleted file]
BaseTools/Source/Python/spd2dec/StoreDec.py [deleted file]
BaseTools/Source/Python/spd2dec/__init__.py [deleted file]
BaseTools/Tests/TestTools.py
BaseTools/UserManuals/LzmaCompress_Utility_Man_Page.rtf
BaseTools/toolsetup.bat

diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc b/BaseTools/Bin/CYGWIN_NT-5.1-i686/fpd2dsc
deleted file mode 100755 (executable)
index 2cb8b86..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-#python `dirname $0`/RunToolFromSource.py `basename $0` $*
-PYTHONPATH="`dirname $0`/../../Source/Python" \
-    python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $*
-
diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf b/BaseTools/Bin/CYGWIN_NT-5.1-i686/msa2inf
deleted file mode 100755 (executable)
index 2cb8b86..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-#python `dirname $0`/RunToolFromSource.py `basename $0` $*
-PYTHONPATH="`dirname $0`/../../Source/Python" \
-    python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $*
-
diff --git a/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec b/BaseTools/Bin/CYGWIN_NT-5.1-i686/spd2dec
deleted file mode 100755 (executable)
index 2cb8b86..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env bash
-#python `dirname $0`/RunToolFromSource.py `basename $0` $*
-PYTHONPATH="`dirname $0`/../../Source/Python" \
-    python "`dirname $0`/../../Source/Python"/`basename $0`/`basename $0`.py $*
-
index 8cb7362fa873b4754ca5764ec0d070c9fd44a659..0950a85a0676c560822ef146df2bb48eb5d48151 100644 (file)
Binary files a/BaseTools/Bin/Win32/BPDG.exe and b/BaseTools/Bin/Win32/BPDG.exe differ
index 368c269553a7332884c61ec99fdae596793eaa26..77c2ca6f0ce881312d3f406267155910aa2f662e 100755 (executable)
Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ
index 604f850f040e2983e5fb0a83722de347032882dc..0014483a35c398896340042fed0be172c42d083f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index 5de62fd7836954c3ce455e862b79e596f75c45d2..34c01a729257b2322bdf2bf4b9dd73cf176fe771 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ
diff --git a/BaseTools/Bin/Win32/Fpd2Dsc.exe b/BaseTools/Bin/Win32/Fpd2Dsc.exe
deleted file mode 100755 (executable)
index d774971..0000000
Binary files a/BaseTools/Bin/Win32/Fpd2Dsc.exe and /dev/null differ
index cb57ba77eac6abac282b7696e4175d89b8a2841d..e8315a3fe7aeee8aef29fa2c8f38395da3566de2 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ
index d545e7e8b854cc4ce75088c15a0e3a8f83da0839..7874a65e47cea967dbe361fe1dd2da466c697964 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ
index b17f12ed7bbf3142cbf9d138b54d7ffd43652086..3e477a27888c6e3b264a13792726b2017e5b364d 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenDepex.exe and b/BaseTools/Bin/Win32/GenDepex.exe differ
index bd270d63fa8ae40b6a2b751f18a93b29341b90ee..be4fccacfbdad90d4d62d7d44517d9d85f3047f3 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFds.exe and b/BaseTools/Bin/Win32/GenFds.exe differ
index bf3ab699bdb3e2bbf5f530cd6155f89f4508fd3e..f237967923010e5012bbb3f4462e80d1ed547eed 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ
index 96f97312901be95614b5d14b337ba202ab311aba..46231ff9f3a40757a019179e5fb1c033eb156828 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ
index 33c08bcd44723a8fdacfecaee39db162c0d7d3ac..353a2f4447b626d51d4e0c4ee4d87b6bc47f873f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ
index e7f673252f75238882d17d1bd26f98466795afd5..40c491062c8942346dfb7b6c6a1120229de17500 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ
index aa9bf405aa782bc71cc4acdae31d9179ff37bb92..1b84df80de52eebfc4d49f1b686dda06ca6c5239 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPatchPcdTable.exe and b/BaseTools/Bin/Win32/GenPatchPcdTable.exe differ
index 1274d352bcb2e054a63c6ac14ddff81a899d3d59..c4b92a47c710c567e315609088f3742fecd11e8a 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ
index 4f1868ff87af6a26870e0afdcb4a96306c12faad..1bef934cfa4119cf12a5d158857bba3660b0ea7c 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ
index 244237a2e1005247c8c71f5007166a5ef2de7b1e..82780efc77dce8f51566b4118dababda5cc41cae 100755 (executable)
Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ
diff --git a/BaseTools/Bin/Win32/LzmaF86Compress.bat b/BaseTools/Bin/Win32/LzmaF86Compress.bat
new file mode 100644 (file)
index 0000000..2154721
--- /dev/null
@@ -0,0 +1,29 @@
+@REM\r
+@REM Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>\r
+@REM This program and the accompanying materials\r
+@REM are licensed and made available under the terms and conditions of the BSD License\r
+@REM which accompanies this distribution.  The full text of the license may be found at\r
+@REM http://opensource.org/licenses/bsd-license.php\r
+@REM\r
+@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+@REM\r
+\r
+@echo off\r
+@setlocal\r
+\r
+:Begin\r
+if "%1"=="" goto End\r
+if "%1"=="-e" (\r
+  set FLAG=--f86\r
+)\r
+if "%1"=="-d" (\r
+  set FLAG=--f86\r
+)\r
+set ARGS=%ARGS% %1\r
+shift\r
+goto Begin\r
+\r
+:End\r
+LzmaCompress %ARGS% %FLAG%\r
+@echo on
\ No newline at end of file
diff --git a/BaseTools/Bin/Win32/MigrationMsa2Inf.exe b/BaseTools/Bin/Win32/MigrationMsa2Inf.exe
deleted file mode 100755 (executable)
index 219b181..0000000
Binary files a/BaseTools/Bin/Win32/MigrationMsa2Inf.exe and /dev/null differ
index c635d3ac11445947d1a8365d48d928a551d4c872..328651d7db8cecfe43ec2bfe6c4023c3111c6bc7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/PatchPcdValue.exe and b/BaseTools/Bin/Win32/PatchPcdValue.exe differ
diff --git a/BaseTools/Bin/Win32/Spd2Dec.exe b/BaseTools/Bin/Win32/Spd2Dec.exe
deleted file mode 100755 (executable)
index 072f648..0000000
Binary files a/BaseTools/Bin/Win32/Spd2Dec.exe and /dev/null differ
index c5fead3786ba5d9a5e0606fcd75ab66397eec8eb..f5907b04cfc61e3366cd126dd200ec265808d9be 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ
index 19ff3a832224ef30ca9c5462a547a3c56f5f9ac2..0170468cfbaf47ea323390f99b85a0839ada7ec8 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TargetTool.exe and b/BaseTools/Bin/Win32/TargetTool.exe differ
index e47070c24d788af1e16fbd01185e1666487a7ee7..25706822617d2e4c4712f27df523e13bcff5ba38 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ
index 25f919877877b63e2618f99094033ebdab245816..8a3cfb7f9611d5d6ccca0dd2941da6b8dddb88e7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Trim.exe and b/BaseTools/Bin/Win32/Trim.exe differ
index 8f08ca3ef392a15661fc2549b671ca1abb90b5be..7939ee97d29ec4db06b2715c2006cfb85751cb31 100644 (file)
Binary files a/BaseTools/Bin/Win32/UPT.exe and b/BaseTools/Bin/Win32/UPT.exe differ
index ccb69a263ec5f9f3e0ccbec3d49f986044247ccb..dd7431b741a1ae5ed4756c2e1b2478baf14c691f 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ
index 0befe01e73f68288edacaf63d762c4b73351e2da..fa7168f8ede0777245a6a3eba0305dfd390c9e0a 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ
index 1bb30e7a3e45ccf48ccbd24a78dfa4b6c8dfa185..01ee7a810d2b3160369943b6c4a5961400309d64 100755 (executable)
Binary files a/BaseTools/Bin/Win32/build.exe and b/BaseTools/Bin/Win32/build.exe differ
diff --git a/BaseTools/BinWrappers/PosixLike/fpd2dsc b/BaseTools/BinWrappers/PosixLike/fpd2dsc
deleted file mode 120000 (symlink)
index af6c748..0000000
+++ /dev/null
@@ -1 +0,0 @@
-RunToolFromSource
\ No newline at end of file
diff --git a/BaseTools/BinWrappers/PosixLike/msa2inf b/BaseTools/BinWrappers/PosixLike/msa2inf
deleted file mode 120000 (symlink)
index af6c748..0000000
+++ /dev/null
@@ -1 +0,0 @@
-RunToolFromSource
\ No newline at end of file
diff --git a/BaseTools/BinWrappers/PosixLike/spd2dec b/BaseTools/BinWrappers/PosixLike/spd2dec
deleted file mode 120000 (symlink)
index af6c748..0000000
+++ /dev/null
@@ -1 +0,0 @@
-RunToolFromSource
\ No newline at end of file
index ca8a5781f61c2e5d215a2249ed3502f32790fd55..79f916a9d54b437b63108be28a6ac44fabaad13a 100755 (executable)
@@ -1,5 +1,5 @@
 #
-# Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
 # which accompanies this distribution.  The full text of the license may be found at
@@ -160,6 +160,14 @@ GetEdkToolsPathBinDirectory() {
   echo $EDK_TOOLS_PATH_BIN
 }
 
+AddDirToStartOfPath() {
+  DIRNAME=$1
+  PATH=$DIRNAME:$DIRNAME:$DIRNAME:$PATH
+  PATH=${PATH//$DIRNAME:/}
+  PATH=$DIRNAME:$PATH
+  export PATH
+}
+
 AddEdkToolsToPath() {
 
   #
@@ -172,18 +180,8 @@ AddEdkToolsToPath() {
 
   EDK_TOOLS_PATH_BIN=`GetEdkToolsPathBinDirectory`
 
-  if [ ! -e $EDK_TOOLS_PATH_BIN ]
-  then
-    echo "Unable to find expected bin path under \$EDK_TOOLS_PATH!"
-    echo "> $EDK_TOOLS_PATH_BIN"
-    return 1
-  fi
-
-  if [ "${PATH/$EDK_TOOLS_PATH_BIN/}" == "$PATH" ]
-  then
-    export PATH=$EDK_TOOLS_PATH_BIN:$PATH
-    return 0
-  fi
+  AddDirToStartOfPath $EDK_TOOLS_PATH/BinWrappers/PosixLike
+  AddDirToStartOfPath $EDK_TOOLS_PATH_BIN
 
 }
 
@@ -208,7 +206,6 @@ CopySingleTemplateFile() {
 CopyTemplateFiles() {
 
   CopySingleTemplateFile build_rule
-  CopySingleTemplateFile FrameworkDatabase
   CopySingleTemplateFile tools_def
   CopySingleTemplateFile target
 
diff --git a/BaseTools/Conf/XMLSchema/FarManifest.xsd b/BaseTools/Conf/XMLSchema/FarManifest.xsd
deleted file mode 100644 (file)
index 6e8c34a..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-Filename: FarManifest.xsd\r
-\r
-Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which may be found at http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
--->\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">\r
-  <xs:include schemaLocation="FrameworkHeaders.xsd"/>  \r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">\r
-      The Framework Archive File Format is defined as a Java Archive file, with a special xml file called FrameworkArchiveManifest.xml at the top of the archive. The FrameworkArchiveManifest.xml must be an instance of this schema.\r
-    </xs:documentation>\r
-  </xs:annotation>\r
-  <xs:element name="FrameworkArchiveManifest">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">\r
-        This schema defines the Framework Archive Manifest. \r
-      </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="FarHeader"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="FarPackageList">   \r
-          <xs:annotation>\r
-            <xs:documentation>\r
-              The list of packages in this FAR.\r
-            </xs:documentation>\r
-          </xs:annotation>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Contents">   \r
-          <xs:annotation>\r
-            <xs:documentation>\r
-              Extra contents that are not part of any Package. These file paths are WORKSPACE relative.  If a file exists in the workspace at this location, then the user should be asked whether to overwrite.  When the user removes the far, these should be removed also, unless they have been modified (per md5sum).\r
-            </xs:documentation>\r
-          </xs:annotation>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="FarPackageList">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" ref="FarPackage"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="FarPackage">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element ref="FarFilename">\r
-          <xs:annotation>\r
-            <xs:documentation>\r
-              This is the name of the .spd or file that describes the package. It must exist in the directory identified by DefaultPath.\r
-            </xs:documentation>\r
-          </xs:annotation>\r
-        </xs:element>\r
-        <xs:element ref="GuidValue"></xs:element>\r
-        <xs:element ref="Version"></xs:element>\r
-        <xs:element ref="DefaultPath">\r
-          <xs:annotation>\r
-            <xs:documentation>\r
-              This is the default installation location within the workspace. This also serves as the location within the far itself of the package root. The Contents of the pacakage will be found there. The user may choose some other location within the workspace to install the package, as long as it does not overlap a package that is already installed.\r
-            </xs:documentation>\r
-          </xs:annotation>\r
-        </xs:element>\r
-        <xs:element ref="Contents">\r
-          <xs:annotation>\r
-            <xs:documentation>\r
-              This is the list of files that belong to the package. They are specified by relative path from the root of the pacakge.                            \r
-            </xs:documentation>\r
-          </xs:annotation>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"></xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="DefaultPath" type="PathAndFilename"/>\r
-  <xs:element name="FarFilename" type="DbPathAndFilename">\r
-    <xs:annotation>\r
-      <xs:documentation>\r
-        The FarFilename is used to build up the Contents list. It has an md5sum attribute for keeping track of whether the file is changed after it is installed. The Md5sum can also be used to check the integrity of a far before it is installed into the workspace.\r
-      </xs:documentation>\r
-    </xs:annotation>\r
-  </xs:element>\r
-  <xs:element name="GuidValue" type="GuidType">\r
-    <xs:annotation>\r
-      <xs:documentation>\r
-        The purpose of this element is to allow Guids to be assigned to or used by other elements in the schema.\r
-      </xs:documentation>\r
-    </xs:annotation>\r
-  </xs:element>\r
-  <xs:element name="Contents">\r
-    <xs:annotation>\r
-      <xs:documentation>\r
-        This tag allows us to specify a tree of files all having a common root. All the files specified are relative to that common root.\r
-      </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element maxOccurs="unbounded" ref="FarFilename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">\r
-      Definitions and rules for creating, installing, updating and removing fars within the workspace.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      1.  A module m is said to depend upon a package p, iff there exists a tuple (PackageGuid, PackageVerion) in the set m->PackageDependencies for which p->Guid==PackageGuid, and if PackageVersion is not empty, then p->Version== PackageVersion.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      2.  A far f is said to depend on a far g, iff there is a module in a package in f that depends on a package in g.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      3.  A far f is said to depend on a package p, iff there is a module m contained in f that depends on p.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      4.  A far f may be installed into the workspace w, iff for each module m in f, m's dependencies are met by the packages in w or f.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      a.  It is supported to "partially" install a far. A partial installation of a far means that 1 or more packages are installed into the workspace from the far. For each package p in f, p's dependencies must be satisfied by a package in the workspace.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      5.  A far f may be removed from the workspace w, iff for each module m in w, and for each package p in f, m does not depend on p.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      a.  It is supported to "partially" remove a far. In this case, one or more of the packages in the far can be removed, provided that for each package p in the workspace w, there does not exist a module m such that m depends on p.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      6.  When installing a far f into workspace w, for each package p in f, allow the user to install in p's default location, or choose a new location l (which must be unoccupied) within the workspace. Record this location l in the database. Each package p in f will be recorded in the database, associated with the GUID of f, as well as the actual install location l. (So we will know which far each package belongs to.)\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      7.  When installing a far f into workspace w, if there exists a package p in w, and p is in f, then the user must be prompted to choose a location that does not collide with the location of p in workspace w. We will end up with two instances of p in w at two distinct locations. Alternately, the user may elect to partially install the far, leaving out the redundant package.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      8.  A far f may replace a far g in the workspace w, iff for each module m contained in w, if m depends on a package p, and p is only contained in g, then there must exist a package q in f, such that m depends on q. The net effect is that g is removed and f is installed, in one operation. The normal rules for installing f still apply--the dependencies of the modules of f must be satisfied. After the replacement, it must be the case that all the modules dependencies in the workspace are satisfied. Note that it is possible to backrev a package in this way. \r
-    </xs:documentation>\r
-    <xs:documentation>\r
-          (If we find that the replace is not permitted, then the user may install f and keep g. Next, he could _port_ every module m in w that depends on g, to f and eventually remove g.)\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      9.  A special case of the above rule is that a far f may be reinstalled into the workspace. (This would allow the user to get a fresh copy, or change the location in the workspace where one or more of the packages of f are installed.)\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      10. When a far f is removed from the workspace w, for each package p in f, we will remove p from w.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      11. If a package p belongs to a far f, then it is legal to remove p from the workspace w iff, there does not exist a module m in w such that m depends on p.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      12. When a far f is removed from the workspace, the we will remove all the files in f from the workspace tree. If a file has been modified from the original as installed from the far (per md5sum) then the user should be asked if he is "sure" he wants to remove it.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      13. When a far is created, a GUID is generated and assigned to the far. If a far is created from the same components at a later time, it would have a different GUID.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      14. If a package p is marked with p->RePackage==false, then p may not be added to a far.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      15. A far f is identical to a far g, iff f->Guid == g->Guid.\r
-    </xs:documentation>\r
-    <xs:documentation>\r
-      17. A far f may be installed into the workspace w, iff there is no far g in w such that f->Guid==g->Guid. In that case, it is called "updating" the far in the workspace. The user may select some subset of packages to reinstall or update, to ensure that the files in the workspace are correct.\r
-    </xs:documentation>\r
-  </xs:annotation>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataAttributes.xsd
deleted file mode 100644 (file)
index eeb48d9..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: FrameworkDataAttributes.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-  -->\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">This schema defines EFI and Framework Attribute. Only attributeGroups are specified in this file. </xs:documentation>\r
-  </xs:annotation>\r
-  <xs:include schemaLocation="NamingConvention.xsd"/>\r
-  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
-  <!-- Fix Name data type from xs:string -->\r
-  <xs:attributeGroup name="BinaryFileAttributes">\r
-    <xs:attribute name="FileType" type="BinFileType" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="Target" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="BootModeAttributes">\r
-    <xs:attribute name="BootModeName" type="BootModeNames" use="required"/>\r
-    <xs:attribute name="Usage" type="BootModeUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="DataHubAttributes">\r
-    <xs:attribute name="Usage" type="DataHubUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="EventAttributes">\r
-    <xs:attribute name="Usage" type="EventUsage" use="required"/>\r
-    <xs:attribute name="EventGuidCName" type="C_NameType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="ExternAttributes">\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="FilenameAttributes">\r
-    <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="GuidAttributes">\r
-    <xs:attribute name="Usage" type="GuidUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="GuidDeclarationAttributes">\r
-    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
-    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="HiiPackageAttributes">\r
-    <xs:attribute name="Usage" type="HiiPackageUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="HobAttributes">\r
-    <xs:attribute name="Usage" type="HobUsage" use="required"/>\r
-    <xs:attribute name="HobGuidCName" type="C_NameType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="IncludeHeaderAttributes">\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="IndustryStdHeaderAttributes">\r
-    <xs:attribute name="Name" type="KeywordType" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="LibraryClassAttributes">\r
-    <xs:attribute name="Usage" type="LibraryUsage" use="required"/>\r
-    <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>\r
-    <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="LibraryClassDeclarationAttributes">\r
-    <xs:attribute name="Name" type="KeywordType" use="required"/>\r
-    <xs:attribute name="RecommendedInstanceVersion" type="VersionDataType" use="optional"/>\r
-    <xs:attribute name="RecommendedInstanceGuid" type="GuidType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="OptionAttributes">\r
-    <xs:attribute name="BuildTargets" type="BuildTargetList" use="optional"/>\r
-    <xs:attribute name="ToolChainFamily" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="TagName" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="ToolCode" type="ToolsNameConvention" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PackageHeaderAttributes">\r
-    <xs:attribute name="ModuleType" type="ModuleTypeDef" use="required"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PackageAttributes">\r
-    <!-- Used with the MSA File, PackageDependencies.Package -->\r
-    <xs:attribute name="PackageGuid" type="GuidType" use="required"/>\r
-    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PackageNameAttributes">\r
-    <!--Used with the FrameworkDatabase PackageList.Packagename  -->\r
-    <xs:attribute name="PackageGuid" type="GuidType" use="optional"/>\r
-    <xs:attribute name="PackageVersion" type="VersionDataType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-   <xs:attributeGroup name="PcdCodedAttributes">\r
-    <!-- We need to modify ALL the MSA files that have PcdCoded sections to \r
-      set the PcdUsage.  Once we modify all the MSA files and we modify the \r
-      wizard and the build tools, we need to make this required. -->\r
-    <xs:attribute name="Usage" type="PcdUsage" use="optional"/>\r
-    <xs:attribute name="PcdItemType" type="PcdItemTypes" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PcdDeclarationAttributes">\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PpiDeclarationAttributes">\r
-    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
-    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PpiAttributes">\r
-    <xs:attribute name="Usage" type="PpiUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="PpiNotifyAttributes">\r
-    <xs:attribute name="Usage" type="PpiNotifyUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="ProtocolAttributes">\r
-    <xs:attribute name="Usage" type="ProtocolUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="ProtocolDeclarationAttributes">\r
-    <xs:attribute name="Name" type="UiNameType" use="required"/>\r
-    <xs:attribute name="GuidTypeList" type="GuidListType" use="optional"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="SupModuleList" type="ModuleListType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="ProtocolNotifyAttributes">\r
-    <xs:attribute name="Usage" type="ProtocolNotifyUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="SystemTableAttributes">\r
-    <xs:attribute name="Usage" type="SystemTableUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-  <xs:attributeGroup name="VariableAttributes">\r
-    <xs:attribute name="Usage" type="VariableUsage" use="required"/>\r
-    <xs:attribute name="SupArchList" type="ArchListType" use="optional"/>\r
-    <xs:attribute name="FeatureFlag" type="FeatureFlagExpressionType" use="optional"/>\r
-  </xs:attributeGroup>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataElements.xsd
deleted file mode 100644 (file)
index e094c1b..0000000
+++ /dev/null
@@ -1,728 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: FrameworkDataElements.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-  -->\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en"> This schema defines EFI and Framework Data Elements </xs:documentation>\r
-  </xs:annotation>\r
-  <xs:include schemaLocation="NamingConvention.xsd"/>\r
-  <xs:include schemaLocation="FrameworkDataTypes.xsd"/>\r
-    <xs:include schemaLocation="FrameworkDataAttributes.xsd"/>\r
-  <xs:element name="Abstract" type="Sentence">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Abstract is valid for all Description Files</xs:documentation>\r
-      <xs:documentation xml:lang="en">This section is required. This is a single sentence to describe the module and will be used in sample files as the abstract data in the header comment section.</xs:documentation>\r
-    </xs:annotation>\r
-  </xs:element>\r
-  <xs:element name="BootModes">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">BootModes is valid for all Description Files</xs:documentation>\r
-      <xs:documentation xml:lang="en">This is a list of BootModes Supported by the Module</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="BootMode">\r
-          <xs:complexType>\r
-            <xs:sequence minOccurs="0">\r
-              <xs:element name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="BootModeAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-   <xs:element name="Copyright" type="Paragraph"/>\r
-  <xs:element name="DataHubs">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is a list of DataHubRecord elements.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="DataHubRecord">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="DataHubCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="DataHubAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="DefaultValue">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">The default setting of a PCD entry.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:simpleContent>\r
-        <xs:extension base="xs:normalizedString"/>\r
-      </xs:simpleContent>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Depex">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This section is used to describe the DXE or PEI Dependency code</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Define" type="xs:normalizedString"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Expression" type="xs:string"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Description" type="Paragraph">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This section is required for new modules and libraries and must contain more information than the Abstract.</xs:documentation>\r
-    </xs:annotation>\r
-  </xs:element>\r
-  <xs:element name="BinaryFiles">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
-          <xs:complexType>\r
-            <xs:simpleContent>\r
-              <xs:extension base="PathAndFilename"> \r
-                <xs:attributeGroup ref="BinaryFileAttributes"/>\r
-              </xs:extension>\r
-            </xs:simpleContent>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-   <xs:element name="Events">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is a list of MSA Events</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="CreateEvents">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
-                <xs:complexType>\r
-                  <xs:sequence>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
-                    <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-                  </xs:sequence>\r
-                  <xs:attributeGroup ref="EventAttributes"/>\r
-                </xs:complexType>\r
-              </xs:element>\r
-            </xs:sequence>\r
-          </xs:complexType>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="SignalEvents">\r
-          <xs:annotation>\r
-            <xs:documentation xml:lang="en">Module has an event that is waiting to be signaled. Event is named by GUID.</xs:documentation>\r
-          </xs:annotation>\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="unbounded" name="EventTypes">\r
-                <xs:complexType>\r
-                  <xs:sequence>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="EventType" type="EventTypes"/>\r
-                    <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-                  </xs:sequence>\r
-                  <xs:attributeGroup ref="EventAttributes"/>\r
-                </xs:complexType>\r
-              </xs:element>\r
-            </xs:sequence>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Externs">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is a child of MSA files.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence minOccurs="1">\r
-        <xs:element minOccurs="0" maxOccurs="1" name="PcdIsDriver" type="PcdDriverTypes"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="TianoR8FlashMap_h" type="xs:boolean" default="false"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Specification" type="Sentence"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Extern">\r
-          <xs:complexType>\r
-            <xs:choice minOccurs="1" maxOccurs="1">\r
-              <xs:sequence minOccurs="0" maxOccurs="1">\r
-                <xs:annotation>\r
-                  <xs:documentation xml:lang="en">Driver Module</xs:documentation>\r
-                </xs:annotation>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="ModuleEntryPoint" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="ModuleUnloadImage" type="C_NameType"/>\r
-              </xs:sequence>\r
-              <xs:sequence minOccurs="0" maxOccurs="1">\r
-                <xs:annotation>\r
-                  <xs:documentation xml:lang="en">Library Module</xs:documentation>\r
-                </xs:annotation>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="Constructor" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="Destructor" type="C_NameType"/>\r
-              </xs:sequence>\r
-              <xs:sequence minOccurs="0" maxOccurs="1">\r
-                <xs:annotation>\r
-                  <xs:documentation xml:lang="en">Allow multiple entries for DriverBinding, ComponentName, DriverConfig and DriverDiag elements. For ComponentName, DriverConfig and/or DriverDiag - you must have a 1:1 mapping to DriverBinding if the element is defined.</xs:documentation>\r
-                  <xs:documentation xml:lang="en">Permit User Defined Extern Tags</xs:documentation>\r
-                </xs:annotation>\r
-                <xs:element minOccurs="1" maxOccurs="1" name="DriverBinding" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="ComponentName" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DriverConfig" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="DriverDiag" type="C_NameType"/>\r
-              </xs:sequence>\r
-              <xs:sequence minOccurs="0" maxOccurs="1">\r
-                <xs:annotation>\r
-                  <xs:documentation xml:lang="en"> Module Call Backs</xs:documentation>\r
-                </xs:annotation>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="SetVirtualAddressMapCallBack" type="C_NameType"/>\r
-                <xs:element minOccurs="0" maxOccurs="1" name="ExitBootServicesCallBack" type="C_NameType"/>\r
-              </xs:sequence>\r
-            </xs:choice>\r
-            <xs:attributeGroup ref="ExternAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Filename">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Describe the valid content of a filename This should extend PathAndFilename - Variable names not allowed here!</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:simpleContent>\r
-        <xs:extension base="PathAndFilename">\r
-          <xs:attributeGroup ref="FilenameAttributes"/>\r
-        </xs:extension>\r
-      </xs:simpleContent>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Filenames">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is a list of Filenames</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence minOccurs="1">\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="Filename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="GuidDeclarations">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="GuidDeclarationAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Guids">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="GuidCNames">\r
-          <xs:annotation>\r
-            <xs:documentation xml:lang="en">Describe the valid content of a GUID element in and MSA file.</xs:documentation>\r
-          </xs:annotation>\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="GuidCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="GuidAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="HiiPackages">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Describe the list of a HiiPackage elements</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="HiiPackage">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HiiCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="HiiPackageAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Hobs">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="HobTypes">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HobType" type="HobTypes"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="HobAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="IncludeHeader">\r
-    <xs:complexType>\r
-      <xs:simpleContent>\r
-        <xs:extension base="PathAndFilename">\r
-          <xs:attributeGroup ref="IncludeHeaderAttributes"/>\r
-        </xs:extension>\r
-      </xs:simpleContent>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="IndustryStdIncludes">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" ref="IndustryStdHeader"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="IndustryStdHeader">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-      </xs:sequence>\r
-      <xs:attributeGroup ref="IndustryStdHeaderAttributes"/>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="LibraryClass">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Used in MSA files. This defines what class of library is being supported = produced (library module) or consumed by a module.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="Keyword" type="KeywordType"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-      </xs:sequence>\r
-      <xs:attributeGroup ref="LibraryClassAttributes"/>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <!-- LAH This is SPD LibraryClassDeclarations FINAL version -->\r
-  <xs:element name="LibraryClassDeclarations">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="LibraryClass">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="IncludeHeader" type="PathAndFilename"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="LibraryClassDeclarationAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="LibraryClassDefinitions">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This section defines what Classes of Library that this library supports. A Library may belong to multiple different library classes.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" ref="LibraryClass"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="License">\r
-    <xs:complexType>\r
-      <xs:simpleContent>\r
-        <xs:extension base="Paragraph">\r
-          <xs:attribute name="URL" type="xs:anyURI" use="optional"/>\r
-        </xs:extension>\r
-      </xs:simpleContent>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="ModuleBuildOptions">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Options"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="ModuleDefinitions">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="SupportedArchitectures" type="ArchListType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="BinaryModule" type="xs:boolean" default="false"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="OutputFileBasename" type="FileNameConvention"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
-                <xs:complexType>\r
-                  <xs:sequence>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="ModuleGuid" type="GuidType"/>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="ModuleVersion" type="VersionDataType"/>\r
-                  </xs:sequence>\r
-                  <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
-                  <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
-                  <!-- If the original module was installed from a FAR, track the FAR it came from. -->\r
-                  <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
-                </xs:complexType>\r
-              </xs:element>\r
-            </xs:sequence>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="ModuleType" type="ModuleTypeDef">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Describe the valid EFI Phase that the Module is designed to execute under.</xs:documentation>\r
-    </xs:annotation>\r
-  </xs:element>\r
-  <!-- Use in Final -->\r
-  <xs:element name="MsaFiles">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">MsaFiles is a child of Surface Area Package Description (SPD) files</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="PathAndFilename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Options">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" ref="Option"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="NonProcessedFiles">\r
-    <xs:complexType>\r
-      <xs:sequence minOccurs="1" maxOccurs="unbounded">\r
-        <xs:element name="Filename" type="PathAndFilename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Option">\r
-    <!-- This element is used to store flags from the Tools -->\r
-    <xs:complexType>\r
-      <xs:simpleContent>\r
-        <xs:extension base="xs:normalizedString">\r
-          <xs:attributeGroup ref="OptionAttributes"/>\r
-        </xs:extension>\r
-      </xs:simpleContent>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PackageDefinitions">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="ReadOnly" type="xs:boolean" default="false"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="RePackage" type="xs:boolean" default="false"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" name="ClonedFrom">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="unbounded" name="Cloned">\r
-                <xs:complexType>\r
-                  <xs:sequence>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="PackageGuid" type="GuidType"/>\r
-                    <xs:element minOccurs="1" maxOccurs="1" name="PackageVersion" type="VersionDataType"/>\r
-                  </xs:sequence>\r
-                  <!-- The Id is a number used to track heritage  the first entry will be 0 and increment from then on. -->\r
-                  <xs:attribute name="Id" type="xs:nonNegativeInteger" use="required"/>\r
-                  <!-- If the original Package was installed from a FAR, track the FAR it came from. -->\r
-                  <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
-                </xs:complexType>\r
-              </xs:element>\r
-            </xs:sequence>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PackageDependencies">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This tag is used in the Module Surface Area Description File (MSA) to track package dependencies for a module.</xs:documentation>\r
-      <xs:documentation xml:lang="en">Attributes to PackageName include Required: Usage PackageGuid PackageVesion, Optional: FeatureFlag</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Package">\r
-          <xs:complexType>\r
-            <xs:attributeGroup ref="PackageAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PackageHeaders">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">PackageHeaders is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="IncludePkgHeader">\r
-          <xs:complexType>\r
-            <xs:simpleContent>\r
-              <xs:extension base="PathAndFilename">\r
-                <xs:attributeGroup ref="PackageHeaderAttributes"/>\r
-              </xs:extension>\r
-            </xs:simpleContent>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PackageList">\r
-    <!-- Valid for DB usage only! -->\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all packages (SPD files) installed in a workspace. (Database)</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename">\r
-          <xs:complexType>\r
-            <xs:simpleContent>\r
-              <xs:extension base="PathAndFilename"> \r
-                <xs:attributeGroup ref="PackageNameAttributes"/>\r
-              </xs:extension>\r
-            </xs:simpleContent>\r
-          </xs:complexType>\r
-          </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PcdCoded">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Child of Module Surface Area Description (MSA)</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="PcdEntry">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <!-- MSA file declares a single usage, and must match one of the entries in what the SPD file declares as the set of possible Item Types. -->\r
-            <xs:attributeGroup ref="PcdCodedAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <!-- LAH This is PcdDeclarations FINAL version -->\r
-  <xs:element name="PcdDeclarations">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">PcdDeclaratins is a child of Package Surface Area Description (SPD)</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence minOccurs="1">\r
-        <xs:element maxOccurs="unbounded" name="PcdEntry">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="Token" type="TokenDataType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="TokenSpaceGuidCName" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="DatumType" type="PcdDataTypes"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="ValidUsage" type="PcdListType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="DefaultValue" type="DefaultValueType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="PcdDeclarationAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="FarList">\r
-    <!-- Valid for DB usage only! -->\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This tag is used in the Framework Package Database File to track all DISTRIBUTION packages (FAR files) installed in a workspace. (Database)</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Filename" type="DbPathAndFilename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PpiDeclarations">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">PpiDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="PpiDeclarationAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="PPIs">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Provide for one or more Ppi or PpiNotify sections. </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence minOccurs="1">\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Ppi">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="PpiCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="PpiAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="PpiNotify">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="PpiNotifyCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="PpiNotifyAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="ProtocolDeclarations">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">ProtocolDeclarations is a child of PackageSurfaceArea (SPD) </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Entry">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="C_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="ProtocolDeclarationAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Protocols">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">If either Protocol or ProtocolNotify sections are needed, one or more of them should be specified within this section</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="Protocol">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="ProtocolCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="ProtocolAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" name="ProtocolNotify">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="ProtocolNotifyCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="ProtocolNotifyAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="SourceFiles">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Multiple Filenames may be specified, and they may also be scoped to a specific Architecture.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" ref="Filename"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="SystemTables">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is list of System Table elements.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="SystemTableCNames">\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="SystemTableCName" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="SystemTableAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="UserExtensions">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>\r
-      </xs:sequence>\r
-      <xs:attribute name="UserID" type="xs:NCName" use="required"/>\r
-      <xs:attribute name="Identifier" type="xs:string" use="required"/>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Variables">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">An MSA FILE list of EFI Variables described by string pair.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="unbounded" name="Variable">\r
-          <xs:annotation>\r
-            <xs:documentation xml:lang="en">This is an EFI Variable Entry</xs:documentation>\r
-          </xs:annotation>\r
-          <xs:complexType>\r
-            <xs:sequence>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="VariableName" type="HexWordArrayType"/>\r
-              <xs:element minOccurs="1" maxOccurs="1" name="GuidC_Name" type="C_NameType"/>\r
-              <xs:element minOccurs="0" maxOccurs="1" name="HelpText" type="Paragraph"/>\r
-            </xs:sequence>\r
-            <xs:attributeGroup ref="VariableAttributes"/>\r
-          </xs:complexType>\r
-        </xs:element>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="Version" type="VersionDataType"/>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd b/BaseTools/Conf/XMLSchema/FrameworkDataTypes.xsd
deleted file mode 100644 (file)
index 9a46a02..0000000
+++ /dev/null
@@ -1,581 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns="http://www.TianoCore.org/2007/Edk2.1" targetNamespace="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: FrameworkDataTypes.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-  -->\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">This schema defines EFI and Framework Data Types. Only simpleType are specified in this file. </xs:documentation>\r
-  </xs:annotation>\r
-  <xs:include schemaLocation="NamingConvention.xsd"/>\r
-  <xs:simpleType name="PrimaryArchListType">\r
-    <xs:list itemType="SupportedArchitectures"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ArchListType">\r
-    <xs:restriction base="PrimaryArchListType">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BinFileType">\r
-    <xs:restriction base="xs:NCName">\r
-      <xs:enumeration value="LIB"/>\r
-      <xs:enumeration value="UNI_UI"/>\r
-      <xs:enumeration value="UNI_VER"/>\r
-      <xs:enumeration value="PE32"/>\r
-      <xs:enumeration value="FW"/>\r
-      <xs:enumeration value="GUID"/>\r
-      <xs:enumeration value="FREEFORM"/>\r
-      <xs:enumeration value="UEFI_APP"/>\r
-      <xs:enumeration value="PIC"/>\r
-      <xs:enumeration value="PEI_DEPEX"/>\r
-      <xs:enumeration value="DXE_DEPEX"/>\r
-      <xs:enumeration value="TE"/>\r
-      <xs:enumeration value="VER"/>\r
-      <xs:enumeration value="UI"/>\r
-      <xs:enumeration value="BIN"/>\r
-      <xs:enumeration value="FV"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BlockNameType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:pattern value="\s*BLOCK[A-F0-9]{2}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BootModeNames">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="FULL"/>\r
-      <xs:enumeration value="MINIMAL"/>\r
-      <xs:enumeration value="NO_CHANGE"/>\r
-      <xs:enumeration value="DIAGNOSTICS"/>\r
-      <xs:enumeration value="DEFAULT"/>\r
-      <xs:enumeration value="S2_RESUME"/>\r
-      <xs:enumeration value="S3_RESUME"/>\r
-      <xs:enumeration value="S4_RESUME"/>\r
-      <xs:enumeration value="S5_RESUME"/>\r
-      <xs:enumeration value="FLASH_UPDATE"/>\r
-      <xs:enumeration value="RECOVERY_FULL"/>\r
-      <xs:enumeration value="RECOVERY_MINIMAL"/>\r
-      <xs:enumeration value="RECOVERY_NO_CHANGE"/>\r
-      <xs:enumeration value="RECOVERY_DIAGNOSTICS"/>\r
-      <xs:enumeration value="RECOVERY_DEFAULT"/>\r
-      <xs:enumeration value="RECOVERY_S2_RESUME"/>\r
-      <xs:enumeration value="RECOVERY_S3_RESUME"/>\r
-      <xs:enumeration value="RECOVERY_S4_RESUME"/>\r
-      <xs:enumeration value="RECOVERY_S5_RESUME"/>\r
-      <xs:enumeration value="RECOVERY_FLASH_UPDATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BootModeUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BuildTargetList">\r
-    <xs:restriction base="BuildTargetUList">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BuildTargetUList">\r
-    <xs:list itemType="BrUType"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BrUType">\r
-    <xs:union memberTypes="BrType UCNameType"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="BrType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="DEBUG"/>\r
-      <xs:enumeration value="RELEASE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ComponentExecutionPhase">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="MDE"/>\r
-      <xs:enumeration value="SEC"/>\r
-      <xs:enumeration value="PEI_CORE"/>\r
-      <xs:enumeration value="PEIM"/>\r
-      <xs:enumeration value="DXE_CORE"/>\r
-      <xs:enumeration value="DXE_DRIVER"/>\r
-      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
-      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
-      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
-      <xs:enumeration value="UEFI"/>\r
-      <xs:enumeration value="UEFI_APPLICATION"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="DataHubUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="DatumSizeLimitation">\r
-    <xs:restriction base="xs:nonNegativeInteger">\r
-      <xs:maxExclusive value="13777216"/>\r
-      <xs:pattern value="(\s)*[1-9][0-9]*(\s)*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="DefaultValueType">\r
-    <xs:union memberTypes="xs:normalizedString Hex64BitDataType UnicodeString HexByteArrayType"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="EfiSectionType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="EFI_SECTION_FREEFORM_SUBTYPE_GUID"/>\r
-      <xs:enumeration value="EFI_SECTION_VERSION"/>\r
-      <xs:enumeration value="EFI_SECTION_USER_INTERFACE"/>\r
-      <xs:enumeration value="EFI_SECTION_DXE_DEPEX"/>\r
-      <xs:enumeration value="EFI_SECTION_PEI_DEPEX"/>\r
-      <xs:enumeration value="EFI_SECTION_PE32"/>\r
-      <xs:enumeration value="EFI_SECTION_PIC"/>\r
-      <xs:enumeration value="EFI_SECTION_TE"/>\r
-      <xs:enumeration value="EFI_SECTION_RAW"/>\r
-      <xs:enumeration value="EFI_SECTION_COMPRESSION"/>\r
-      <xs:enumeration value="EFI_SECTION_GUID_DEFINED"/>\r
-      <xs:enumeration value="EFI_SECTION_COMPATIBILITY16"/>\r
-      <xs:enumeration value="EFI_SECTION_FIRMWARE_VOLUME_IMAGE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="EventTypes">\r
-    <xs:restriction base="UCNameType">\r
-       <xs:enumeration value="EVENT_GROUP_GUID"/>\r
-      <xs:enumeration value="EVENT_TYPE_PERIODIC_TIMER"/>\r
-      <xs:enumeration value="EVENT_TYPE_RELATIVE_TIMER"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="EventUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ExecutionType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="REL" id="Relocatable"/>\r
-      <xs:enumeration value="NREL" id="Non-Relocatable"/>\r
-      <xs:enumeration value="XIP" id="Execute_In_Place"/>\r
-      <xs:enumeration value="PIC" id="Position_Independent_Code"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ExternType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="1"/>\r
-      <!--<xs:pattern value="((\w)+(\W)*(\s)*)+"/>-->\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ExternUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FileNameUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FeatureFlagExpressionType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FrameworkComponentListType">\r
-    <xs:list itemType="FrameworkComponentTypes"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FrameworkComponentTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="APRIORI"/>\r
-      <xs:enumeration value="SEC"/>\r
-      <xs:enumeration value="LIBRARY"/>\r
-      <xs:enumeration value="FV_IMAGE_FILE"/>\r
-      <xs:enumeration value="BS_DRIVER"/>\r
-      <xs:enumeration value="RT_DRIVER"/>\r
-      <xs:enumeration value="SAL_RT_DRIVER"/>\r
-      <xs:enumeration value="PE32_PEIM"/>\r
-      <xs:enumeration value="PIC_PEIM"/>\r
-      <xs:enumeration value="COMBINED_PEIM_DRIVER"/>\r
-      <xs:enumeration value="PEI_CORE"/>\r
-      <xs:enumeration value="DXE_CORE"/>\r
-      <xs:enumeration value="BS_DRIVER_EFI"/>\r
-      <xs:enumeration value="SHELLAPP"/>\r
-      <xs:enumeration value="BINARY"/>\r
-      <xs:enumeration value="LOGO"/>\r
-      <xs:enumeration value="USER_DEFINED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FrameworkModuleTypes">\r
-    <xs:restriction base="ModuleTypeDef">\r
-      <xs:enumeration value="BASE"/>\r
-      <xs:enumeration value="SEC"/>\r
-      <xs:enumeration value="PEI_CORE"/>\r
-      <xs:enumeration value="PEIM"/>\r
-      <xs:enumeration value="DXE_CORE"/>\r
-      <xs:enumeration value="DXE_DRIVER"/>\r
-      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
-      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
-      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
-      <xs:enumeration value="UEFI_DRIVER"/>\r
-      <xs:enumeration value="UEFI_APPLICATION"/>\r
-      <xs:enumeration value="USER_DEFINED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FvRegionTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="FV_MAIN"/>\r
-      <xs:enumeration value="FV_MAIN_COMPACT"/>\r
-      <xs:enumeration value="NV_STORAGE"/>\r
-      <xs:enumeration value="FV_RECOVERY"/>\r
-      <xs:enumeration value="FV_RECOVERY_FLOPPY"/>\r
-      <xs:enumeration value="FV_FILE"/>\r
-      <xs:enumeration value="CAPSULE_CARGO"/>\r
-      <xs:enumeration value="NULL"/>\r
-      <xs:enumeration value="USER_DEFINED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PrimaryGuidListType">\r
-    <xs:list itemType="GuidTypes"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidListType">\r
-    <xs:restriction base="PrimaryGuidListType">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="DATA_HUB_RECORD"/>\r
-      <xs:enumeration value="EFI_EVENT"/>\r
-      <xs:enumeration value="EFI_SYSTEM_CONFIGURATION_TABLE"/>\r
-      <xs:enumeration value="EFI_VARIABLE"/>\r
-      <xs:enumeration value="GUID"/>\r
-      <xs:enumeration value="HII_PACKAGE_LIST"/>\r
-      <xs:enumeration value="HOB"/>\r
-      <xs:enumeration value="TOKEN_SPACE_GUID"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexByteArrayListType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="4"/>\r
-      <xs:pattern value="\s*((( )?0x[a-fA-F0-9]{2})(,)?)+( )?"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexByteArrayType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="4"/>\r
-      <xs:pattern value="((\s)*0x([a-fA-F0-9]){2}(,)?(\s)*)+"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexWordArrayType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="6"/>\r
-      <xs:pattern value="((\s)*0x([a-fA-F0-9]){4}(,)?(\s)*)+"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HiiPackageUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HobTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="PHIT"/>\r
-      <xs:enumeration value="MEMORY_ALLOCATION"/>\r
-      <xs:enumeration value="RESOURCE_DESCRIPTOR"/>\r
-      <xs:enumeration value="GUID_EXTENSION"/>\r
-      <xs:enumeration value="FIRMWARE_VOLUME"/>\r
-      <xs:enumeration value="CPU"/>\r
-      <xs:enumeration value="POOL"/>\r
-      <xs:enumeration value="CAPSULE_VOLUME"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HobUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="IntermediateOutputType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="MODULE"/>\r
-      <xs:enumeration value="UNIFIED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="LibraryUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ModuleTypeDef">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="BASE"/>\r
-      <xs:enumeration value="SEC"/>\r
-      <xs:enumeration value="PEI_CORE"/>\r
-      <xs:enumeration value="PEIM"/>\r
-      <xs:enumeration value="DXE_CORE"/>\r
-      <xs:enumeration value="DXE_DRIVER"/>\r
-      <xs:enumeration value="DXE_RUNTIME_DRIVER"/>\r
-      <xs:enumeration value="DXE_SAL_DRIVER"/>\r
-      <xs:enumeration value="DXE_SMM_DRIVER"/>\r
-      <xs:enumeration value="TOOL"/>\r
-      <xs:enumeration value="UEFI_DRIVER"/>\r
-      <xs:enumeration value="UEFI_APPLICATION"/>\r
-      <xs:enumeration value="USER_DEFINED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Md5sumType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:pattern value="\s*[a-fA-F0-9]{32}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PrimaryModuleListType">\r
-    <xs:list itemType="FrameworkModuleTypes"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ModuleListType">\r
-    <xs:restriction base="PrimaryModuleListType">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PackageType">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="SOURCE"/>\r
-      <xs:enumeration value="BINARY"/>\r
-      <xs:enumeration value="MIXED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PackageUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdListType">\r
-    <xs:restriction base="PrimaryPcdListType">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PrimaryPcdListType">\r
-    <xs:list itemType="PcdItemTypes"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="FIXED_AT_BUILD"/>\r
-      <xs:enumeration value="FEATURE_FLAG"/>\r
-      <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
-      <xs:enumeration value="DYNAMIC"/>\r
-      <xs:enumeration value="DYNAMIC_EX"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdDriverTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="PEI_PCD_DRIVER"/>\r
-      <xs:enumeration value="DXE_PCD_DRIVER"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdDataTypes">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:enumeration value="UINT8"/>\r
-      <xs:enumeration value="UINT16"/>\r
-      <xs:enumeration value="UINT32"/>\r
-      <xs:enumeration value="UINT64"/>\r
-      <xs:enumeration value="VOID*"/>\r
-      <xs:enumeration value="BOOLEAN"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdFeatureFlagUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdItemTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="FEATURE_FLAG"/>\r
-      <xs:enumeration value="FIXED_AT_BUILD"/>\r
-      <xs:enumeration value="PATCHABLE_IN_MODULE"/>\r
-      <xs:enumeration value="DYNAMIC"/>\r
-      <xs:enumeration value="DYNAMIC_EX"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PcdUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PpiNotifyUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PpiUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ProtocolNotifyUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ProtocolUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="TO_START"/>\r
-      <xs:enumeration value="BY_START"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="SkuListType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="1"/>\r
-      <xs:pattern value="\s*(\d)+((,)?(\s)*(\d)+)*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="SupportedArchitectures">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="EBC"/>\r
-      <xs:enumeration value="IA32"/>\r
-      <xs:enumeration value="X64"/>\r
-      <xs:enumeration value="IPF"/>\r
-      <xs:enumeration value="ARM"/>\r
-      <xs:enumeration value="PPC"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="SystemTableUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="TokenDataType">\r
-    <xs:union memberTypes="HexDoubleWordDataType  xs:nonNegativeInteger"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ToolChains">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:minLength value="2"/>\r
-      <xs:enumeration value="MSFT"/>\r
-      <xs:enumeration value="INTEL"/>\r
-      <xs:enumeration value="GCC"/>\r
-      <xs:enumeration value="CYGWIN"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="UiNameType">\r
-    <xs:restriction base="xs:string">\r
-      <xs:minLength value="1"/>\r
-      <xs:pattern value="[^ ].*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="UnicodeString">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:minLength value="3"/>\r
-      <xs:pattern value="(\s)*L(\:)?&quot;[^&quot;]*&quot;(\s)*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="UsageListType">\r
-    <xs:restriction base="PrimaryUsageList">\r
-      <xs:minLength value="1"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PrimaryUsageList">\r
-    <xs:list itemType="UsageTypes"/>\r
-  </xs:simpleType>\r
-  <!-- UsageTypes describes all of the Usage Attributes that are defined in the Module Surface Area Specification -->\r
-  <xs:simpleType name="UsageTypes">\r
-    <xs:restriction base="UCNameType">\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <xs:enumeration value="TO_START"/>\r
-      <xs:enumeration value="BY_START"/>\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="VariableOffsetValues">\r
-    <xs:restriction base="xs:string">\r
-      <xs:minLength value="1"/>\r
-      <xs:pattern value="\s*\d+(:)?\d*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="VariableUsage">\r
-    <xs:restriction base="UsageTypes">\r
-      <!-- Module requires the variable entry to be set -->\r
-      <xs:enumeration value="ALWAYS_CONSUMED"/>\r
-      <!-- Module will use the variable entry if it's set -->\r
-      <xs:enumeration value="SOMETIMES_CONSUMED"/>\r
-      <!-- Module Always will write the variable -->\r
-      <xs:enumeration value="ALWAYS_PRODUCED"/>\r
-      <!-- Module sometimes writes the variable -->\r
-      <xs:enumeration value="SOMETIMES_PRODUCED"/>\r
-      <!-- Variable is produced and consumed only by this module -->\r
-      <xs:enumeration value="PRIVATE"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <!-- Complex Data Types -->\r
-  <xs:complexType name="DbPathAndFilename">\r
-    <xs:simpleContent>\r
-      <xs:extension base="PathAndFilename">\r
-        <xs:attribute name="FarGuid" type="GuidType" use="optional"/>\r
-        <xs:attribute name="Md5sum" type="Md5sumType"/>\r
-      </xs:extension>\r
-    </xs:simpleContent>\r
-  </xs:complexType>\r
-  <xs:complexType name="ArgsType">\r
-    <xs:sequence minOccurs="0" maxOccurs="unbounded">\r
-      <xs:element name="Arg" type="xs:string"/>\r
-    </xs:sequence>\r
-  </xs:complexType>\r
-  <xs:complexType name="ToolType">\r
-    <xs:sequence>\r
-      <xs:element name="ToolName" type="xs:string"/>\r
-      <xs:element name="ToolArgs" type="xs:string"/>\r
-    </xs:sequence>\r
-  </xs:complexType>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd b/BaseTools/Conf/XMLSchema/FrameworkHeaders.xsd
deleted file mode 100644 (file)
index e2745af..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: FrameworkHeaders.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-    APPROVED: 05-Jun-2007\r
-  -->\r
-  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
-  <xs:element name="FdbHeader">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is the header for the Framework Package Database (DB) file.</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Guid MUST change if backward compatibility breaks caused by a new release of XML Schema.</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Version will change if a minor change to XML Schema has been made, but backward compatiblity is maintained.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="DatabaseName" type="UiNameType" fixed="FrameworkDatabase"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType" default="DD6913E0-3E4E-4B83-8838-57EE7FB71DD1"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION   0x00090000"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="FarHeader">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This is the header for the Framework Archive Manifest file.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="FarName" type="UiNameType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION   0x00090000"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="MsaHeader">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This header is for the Module Surface Area Description (MSA) files</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Guid MUST change if the Module changes break backward compatibility.</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Version MUST change if the Module changes, however, backward compatiblity is maintained.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="ModuleName" type="UiNameType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="ModuleType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION   0x00090000"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:element name="SpdHeader">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This head is for the Surface Area Package Description file (SPD)</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Guid MUST change when the contents of the file undergo MAJOR FUNCTIONALITY changes.</xs:documentation>\r
-      <xs:documentation xml:lang="en">The Version MUST change when the contents of the file undergo MINOR FUNCTIONALITY changes.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="PackageName" type="UiNameType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="GuidValue" type="GuidType"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Version"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Abstract"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Description"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="Copyright"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="License"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" name="Specification" type="Sentence" default="FRAMEWORK_PACKAGING_SPECIFICATION   0x00090000"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/NamingConvention.xsd b/BaseTools/Conf/XMLSchema/NamingConvention.xsd
deleted file mode 100644 (file)
index 8a76639..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: NamingConvention.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-  -->\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en"> This schema defines various data types and naming conventions including: base name, filename and directory naming conventions. These are all simple data types.</xs:documentation>\r
-  </xs:annotation>\r
-  <xs:simpleType name="C_NameType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> C_Names must start with either an underscore (_) character followed by one or more alpha characters, followed by any combination of underscore or alphanumeric characters.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*(_)*[a-zA-Z]+((_)*[a-zA-Z0-9]*)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="FileNameConvention">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> This defines what a Filename is: Alphanumeric characters and optional underscore (_) or dash (-) characters, followed by a optional dot and more alphanumeric characters. </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*[a-zA-Z](\.?[\-_a-zA-Z0-9]+)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> The GUID data was a union of GuidType1 and GuidType2; standardizing on GuidType2. </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:union memberTypes="GuidType2"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidType1">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> This defines the minimum specification for a GUID Array which is 8 Hex Digits - 4 Hex Digits - 4 Hex Digits - 8 Hex Bytes, the last 16 Hex Digits can be enclosed in sqiggle {} brackets.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*0x[a-fA-F0-9]{1,8},( )*0x[a-fA-F0-9]{1,4},( )*0x[a-fA-F0-9]{1,4}(,( )*\{)?(,?( )*0x[a-fA-F0-9]{1,2}){8}( )*(\})?\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="GuidType2">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> A GUID must contain five different Hexadecimal character sets that are separated by a dash (-) character. </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Hex64BitDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex 64 Bit Value to be 0x[a-f0-9]{16}</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,16}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexAddressType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Address, 0x[a-fA-F0-9]{1,16}</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*0x[a-fA-F0-9]{1,16}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexByteDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Byte Value to be 0x[a-f0-9]{2}</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*(0x)?[a-fA-F0-9]{1,2}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Value to be 0x[a-f0-9]+</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*0x[a-fA-F0-9]+\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexDigitType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Diget to be 0x[a-f0-9]</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*[a-fA-F0-9]{1}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexDoubleWordDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Double Word Value to be 0x[a-f0-9]{8}</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*0x[a-fA-F0-9]{1,8}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="HexWordDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define a Hex Word Value to be 0x[a-f0-9]{4}</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*0x[a-fA-F0-9]{1,4}\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="KeywordList">\r
-    <xs:restriction base="xs:string">\r
-      <xs:minLength value="1"/>\r
-      <xs:pattern value="\s*[a-zA-Z]+(\ *_*[a-zA-Z0-9]*)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="KeywordType">\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:pattern value="\s*[a-zA-Z]+(_*[a-zA-Z0-9]*)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Paragraph">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This describes the normal text of a paragraph that can be used in a license or description tag.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="PathAndFilename">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> Naming convention for a path and file name</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:union memberTypes="xs:normalizedString xs:anyURI"/>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Polarity">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Limit Polarity vaild values to 0 and 1</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:int">\r
-      <xs:pattern value="\s*0|1\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Sentence">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> This data type requires two or more words </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:normalizedString">\r
-      <xs:pattern value="\s*(\w+\W*)+( )+(\W*\w*\W*\s*)*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="ToolsNameConvention">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">This data type is used for ToolCommand, ToolChainFamily and TagName.</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:NCName">\r
-      <xs:pattern value="\s*[a-zA-Z][a-zA-Z0-9]*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="UCNameType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> Definition of a UpperCase Name, which can be any combination of upper case characters followed by zero or more underscore and/or uppercase alphanumeric characters </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*[A-Z]+(_*[A-Z0-9]*)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="VersionDataType">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en"> Definition of a Version Number, which is one or more strings of decimal digits separated by dots. </xs:documentation>\r
-      <xs:documentation>\r
-        The algorithm to compare two versions A and B is as follows. if A==B, then A is the same version as B. Otherwise, say A is a1.a2.a3...an and B is b1.b2.b3...bn. For the first pair (ai, bi), for i less than n and i less than m, where ai is not equal to bi, if ai is less than bi, then A is less than B. If ai is greater than bi, then A is greater than B.   \r
-      </xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:string">\r
-      <xs:pattern value="\s*\d+(\.\d+)*\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-  <xs:simpleType name="Zero">\r
-    <xs:annotation>\r
-      <xs:documentation xml:lang="en">Define Zero as a vaild value</xs:documentation>\r
-    </xs:annotation>\r
-    <xs:restriction base="xs:int">\r
-      <xs:pattern value="\s*0\s*"/>\r
-    </xs:restriction>\r
-  </xs:simpleType>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/SurfaceArea.xsd b/BaseTools/Conf/XMLSchema/SurfaceArea.xsd
deleted file mode 100644 (file)
index c941be8..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.TianoCore.org/2007/Edk2.1" xmlns="http://www.TianoCore.org/2007/Edk2.1">\r
-  <!--\r
-    Filename: SurfaceArea.xsd\r
-    \r
-    Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-    This program and the accompanying materials\r
-    are licensed and made available under the terms and conditions of the BSD License\r
-    which may be found at http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
-    APPROVED: 05-Jun-2007\r
-  -->\r
-  <xs:include schemaLocation="FrameworkHeaders.xsd"/>\r
-  <xs:include schemaLocation="FrameworkDataElements.xsd"/>\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">This describes the valid content of a FrameworkDatabase (DB) File.</xs:documentation>\r
-  </xs:annotation>\r
-  <xs:element name="FrameworkDatabase">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="FdbHeader"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="PackageList"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="FarList"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">This describes the valid content for a Module Surface Area Description (MSA) file.</xs:documentation>\r
-  </xs:annotation>\r
-  <xs:element name="ModuleSurfaceArea">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="MsaHeader"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="ModuleDefinitions"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDefinitions"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="SourceFiles"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="BinaryFiles"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="NonProcessedFiles"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PackageDependencies"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Protocols"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Events"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Hobs"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PPIs"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Variables"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="BootModes"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="SystemTables"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="DataHubs"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="HiiPackages"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Guids"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Externs"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PcdCoded"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="Depex"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="ModuleBuildOptions"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-  <xs:annotation>\r
-    <xs:documentation xml:lang="en">This describes the valid content for a Package Surface Area Description (SPD) file.</xs:documentation>\r
-  </xs:annotation>\r
-  <xs:element name="PackageSurfaceArea">\r
-    <xs:complexType>\r
-      <xs:sequence>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="SpdHeader"/>\r
-        <xs:element minOccurs="1" maxOccurs="1" ref="PackageDefinitions"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="LibraryClassDeclarations"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="IndustryStdIncludes"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="MsaFiles"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PackageHeaders"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="GuidDeclarations"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="ProtocolDeclarations"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PpiDeclarations"/>\r
-        <xs:element minOccurs="0" maxOccurs="1" ref="PcdDeclarations"/>\r
-        <xs:element minOccurs="0" maxOccurs="unbounded" ref="UserExtensions"/>\r
-      </xs:sequence>\r
-    </xs:complexType>\r
-  </xs:element>\r
-</xs:schema>\r
diff --git a/BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig b/BaseTools/Conf/XMLSchema/SurfaceArea.xsdconfig
deleted file mode 100644 (file)
index 5d86b98..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-Copyright (c) 2007, Intel Corporation. All rights reserved.\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which may be found at http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
--->\r
-<xb:config xmlns:xb="http://xml.apache.org/xmlbeans/2004/02/xbean/config">\r
-  <xb:namespace uri="http://www.TianoCore.org/2007/Edk2.1">\r
-    <xb:package>org.tianocore</xb:package>\r
-  </xb:namespace>\r
-</xb:config>\r
-\r
diff --git a/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd b/BaseTools/Conf/XMLSchema/WorkspaceContent.xsd
deleted file mode 100644 (file)
index 1c9491a..0000000
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<!--\r
-    Filename: WorkspaceContent.xsd\r
-    \r
-    Copyright (c) 2008, Intel Corporation. All rights reserved.\r
-    \r
-    This program and the accompanying materials are licensed and made available \r
-    under the terms and conditions of the BSD License which may be found at \r
-    http://opensource.org/licenses/bsd-license.php\r
-    \r
-    THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-    WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-    \r
--->\r
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"\r
-       elementFormDefault="qualified"\r
-       targetNamespace="http://edk2.TianoCore.org/2008/1.0"\r
-       xmlns="http://edk2.TianoCore.org/2008/1.0">\r
-       <xs:annotation>\r
-               <xs:documentation xml:lang="en-us">This document covers the\r
-                       WorkspaceContent.xml file that tracks what has been installed into an EDK\r
-                       II development WORKSPACE.</xs:documentation>\r
-       </xs:annotation>\r
-       <xs:element name="WorkspaceContent">\r
-               <xs:annotation>\r
-                       <xs:documentation xml:lang="en-us"> This file describes the distributions,\r
-                               packages, stand-alone (non-package) modules and miscellaneous files that\r
-                               have been installed in THIS WORKSPACE. Additionally, any tools that are\r
-                               installed as part of a distribution are tracked (tools are not required\r
-                               to be installed within a WORKSPACE.) </xs:documentation>\r
-               </xs:annotation>\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element ref="Header" minOccurs="1" maxOccurs="1">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This section tracks required\r
-                                                       information about this WORKSPACE. </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element ref="DistributionPackage" minOccurs="1"\r
-                                       maxOccurs="unbounded">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> The list of UEFI/PI distribution\r
-                                                       packages that have been installed in this WORKSPACE.\r
-                                               </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-\r
-       <xs:element name="Header">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element minOccurs="0" maxOccurs="1" name="Name"\r
-                                       type="xs:normalizedString">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This User Interface Name can be\r
-                                                       entered during initialization of a WORKSPACE to permit a developer\r
-                                                       to uniquely identify a WORKSPACE. </xs:documentation>\r
-                                               <xs:documentation xml:lang="en-us"> This value can be used by report\r
-                                                       generators. </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="AbsolutePath"\r
-                                       type="xs:anyURI">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> When the WORKSPACE is first\r
-                                                       initialized, this is the absolute path to the WORKSPACE. If the\r
-                                                       user moves or re-names the directory, the RmPkg tool will need to\r
-                                                       verify the content of this WORKSPACE before removing any content.\r
-                                               </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="LastModifiedDate"\r
-                                       type="xs:dateTime">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> The date and time of the last\r
-                                                       Package Installation or Removal. The format is:\r
-                                                       YYYY-MM-DDThh:mm:ss, for example: 2001-01-31T13:30:00 (note the T\r
-                                                       character separator between the calendar date and the time.\r
-                                               </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1"\r
-                                       name="WorkspaceContentSpecification" default="1.0" type="xs:decimal"\r
-                                />\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-\r
-\r
-\r
-       <xs:element name="ModuleList">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element minOccurs="1" maxOccurs="unbounded" name="Module">\r
-                                       <xs:complexType>\r
-                                               <xs:sequence>\r
-                                                       <xs:element name="Name" minOccurs="1" maxOccurs="1">\r
-                                                               <xs:annotation>\r
-                                                                       <xs:documentation xml:lang="en-us"> The User Interface Name of\r
-                                                                               the module. </xs:documentation>\r
-                                                               </xs:annotation>\r
-                                                               <xs:complexType>\r
-                                                                       <xs:simpleContent>\r
-                                                                               <xs:extension base="xs:normalizedString">\r
-                                                                                       <xs:attribute name="BaseName" type="xs:NCName"\r
-                                                                                               use="required">\r
-                                                                                               <xs:annotation>\r
-                                                                                                       <xs:documentation xml:lang="en-us"> The BaseName is\r
-                                                                                                               used to create files and folders during a build, and\r
-                                                                                                               is used by packaging tools as a keyword to create\r
-                                                                                                               the INF file. </xs:documentation>\r
-                                                                                               </xs:annotation>\r
-                                                                                       </xs:attribute>\r
-                                                                               </xs:extension>\r
-                                                                       </xs:simpleContent>\r
-                                                               </xs:complexType>\r
-                                                       </xs:element>\r
-                                                       <xs:element ref="GUID" minOccurs="1" maxOccurs="1">\r
-                                                               <xs:annotation>\r
-                                                                       <xs:documentation xml:lang="en-us"> This is the GUID of the\r
-                                                                               module. Backward compatible versions of a module can use the\r
-                                                                               same GUID, however the version attribute must be changed\r
-                                                                               (incrementally.) Non-backward compatible versions of a\r
-                                                                               module must also provide a new GUID, while resetting the\r
-                                                                               version attribute is optional. </xs:documentation>\r
-                                                               </xs:annotation>\r
-                                                       </xs:element>\r
-                                                       <xs:element name="InstalledFolder" minOccurs="1" maxOccurs="1"\r
-                                                               type="xs:anyURI">\r
-                                                               <xs:annotation>\r
-                                                                       <xs:documentation xml:lang="en-us"> This is the WORKSPACE\r
-                                                                               relative path that the Module was installed in.\r
-                                                                       </xs:documentation>\r
-                                                               </xs:annotation>\r
-                                                       </xs:element>\r
-                                                       <xs:element name="InfFilename" minOccurs="1" maxOccurs="1"\r
-                                                               type="xs:anyURI">\r
-                                                               <xs:annotation>\r
-                                                                       <xs:documentation xml:lang="en-us"> This is filename of the\r
-                                                                               INF file created in the InstalledFolder (listed above)\r
-                                                                               during installation. </xs:documentation>\r
-                                                               </xs:annotation>\r
-                                                       </xs:element>\r
-                                               </xs:sequence>\r
-                                       </xs:complexType>\r
-                               </xs:element>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-\r
-       <xs:element name="DistributionPackage">\r
-               <xs:complexType>\r
-                       <xs:sequence>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="Name">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> The User Interface Name of the\r
-                                                       distribution. </xs:documentation>\r
-                                       </xs:annotation>\r
-                                       <xs:complexType>\r
-                                               <xs:simpleContent>\r
-                                                       <xs:extension base="xs:normalizedString">\r
-                                                               <xs:attribute name="BaseName" type="xs:NCName" use="required">\r
-                                                                       <xs:annotation>\r
-                                                                               <xs:documentation xml:lang="en-us"> This is the actual\r
-                                                                                       BaseName used during the installation. Since users may\r
-                                                                                       change the Distribution Package's default BaseName (used\r
-                                                                                       to create the PKG and MANIFEST files) this is the real\r
-                                                                                       name used to create the files. </xs:documentation>\r
-                                                                       </xs:annotation>\r
-                                                               </xs:attribute>\r
-                                                       </xs:extension>\r
-                                               </xs:simpleContent>\r
-                                       </xs:complexType>\r
-                               </xs:element>\r
-                               <xs:element ref="GUID" minOccurs="1" maxOccurs="1">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This is the GUID of the\r
-                                                       distribution, backward compatible versions of a distribution can\r
-                                                       use the same GUID, however the version attribute must be changed\r
-                                                       (incrementally.) Non-backward compatible versions of a\r
-                                                       distribution must also provide a new GUID, while resetting the\r
-                                                       version attribute is optional. </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="PkgFilename"\r
-                                       type="xs:anyURI">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This is the filename of the XML\r
-                                                       distribution package surface area (PKG) file that was stored in\r
-                                                       the Conf/Pkgs folder of the WORKSPACE for this distribution\r
-                                                       package. </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="ManifestFilename"\r
-                                       type="xs:anyURI">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This is the filename of the\r
-                                                       distribution package manifest (.manifest) file that was created\r
-                                                       and stored in the Conf/Pkgs folder of the WORKSPACE for this\r
-                                                       distribution package. The InstallPkg tool must create this file\r
-                                                       using the extracted locations of the content zip file (or,\r
-                                                       alternatively, the user can create the file by redirecting the\r
-                                                       output of the zip -Tv Contents.zip.) </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                               <xs:element minOccurs="1" maxOccurs="1" name="InstalledDate"\r
-                                       type="xs:dateTime" />\r
-                               <xs:element name="DistributionProperties" minOccurs="0" maxOccurs="1"\r
-                                       nillable="true">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This section tracks information\r
-                                                       and content that is not associated with either packages or\r
-                                                       modules, or is not required for building packages or modules.\r
-                                               </xs:documentation>\r
-                                       </xs:annotation>\r
-                                       <xs:complexType>\r
-                                               <xs:attribute name="ReadOnly" type="xs:boolean" default="false"\r
-                                                       use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us">If set to true, all content\r
-                                                                       within this distribution package should NOT be\r
-                                                               modified.</xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                               <xs:attribute name="RePackage" type="xs:boolean" default="false"\r
-                                                       use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us">If set to true, then the\r
-                                                                       content can be repackaged into another distribution\r
-                                                               package.</xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                               <xs:attribute name="ModifiedToolsDef" type="xs:boolean"\r
-                                                       default="false" use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us">If set to true, then either\r
-                                                                       the distribution or one of its packages has a user extensions\r
-                                                                       section that modified the tools_def.txt file.\r
-                                                               </xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                               <xs:attribute name="ProvidesTools" type="xs:boolean" default="false"\r
-                                                       use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us"> This is used to identify a\r
-                                                                       distribution that provides tools that may or may not be\r
-                                                                       installed in a WORKSPACE. </xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                               <xs:attribute name="ProvidesMiscellaneousFiles" type="xs:boolean"\r
-                                                       default="false" use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us"> This is used to identify a\r
-                                                                       distribution that provides miscellaneous files that must be\r
-                                                                       installed in a WORKSPACE. </xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                               <xs:attribute name="UnknownUserExtensions" type="xs:boolean"\r
-                                                       default="false" use="optional">\r
-                                                       <xs:annotation>\r
-                                                               <xs:documentation xml:lang="en-us"> This is used to identify a\r
-                                                                       distribution that has a UserExtensions section at the\r
-                                                                       Distribution, Package or Module level that uses an Identifier\r
-                                                                       other than BuildOptions, ToolsDef or DistributionPackage.\r
-                                                               </xs:documentation>\r
-                                                       </xs:annotation>\r
-                                               </xs:attribute>\r
-                                       </xs:complexType>\r
-                               </xs:element>\r
-                               <xs:element name="PackageList" minOccurs="0" maxOccurs="1">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This section tracks individual\r
-                                                       packages (collections of related items.) Each package listed in\r
-                                                       this section must have a DEC file associated with it.\r
-                                               </xs:documentation>\r
-                                       </xs:annotation>\r
-                                       <xs:complexType>\r
-                                               <xs:sequence>\r
-                                                       <xs:element name="Package" minOccurs="1" maxOccurs="unbounded">\r
-                                                               <xs:complexType>\r
-                                                                       <xs:sequence>\r
-                                                                               <xs:element name="Name" minOccurs="1" maxOccurs="1">\r
-                                                                                       <xs:annotation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> The User Interface\r
-                                                                                                       Name of the package. </xs:documentation>\r
-                                                                                       </xs:annotation>\r
-                                                                                       <xs:complexType>\r
-                                                                                               <xs:simpleContent>\r
-                                                                                                       <xs:extension base="xs:normalizedString">\r
-                                                                                                               <xs:attribute name="BaseName" type="xs:NCName"\r
-                                                                                                                       use="required">\r
-                                                                                                                       <xs:annotation>\r
-                                                                                                                               <xs:documentation xml:lang="en-us"> The BaseName\r
-                                                                                                                                       is used to create files and folders during a\r
-                                                                                                                                       build, and is used by packaging tools as a\r
-                                                                                                                                       keyword to create the DEC file.\r
-                                                                                                                               </xs:documentation>\r
-                                                                                                                       </xs:annotation>\r
-                                                                                                               </xs:attribute>\r
-                                                                                                       </xs:extension>\r
-                                                                                               </xs:simpleContent>\r
-                                                                                       </xs:complexType>\r
-                                                                               </xs:element>\r
-                                                                               <xs:element ref="GUID" minOccurs="1" maxOccurs="1">\r
-                                                                                       <xs:annotation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> This is the GUID of\r
-                                                                                                       the package, backward compatible versions of a package\r
-                                                                                                       can use the same GUID, however the version attribute\r
-                                                                                                       must be changed (incrementally.) Non-backward\r
-                                                                                                       compatible versions of a package must also provide a\r
-                                                                                                       new GUID, while resetting the version attribute is\r
-                                                                                                       optional. </xs:documentation>\r
-                                                                                       </xs:annotation>\r
-                                                                               </xs:element>\r
-                                                                               <xs:element name="InstalledFolder" type="xs:anyURI"\r
-                                                                                       minOccurs="1" maxOccurs="1">\r
-                                                                                       <xs:annotation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> This is used to\r
-                                                                                                       track the actual installation location, relative to\r
-                                                                                                       the WORKSPACE. During an installation, the user may be\r
-                                                                                                       presented with an option to relocate package content\r
-                                                                                                       from the ZIP portion of the archive into a different\r
-                                                                                                       location. </xs:documentation>\r
-                                                                                               <xs:documentation> Any installation tools must modify\r
-                                                                                                       this value if the location is different from the\r
-                                                                                                       default location. </xs:documentation>\r
-                                                                                               <xs:documentation> Any removal tools must check this\r
-                                                                                                       value to locate correctly, the items that will be\r
-                                                                                                       removed. </xs:documentation>\r
-                                                                                       </xs:annotation>\r
-                                                                               </xs:element>\r
-                                                                               <xs:element name="DecFilename" minOccurs="1" maxOccurs="1"\r
-                                                                                       type="xs:anyURI">\r
-                                                                                       <xs:annotation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> This is the filename\r
-                                                                                                       of the package declaration (DEC) filename created\r
-                                                                                                       during installation in the InstalledFolder listed\r
-                                                                                                       above. </xs:documentation>\r
-                                                                                       </xs:annotation>\r
-                                                                               </xs:element>\r
-                                                                               <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">\r
-                                                                                       <xs:annotation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> This section is used\r
-                                                                                                       to track the actual installation location, relative to\r
-                                                                                                       the WORKSPACE. Every module that is part of this\r
-                                                                                                       package must be listed here. During an installation,\r
-                                                                                                       the user may be presented with an option to relocate\r
-                                                                                                       module content from the ZIP portion of the archive\r
-                                                                                                       into a different location, the installation tools must\r
-                                                                                                       modify this value if the location is different from\r
-                                                                                                       the default location. Any removal tools must check\r
-                                                                                                       this value to locate correctly, the items that will be\r
-                                                                                                       removed. </xs:documentation>\r
-                                                                                               <xs:documentation xml:lang="en-us"> The name of any INF\r
-                                                                                                       files that were created during the installation of a\r
-                                                                                                       distribution must also be listed in this section.\r
-                                                                                               </xs:documentation>\r
-                                                                                       </xs:annotation>\r
-                                                                               </xs:element>\r
-                                                                       </xs:sequence>\r
-                                                               </xs:complexType>\r
-                                                       </xs:element>\r
-                                               </xs:sequence>\r
-                                       </xs:complexType>\r
-                               </xs:element>\r
-                               <xs:element ref="ModuleList" minOccurs="0" maxOccurs="1">\r
-                                       <xs:annotation>\r
-                                               <xs:documentation xml:lang="en-us"> This section is used to record\r
-                                                       distribution packages that contain modules that are not part of a\r
-                                                       package. Modules that are part of packages are listed under the\r
-                                                       Package element of the PackageList section. </xs:documentation>\r
-                                               <xs:documentation xml:lang="en-us"> Module only distribution will\r
-                                                       typically be for binary only modules, like the enhanced FAT\r
-                                                       driver. </xs:documentation>\r
-                                       </xs:annotation>\r
-                               </xs:element>\r
-                       </xs:sequence>\r
-               </xs:complexType>\r
-       </xs:element>\r
-\r
-       <xs:element name="GUID">\r
-               <xs:complexType>\r
-                       <xs:simpleContent>\r
-                               <xs:extension base="RegistryFormatGuid">\r
-                                       <xs:attribute name="Version" type="xs:decimal" use="required" />\r
-                               </xs:extension>\r
-                       </xs:simpleContent>\r
-               </xs:complexType>\r
-       </xs:element>\r
-\r
-       <!-- Simple Types that further restrict allowed content. -->\r
-\r
-       <xs:simpleType name="RegistryFormatGuid">\r
-               <xs:annotation>\r
-                       <xs:documentation xml:lang="en-us"> A Registry format GUID must contain\r
-                               five different Hexadecimal character sets that are separated by a dash\r
-                               (-) character. </xs:documentation>\r
-               </xs:annotation>\r
-               <xs:restriction base="xs:normalizedString">\r
-                       <xs:pattern\r
-                               value="\s*[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}\s*"\r
-                        />\r
-               </xs:restriction>\r
-       </xs:simpleType>\r
-\r
-</xs:schema>\r
index 257f732cd0cfecf40016344570e30093fed6e5fd..107e783d2e193e2032f2c07b925965a5de390bde 100644 (file)
 #   Unicode-Text-File\r
 #\r
 \r
+## Build Rule Version Number\r
+#  build_rule_version=0.1\r
+#\r
+\r
 [C-Code-File]\r
     <InputFile>\r
         ?.c\r
index 68caf86fe6404d3e9e10d62b0c16ca5cad491168..738cd650523889aebe7f1c8b2a7e94f3924a2405 100644 (file)
@@ -1,5 +1,5 @@
 #\r
-#  Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+#  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
 #  Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
 #\r
 #  This program and the accompanying materials\r
@@ -37,6 +37,16 @@ DEFINE VS2008x86_DLL    = C:\Program Files (x86)\Microsoft Visual Studio 9.0\Com
 DEFINE VS2008x86_BINX64 = DEF(VS2008x86_BIN)\x86_amd64\r
 DEFINE VS2008x86_BIN64  = DEF(VS2008x86_BIN)\x86_ia64\r
 \r
+DEFINE VS2010_BIN      = C:\Program Files\Microsoft Visual Studio 10.0\Vc\bin\r
+DEFINE VS2010_DLL      = C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE;DEF(VS2010_BIN)\r
+DEFINE VS2010_BINX64   = DEF(VS2010_BIN)\x86_amd64\r
+DEFINE VS2010_BIN64    = DEF(VS2010_BIN)\x86_ia64\r
+\r
+DEFINE VS2010x86_BIN    = C:\Program Files (x86)\Microsoft Visual Studio 10.0\Vc\bin\r
+DEFINE VS2010x86_DLL    = C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE;DEF(VS2010x86_BIN)\r
+DEFINE VS2010x86_BINX64 = DEF(VS2010x86_BIN)\x86_amd64\r
+DEFINE VS2010x86_BIN64  = DEF(VS2010x86_BIN)\x86_ia64\r
+\r
 DEFINE WINSDK_VERSION   = v6.0A\r
 DEFINE WINSDK_BIN       = c:\Program Files\Microsoft SDKs\Windows\DEF(WINSDK_VERSION)\bin\r
 DEFINE WINSDKx86_BIN    = c:\Program Files (x86)\Microsoft SDKs\Windows\DEF(WINSDK_VERSION)\bin\r
@@ -225,6 +235,15 @@ DEFINE CLANG_BIN = /usr/bin/
 #                             Required to build platforms or ACPI tables:\r
 #                               Intel(r) ACPI Compiler (iasl.exe) v20101013 from\r
 #                               http://www.acpica.org/downloads/previous_releases.php\r
+#   VS2010      -win32-  Requires:\r
+#                             Microsoft Visual Studio 2010 Premium Edition\r
+#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830\r
+#                        Optional:\r
+#                             Required to build EBC drivers:\r
+#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)\r
+#                             Required to build platforms or ACPI tables:\r
+#                               Intel(r) ACPI Compiler (iasl.exe) v20101013 from\r
+#                               http://www.acpica.org/downloads/previous_releases.php\r
 #   DDK3790     -win32-  Requires:\r
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830\r
 #                        Optional:\r
@@ -333,6 +352,15 @@ DEFINE CLANG_BIN = /usr/bin/
 #                             Required to build platforms or ACPI tables:\r
 #                               Microsoft ASL ACPI Compiler (asl.exe) v4.0.0 from\r
 #                               http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi\r
+#   VS2010xASL  -win32-  Requires:\r
+#                             Microsoft Visual Studio 2010 Premium Edition\r
+#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830\r
+#                        Optional:\r
+#                             Required to build EBC drivers:\r
+#                               Intel(r) Compiler for Efi Byte Code (Intel(r) EBC Compiler)\r
+#                             Required to build platforms or ACPI tables:\r
+#                               Microsoft ASL ACPI Compiler (asl.exe) v4.0.0 from\r
+#                               http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi\r
 #   DDK3790xASL -win32-  Requires:\r
 #                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830\r
 #                        Optional:\r
@@ -390,6 +418,13 @@ DEFINE CLANG_BIN = /usr/bin/
 #                             Required to build platforms or ACPI tables:\r
 #                               Intel(r) ACPI Compiler (iasl.exe) v20101013 from\r
 #                               http://www.acpica.org/downloads/previous_releases.php \r
+#   VS2010x86   -win64-  Requires:\r
+#                             Microsoft Visual Studio 2010 (x86) Premium Edition\r
+#                             Microsoft Windows Server 2003 Driver Development Kit (Microsoft WINDDK) version 3790.1830\r
+#                        Optional:\r
+#                             Required to build platforms or ACPI tables:\r
+#                               Intel(r) ACPI Compiler (iasl.exe) v20101013 from\r
+#                               http://www.acpica.org/downloads/previous_releases.php \r
 #   ICCx86      -win64-  Requires:\r
 #                             Intel C Compiler V9.1(x86)\r
 #                        Dependencies:\r
@@ -430,6 +465,13 @@ DEFINE CLANG_BIN = /usr/bin/
 #                             Required to build platforms or ACPI tables:\r
 #                               Microsoft ASL ACPI Compiler (asl.exe) v4.0.0 from\r
 #                               http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi\r
+#  VS2010x86xASL -win64- Requires:\r
+#                             Microsoft Visual Studio 2010 (x86) Premium Edition\r
+#                             Microsoft Windows Server 2003 Driver Development Kit(Microsoft WINDDK) version 3790.1830 \r
+#                        Optional:\r
+#                             Required to build platforms or ACPI tables:\r
+#                               Microsoft ASL ACPI Compiler (asl.exe) v4.0.0 from\r
+#                               http://download.microsoft.com/download/2/c/1/2c16c7e0-96c1-40f5-81fc-3e4bf7b65496/microsoft_asl_compiler-v4-0-0.msi\r
 #   ICCx86xASL  -win64-  Requires:\r
 #                             Intel C Compiler V9.1 (x86)\r
 #                        Dependencies:\r
@@ -727,9 +769,9 @@ NOOPT_VS2005_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE
 RELEASE_VS2005_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd\r
 NOOPT_VS2005_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
 \r
-  DEBUG_VS2005_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:I386 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
-RELEASE_VS2005_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:I386 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
-NOOPT_VS2005_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:I386 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+  DEBUG_VS2005_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2005_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2005_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
 \r
 ##################\r
 # X64 definitions\r
@@ -1726,6 +1768,513 @@ RELEASE_VS2008x86xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:R
 NOOPT_VS2008x86xASL_IPF_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
 \r
 \r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2010\r
+#\r
+#   VS2010  - Microsoft Visual Studio 2010 Premium Edition\r
+#   ASL     - Intel ACPI Source Language Compiler\r
+####################################################################################\r
+#   VS2010           - Microsoft Visual Studio 2010 Premium Edition\r
+*_VS2010_*_*_FAMILY               = MSFT\r
+\r
+*_VS2010_*_MAKE_PATH              = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010_*_MAKE_FLAGS             = /nologo\r
+*_VS2010_*_RC_PATH                = DEF(WINSDK_BIN)\rc.exe\r
+\r
+*_VS2010_*_SLINK_FLAGS            = /NOLOGO /LTCG\r
+*_VS2010_*_APP_FLAGS              = /nologo /E /TC\r
+*_VS2010_*_PP_FLAGS               = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010_*_VFRPP_FLAGS            = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+\r
+*_VS2010_*_ASM16_PATH             = DEF(VS2010_BIN)\ml.exe\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_VS2010_*_ASL_PATH               = DEF(DEFAULT_WIN_ASL_BIN)\r
+*_VS2010_*_ASL_FLAGS              = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_VS2010_*_ASL_OUTFLAGS           = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
+*_VS2010_*_ASLCC_FLAGS            = DEF(MSFT_ASLCC_FLAGS)\r
+*_VS2010_*_ASLPP_FLAGS            = DEF(MSFT_ASLPP_FLAGS)\r
+*_VS2010_*_ASLDLINK_FLAGS         = DEF(MSFT_ASLDLINK_FLAGS)\r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2010_IA32_*_DLL               = DEF(VS2010_DLL)\r
+\r
+*_VS2010_IA32_MAKE_PATH           = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010_IA32_CC_PATH             = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_VFRPP_PATH          = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_SLINK_PATH          = DEF(VS2010_BIN)\lib.exe\r
+*_VS2010_IA32_DLINK_PATH          = DEF(VS2010_BIN)\link.exe\r
+*_VS2010_IA32_APP_PATH            = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_PP_PATH             = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_ASM_PATH            = DEF(VS2010_BIN)\ml.exe\r
+*_VS2010_IA32_ASLCC_PATH          = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_ASLPP_PATH          = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010_IA32_ASLDLINK_PATH       = DEF(VS2010_BIN)\link.exe\r
+\r
+      *_VS2010_IA32_MAKE_FLAGS    = /nologo\r
+  DEBUG_VS2010_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm\r
+RELEASE_VS2010_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010_IA32_CC_FLAGS        = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+RELEASE_VS2010_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd\r
+NOOPT_VS2010_IA32_ASM_FLAGS       = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+\r
+  DEBUG_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010_IA32_DLINK_FLAGS     = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# X64 definitions\r
+##################\r
+*_VS2010_X64_*_DLL         = DEF(VS2010_DLL)\r
+\r
+*_VS2010_X64_CC_PATH       = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_PP_PATH       = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_APP_PATH      = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_VFRPP_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_ASM_PATH      = DEF(VS2010_BINX64)\ml64.exe\r
+*_VS2010_X64_SLINK_PATH    = DEF(VS2010_BINX64)\lib.exe\r
+*_VS2010_X64_DLINK_PATH    = DEF(VS2010_BINX64)\link.exe\r
+*_VS2010_X64_ASLCC_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_ASLPP_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010_X64_ASLDLINK_PATH = DEF(VS2010_BINX64)\link.exe\r
+\r
+\r
+  DEBUG_VS2010_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm\r
+RELEASE_VS2010_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010_X64_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+RELEASE_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd\r
+NOOPT_VS2010_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+\r
+  DEBUG_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_VS2010_IPF_*_DLL         = DEF(VS2010_DLL)\r
+\r
+*_VS2010_IPF_PP_PATH       = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_APP_PATH      = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_VFRPP_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_CC_PATH       = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_ASM_PATH      = DEF(VS2010_BIN64)\ias.exe\r
+*_VS2010_IPF_SLINK_PATH    = DEF(VS2010_BIN64)\lib.exe\r
+*_VS2010_IPF_DLINK_PATH    = DEF(VS2010_BIN64)\link.exe\r
+*_VS2010_IPF_ASLCC_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_ASLPP_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010_IPF_ASLDLINK_PATH = DEF(VS2010_BIN64)\link.exe\r
+\r
+  DEBUG_VS2010_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32 /Zi\r
+RELEASE_VS2010_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32\r
+NOOPT_VS2010_IPF_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /FIAutoGen.h /QIPF_fr32 /Zi /Od\r
+\r
+  DEBUG_VS2010_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_VS2010_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4\r
+NOOPT_VS2010_IPF_ASM_FLAGS      = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+\r
+  DEBUG_VS2010_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+RELEASE_VS2010_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb\r
+NOOPT_VS2010_IPF_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+\r
+##################\r
+# EBC definitions\r
+##################\r
+*_VS2010_EBC_*_FAMILY            = INTEL\r
+\r
+*_VS2010_EBC_MAKE_PATH           = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe\r
+*_VS2010_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe\r
+*_VS2010_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe\r
+*_VS2010_EBC_SLINK_PATH          = DEF(EBC_BIN)\link.exe\r
+*_VS2010_EBC_DLINK_PATH          = DEF(EBC_BIN)\link.exe\r
+\r
+*_VS2010_EBC_MAKE_FLAGS          = /nologo\r
+*_VS2010_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
+*_VS2010_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+*_VS2010_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC\r
+*_VS2010_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
+\r
+####################################################################################\r
+#\r
+# Microsoft Visual Studio 2010\r
+#\r
+#   VS2010  - Microsoft Visual Studio 2010 Premium Edition\r
+#   ASL     - Microsoft ACPI Source Language Compiler (asl.exe)\r
+####################################################################################\r
+#   VS2010xASL           - Microsoft Visual Studio 2010 Premium Edition\r
+*_VS2010xASL_*_*_FAMILY        = MSFT\r
+\r
+*_VS2010xASL_*_MAKE_PATH       = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010xASL_*_MAKE_FLAG       = /nologo\r
+*_VS2010xASL_*_RC_PATH         = DEF(WINSDK_BIN)\rc.exe\r
+\r
+*_VS2010xASL_*_SLINK_FLAGS     = /NOLOGO /LTCG\r
+*_VS2010xASL_*_APP_FLAGS       = /nologo /E /TC\r
+*_VS2010xASL_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010xASL_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+\r
+*_VS2010xASL_*_ASM16_PATH      = DEF(VS2010_BIN)\ml.exe\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_VS2010xASL_*_ASL_PATH        = DEF(WIN_ASL_BIN)\r
+*_VS2010xASL_*_ASL_FLAGS       =\r
+*_VS2010xASL_*_ASL_OUTFLAGS    = DEF(MS_ASL_OUTFLAGS)\r
+*_VS2010xASL_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)\r
+*_VS2010xASL_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)\r
+*_VS2010xASL_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)\r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2010xASL_IA32_*_DLL        = DEF(VS2010_DLL)\r
+\r
+*_VS2010xASL_IA32_MAKE_PATH    = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010xASL_IA32_CC_PATH      = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_VFRPP_PATH   = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_SLINK_PATH   = DEF(VS2010_BIN)\lib.exe\r
+*_VS2010xASL_IA32_DLINK_PATH   = DEF(VS2010_BIN)\link.exe\r
+*_VS2010xASL_IA32_APP_PATH     = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_PP_PATH      = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_ASM_PATH     = DEF(VS2010_BIN)\ml.exe\r
+*_VS2010xASL_IA32_ASLCC_PATH    = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_ASLPP_PATH    = DEF(VS2010_BIN)\cl.exe\r
+*_VS2010xASL_IA32_ASLDLINK_PATH = DEF(VS2010_BIN)\link.exe\r
+\r
+      *_VS2010xASL_IA32_MAKE_FLAGS  = /nologo\r
+  DEBUG_VS2010xASL_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm\r
+RELEASE_VS2010xASL_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010xASL_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010xASL_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+RELEASE_VS2010xASL_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd\r
+NOOPT_VS2010xASL_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+\r
+  DEBUG_VS2010xASL_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010xASL_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010xASL_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# X64 definitions\r
+##################\r
+*_VS2010xASL_X64_*_DLL         = DEF(VS2010_DLL)\r
+\r
+*_VS2010xASL_X64_CC_PATH       = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_PP_PATH       = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_APP_PATH      = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_VFRPP_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_ASM_PATH      = DEF(VS2010_BINX64)\ml64.exe\r
+*_VS2010xASL_X64_SLINK_PATH    = DEF(VS2010_BINX64)\lib.exe\r
+*_VS2010xASL_X64_DLINK_PATH    = DEF(VS2010_BINX64)\link.exe\r
+*_VS2010xASL_X64_ASLCC_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_ASLPP_PATH    = DEF(VS2010_BINX64)\cl.exe\r
+*_VS2010xASL_X64_ASLDLINK_PATH = DEF(VS2010_BINX64)\link.exe\r
+\r
+\r
+  DEBUG_VS2010xASL_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm\r
+RELEASE_VS2010xASL_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010xASL_X64_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010xASL_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+RELEASE_VS2010xASL_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd\r
+NOOPT_VS2010xASL_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+\r
+  DEBUG_VS2010xASL_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010xASL_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010xASL_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_VS2010xASL_IPF_*_DLL         = DEF(VS2010_DLL)\r
+\r
+*_VS2010xASL_IPF_PP_PATH       = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_APP_PATH      = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_VFRPP_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_CC_PATH       = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_ASM_PATH      = DEF(VS2010_BIN64)\ias.exe\r
+*_VS2010xASL_IPF_SLINK_PATH    = DEF(VS2010_BIN64)\lib.exe\r
+*_VS2010xASL_IPF_DLINK_PATH    = DEF(VS2010_BIN64)\link.exe\r
+*_VS2010xASL_IPF_ASLCC_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_ASLPP_PATH    = DEF(VS2010_BIN64)\cl.exe\r
+*_VS2010xASL_IPF_ASLDLINK_PATH = DEF(VS2010_BIN64)\link.exe\r
+\r
+  DEBUG_VS2010xASL_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32 /Zi\r
+RELEASE_VS2010xASL_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32\r
+NOOPT_VS2010xASL_IPF_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /FIAutoGen.h /QIPF_fr32 /Zi /Od\r
+\r
+  DEBUG_VS2010xASL_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_VS2010xASL_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4\r
+NOOPT_VS2010xASL_IPF_ASM_FLAGS      = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+\r
+  DEBUG_VS2010xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+RELEASE_VS2010xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb\r
+NOOPT_VS2010xASL_IPF_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+\r
+##################\r
+# EBC definitions\r
+##################\r
+*_VS2010xASL_EBC_*_FAMILY            = INTEL\r
+\r
+*_VS2010xASL_EBC_MAKE_PATH           = DEF(VS2010_BIN)\nmake.exe\r
+*_VS2010xASL_EBC_PP_PATH             = DEF(EBC_BIN)\iec.exe\r
+*_VS2010xASL_EBC_VFRPP_PATH          = DEF(EBC_BIN)\iec.exe\r
+*_VS2010xASL_EBC_CC_PATH             = DEF(EBC_BIN)\iec.exe\r
+*_VS2010xASL_EBC_SLINK_PATH          = DEF(EBC_BIN)\link.exe\r
+*_VS2010xASL_EBC_DLINK_PATH          = DEF(EBC_BIN)\link.exe\r
+\r
+*_VS2010xASL_EBC_MAKE_FLAGS          = /nologo\r
+*_VS2010xASL_EBC_PP_FLAGS            = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010xASL_EBC_CC_FLAGS            = /nologo /c /WX /W3 /FIAutoGen.h /D$(MODULE_ENTRY_POINT)=$(ARCH_ENTRY_POINT)\r
+*_VS2010xASL_EBC_VFRPP_FLAGS         = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+*_VS2010xASL_EBC_SLINK_FLAGS         = /lib /NOLOGO /MACHINE:EBC\r
+*_VS2010xASL_EBC_DLINK_FLAGS         = "C:\Program Files\Intel\EBC\Lib\EbcLib.lib" /NOLOGO /NODEFAULTLIB /MACHINE:EBC /OPT:REF /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /MAP /ALIGN:32 /DRIVER\r
+\r
+\r
+####################################################################################\r
+#   VS2010x86       - Microsoft Visual Studio 2010 (x86) with Intel ASL\r
+#   ASL  - Intel ACPI Source Language Compiler (iasl.exe)\r
+####################################################################################\r
+#   VS2010x86           - Microsoft Visual Studio 2010 (x86) ALL Edition with Intel ASL\r
+*_VS2010x86_*_*_FAMILY        = MSFT\r
+\r
+*_VS2010x86_*_MAKE_PATH       = DEF(VS2010x86_BIN)\nmake.exe\r
+*_VS2010x86_*_MAKE_FLAG       = /nologo\r
+*_VS2010x86_*_RC_PATH         = DEF(WINSDK_BIN)\rc.exe\r
+\r
+*_VS2010x86_*_MAKE_FLAGS      = /nologo\r
+*_VS2010x86_*_SLINK_FLAGS     = /NOLOGO /LTCG\r
+*_VS2010x86_*_APP_FLAGS       = /nologo /E /TC\r
+*_VS2010x86_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010x86_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+\r
+*_VS2010x86_*_ASM16_PATH      = DEF(VS2010x86_BIN)\ml.exe\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_VS2010x86_*_ASL_PATH        = DEF(WIN_IASL_BIN)\r
+*_VS2010x86_*_ASL_FLAGS       = DEF(DEFAULT_WIN_ASL_FLAGS)\r
+*_VS2010x86_*_ASL_OUTFLAGS    = DEF(DEFAULT_WIN_ASL_OUTFLAGS)\r
+*_VS2010x86_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)\r
+*_VS2010x86_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)\r
+*_VS2010x86_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)\r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2010x86_IA32_*_DLL        = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86_IA32_MAKE_PATH    = DEF(VS2010x86_BIN)\nmake.exe\r
+*_VS2010x86_IA32_CC_PATH      = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_VFRPP_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_ASLCC_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_ASLPP_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_SLINK_PATH   = DEF(VS2010x86_BIN)\lib.exe\r
+*_VS2010x86_IA32_DLINK_PATH   = DEF(VS2010x86_BIN)\link.exe\r
+*_VS2010x86_IA32_ASLDLINK_PATH= DEF(VS2010x86_BIN)\link.exe\r
+*_VS2010x86_IA32_APP_PATH     = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_PP_PATH      = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86_IA32_ASM_PATH     = DEF(VS2010x86_BIN)\ml.exe\r
+\r
+      *_VS2010x86_IA32_MAKE_FLAGS  = /nologo\r
+  DEBUG_VS2010x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm\r
+RELEASE_VS2010x86_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010x86_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+RELEASE_VS2010x86_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd\r
+NOOPT_VS2010x86_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+\r
+  DEBUG_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010x86_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010x86_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# X64 definitions\r
+##################\r
+*_VS2010x86_X64_*_DLL         = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86_X64_CC_PATH       = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_PP_PATH       = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_APP_PATH      = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_VFRPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_ASLCC_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_ASLPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86_X64_ASM_PATH      = DEF(VS2010x86_BINX64)\ml64.exe\r
+*_VS2010x86_X64_SLINK_PATH    = DEF(VS2010x86_BINX64)\lib.exe\r
+*_VS2010x86_X64_DLINK_PATH    = DEF(VS2010x86_BINX64)\link.exe\r
+*_VS2010x86_X64_ASLDLINK_PATH = DEF(VS2010x86_BINX64)\link.exe\r
+\r
+  DEBUG_VS2010x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm\r
+RELEASE_VS2010x86_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010x86_X64_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+RELEASE_VS2010x86_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd\r
+NOOPT_VS2010x86_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi\r
\r
+  DEBUG_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010x86_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010x86_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_VS2010x86_IPF_*_DLL         = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86_IPF_PP_PATH       = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_APP_PATH      = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_VFRPP_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_ASLCC_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_ASLPP_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_CC_PATH       = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86_IPF_ASM_PATH      = DEF(VS2010x86_BIN64)\ias.exe\r
+*_VS2010x86_IPF_SLINK_PATH    = DEF(VS2010x86_BIN64)\lib.exe\r
+*_VS2010x86_IPF_DLINK_PATH    = DEF(VS2010x86_BIN64)\link.exe\r
+*_VS2010x86_IPF_ASLDLINK_PATH = DEF(VS2010x86_BIN64)\link.exe\r
+\r
+  DEBUG_VS2010x86_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32 /Zi\r
+RELEASE_VS2010x86_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32\r
+NOOPT_VS2010x86_IPF_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /FIAutoGen.h /QIPF_fr32 /Zi /Od\r
+\r
+  DEBUG_VS2010x86_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_VS2010x86_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4\r
+NOOPT_VS2010x86_IPF_ASM_FLAGS      = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+\r
+  DEBUG_VS2010x86_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+RELEASE_VS2010x86_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb\r
+NOOPT_VS2010x86_IPF_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+\r
+\r
+####################################################################################\r
+#   VS2010x86xASL     - Microsoft Visual Studio 2010 with Microsoft ASL\r
+#   ASL  - Microsoft ACPI Source Language Compiler (asl.exe)\r
+####################################################################################\r
+*_VS2010x86xASL_*_*_FAMILY        = MSFT\r
+\r
+*_VS2010x86xASL_*_MAKE_PATH       = DEF(VS2010x86_BIN)\nmake.exe\r
+*_VS2010x86xASL_*_MAKE_FLAG       = /nologo\r
+*_VS2010x86xASL_*_RC_PATH         = DEF(WINSDK_BIN)\rc.exe\r
+\r
+*_VS2010x86xASL_*_MAKE_FLAGS      = /nologo\r
+*_VS2010x86xASL_*_SLINK_FLAGS     = /NOLOGO /LTCG\r
+*_VS2010x86xASL_*_APP_FLAGS       = /nologo /E /TC\r
+*_VS2010x86xASL_*_PP_FLAGS        = /nologo /E /TC /FIAutoGen.h\r
+*_VS2010x86xASL_*_VFRPP_FLAGS     = /nologo /E /TC /DVFRCOMPILE /FI$(MODULE_NAME)StrDefs.h\r
+\r
+*_VS2010x86xASL_*_ASM16_PATH      = DEF(VS2010x86_BIN)\ml.exe\r
+\r
+##################\r
+# ASL definitions\r
+##################\r
+*_VS2010x86xASL_*_ASL_PATH        = DEF(WIN_ASL_BIN)\r
+*_VS2010x86xASL_*_ASL_FLAGS       = DEF(MS_ASL_FLAGS)\r
+*_VS2010x86xASL_*_ASL_OUTFLAGS    = DEF(MS_ASL_OUTFLAGS)\r
+*_VS2010x86xASL_*_ASLCC_FLAGS     = DEF(MSFT_ASLCC_FLAGS)\r
+*_VS2010x86xASL_*_ASLPP_FLAGS     = DEF(MSFT_ASLPP_FLAGS)\r
+*_VS2010x86xASL_*_ASLDLINK_FLAGS  = DEF(MSFT_ASLDLINK_FLAGS)\r
+\r
+##################\r
+# IA32 definitions\r
+##################\r
+*_VS2010x86xASL_IA32_*_DLL        = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86xASL_IA32_MAKE_PATH    = DEF(VS2010x86_BIN)\nmake.exe\r
+*_VS2010x86xASL_IA32_CC_PATH      = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_VFRPP_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_ASLCC_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_ASLPP_PATH   = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_SLINK_PATH   = DEF(VS2010x86_BIN)\lib.exe\r
+*_VS2010x86xASL_IA32_DLINK_PATH   = DEF(VS2010x86_BIN)\link.exe\r
+*_VS2010x86xASL_IA32_ASLDLINK_PATH= DEF(VS2010x86_BIN)\link.exe\r
+*_VS2010x86xASL_IA32_APP_PATH     = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_PP_PATH      = DEF(VS2010x86_BIN)\cl.exe\r
+*_VS2010x86xASL_IA32_ASM_PATH     = DEF(VS2010x86_BIN)\ml.exe\r
+\r
+      *_VS2010x86xASL_IA32_MAKE_FLAGS  = /nologo\r
+  DEBUG_VS2010x86xASL_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm\r
+RELEASE_VS2010x86xASL_IA32_CC_FLAGS    = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /O1ib2 /GL /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010x86xASL_IA32_CC_FLAGS      = /nologo /c /WX /GS- /W4 /Gs32768 /D UNICODE /FIAutoGen.h /EHs-c- /GR- /GF /Gy /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010x86xASL_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+RELEASE_VS2010x86xASL_IA32_ASM_FLAGS   = /nologo /c /WX /W3 /Cx /coff /Zd\r
+NOOPT_VS2010x86xASL_IA32_ASM_FLAGS     = /nologo /c /WX /W3 /Cx /coff /Zd /Zi\r
+\r
+  DEBUG_VS2010x86xASL_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010x86xASL_IA32_DLINK_FLAGS = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010x86xASL_IA32_DLINK_FLAGS   = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:X86 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# X64 definitions\r
+##################\r
+*_VS2010x86xASL_X64_*_DLL         = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86xASL_X64_CC_PATH       = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_PP_PATH       = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_APP_PATH      = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_VFRPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_ASLCC_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_ASLPP_PATH    = DEF(VS2010x86_BINX64)\cl.exe\r
+*_VS2010x86xASL_X64_ASM_PATH      = DEF(VS2010x86_BINX64)\ml64.exe\r
+*_VS2010x86xASL_X64_SLINK_PATH    = DEF(VS2010x86_BINX64)\lib.exe\r
+*_VS2010x86xASL_X64_DLINK_PATH    = DEF(VS2010x86_BINX64)\link.exe\r
+*_VS2010x86xASL_X64_ASLDLINK_PATH = DEF(VS2010x86_BINX64)\link.exe\r
+\r
+  DEBUG_VS2010x86xASL_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm\r
+RELEASE_VS2010x86xASL_X64_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /O1ib2s /GL /Gy /FIAutoGen.h /EHs-c- /GR- /GF\r
+NOOPT_VS2010x86xASL_X64_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /Gs32768 /D UNICODE /Gy /FIAutoGen.h /EHs-c- /GR- /GF /Zi /Gm /Od\r
+\r
+  DEBUG_VS2010x86xASL_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+RELEASE_VS2010x86xASL_X64_ASM_FLAGS    = /nologo /c /WX /W3 /Cx /Zd\r
+NOOPT_VS2010x86xASL_X64_ASM_FLAGS      = /nologo /c /WX /W3 /Cx /Zd /Zi\r
+\r
+  DEBUG_VS2010x86xASL_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+RELEASE_VS2010x86xASL_X64_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /IGNORE:4254 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MERGE:.data=.text /MERGE:.rdata=.text\r
+NOOPT_VS2010x86xASL_X64_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:REF /OPT:ICF=10 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /Machine:X64 /LTCG /DLL /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /DEBUG\r
+\r
+##################\r
+# IPF definitions\r
+##################\r
+*_VS2010x86xASL_IPF_*_DLL         = DEF(VS2010x86_DLL)\r
+\r
+*_VS2010x86xASL_IPF_PP_PATH       = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_APP_PATH      = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_VFRPP_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_ASLCC_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_ASLPP_PATH    = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_CC_PATH       = DEF(VS2010x86_BIN64)\cl.exe\r
+*_VS2010x86xASL_IPF_ASM_PATH      = DEF(VS2010x86_BIN64)\ias.exe\r
+*_VS2010x86xASL_IPF_SLINK_PATH    = DEF(VS2010x86_BIN64)\lib.exe\r
+*_VS2010x86xASL_IPF_DLINK_PATH    = DEF(VS2010x86_BIN64)\link.exe\r
+*_VS2010x86xASL_IPF_ASLDLINK_PATH = DEF(VS2010x86_BIN64)\link.exe\r
+\r
+  DEBUG_VS2010x86xASL_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32 /Zi\r
+RELEASE_VS2010x86xASL_IPF_CC_FLAGS     = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /Os /GL /FIAutoGen.h /QIPF_fr32\r
+NOOPT_VS2010x86xASL_IPF_CC_FLAGS       = /nologo /c /WX /GS- /X /W4 /EHs-c- /GR- /Gy /FIAutoGen.h /QIPF_fr32 /Zi /Od\r
+\r
+  DEBUG_VS2010x86xASL_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+RELEASE_VS2010x86xASL_IPF_ASM_FLAGS    = -N us -X explicit -M ilp64 -N so -W4\r
+NOOPT_VS2010x86xASL_IPF_ASM_FLAGS      = -N us -X explicit -M ilp64 -N so -W4 -d debug\r
+\r
+  DEBUG_VS2010x86xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+RELEASE_VS2010x86xASL_IPF_DLINK_FLAGS  = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb\r
+NOOPT_VS2010x86xASL_IPF_DLINK_FLAGS    = /NOLOGO /NODEFAULTLIB /LTCG /DLL /OPT:REF,ICF /IGNORE:4001 /MAP /ALIGN:32 /SECTION:.xdata,D /SECTION:.pdata,D /MACHINE:IA64 /ENTRY:$(IMAGE_ENTRY_POINT) /SUBSYSTEM:EFI_BOOT_SERVICE_DRIVER /SAFESEH:NO /BASE:0 /DRIVER /MAP:$(DEBUG_DIR)/$(BASE_NAME).map /PDB:$(DEBUG_DIR)/$(BASE_NAME).pdb /DEBUG\r
+\r
+\r
 ####################################################################################\r
 #\r
 # Microsoft Device Driver Kit 3790.1830 (IA-32, X64, Itanium, with Link Time Code Generation)\r
@@ -4369,6 +4918,14 @@ RELEASE_ARMLINUXGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) DEF(GCC_ARM
 *_*_*_LZMA_PATH          = LzmaCompress\r
 *_*_*_LZMA_GUID          = EE4E5898-3914-4259-9D6E-DC7BD79403CF\r
 \r
+##################\r
+# LzmaF86Compress tool definitions with converter for x86 code.\r
+# It can improve the compression ratio if the input file is IA32 or X64 PE image.\r
+# Notes: If X64 PE image is built based on GCC44, it may not get the better compression.\r
+##################\r
+*_*_*_LZMAF86_PATH         = LzmaF86Compress\r
+*_*_*_LZMAF86_GUID         = D42AE6BD-1352-4bfb-909A-CA72A6EAE889\r
+\r
 ##################\r
 # TianoCompress tool definitions\r
 ##################\r
index ad034be5389e1fbee93412cacc04cac8ce9bf06e..e0dde3e08507c1109ce0e8a1f8e5db6a24c8c1de 100644 (file)
@@ -1,7 +1,7 @@
 ## @file
 #  GNU Make makefile for C tools build.
 #
-#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -22,10 +22,7 @@ ifndef ARCH
   ifeq ($(uname_m),x86_64)
     ARCH=X64
   endif
-  ifeq ($(uname_m),i386)
-    ARCH=IA32
-  endif
-  ifeq ($(uname_m),i686)
+  ifeq ($(patsubst i%86,IA32,$(uname_m)),IA32)
     ARCH=IA32
   endif
   ifndef ARCH
index 22327e7ec7854692677e0883564b7577124eb3c1..f9144e5f018f2a38cca8492d28abfe2bc4fe485c 100644 (file)
@@ -14,4 +14,4 @@
 \r
 **/\r
 \r
-#define __BUILD_VERSION "Build 2474"\r
+#define __BUILD_VERSION "Build 2518"\r
index 1cabc959d8bc58a92a747bdaf7af641f7e3bd34c..82d391ce3ad0328ac09dc9db1164546b8426dbec 100644 (file)
@@ -3,7 +3,7 @@
   IFR is primarily consumed by the EFI presentation engine, and produced by EFI\r
   internal application and drivers as well as all add-in card option-ROM drivers\r
 \r
-  Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
 \r
   This program and the accompanying materials are licensed and made available\r
   under the terms and conditions of the BSD License which accompanies this\r
@@ -613,7 +613,7 @@ typedef union {
 #define EFI_IFR_INCONSISTENT_IF_OP     0x11\r
 #define EFI_IFR_EQ_ID_VAL_OP           0x12\r
 #define EFI_IFR_EQ_ID_ID_OP            0x13\r
-#define EFI_IFR_EQ_ID_LIST_OP          0x14\r
+#define EFI_IFR_EQ_ID_VAL_LIST_OP      0x14\r
 #define EFI_IFR_AND_OP                 0x15\r
 #define EFI_IFR_OR_OP                  0x16\r
 #define EFI_IFR_NOT_OP                 0x17\r
index 99e9cbbeb0914f88170ec91baa4e078f311b413f..07f0a90b60b3bd03870b48d28685bc3b5ecc1d62 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Windows makefile for 'LzmaCompress' module build.\r
 #\r
-# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -24,7 +24,8 @@ OBJECTS = \
   $(SDK_C)/LzmaDec.o \\r
   $(SDK_C)/LzmaEnc.o \\r
   $(SDK_C)/7zFile.o \\r
-  $(SDK_C)/7zStream.o\r
+  $(SDK_C)/7zStream.o \\r
+  $(SDK_C)/Bra86.o\r
 \r
 include $(MAKEROOT)/Makefiles/app.makefile\r
 \r
index 7d254ed49ad3a77d8d0e9742e708dcb7b4daa192..b569b4e4d9804a808bcf6b0034e42c00ec9d654a 100644 (file)
@@ -5,7 +5,7 @@
     LzmaUtil.c -- Test application for LZMA compression\r
     2008-11-23 : Igor Pavlov : Public domain\r
 \r
-  Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
   This program and the accompanying materials\r
   are licensed and made available under the terms and conditions of the BSD License\r
   which accompanies this distribution.  The full text of the license may be found at\r
 #include "Sdk/C/7zVersion.h"\r
 #include "Sdk/C/LzmaDec.h"\r
 #include "Sdk/C/LzmaEnc.h"\r
+#include "Sdk/C/Bra.h"\r
 #include "CommonLib.h"\r
 \r
+#define LZMA_HEADER_SIZE (LZMA_PROPS_SIZE + 8)\r
+\r
+typedef enum {\r
+  NoConverter, \r
+  X86Converter,\r
+  MaxConverter\r
+} CONVERTER_TYPE;\r
+\r
 const char *kCantReadMessage = "Can not read input file";\r
 const char *kCantWriteMessage = "Can not write output file";\r
 const char *kCantAllocateMessage = "Can not allocate memory";\r
@@ -39,12 +48,13 @@ static void SzFree(void *p, void *address) { p = p; MyFree(address); }
 static ISzAlloc g_Alloc = { SzAlloc, SzFree };\r
 \r
 static Bool mQuietMode = False;\r
+static CONVERTER_TYPE mConType = NoConverter;\r
 \r
 #define UTILITY_NAME "LzmaCompress"\r
 #define UTILITY_MAJOR_VERSION 0\r
-#define UTILITY_MINOR_VERSION 1\r
+#define UTILITY_MINOR_VERSION 2\r
 #define INTEL_COPYRIGHT \\r
-  "Copyright (c) 2009, Intel Corporation. All rights reserved."\r
+  "Copyright (c) 2009-2012, Intel Corporation. All rights reserved."\r
 void PrintHelp(char *buffer)\r
 {\r
   strcat(buffer,\r
@@ -54,6 +64,7 @@ void PrintHelp(char *buffer)
              "  -e: encode file\n"\r
              "  -d: decode file\n"\r
              "  -o FileName, --output FileName: specify the output filename\n"\r
+             "  --f86: enable converter for x86 code\n"\r
              "  -v, --verbose: increase output messages\n"\r
              "  -q, --quiet: reduce output messages\n"\r
              "  --debug [0-9]: set debug level\n"\r
@@ -86,121 +97,151 @@ void PrintVersion(char *buffer)
   sprintf (buffer, "%s Version %d.%d %s ", UTILITY_NAME, UTILITY_MAJOR_VERSION, UTILITY_MINOR_VERSION, __BUILD_VERSION);\r
 }\r
 \r
-#define IN_BUF_SIZE (1 << 16)\r
-#define OUT_BUF_SIZE (1 << 16)\r
-\r
-static SRes Decode2(CLzmaDec *state, ISeqOutStream *outStream, ISeqInStream *inStream,\r
-    UInt64 unpackSize)\r
+static SRes Encode(ISeqOutStream *outStream, ISeqInStream *inStream, UInt64 fileSize)\r
 {\r
-  int thereIsSize = (unpackSize != (UInt64)(Int64)-1);\r
-  Byte inBuf[IN_BUF_SIZE];\r
-  Byte outBuf[OUT_BUF_SIZE];\r
-  size_t inPos = 0, inSize = 0, outPos = 0;\r
-  LzmaDec_Init(state);\r
-  for (;;)\r
-  {\r
-    if (inPos == inSize)\r
-    {\r
-      inSize = IN_BUF_SIZE;\r
-      RINOK(inStream->Read(inStream, inBuf, &inSize));\r
-      inPos = 0;\r
-    }\r
-    {\r
-      SRes res;\r
-      SizeT inProcessed = inSize - inPos;\r
-      SizeT outProcessed = OUT_BUF_SIZE - outPos;\r
-      ELzmaFinishMode finishMode = LZMA_FINISH_ANY;\r
-      ELzmaStatus status;\r
-      if (thereIsSize && outProcessed > unpackSize)\r
-      {\r
-        outProcessed = (SizeT)unpackSize;\r
-        finishMode = LZMA_FINISH_END;\r
-      }\r
-\r
-      res = LzmaDec_DecodeToBuf(state, outBuf + outPos, &outProcessed,\r
-        inBuf + inPos, &inProcessed, finishMode, &status);\r
-      inPos += inProcessed;\r
-      outPos += outProcessed;\r
-      unpackSize -= outProcessed;\r
-\r
-      if (outStream)\r
-        if (outStream->Write(outStream, outBuf, outPos) != outPos)\r
-          return SZ_ERROR_WRITE;\r
+  SRes res;\r
+  size_t inSize = (size_t)fileSize;\r
+  Byte *inBuffer = 0;\r
+  Byte *outBuffer = 0;\r
+  Byte *filteredStream = 0;\r
+  size_t outSize;\r
+  CLzmaEncProps props;\r
 \r
-      outPos = 0;\r
+  LzmaEncProps_Init(&props);\r
+  LzmaEncProps_Normalize(&props);\r
+\r
+  if (inSize != 0) {\r
+    inBuffer = (Byte *)MyAlloc(inSize);\r
+    if (inBuffer == 0)\r
+      return SZ_ERROR_MEM;\r
+  } else {\r
+    return SZ_ERROR_INPUT_EOF;\r
+  }\r
+  \r
+  if (SeqInStream_Read(inStream, inBuffer, inSize) != SZ_OK) {\r
+    res = SZ_ERROR_READ;\r
+    goto Done;\r
+  }\r
 \r
-      if (res != SZ_OK || (thereIsSize && unpackSize == 0))\r
-        return res;\r
+  // we allocate 105% of original size + 64KB for output buffer\r
+  outSize = (size_t)fileSize / 20 * 21 + (1 << 16);\r
+  outBuffer = (Byte *)MyAlloc(outSize);\r
+  if (outBuffer == 0) {\r
+    res = SZ_ERROR_MEM;\r
+    goto Done;\r
+  }\r
+  \r
+  {\r
+    int i;\r
+    for (i = 0; i < 8; i++)\r
+      outBuffer[i + LZMA_PROPS_SIZE] = (Byte)(fileSize >> (8 * i));\r
+  }\r
 \r
-      if (inProcessed == 0 && outProcessed == 0)\r
+  if (mConType != NoConverter)\r
+  {\r
+    filteredStream = (Byte *)MyAlloc(inSize);\r
+    if (filteredStream == 0) {\r
+      res = SZ_ERROR_MEM;\r
+      goto Done;\r
+    }\r
+    memcpy(filteredStream, inBuffer, inSize);\r
+    \r
+    if (mConType == X86Converter) {\r
       {\r
-        if (thereIsSize || status != LZMA_STATUS_FINISHED_WITH_MARK)\r
-          return SZ_ERROR_DATA;\r
-        return res;\r
+        UInt32 x86State;\r
+        x86_Convert_Init(x86State);\r
+        x86_Convert(filteredStream, (SizeT) inSize, 0, &x86State, 1);\r
       }\r
     }\r
   }\r
-}\r
-\r
-static SRes Decode(ISeqOutStream *outStream, ISeqInStream *inStream)\r
-{\r
-  UInt64 unpackSize;\r
-  int i;\r
-  SRes res = 0;\r
 \r
-  CLzmaDec state;\r
-\r
-  /* header: 5 bytes of LZMA properties and 8 bytes of uncompressed size */\r
-  unsigned char header[LZMA_PROPS_SIZE + 8];\r
-\r
-  /* Read and parse header */\r
+  {\r
+    size_t outSizeProcessed = outSize - LZMA_HEADER_SIZE;\r
+    size_t outPropsSize = LZMA_PROPS_SIZE;\r
+    \r
+    res = LzmaEncode(outBuffer + LZMA_HEADER_SIZE, &outSizeProcessed,\r
+        mConType != NoConverter ? filteredStream : inBuffer, inSize,\r
+        &props, outBuffer, &outPropsSize, 0,\r
+        NULL, &g_Alloc, &g_Alloc);\r
+    \r
+    if (res != SZ_OK)\r
+      goto Done;\r
+\r
+    outSize = LZMA_HEADER_SIZE + outSizeProcessed;\r
+  }\r
 \r
-  RINOK(SeqInStream_Read(inStream, header, sizeof(header)));\r
+  if (outStream->Write(outStream, outBuffer, outSize) != outSize)\r
+    res = SZ_ERROR_WRITE;\r
 \r
-  unpackSize = 0;\r
-  for (i = 0; i < 8; i++)\r
-    unpackSize += (UInt64)header[LZMA_PROPS_SIZE + i] << (i * 8);\r
+Done:\r
+  MyFree(outBuffer);\r
+  MyFree(inBuffer);\r
+  MyFree(filteredStream);\r
 \r
-  LzmaDec_Construct(&state);\r
-  RINOK(LzmaDec_Allocate(&state, header, LZMA_PROPS_SIZE, &g_Alloc));\r
-  res = Decode2(&state, outStream, inStream, unpackSize);\r
-  LzmaDec_Free(&state, &g_Alloc);\r
   return res;\r
 }\r
 \r
-static SRes Encode(ISeqOutStream *outStream, ISeqInStream *inStream, UInt64 fileSize, char *rs)\r
+static SRes Decode(ISeqOutStream *outStream, ISeqInStream *inStream, UInt64 fileSize)\r
 {\r
-  CLzmaEncHandle enc;\r
   SRes res;\r
-  CLzmaEncProps props;\r
+  size_t inSize = (size_t)fileSize;\r
+  Byte *inBuffer = 0;\r
+  Byte *outBuffer = 0;\r
+  size_t outSize = 0;\r
+  size_t inSizePure;\r
+  ELzmaStatus status;\r
+  UInt64 outSize64 = 0;\r
 \r
-  rs = rs;\r
+  int i;\r
+\r
+  if (inSize < LZMA_HEADER_SIZE) \r
+    return SZ_ERROR_INPUT_EOF;\r
 \r
-  enc = LzmaEnc_Create(&g_Alloc);\r
-  if (enc == 0)\r
+  inBuffer = (Byte *)MyAlloc(inSize);\r
+  if (inBuffer == 0)\r
     return SZ_ERROR_MEM;\r
+  \r
+  if (SeqInStream_Read(inStream, inBuffer, inSize) != SZ_OK) {\r
+    res = SZ_ERROR_READ;\r
+    goto Done;\r
+  }\r
 \r
-  LzmaEncProps_Init(&props);\r
-  res = LzmaEnc_SetProps(enc, &props);\r
+  for (i = 0; i < 8; i++)\r
+    outSize64 += ((UInt64)inBuffer[LZMA_PROPS_SIZE + i]) << (i * 8);\r
+\r
+  outSize = (size_t)outSize64;\r
+  if (outSize != 0) {\r
+    outBuffer = (Byte *)MyAlloc(outSize);\r
+    if (outBuffer == 0) {\r
+      res = SZ_ERROR_MEM;\r
+      goto Done;\r
+    }\r
+  } else {\r
+    res = SZ_OK;\r
+    goto Done;\r
+  }\r
 \r
-  if (res == SZ_OK)\r
-  {\r
-    Byte header[LZMA_PROPS_SIZE + 8];\r
-    size_t headerSize = LZMA_PROPS_SIZE;\r
-    int i;\r
+  inSizePure = inSize - LZMA_HEADER_SIZE;\r
+  res = LzmaDecode(outBuffer, &outSize, inBuffer + LZMA_HEADER_SIZE, &inSizePure,\r
+      inBuffer, LZMA_PROPS_SIZE, LZMA_FINISH_END, &status, &g_Alloc);\r
 \r
-    res = LzmaEnc_WriteProperties(enc, header, &headerSize);\r
-    for (i = 0; i < 8; i++)\r
-      header[headerSize++] = (Byte)(fileSize >> (8 * i));\r
-    if (outStream->Write(outStream, header, headerSize) != headerSize)\r
-      res = SZ_ERROR_WRITE;\r
-    else\r
-    {\r
-      if (res == SZ_OK)\r
-        res = LzmaEnc_Encode(enc, outStream, inStream, NULL, &g_Alloc, &g_Alloc);\r
-    }\r
+  if (res != SZ_OK)\r
+    goto Done;\r
+\r
+  if (mConType == X86Converter)\r
+  {\r
+    UInt32 x86State;\r
+    x86_Convert_Init(x86State);\r
+    x86_Convert(outBuffer, (SizeT) outSize, 0, &x86State, 0);\r
   }\r
-  LzmaEnc_Destroy(enc, &g_Alloc, &g_Alloc);\r
+\r
+  if (outStream->Write(outStream, outBuffer, outSize) != outSize)\r
+    res = SZ_ERROR_WRITE;\r
+\r
+Done:\r
+  MyFree(outBuffer);\r
+  MyFree(inBuffer);\r
+\r
   return res;\r
 }\r
 \r
@@ -214,6 +255,7 @@ int main2(int numArgs, const char *args[], char *rs)
   const char *inputFile = NULL;\r
   const char *outputFile = "file.tmp";\r
   int param;\r
+  UInt64 fileSize;\r
 \r
   FileSeqInStream_CreateVTable(&inStream);\r
   File_Construct(&inStream.file);\r
@@ -231,6 +273,8 @@ int main2(int numArgs, const char *args[], char *rs)
     if (strcmp(args[param], "-e") == 0 || strcmp(args[param], "-d") == 0) {\r
       encodeMode = (args[param][1] == 'e');\r
       modeWasSet = True;\r
+    } else if (strcmp(args[param], "--f86") == 0) {\r
+      mConType = X86Converter;\r
     } else if (strcmp(args[param], "-o") == 0 ||\r
                strcmp(args[param], "--output") == 0) {\r
       if (numArgs < (param + 2)) {\r
@@ -292,21 +336,21 @@ int main2(int numArgs, const char *args[], char *rs)
   if (OutFile_Open(&outStream.file, outputFile) != 0)\r
     return PrintError(rs, "Can not open output file");\r
 \r
+  File_GetLength(&inStream.file, &fileSize);\r
+\r
   if (encodeMode)\r
   {\r
-    UInt64 fileSize;\r
-    File_GetLength(&inStream.file, &fileSize);\r
     if (!mQuietMode) {\r
       printf("Encoding\n");\r
     }\r
-    res = Encode(&outStream.s, &inStream.s, fileSize, rs);\r
+    res = Encode(&outStream.s, &inStream.s, fileSize);\r
   }\r
   else\r
   {\r
     if (!mQuietMode) {\r
       printf("Decoding\n");\r
     }\r
-    res = Decode(&outStream.s, &inStream.s);\r
+    res = Decode(&outStream.s, &inStream.s, fileSize);\r
   }\r
 \r
   File_Close(&outStream.file);\r
diff --git a/BaseTools/Source/C/LzmaCompress/LzmaF86Compress.bat b/BaseTools/Source/C/LzmaCompress/LzmaF86Compress.bat
new file mode 100644 (file)
index 0000000..77749df
--- /dev/null
@@ -0,0 +1,31 @@
+@REM\r
+@REM This script will exec LzmaCompress tool with --f86 option that enables converter for x86 code.\r
+@REM\r
+@REM Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>\r
+@REM This program and the accompanying materials\r
+@REM are licensed and made available under the terms and conditions of the BSD License\r
+@REM which accompanies this distribution.  The full text of the license may be found at\r
+@REM http://opensource.org/licenses/bsd-license.php\r
+@REM\r
+@REM THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+@REM WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+@REM\r
+\r
+@echo off\r
+@setlocal\r
+\r
+:Begin\r
+if "%1"=="" goto End\r
+if "%1"=="-e" (\r
+  set FLAG=--f86\r
+)\r
+if "%1"=="-d" (\r
+  set FLAG=--f86\r
+)\r
+set ARGS=%ARGS% %1\r
+shift\r
+goto Begin\r
+\r
+:End\r
+LzmaCompress %ARGS% %FLAG%\r
+@echo on\r
index 1c1ba2bc38cc1a7b8359fd4a1dbd1a1312aad475..872e8995128122b5f167187b1e219af090c647fb 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Windows makefile for 'LzmaCompress' module build.\r
 #\r
-# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -25,7 +25,17 @@ OBJECTS = \
   $(SDK_C)\LzmaDec.obj \\r
   $(SDK_C)\LzmaEnc.obj \\r
   $(SDK_C)\7zFile.obj \\r
-  $(SDK_C)\7zStream.obj\r
+  $(SDK_C)\7zStream.obj \\r
+  $(SDK_C)\Bra86.obj\r
 \r
 !INCLUDE ..\Makefiles\ms.app\r
 \r
+all: $(BIN_PATH)\LzmaF86Compress.bat\r
+\r
+$(BIN_PATH)\LzmaF86Compress.bat: LzmaF86Compress.bat\r
+  copy LzmaF86Compress.bat $(BIN_PATH)\LzmaF86Compress.bat /Y\r
+\r
+cleanall: localCleanall\r
+\r
+localCleanall:\r
+  del /f /q $(BIN_PATH)\LzmaF86Compress.bat > nul\r
diff --git a/BaseTools/Source/C/LzmaCompress/Sdk/C/Bra.h b/BaseTools/Source/C/LzmaCompress/Sdk/C/Bra.h
new file mode 100644 (file)
index 0000000..b9018eb
--- /dev/null
@@ -0,0 +1,60 @@
+/* Bra.h -- Branch converters for executables\r
+2008-10-04 : Igor Pavlov : Public domain */\r
+\r
+#ifndef __BRA_H\r
+#define __BRA_H\r
+\r
+#include "Types.h"\r
+\r
+/*\r
+These functions convert relative addresses to absolute addresses\r
+in CALL instructions to increase the compression ratio.\r
+  \r
+  In:\r
+    data     - data buffer\r
+    size     - size of data\r
+    ip       - current virtual Instruction Pinter (IP) value\r
+    state    - state variable for x86 converter\r
+    encoding - 0 (for decoding), 1 (for encoding)\r
+  \r
+  Out:\r
+    state    - state variable for x86 converter\r
+\r
+  Returns:\r
+    The number of processed bytes. If you call these functions with multiple calls,\r
+    you must start next call with first byte after block of processed bytes.\r
+  \r
+  Type   Endian  Alignment  LookAhead\r
+  \r
+  x86    little      1          4\r
+  ARMT   little      2          2\r
+  ARM    little      4          0\r
+  PPC     big        4          0\r
+  SPARC   big        4          0\r
+  IA64   little     16          0\r
+\r
+  size must be >= Alignment + LookAhead, if it's not last block.\r
+  If (size < Alignment + LookAhead), converter returns 0.\r
+\r
+  Example:\r
+\r
+    UInt32 ip = 0;\r
+    for ()\r
+    {\r
+      ; size must be >= Alignment + LookAhead, if it's not last block\r
+      SizeT processed = Convert(data, size, ip, 1);\r
+      data += processed;\r
+      size -= processed;\r
+      ip += processed;\r
+    }\r
+*/\r
+\r
+#define x86_Convert_Init(state) { state = 0; }\r
+SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding);\r
+SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);\r
+SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);\r
+SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);\r
+SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);\r
+SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);\r
+\r
+#endif\r
diff --git a/BaseTools/Source/C/LzmaCompress/Sdk/C/Bra86.c b/BaseTools/Source/C/LzmaCompress/Sdk/C/Bra86.c
new file mode 100644 (file)
index 0000000..93566cb
--- /dev/null
@@ -0,0 +1,85 @@
+/* Bra86.c -- Converter for x86 code (BCJ)\r
+2008-10-04 : Igor Pavlov : Public domain */\r
+\r
+#include "Bra.h"\r
+\r
+#define Test86MSByte(b) ((b) == 0 || (b) == 0xFF)\r
+\r
+const Byte kMaskToAllowedStatus[8] = {1, 1, 1, 0, 1, 0, 0, 0};\r
+const Byte kMaskToBitNumber[8] = {0, 1, 2, 2, 3, 3, 3, 3};\r
+\r
+SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding)\r
+{\r
+  SizeT bufferPos = 0, prevPosT;\r
+  UInt32 prevMask = *state & 0x7;\r
+  if (size < 5)\r
+    return 0;\r
+  ip += 5;\r
+  prevPosT = (SizeT)0 - 1;\r
+\r
+  for (;;)\r
+  {\r
+    Byte *p = data + bufferPos;\r
+    Byte *limit = data + size - 4;\r
+    for (; p < limit; p++)\r
+      if ((*p & 0xFE) == 0xE8)\r
+        break;\r
+    bufferPos = (SizeT)(p - data);\r
+    if (p >= limit)\r
+      break;\r
+    prevPosT = bufferPos - prevPosT;\r
+    if (prevPosT > 3)\r
+      prevMask = 0;\r
+    else\r
+    {\r
+      prevMask = (prevMask << ((int)prevPosT - 1)) & 0x7;\r
+      if (prevMask != 0)\r
+      {\r
+        Byte b = p[4 - kMaskToBitNumber[prevMask]];\r
+        if (!kMaskToAllowedStatus[prevMask] || Test86MSByte(b))\r
+        {\r
+          prevPosT = bufferPos;\r
+          prevMask = ((prevMask << 1) & 0x7) | 1;\r
+          bufferPos++;\r
+          continue;\r
+        }\r
+      }\r
+    }\r
+    prevPosT = bufferPos;\r
+\r
+    if (Test86MSByte(p[4]))\r
+    {\r
+      UInt32 src = ((UInt32)p[4] << 24) | ((UInt32)p[3] << 16) | ((UInt32)p[2] << 8) | ((UInt32)p[1]);\r
+      UInt32 dest;\r
+      for (;;)\r
+      {\r
+        Byte b;\r
+        int index;\r
+        if (encoding)\r
+          dest = (ip + (UInt32)bufferPos) + src;\r
+        else\r
+          dest = src - (ip + (UInt32)bufferPos);\r
+        if (prevMask == 0)\r
+          break;\r
+        index = kMaskToBitNumber[prevMask] * 8;\r
+        b = (Byte)(dest >> (24 - index));\r
+        if (!Test86MSByte(b))\r
+          break;\r
+        src = dest ^ ((1 << (32 - index)) - 1);\r
+      }\r
+      p[4] = (Byte)(~(((dest >> 24) & 1) - 1));\r
+      p[3] = (Byte)(dest >> 16);\r
+      p[2] = (Byte)(dest >> 8);\r
+      p[1] = (Byte)dest;\r
+      bufferPos += 5;\r
+    }\r
+    else\r
+    {\r
+      prevMask = ((prevMask << 1) & 0x7) | 1;\r
+      bufferPos++;\r
+    }\r
+  }\r
+  prevPosT = bufferPos - prevPosT;\r
+  *state = ((prevPosT > 3) ? 0 : ((prevMask << ((int)prevPosT - 1)) & 0x7));\r
+  return bufferPos;\r
+}\r
index 367a5dbeadd44d264913eae5df097b57441639b7..789e06f18dfe4c8a038ce0e67bc184dc59a5c708 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # Windows makefile for C tools build.\r
 #\r
-# Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -59,6 +59,7 @@ install: $(LIB_PATH) $(BIN_PATH)
        @echo ######################\r
        @-xcopy $(LIB_PATH)\*.lib $(SYS_LIB_PATH) /I /D /E /F /Y > NUL 2>&1\r
        @-xcopy $(BIN_PATH)\*.exe $(SYS_BIN_PATH) /I /D /E /F /Y > NUL 2>&1\r
+  @-xcopy $(BIN_PATH)\*.bat $(SYS_BIN_PATH) /I /D /E /F /Y > NUL 2>&1\r
 \r
 .PHONY: clean\r
 clean:\r
index b4f9d8fd7f3361aba458bdfb3ade3d963ce0b0b8..2e859b8dfa626826c668d2697bc6de921af26bd2 100644 (file)
@@ -2,7 +2,7 @@
   \r
   The definition of CFormPkg's member function\r
 \r
-Copyright (c) 2004 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -963,7 +963,7 @@ CIfrRecordInfoDB::CheckIdOpCode (
   switch (OpCode) {\r
   case EFI_IFR_EQ_ID_VAL_OP:\r
   case EFI_IFR_EQ_ID_ID_OP:\r
-  case EFI_IFR_EQ_ID_LIST_OP:\r
+  case EFI_IFR_EQ_ID_VAL_LIST_OP:\r
   case EFI_IFR_QUESTION_REF1_OP:\r
     return TRUE;\r
   default:\r
index 92e47d97a3c70aafa357b4c80a415e1de7a385b1..5f4d87aa0ab7e09dd174d3cb21a802732db5dddb 100644 (file)
@@ -2,7 +2,7 @@
   \r
   The definition of CFormPkg's member function\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -1885,8 +1885,8 @@ private:
 public:\r
   CIfrEqIdList (\r
   IN UINT32 LineNo\r
-  ) : CIfrObj (EFI_IFR_EQ_ID_LIST_OP, (CHAR8 **)&mEqIdVList, sizeof (EFI_IFR_EQ_ID_VAL_LIST), TRUE),\r
-                   CIfrOpHeader (EFI_IFR_EQ_ID_LIST_OP, &mEqIdVList->Header) {\r
+  ) : CIfrObj (EFI_IFR_EQ_ID_VAL_LIST_OP, (CHAR8 **)&mEqIdVList, sizeof (EFI_IFR_EQ_ID_VAL_LIST), TRUE),\r
+                   CIfrOpHeader (EFI_IFR_EQ_ID_VAL_LIST_OP, &mEqIdVList->Header) {\r
     SetLineNo (LineNo);\r
     mEqIdVList->QuestionId   = EFI_QUESTION_ID_INVALID;\r
     mEqIdVList->ListLength   = 0;\r
index c3a729eabfb8d3a9c13b6f901d3fc9319318f2c2..0444677e861e496b175b42d3c68f23da08443a38 100644 (file)
@@ -2,7 +2,7 @@
   \r
   Vfr common library functions.\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -3067,6 +3067,83 @@ CVfrStringDB::SetStringFileName(IN CHAR8 *StringFileName)
   mStringFileName[FileLen - 1] = '\0';\r
 }\r
 \r
+\r
+/**\r
+  Returns TRUE or FALSE whether SupportedLanguages contains the best matching language \r
+  from a set of supported languages.\r
+\r
+  @param[in]  SupportedLanguages  A pointer to a Null-terminated ASCII string that\r
+                                  contains a set of language codes.\r
+  @param[in]  Language            A variable that contains pointers to Null-terminated\r
+                                  ASCII strings that contain one language codes.\r
+\r
+  @retval FALSE   The best matching language could not be found in SupportedLanguages.\r
+  @retval TRUE    The best matching language could be found in SupportedLanguages.\r
+\r
+**/\r
+BOOLEAN\r
+CVfrStringDB::GetBestLanguage (\r
+  IN CONST CHAR8  *SupportedLanguages,\r
+  IN CHAR8        *Language\r
+  )\r
+{\r
+  UINTN        CompareLength;\r
+  UINTN        LanguageLength;\r
+  CONST CHAR8  *Supported;\r
+\r
+  if (SupportedLanguages == NULL || Language == NULL){\r
+    return FALSE;\r
+  }\r
+\r
+  //\r
+  // Determine the length of the first RFC 4646 language code in Language\r
+  //\r
+  for (LanguageLength = 0; Language[LanguageLength] != 0 && Language[LanguageLength] != ';'; LanguageLength++);\r
+\r
+  //\r
+  // Trim back the length of Language used until it is empty\r
+  //\r
+  while (LanguageLength > 0) {\r
+    //\r
+    // Loop through all language codes in SupportedLanguages\r
+    //\r
+    for (Supported = SupportedLanguages; *Supported != '\0'; Supported += CompareLength) {\r
+      //\r
+      // Skip ';' characters in Supported\r
+      //\r
+      for (; *Supported != '\0' && *Supported == ';'; Supported++);\r
+      //\r
+      // Determine the length of the next language code in Supported\r
+      //\r
+      for (CompareLength = 0; Supported[CompareLength] != 0 && Supported[CompareLength] != ';'; CompareLength++);\r
+      //\r
+      // If Language is longer than the Supported, then skip to the next language\r
+      //\r
+      if (LanguageLength > CompareLength) {\r
+        continue;\r
+      }\r
+\r
+      //\r
+      // See if the first LanguageLength characters in Supported match Language\r
+      //\r
+      if (strncmp (Supported, Language, LanguageLength) == 0) {\r
+        return TRUE;\r
+      }\r
+    }\r
+\r
+    //\r
+    // Trim Language from the right to the next '-' character \r
+    //\r
+    for (LanguageLength--; LanguageLength > 0 && Language[LanguageLength] != '-'; LanguageLength--);\r
+  }\r
+\r
+  //\r
+  // No matches were found \r
+  //\r
+  return FALSE;\r
+}\r
+\r
+\r
 CHAR8 *\r
 CVfrStringDB::GetVarStoreNameFormStringId (\r
   IN EFI_STRING_ID StringId\r
@@ -3122,17 +3199,18 @@ CVfrStringDB::GetVarStoreNameFormStringId (
   }\r
 \r
   //\r
-  // Search the language, only search the "en-US".\r
+  // Search the language, get best language base on RFC 4647 matching algorithm.\r
   //\r
   Current = StringPtr;\r
-  while (strcmp (PkgHeader->Language, "en-US") != 0) {\r
+  while (!GetBestLanguage ("en", PkgHeader->Language)) {\r
     Current += PkgHeader->Header.Length;\r
     PkgHeader = (EFI_HII_STRING_PACKAGE_HDR *) Current;\r
     //\r
-    // If can't find "en-US" string package, just return the first string package.\r
+    // If can't find string package base on language, just return the first string package.\r
     //\r
     if (Current - StringPtr >= Length) {\r
       Current = StringPtr;\r
+      PkgHeader = (EFI_HII_STRING_PACKAGE_HDR *) StringPtr;\r
       break;\r
     }\r
   }\r
index 9facce81499a91c7d9c761ab465d95578c051089..2c0ed7bd54d7fb799b7f54965414b35ecbe52032 100644 (file)
@@ -2,7 +2,7 @@
   \r
   Vfr common library functions.\r
 \r
-Copyright (c) 2004 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2012, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -438,6 +438,11 @@ private:
   UINT32 GetUnicodeStringTextSize (\r
     IN  UINT8            *StringSrc\r
     );\r
+    \r
+  BOOLEAN GetBestLanguage (\r
+    IN CONST CHAR8  *SupportedLanguages,\r
+    IN CHAR8        *Language\r
+    );\r
 \r
 public:\r
   CVfrStringDB ();\r
index 894ec8dcd8e3bc23ed348cb6b8a12811170f6e6e..2f38c6afd5537c61e328cda689d5001927775565 100644 (file)
@@ -46,6 +46,9 @@ gMakeTypeMap = {"MSFT":"nmake", "GCC":"gmake"}
 ## Build rule configuration file\r
 gBuildRuleFile = 'Conf/build_rule.txt'\r
 \r
+## Build rule default version\r
+AutoGenReqBuildRuleVerNum = "0.1"\r
+\r
 ## default file name for AutoGen\r
 gAutoGenCodeFileName = "AutoGen.c"\r
 gAutoGenHeaderFileName = "AutoGen.h"\r
@@ -288,8 +291,25 @@ class WorkspaceAutoGen(AutoGen):
         # apply SKU and inject PCDs from Flash Definition file\r
         for Arch in self.ArchList:\r
             Platform = self.BuildDatabase[self.MetaFile, Arch, Target, Toolchain]\r
+\r
+            DecPcds = set()\r
+            PGen = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
+            Pkgs = PGen.PackageList\r
+            for Pkg in Pkgs:\r
+                for Pcd in Pkg.Pcds.keys():\r
+                    DecPcds.add((Pcd[0], Pcd[1]))\r
+            Platform.IsPlatformPcdDeclared(DecPcds)\r
+\r
             Platform.SkuName = self.SkuId\r
             for Name, Guid in PcdSet:\r
+                if (Name, Guid) not in DecPcds:\r
+                    EdkLogger.error(\r
+                        'build',\r
+                        PARSER_ERROR,\r
+                        "PCD (%s.%s) used in FDF is not declared in DEC files." % (Guid, Name),\r
+                        File = self.FdfProfile.PcdFileLineDict[Name, Guid][0],\r
+                        Line = self.FdfProfile.PcdFileLineDict[Name, Guid][1]\r
+                    )\r
                 Platform.AddPcd(Name, Guid, PcdSet[Name, Guid])\r
 \r
             Pa = PlatformAutoGen(self, self.MetaFile, Target, Toolchain, Arch)\r
@@ -334,11 +354,14 @@ class WorkspaceAutoGen(AutoGen):
                     #\r
                     InfFoundFlag = False                   \r
                     for Pa in self.AutoGenObjectList:\r
+                        if InfFoundFlag:\r
+                            break\r
                         for Module in Pa.ModuleAutoGenList:\r
                             if path.normpath(Module.MetaFile.File) == path.normpath(FfsFile.InfFileName):\r
                                 InfFoundFlag = True\r
                                 if not Module.Guid.upper() in _GuidDict.keys():\r
                                     _GuidDict[Module.Guid.upper()] = FfsFile\r
+                                    break\r
                                 else:\r
                                     EdkLogger.error("build", \r
                                                     FORMAT_INVALID,\r
@@ -1230,6 +1253,15 @@ class PlatformAutoGen(AutoGen):
             if BuildRuleFile in [None, '']:\r
                 BuildRuleFile = gBuildRuleFile\r
             self._BuildRule = BuildRule(BuildRuleFile)\r
+            if self._BuildRule._FileVersion == "":\r
+                self._BuildRule._FileVersion = AutoGenReqBuildRuleVerNum\r
+            else:\r
+                if self._BuildRule._FileVersion < AutoGenReqBuildRuleVerNum :\r
+                    # If Build Rule's version is less than the version number required by the tools, halting the build.\r
+                    EdkLogger.error("build", AUTOGEN_ERROR, \r
+                                    ExtraData="The version number [%s] of build_rule.txt is less than the version number required by the AutoGen.(the minimum required version number is [%s])"\\r
+                                     % (self._BuildRule._FileVersion, AutoGenReqBuildRuleVerNum))\r
+              \r
         return self._BuildRule\r
 \r
     ## Summarize the packages used by modules in this platform\r
index 45a560448e30c4dac203d2b9c7b04c17e7a5ed9e..5a7527ef4b534412900f0a415a8e3cbdc883e169 100644 (file)
@@ -354,6 +354,7 @@ class BuildRule:
         self._FamilyList = []
         self._TotalToolChainFamilySet = set()
         self._RuleObjectList = [] # FileBuildRule object list
+        self._FileVersion = ""
 
         self.Parse()
 
@@ -368,7 +369,11 @@ class BuildRule:
             # Clean up the line and replace path separator with native one
             Line = self.RuleContent[Index].strip().replace(self._PATH_SEP, os.path.sep)
             self.RuleContent[Index] = Line
-
+            
+            # find the build_rule_version
+            if Line and Line[0] == "#" and Line.find(TAB_BUILD_RULE_VERSION) <> -1:
+                if Line.find("=") <> -1 and Line.find("=") < (len(Line)-1) and (Line[(Line.find("=") + 1):]).split():
+                    self._FileVersion = (Line[(Line.find("=") + 1):]).split()[0]
             # skip empty or comment line
             if Line == "" or Line[0] == "#":
                 continue
index 63131cee2460ed4dc4be1dab5908f43feb9a9c44..fafcd70b86cb82f94eaa3a9fa7c65375b2fc0162 100644 (file)
@@ -1,7 +1,7 @@
 ## @file
 # Routines for generating AutoGen.h and AutoGen.c
 #
-# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
 # This program and the accompanying materials
 # are licensed and made available under the terms and conditions of the BSD License
 # which accompanies this distribution.  The full text of the license may be found at
@@ -103,17 +103,17 @@ typedef struct {
 } SKU_HEAD;
 
 typedef struct {
+  UINT32  StringIndex;        // Offset in String Table in units of UINT32.
+  UINT32  DefaultValueOffset; // Offset of the Default Value
   UINT16  GuidTableIndex;     // Offset in Guid Table in units of GUID.
-  UINT16  StringIndex;        // Offset in String Table in units of UINT16.
   UINT16  Offset;             // Offset in Variable
-  UINT16  DefaultValueOffset; // Offset of the Default Value
 } VARIABLE_HEAD;
 
 typedef  struct {
   UINT32  Offset;
 } VPD_HEAD;
 
-typedef UINT16 STRING_HEAD;
+typedef UINT32 STRING_HEAD;
 
 typedef UINT16 SIZE_INFO;
 
@@ -1346,13 +1346,13 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase):
                 VariableHeadGuidIndex = GuidList.index(VariableGuid)
 
                 if "PCD_TYPE_STRING" in Pcd.TokenTypeList:
-                    VariableHeadValueList.append('%dU, %dU, %sU, offsetof(%s_PCD_DATABASE, Init.%s_%s)' %
-                                                 (VariableHeadGuidIndex, VariableHeadStringIndex, Sku.VariableOffset,
-                                                  Phase, CName, TokenSpaceGuid))
+                    VariableHeadValueList.append('%dU, offsetof(%s_PCD_DATABASE, Init.%s_%s), %dU, %sU' %
+                                                 (VariableHeadStringIndex, Phase, CName, TokenSpaceGuid, 
+                                                                                                VariableHeadGuidIndex, Sku.VariableOffset))
                 else:
-                    VariableHeadValueList.append('%dU, %dU, %sU, offsetof(%s_PCD_DATABASE, Init.%s_%s_VariableDefault_%s)' %
-                                                 (VariableHeadGuidIndex, VariableHeadStringIndex, Sku.VariableOffset,
-                                                  Phase, CName, TokenSpaceGuid, SkuIdIndex))
+                    VariableHeadValueList.append('%dU, offsetof(%s_PCD_DATABASE, Init.%s_%s_VariableDefault_%s), %dU, %sU' %
+                                                 (VariableHeadStringIndex, Phase, CName, TokenSpaceGuid, SkuIdIndex, 
+                                                                                                VariableHeadGuidIndex, Sku.VariableOffset))
                 Dict['VARDEF_CNAME_'+Pcd.DatumType].append(CName)
                 Dict['VARDEF_GUID_'+Pcd.DatumType].append(TokenSpaceGuid)
                 Dict['VARDEF_SKUID_'+Pcd.DatumType].append(SkuIdIndex)
index b6b02cf8aee08ae7b9febbf7cce198497cc8112f..c5dae6daa460af4a767d79b46f439b57702ee3f4 100644 (file)
@@ -13,4 +13,4 @@
 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 #\r
 \r
-gBUILD_VERSION = "Build 2474"\r
+gBUILD_VERSION = "Build 2518"\r
index fc0a7ad0260aa43520af5e6de55cfcd957dcb5bd..e5e7eaeede4191543ea4b960d1bfe4404fd70c67 100644 (file)
@@ -29,6 +29,7 @@ TAB_OPTION_START = '<'
 TAB_OPTION_END  = '>'\r
 TAB_SLASH = '\\'\r
 TAB_BACK_SLASH = '/'\r
+TAB_LINE_BREAK = '\n'\r
 \r
 TAB_EDK_SOURCE = '$(EDK_SOURCE)'\r
 TAB_EFI_SOURCE = '$(EFI_SOURCE)'\r
@@ -421,3 +422,11 @@ TAB_DEPENDENCY_EXPRESSION_FILE = "DEPENDENCY-EXPRESSION-FILE"
 TAB_UNKNOWN_FILE = "UNKNOWN-TYPE-FILE"\r
 TAB_DEFAULT_BINARY_FILE = "_BINARY_FILE_"\r
 \r
+# used by BRG\r
+TAB_BRG_PCD = 'PCD'\r
+TAB_BRG_LIBRARY = 'Library'\r
+\r
+#\r
+# Build Rule File Version Definition\r
+#\r
+TAB_BUILD_RULE_VERSION = "build_rule_version"\r
index 8b112d50b39b0627b6e09b271902de2c0ed5a007..a4853b78a4f5f62dc3be6863610b5ed575ad9985 100644 (file)
@@ -36,6 +36,7 @@ ERR_STRING_CMP          = 'Unicode string and general string cannot be compared:
 ERR_ARRAY_TOKEN         = 'Bad C array or C format GUID token: [%s].'\r
 ERR_ARRAY_ELE           = 'This must be HEX value for NList or Array: [%s].'\r
 ERR_EMPTY_EXPR          = 'Empty expression is not allowed.'\r
+ERR_IN_OPERAND          = 'Macro after IN operator can only be: $(FAMILY), $(ARCH), $(TOOL_CHAIN_TAG) and $(TARGET).'\r
 \r
 ## SplitString\r
 #  Split string to list according double quote\r
@@ -88,22 +89,29 @@ def ReplaceExprMacro(String, Macros, ExceptionList = None):
                 # If an undefined macro name appears in the constant-expression of\r
                 # !if or !elif, it is replaced by the integer constant 0.\r
                 RetStr += '0'\r
-            elif not InQuote and ExceptionList and Macro in ExceptionList:\r
+            elif not InQuote:\r
+                Tklst = RetStr.split()\r
+                if Tklst and Tklst[-1] in ['IN', 'in'] and ExceptionList and Macro not in ExceptionList:\r
+                    raise BadExpression(ERR_IN_OPERAND)\r
                 # Make sure the macro in exception list is encapsulated by double quote\r
                 # For example: DEFINE ARCH = IA32 X64\r
                 # $(ARCH) is replaced with "IA32 X64"\r
-                RetStr += '"' + Macros[Macro] + '"'\r
-            else:\r
-                if Macros[Macro].strip() != "":\r
+                if ExceptionList and Macro in ExceptionList:\r
+                    RetStr += '"' + Macros[Macro] + '"'\r
+                elif Macros[Macro].strip():\r
                     RetStr += Macros[Macro]\r
                 else:\r
                     RetStr += '""'\r
+            else:\r
+                RetStr += Macros[Macro]\r
             RetStr += String[MacroEndPos+1:]\r
             String = RetStr\r
             MacroStartPos = String.find('$(')\r
         StrList[i] = RetStr\r
     return ''.join(StrList)\r
 \r
+SupportedInMacroList = ['TARGET', 'TOOL_CHAIN_TAG', 'ARCH', 'FAMILY']\r
+\r
 class ValueExpression(object):\r
     # Logical operator mapping\r
     LogicalOperators = {\r
@@ -213,7 +221,7 @@ class ValueExpression(object):
 \r
         self._Expr = ReplaceExprMacro(Expression.strip(),\r
                                   SymbolTable,\r
-                                  ['TARGET', 'TOOL_CHAIN_TAG', 'ARCH'])\r
+                                  SupportedInMacroList)\r
 \r
         if not self._Expr.strip():\r
             raise BadExpression(ERR_EMPTY_EXPR)\r
@@ -457,7 +465,9 @@ class ValueExpression(object):
         # PCD token\r
         if self.PcdPattern.match(self._Token):\r
             if self._Token not in self._Symb:\r
-                raise BadExpression(ERR_PCD_RESOLVE % self._Token)\r
+                Ex = BadExpression(ERR_PCD_RESOLVE % self._Token)\r
+                Ex.Pcd = self._Token\r
+                raise Ex\r
             self._Token = ValueExpression(self._Symb[self._Token], self._Symb)(True)\r
             if type(self._Token) != type(''):\r
                 self._LiteralToken = hex(self._Token)\r
index 492aa3996282bcadf17f8b173b9c0fd97086507a..d566a5784412f0bdfd77a99992a298f23b8b5000 100644 (file)
@@ -26,6 +26,10 @@ gAllFiles = None
 
 gGlobalDefines = {}
 gPlatformDefines = {}
+# PCD name and value pair for fixed at build and feature flag
+gPlatformPcds = {}
+# PCDs with type that are not fixed at build and feature flag
+gPlatformOtherPcds = {}
 gActivePlatform = None
 gCommandLineDefines = {}
 gEdkGlobal = {}
index 0f2a61b1b9793802e1679c2d2c6ab808eeed2810..068a63d1c124cda1e67dbc8270244c3b0cb60bac 100644 (file)
@@ -319,7 +319,7 @@ def NormPath(Path, Defines={}):
 #\r
 # @retval Path Formatted path\r
 #\r
-def CleanString(Line, CommentCharacter=DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False):\r
+def CleanString(Line, CommentCharacter=DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False, BuildOption=False):\r
     #\r
     # remove whitespace\r
     #\r
@@ -343,7 +343,7 @@ def CleanString(Line, CommentCharacter=DataType.TAB_COMMENT_SPLIT, AllowCppStyle
             Line = Line[0: Index]\r
             break\r
 \r
-    if CommentInString:\r
+    if CommentInString and BuildOption:\r
         Line = Line.replace('"', '')\r
         ChIndex = Line.find('#')\r
         while ChIndex >= 0:\r
index e2e92ef6723ceeb3f2fe680c40da98dbfcf0a811..b1a0ab82723bfa945f4d45c7e10326db45fa44b4 100644 (file)
@@ -28,6 +28,7 @@ from Common.String import NormPath
 from Common.BuildVersion import gBUILD_VERSION\r
 from Common import BuildToolError\r
 from Common.Misc import PathClass\r
+from Common.Misc import DirCache\r
 from MetaFileWorkspace.MetaFileParser import DscParser\r
 from MetaFileWorkspace.MetaFileParser import DecParser\r
 from MetaFileWorkspace.MetaFileParser import InfParser\r
@@ -106,6 +107,11 @@ class Ecc(object):
         EccGlobalData.gDb = Database.Database(Database.DATABASE_PATH)\r
         EccGlobalData.gDb.InitDatabase(self.IsInit)\r
 \r
+        #\r
+        # Get files real name in workspace dir\r
+        #\r
+        GlobalData.gAllFiles = DirCache(GlobalData.gWorkspace)\r
+         \r
         # Build ECC database\r
         self.BuildDatabase()\r
 \r
@@ -137,13 +143,13 @@ class Ecc(object):
         EccGlobalData.gDb.TblReport.Create()\r
 \r
         # Build database\r
-        if self.IsInit:\r
-            if self.ScanSourceCode:\r
-                EdkLogger.quiet("Building database for source code ...")\r
-                c.CollectSourceCodeDataIntoDB(EccGlobalData.gTarget)\r
+        if self.IsInit:            \r
             if self.ScanMetaData:\r
-                EdkLogger.quiet("Building database for source code done!")\r
+                EdkLogger.quiet("Building database for Meta Data File ...")\r
                 self.BuildMetaDataFileDatabase()\r
+            if self.ScanSourceCode:\r
+                EdkLogger.quiet("Building database for Meta Data File Done!")\r
+                c.CollectSourceCodeDataIntoDB(EccGlobalData.gTarget)\r
 \r
         EccGlobalData.gIdentifierTableList = GetTableList((MODEL_FILE_C, MODEL_FILE_H), 'Identifier', EccGlobalData.gDb)\r
         EccGlobalData.gCFileList = GetFileList(MODEL_FILE_C, EccGlobalData.gDb)\r
index 30606982881f728209f8d5046b21ef2f1467ee58..643c228665e6a62d834b8e271086311cf595422a 100644 (file)
@@ -96,7 +96,10 @@ class Table(object):
     #\r
     def Drop(self):\r
         SqlCommand = """drop table IF EXISTS %s""" % self.Table\r
-        self.Cur.execute(SqlCommand)\r
+        try:\r
+            self.Cur.execute(SqlCommand)\r
+        except sqlite3.Error, e:\r
+            print "An error occurred when Drop a table:", e.args[0]\r
 \r
     ## Get count\r
     #\r
index 9ca00f043bc9199b6f923a6393bc2c1af0d5ceeb..d10265e973c4f2f35f34206ef3e78c31138e6762 100644 (file)
@@ -1162,8 +1162,9 @@ class DscParser(MetaFileParser):
             self._IdMapping[Id] = self._LastItem
 
         RecordList = self._Table.GetAll()
-        self._Table.Drop()
+        
         self._RawTable.Drop()
+        self._Table.Drop()
         for Record in RecordList:
             EccGlobalData.gDb.TblDsc.Insert(Record[1],Record[2],Record[3],Record[4],Record[5],Record[6],Record[7],Record[8],Record[9],Record[10],Record[11],Record[12],Record[13],Record[14])
         GlobalData.gPlatformDefines.update(self._FileLocalMacros)
diff --git a/BaseTools/Source/Python/Fdb/__init__.py b/BaseTools/Source/Python/Fdb/__init__.py
deleted file mode 100644 (file)
index c9dbe8e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'Fdb' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
diff --git a/BaseTools/Source/Python/FixFlash/__init__.py b/BaseTools/Source/Python/FixFlash/__init__.py
deleted file mode 100644 (file)
index b648fca..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'FixFlash' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
index 7a569e88dd79803b5fd49c358d36fd97f56a91ab..dc5c4fa034c5d95bdcb6fa1ea838a7e47014f10c 100644 (file)
@@ -77,6 +77,7 @@ SEPERATOR_TUPLE = ('=', '|', ',', '{', '}')
 \r
 RegionSizePattern = re.compile("\s*(?P<base>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<size>(?:0x|0X)?[a-fA-F0-9]+)\s*")\r
 RegionSizeGuidPattern = re.compile("\s*(?P<base>\w+\.\w+)\s*\|\s*(?P<size>\w+\.\w+)\s*")\r
+ShortcutPcdPattern = re.compile("\s*\w+\s*=\s*(?P<value>(?:0x|0X)?[a-fA-F0-9]+)\s*\|\s*(?P<name>\w+\.\w+)\s*")\r
 \r
 IncludeFileList = []\r
 \r
@@ -679,7 +680,7 @@ class FdfParser:
                     PreIndex = 0\r
                     StartPos = CurLine.find('$(', PreIndex)\r
                     EndPos = CurLine.find(')', StartPos+2)\r
-                    while StartPos != -1 and EndPos != -1 and not (self.__Token == '!ifdef' or self.__Token == '!ifndef'):\r
+                    while StartPos != -1 and EndPos != -1 and self.__Token not in ['!ifdef', '!ifndef', '!if', '!elseif']:\r
                         MacroName = CurLine[StartPos+2 : EndPos]\r
                         MacorValue = self.__GetMacroValue(MacroName)\r
                         if MacorValue != None:\r
@@ -711,6 +712,8 @@ class FdfParser:
                     self.__SetMacroValue(Macro, Value)\r
                     self.__WipeOffArea.append(((DefineLine, DefineOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
             elif self.__Token == 'SET':\r
+                SetLine = self.CurrentLineNumber - 1\r
+                SetOffset = self.CurrentOffsetWithinLine - len('SET')\r
                 PcdPair = self.__GetNextPcdName()\r
                 PcdName = "%s.%s" % (PcdPair[1], PcdPair[0])\r
                 if not self.__IsToken( "="):\r
@@ -720,6 +723,12 @@ class FdfParser:
                 Value = self.__EvaluateConditional(Value, self.CurrentLineNumber, 'eval', True)\r
 \r
                 self.__PcdDict[PcdName] = Value\r
+\r
+                self.Profile.PcdDict[PcdPair] = Value\r
+                FileLineTuple = GetRealFileLine(self.FileName, self.CurrentLineNumber)\r
+                self.Profile.PcdFileLineDict[PcdPair] = FileLineTuple\r
+\r
+                self.__WipeOffArea.append(((SetLine, SetOffset), (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - 1)))\r
             elif self.__Token in ('!ifdef', '!ifndef', '!if'):\r
                 IfStartPos = (self.CurrentLineNumber - 1, self.CurrentOffsetWithinLine - len(self.__Token))\r
                 IfList.append([IfStartPos, None, None])\r
@@ -773,6 +782,11 @@ class FdfParser:
                 if self.CurrentLineNumber <= RegionLayoutLine:\r
                     # Don't try the same line twice\r
                     continue\r
+                SetPcd = ShortcutPcdPattern.match(self.Profile.FileLinesList[self.CurrentLineNumber - 1])\r
+                if SetPcd:\r
+                    self.__PcdDict[SetPcd.group('name')] = SetPcd.group('value')\r
+                    RegionLayoutLine = self.CurrentLineNumber\r
+                    continue\r
                 RegionSize = RegionSizePattern.match(self.Profile.FileLinesList[self.CurrentLineNumber - 1])\r
                 if not RegionSize:\r
                     RegionLayoutLine = self.CurrentLineNumber\r
@@ -793,6 +807,7 @@ class FdfParser:
         MacroDict = {}\r
 \r
         # PCD macro\r
+        MacroDict.update(GlobalData.gPlatformPcds)\r
         MacroDict.update(self.__PcdDict)\r
 \r
         # Lowest priority\r
@@ -838,7 +853,19 @@ class FdfParser:
                                 Line=Line)\r
                 return Excpt.result\r
             except Exception, Excpt:\r
-                raise Warning("Invalid expression", *FileLineTuple)\r
+                if hasattr(Excpt, 'Pcd'):\r
+                    if Excpt.Pcd in GlobalData.gPlatformOtherPcds:\r
+                        Info = GlobalData.gPlatformOtherPcds[Excpt.Pcd]\r
+                        raise Warning("Cannot use this PCD (%s) in an expression as"\r
+                                      " it must be defined in a [PcdsFixedAtBuild] or [PcdsFeatureFlag] section"\r
+                                      " of the DSC file (%s), and it is currently defined in this section:"\r
+                                      " %s, line #: %d." % (Excpt.Pcd, GlobalData.gPlatformOtherPcds['DSCFILE'], Info[0], Info[1]),\r
+                                      *FileLineTuple)\r
+                    else:\r
+                        raise Warning("PCD (%s) is not defined in DSC file (%s)" % (Excpt.Pcd, GlobalData.gPlatformOtherPcds['DSCFILE']),\r
+                                      *FileLineTuple)\r
+                else:\r
+                    raise Warning(str(Excpt), *FileLineTuple)\r
         else:\r
             if Expression.startswith('$(') and Expression[-1] == ')':\r
                 Expression = Expression[2:-1]            \r
@@ -2287,6 +2314,10 @@ class FdfParser:
         if not self.__GetNextToken():\r
             raise Warning("expected INF file path", self.FileName, self.CurrentLineNumber)\r
         ffsInf.InfFileName = self.__Token\r
+\r
+        ffsInf.CurrentLineNum = self.CurrentLineNumber\r
+        ffsInf.CurrentLineContent = self.__CurrentLine()\r
+\r
         if ffsInf.InfFileName.replace('$(WORKSPACE)', '').find('$') == -1:\r
             #do case sensitive check for file path\r
             ErrorCode, ErrorInfo = PathClass(NormPath(ffsInf.InfFileName), GenFdsGlobalVariable.WorkSpaceDir).Validate()\r
@@ -2306,9 +2337,6 @@ class FdfParser:
             else:\r
                 raise Warning("Unknown reloc strip flag '%s'" % self.__Token, self.FileName, self.CurrentLineNumber)\r
         \r
-        ffsInf.CurrentLineNum = self.CurrentLineNumber\r
-        ffsInf.CurrentLineContent = self.__CurrentLine()\r
-        \r
         if ForCapsule:\r
             capsuleFfs = CapsuleData.CapsuleFfs()\r
             capsuleFfs.Ffs = ffsInf\r
@@ -2419,9 +2447,6 @@ class FdfParser:
                 \r
         FfsFileObj.NameGuid = self.__Token\r
         \r
-        FfsFileObj.CurrentLineNum = self.CurrentLineNumber\r
-        FfsFileObj.CurrentLineContent = self.__CurrentLine()\r
-        \r
         self.__GetFilePart( FfsFileObj, MacroDict.copy())\r
 \r
         if ForCapsule:\r
@@ -2511,6 +2536,8 @@ class FdfParser:
             self.__UndoToken()\r
             self.__GetSectionData( FfsFileObj, MacroDict)\r
         else:\r
+            FfsFileObj.CurrentLineNum = self.CurrentLineNumber\r
+            FfsFileObj.CurrentLineContent = self.__CurrentLine()\r
             FfsFileObj.FileName = self.__Token\r
             if FfsFileObj.FileName.replace('$(WORKSPACE)', '').find('$') == -1:\r
                 #\r
index d9f1cdaff0e42d32d294847f72d7d3078ba6280f..c8c5a6e8611f6da1bb2714306c2a9a55e48bb3b1 100644 (file)
@@ -64,6 +64,7 @@ class Ffs(FDClassObject):
         'COMPAT16'             : '.com16',\r
         'RAW'                  : '.raw',\r
         'FREEFORM_SUBTYPE_GUID': '.guid',\r
+        'SUBTYPE_GUID'         : '.guid',        \r
         'FV_IMAGE'             : 'fv.sec',\r
         'COMPRESS'             : '.com',\r
         'GUIDED'               : '.guided',\r
index 8a742d95bef327697eaa4f4dddb200df035dac7a..fb86a152b6118c8488fe9a73d030c91fa3a93457 100644 (file)
@@ -314,7 +314,7 @@ def myOptionParser():
     Parser.add_option("-r", "--rom_image", dest="uiFdName", help="Build the image using the [FD] section named by FdUiName.")
     Parser.add_option("-i", "--FvImage", dest="uiFvName", help="Build the FV image using the [FV] section named by UiFvName")
     Parser.add_option("-C", "--CapsuleImage", dest="uiCapName", help="Build the Capsule image using the [Capsule] section named by UiCapName")
-    Parser.add_option("-b", "--buildtarget", type="choice", choices=['DEBUG','RELEASE', 'NOOPT'], dest="BuildTarget", help="Build TARGET is one of list: DEBUG, RELEASE, NOOPT.",
+    Parser.add_option("-b", "--buildtarget", type="string", dest="BuildTarget", help="Set the build TARGET, overrides target.txt TARGET setting.",
                       action="callback", callback=SingleCheckCallback)
     Parser.add_option("-t", "--tagname", type="string", dest="ToolChain", help="Using the tools: TOOL_CHAIN_TAG name to build the platform.",
                       action="callback", callback=SingleCheckCallback)
@@ -516,10 +516,13 @@ class GenFds :
             for ModuleFile in PlatformDataBase.Modules:
                 Module = BuildDb.BuildObject[ModuleFile, Arch, GenFdsGlobalVariable.TargetName, GenFdsGlobalVariable.ToolChainTag]
                 GuidXRefFile.write("%s %s\n" % (Module.Guid, Module.BaseName))
-        SaveFileOnChange(GuidXRefFileName, GuidXRefFile.getvalue(), False)
+        if GuidXRefFile.getvalue():
+            SaveFileOnChange(GuidXRefFileName, GuidXRefFile.getvalue(), False)
+            GenFdsGlobalVariable.InfLogger("\nGUID cross reference file can be found at %s" % GuidXRefFileName)
+        elif os.path.exists(GuidXRefFileName):
+            os.remove(GuidXRefFileName)
         GuidXRefFile.close()
-        GenFdsGlobalVariable.InfLogger("\nGUID cross reference file can be found at %s" % GuidXRefFileName)
-        
+
     ##Define GenFd as static function
     GenFd = staticmethod(GenFd)
     GetFvBlockSize = staticmethod(GetFvBlockSize)
index ea6b191bc1254178afe92cd048b7aa25f87dff82..b457937628f2e3fa3d66f4e389b443dff1092c04 100644 (file)
@@ -1,7 +1,7 @@
 ## @file
 # Global variables for GenFds
 #
-#  Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -581,7 +581,7 @@ class GenFdsGlobalVariable:
                 sys.stdout.write('\n')
 
         try:
-            PopenObject = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr= subprocess.PIPE)
+            PopenObject = subprocess.Popen(' '.join(cmd), stdout=subprocess.PIPE, stderr= subprocess.PIPE, shell=True)
         except Exception, X:
             EdkLogger.error("GenFds", COMMAND_FAILURE, ExtraData="%s: %s" % (str(X), cmd[0]))
         (out, error) = PopenObject.communicate()
index a1a0a5e6391b1d1439ade80a7f0c0c028986c544..fec8b43646dfe9dab35fda22cd11724698449c3c 100644 (file)
@@ -21,7 +21,7 @@ MODULES=encodings.cp437,encodings.gbk,encodings.utf_16,encodings.utf_8,encodings
 \r
 BIN_DIR=$(EDK_TOOLS_PATH)\Bin\Win32\r
 \r
-APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BIN_DIR)\MigrationMsa2Inf.exe $(BIN_DIR)\Fpd2Dsc.exe $(BIN_DIR)\TargetTool.exe $(BIN_DIR)\spd2dec.exe $(BIN_DIR)\GenDepex.exe $(BIN_DIR)\GenPatchPcdTable.exe $(BIN_DIR)\PatchPcdValue.exe $(BIN_DIR)\BPDG.exe $(BIN_DIR)\UPT.exe\r
+APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BIN_DIR)\TargetTool.exe $(BIN_DIR)\GenDepex.exe $(BIN_DIR)\GenPatchPcdTable.exe $(BIN_DIR)\PatchPcdValue.exe $(BIN_DIR)\BPDG.exe $(BIN_DIR)\UPT.exe\r
 \r
 COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \\r
               $(BASE_TOOLS_PATH)\Source\Python\Common\Database.py \\r
@@ -77,15 +77,6 @@ $(BIN_DIR)\GenFds.exe: $(BASE_TOOLS_PATH)\Source\Python\GenFds\GenFds.py $(COMMO
 $(BIN_DIR)\Trim.exe: $(BASE_TOOLS_PATH)\Source\Python\Trim\Trim.py $(COMMON_PYTHON)\r
   @pushd . & @cd Trim & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Trim.py & @popd\r
 \r
-$(BIN_DIR)\MigrationMsa2Inf.exe: $(BASE_TOOLS_PATH)\Source\Python\MigrationMsa2Inf\MigrationMsa2Inf.py $(COMMON_PYTHON)\r
-  @pushd . & @cd MigrationMsa2Inf & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) MigrationMsa2Inf.py & @popd \r
-\r
-$(BIN_DIR)\Fpd2Dsc.exe: $(BASE_TOOLS_PATH)\Source\Python\Fpd2Dsc\Fpd2Dsc.py $(COMMON_PYTHON)\r
-  @pushd . & @cd Fpd2Dsc & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Fpd2Dsc.py & @popd\r
-\r
-$(BIN_DIR)\spd2dec.exe: $(BASE_TOOLS_PATH)\Source\Python\spd2dec\Spd2Dec.py $(COMMON_PYTHON)\r
-  @pushd . & @cd Spd2Dec & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) Spd2Dec.py & @popd\r
-\r
 $(BIN_DIR)\GenDepex.exe: $(BASE_TOOLS_PATH)\Source\Python\AutoGen\GenDepex.py $(COMMON_PYTHON)\r
   @pushd . & @cd AutoGen & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) GenDepex.py & @popd\r
 \r
diff --git a/BaseTools/Source/Python/MigrationMsa2Inf/AutoGenExterns.py b/BaseTools/Source/Python/MigrationMsa2Inf/AutoGenExterns.py
deleted file mode 100644 (file)
index 37fff88..0000000
+++ /dev/null
@@ -1,369 +0,0 @@
-#!/usr/bin/env python\r
-#\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-# \r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-\r
-#\r
-# Import Modules\r
-#\r
-import re, os, glob\r
-from Common.XmlRoutines import  *\r
-\r
-#"ModuleType"=>(PackageGuid, headerFileName) List\r
-HeaderFiles = {}\r
-GuidList = []\r
-GuidMap = {}\r
-HeaderFileContents = {}\r
-gTest = {}\r
-GuidMacro2CName = {}\r
-GuidAliasList = []\r
-\r
-def collectIncludeFolder(pkgDirName, guidType, pkgName):\r
-    includeFolder = os.path.join(pkgDirName, "Include", guidType)\r
-    if os.path.exists(includeFolder) and os.path.isdir(includeFolder):\r
-        for headerFileName in os.listdir(includeFolder):\r
-            if headerFileName[-2:] == ".h":\r
-                headerFile = open(os.path.join(includeFolder, headerFileName))\r
-                HeaderFileContents[(guidType, headerFileName, pkgName)] = headerFile.read()\r
-                headerFile.close()\r
-\r
-GuidMacroReg = re.compile(r"\b(?!EFI_GUID\b)[A-Z0-9_]+_GUID\b")\r
-GuidCNameReg = re.compile(r"\bg\w+Guid\b")\r
-GuidAliasReg = re.compile(r"#define\s+([A-Z0-9_]+_GUID)\s+([A-Z0-9_]+_GUID)\b")\r
-\r
-def collectPackageInfo(spdFileName):\r
-    pkgDirName = os.path.dirname(spdFileName)\r
-\r
-    spd = XmlParseFile(spdFileName)\r
-\r
-    pkgName = XmlElement(spd, "/PackageSurfaceArea/SpdHeader/PackageName")\r
-    pkgGuid = XmlElement(spd, "/PackageSurfaceArea/SpdHeader/GuidValue")\r
-\r
-    \r
-    for IncludePkgHeader in XmlList(spd, "/PackageSurfaceArea/PackageHeaders/IncludePkgHeader"):\r
-        moduleType = XmlAttribute(IncludePkgHeader, "ModuleType")\r
-        headerFilePath = XmlElementData(IncludePkgHeader)\r
-        headerFilePath = re.sub("Include/", "", headerFilePath, 1)\r
-\r
-        headerTuple = HeaderFiles.get(moduleType, [])\r
-        headerTuple.append((pkgGuid, headerFilePath))\r
-        HeaderFiles[moduleType] = headerTuple\r
-        \r
-    guidTypes = ["Guid", "Protocol", "Ppi"]\r
-\r
-    for guidType in guidTypes:\r
-        for guidEntry in XmlList(spd, "/PackageSurfaceArea/" + guidType + "Declarations/Entry"):\r
-            guidCName = XmlElement(guidEntry, "Entry/C_Name")\r
-            GuidList.append(guidCName)\r
-                      \r
-        collectIncludeFolder(pkgDirName, guidType, pkgName)   \r
-\r
-    for DecFile in glob.glob(os.path.join(pkgDirName, "*.dec")):\r
-        fileContents = open(DecFile).read()\r
-        for GuidCNameMatch in GuidCNameReg.finditer(fileContents):\r
-            GuidCName = GuidCNameMatch.group(0)\r
-            if GuidCName not in GuidList:\r
-                GuidList.append(GuidCName)\r
-\r
-def AddGuidMacro2GuidCName(GuidMacros, GuidCNames):\r
-   for GuidMacro in GuidMacros:\r
-       GuessGuidCName = "g" + GuidMacro.lower().title().replace("_", "")\r
-       if GuessGuidCName in GuidCNames:\r
-           GuidMacro2CName[GuidMacro] = GuessGuidCName\r
-       elif len(GuidCNames) == 1:\r
-           GuidMacro2CName[GuidMacro] = GuidCNames[0]\r
-       else:\r
-           for GuidCName in GuidCNames:\r
-               if GuidCName.lower() == GuessGuidCName.lower():\r
-                   GuidMacro2CName[GuidMacro] = GuidCName\r
-                   break\r
-           else:\r
-               pass\r
-               #print "No matching GuidMacro %s" % GuidMacro\r
-               \r
-\r
-def TranslateGuid(GuidMacroMatch):\r
-    GuidMacro = GuidMacroMatch.group(0)\r
-    return GuidMacro2CName.get(GuidMacro, GuidMacro)\r
-\r
-DepexReg = re.compile(r"DEPENDENCY_START(.*?)DEPENDENCY_END", re.DOTALL)\r
-\r
-def TranslateDpxSection(fileContents):\r
-    DepexMatch = DepexReg.search(fileContents)\r
-    if not DepexMatch:\r
-        return "", []\r
-    \r
-    fileContents = DepexMatch.group(1)\r
-    fileContents = re.sub(r"\s+", " ", fileContents).strip()\r
-    fileContents = GuidMacroReg.sub(TranslateGuid, fileContents)\r
-    return fileContents, GuidMacroReg.findall(fileContents)\r
-\r
-def InitializeAutoGen(workspace, db):\r
-    \r
-    \r
-    for spdFile in XmlList(db, "/FrameworkDatabase/PackageList/Filename"):\r
-        spdFileName = XmlElementData(spdFile)\r
-        collectPackageInfo(os.path.join(workspace, spdFileName))\r
-\r
-\r
-    BlockCommentReg = re.compile(r"/\*.*?\*/", re.DOTALL)\r
-    LineCommentReg = re.compile(r"//.*")\r
-    GuidReg = re.compile(r"\b(" + '|'.join(GuidList) + r")\b")\r
-\r
-    for headerFile in HeaderFileContents:\r
-        Contents = HeaderFileContents[headerFile]\r
-        Contents = BlockCommentReg.sub("", Contents)\r
-        Contents = LineCommentReg.sub("", Contents)\r
-        \r
-        FoundGuids = GuidReg.findall(Contents)\r
-        for FoundGuid in FoundGuids:\r
-            GuidMap[FoundGuid] = "%s/%s" % (headerFile[0], headerFile[1])\r
-            #print "%-40s %s/%s" % (FoundGuid, headerFile[0], headerFile[1])\r
-\r
-        GuidMacros = GuidMacroReg.findall(Contents)\r
-        GuidCNames = GuidCNameReg.findall(Contents)\r
-        \r
-        for GuidAliasMatch in  GuidAliasReg.finditer(Contents):\r
-            Name1, Name2 = GuidAliasMatch.group(1), GuidAliasMatch.group(2)\r
-            GuidAliasList.append((Name1, Name2))\r
-\r
-        AddGuidMacro2GuidCName(GuidMacros, GuidCNames)\r
-\r
-def AddSystemIncludeStatement(moduleType, PackageList):\r
-    IncludeStatement = "\n"\r
-\r
-    headerList = HeaderFiles.get(moduleType, [])\r
-\r
-    for pkgGuid in PackageList:\r
-        \r
-        for pkgTuple in headerList:\r
-            if pkgTuple[0] == pkgGuid:\r
-                IncludeStatement += "#include <%s>\n" % pkgTuple[1]\r
-\r
-    return IncludeStatement\r
-        \r
-    \r
-def AddLibraryClassStatement(LibraryClassList):\r
-    IncludeStatement = "\n"\r
-    for LibraryClass in LibraryClassList:\r
-        IncludeStatement += "#include <Library/%s.h>\n" % LibraryClass\r
-\r
-    return IncludeStatement\r
-\r
-def AddGuidStatement(GuidList):\r
-    IncludeStatement = "\n"\r
-    GuidIncludeSet = {}\r
-    for Guid in GuidList:\r
-        if Guid in GuidMap:\r
-            GuidIncludeSet[GuidMap[Guid]] = 1\r
-        else:\r
-            print "GUID CName: %s cannot be found in any public header file" % Guid\r
-\r
-    for GuidInclude in GuidIncludeSet:\r
-        IncludeStatement += "#include <%s>\n" % GuidInclude\r
-\r
-    return IncludeStatement\r
-\r
-DriverBindingMap = {\r
-    "gEfiDriverBindingProtocolGuid" : "EFI_DRIVER_BINDING_PROTOCOL",\r
-    "gEfiComponentNameProtocolGuid" : "EFI_COMPONENT_NAME_PROTOCOL",\r
-    "gEfiDriverConfigurationProtocolGuid" : "EFI_DRIVER_CONFIGURATION_PROTOCOL",\r
-    "gEfiDriverDiagnosticProtocolGuid" : "EFI_DRIVER_CONFIGURATION_PROTOCOL"\r
-    }\r
-\r
-def AddDriverBindingProtocolStatement(AutoGenDriverModel):\r
-    InstallStatement   = "\n"\r
-    DBindingHandle     = "ImageHandle"\r
-    GlobalDeclaration  = "\n"\r
-    \r
-    \r
-    for DriverModelItem in AutoGenDriverModel:\r
-        \r
-        if DriverModelItem[1] == "NULL" and DriverModelItem[2] == "NULL" and DriverModelItem[3] == "NULL":\r
-            InstallStatement += "  Status = EfiLibInstallDriverBinding (\n"\r
-            InstallStatement += "             ImageHandle,\n"\r
-            InstallStatement += "             SystemTable,\n"\r
-            InstallStatement += "             %s,\n" % DriverModelItem[0]\r
-            InstallStatement += "             %s\n" % DBindingHandle\r
-            InstallStatement += "             );\n"\r
-        else:\r
-            InstallStatement += "  Status = EfiLibInstallAllDriverProtocols (\n"\r
-            InstallStatement += "             ImageHandle,\n"\r
-            InstallStatement += "             SystemTable,\n"\r
-            InstallStatement += "             %s,\n" % DriverModelItem[0]\r
-            InstallStatement += "             %s,\n" % DBindingHandle\r
-            InstallStatement += "             %s,\n" % DriverModelItem[1]\r
-            InstallStatement += "             %s,\n" % DriverModelItem[2]\r
-            InstallStatement += "             %s\n" % DriverModelItem[3]\r
-            InstallStatement += "             );\n"\r
-\r
-        InstallStatement += "  ASSERT_EFI_ERROR (Status);\n\n"\r
-            \r
-        GlobalDeclaration += "extern EFI_DRIVER_BINDING_PROTOCOL %s;\n" % DriverModelItem[0][1:]\r
-        if (DriverModelItem[1] != "NULL"):\r
-            GlobalDeclaration += "extern EFI_COMPONENT_NAME_PROTOCOL %s;\n" % DriverModelItem[1][1:]\r
-        if (DriverModelItem[2] != "NULL"):\r
-            GlobalDeclaration += "extern EFI_DRIVER_CONFIGURATION_PROTOCOL %s;\n" % DriverModelItem[2][1:]\r
-        if (DriverModelItem[3] != "NULL"):\r
-            GlobalDeclaration += "extern EFI_DRIVER_CONFIGURATION_PROTOCOL %s;\n" % DriverModelItem[3][1:]\r
-\r
-        DBindingHandle = "NULL"\r
-         \r
-    return (InstallStatement, "", "", GlobalDeclaration)\r
-\r
-EventDeclarationTemplate = """\r
-//\r
-// Declaration for callback Event.\r
-//\r
-VOID\r
-EFIAPI\r
-%s (\r
-  IN EFI_EVENT  Event,\r
-  IN VOID       *Context\r
-  );\r
-"""\r
-\r
-def AddBootServiceEventStatement(EventList):\r
-    FinalEvent = ""\r
-    if len(EventList) > 1:\r
-        \r
-        print "Current prototype does not support multi boot service event"\r
-    else:\r
-        FinalEvent       = EventList[0]\r
-    \r
-    CreateStatement  = "\n"\r
-    CreateStatement += "  Status = gBS->CreateEvent (\n"\r
-    CreateStatement += "                  EVT_SIGNAL_EXIT_BOOT_SERVICES,\n"\r
-    CreateStatement += "                  EFI_TPL_NOTIFY,\n"\r
-    CreateStatement += "                  " + FinalEvent + ",\n"\r
-    CreateStatement += "                  NULL,\n"\r
-    CreateStatement += "                  &mExitBootServicesEvent\n"\r
-    CreateStatement += "                  );\n"\r
-    CreateStatement += "  ASSERT_EFI_ERROR (Status);\n"\r
-\r
-    GlobalDefinition  = "\n"\r
-    GlobalDefinition += "STATIC EFI_EVENT mExitBootServicesEvent = NULL;\n"\r
-\r
-    GlobalDeclaration = EventDeclarationTemplate % FinalEvent\r
-    \r
-    DestroyStatement  = "\n"\r
-    DestroyStatement += "  Status = gBS->CloseEvent (mExitBootServicesEvent);\n"\r
-    DestroyStatement += "  ASSERT_EFI_ERROR (Status);\n"\r
-    return (CreateStatement, "", GlobalDefinition, GlobalDeclaration)\r
-\r
-def AddVirtualAddressEventStatement(EventList):\r
-    FinalEvent = ""\r
-    if len(EventList) > 1:\r
-        print "Current prototype does not support multi virtual address change event"\r
-    else:\r
-        FinalEvent       = EventList[0]\r
-    \r
-    CreateStatement  = "\n"\r
-\r
-    CreateStatement += "  Status = gBS->CreateEvent (\n"\r
-    CreateStatement += "                  EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE,\n"\r
-    CreateStatement += "                  TPL_NOTIFY,\n"\r
-    CreateStatement += "                  " + FinalEvent + ",\n"\r
-    CreateStatement += "                  NULL,\n"\r
-    CreateStatement += "                  &mVirtualAddressChangedEvent\n"\r
-    CreateStatement += "                  );\n"\r
-    CreateStatement += "  ASSERT_EFI_ERROR (Status);\n"\r
-\r
-    GlobalDefinition  = "\n"\r
-    GlobalDefinition += "STATIC EFI_EVENT mVirtualAddressChangedEvent = NULL;\n"\r
-    \r
-    GlobalDeclaration = EventDeclarationTemplate % FinalEvent\r
-\r
-    DestroyStatement  = "\n"\r
-    DestroyStatement += "  Status = gBS->CloseEvent (mVirtualAddressChangedEvent);\n"\r
-    DestroyStatement += "  ASSERT_EFI_ERROR (Status);\n"\r
-    \r
-    return (CreateStatement, "", GlobalDefinition, GlobalDeclaration)\r
-    \r
-\r
-EntryPointDeclarationTemplate = """\r
-//\r
-// Declaration for original Entry Point. \r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-%s (\r
-  IN EFI_HANDLE           ImageHandle,\r
-  IN EFI_SYSTEM_TABLE     *SystemTable\r
-  );\r
-"""\r
-    \r
-EntryPointHeader = r"""\r
-/**\r
-  The user Entry Point for module %s. The user code starts with this function.\r
-\r
-  @param[in] ImageHandle    The firmware allocated handle for the EFI image.  \r
-  @param[in] SystemTable    A pointer to the EFI System Table.\r
-  \r
-  @retval EFI_SUCCESS       The entry point is executed successfully.\r
-  @retval other             Some error occurs when executing this entry point.\r
-\r
-**/\r
-"""\r
-def AddNewEntryPointContentsStatement (moduleName, EntryPoint, InstallStatement = ""):\r
-    if EntryPoint != "Initialize%s" % moduleName:\r
-        NewEntryPoint = "Initialize%s" % moduleName\r
-    else:\r
-        NewEntryPoint = "NewInitialize%s" % moduleName\r
-\r
-    EntryPointContents  = EntryPointHeader % moduleName\r
-    EntryPointContents += "EFI_STATUS\n"\r
-    EntryPointContents += "EFIAPI\n"\r
-    EntryPointContents += NewEntryPoint + "(\n"\r
-    EntryPointContents += "  IN EFI_HANDLE           ImageHandle,\n"\r
-    EntryPointContents += "  IN EFI_SYSTEM_TABLE     *SystemTable\n"\r
-    EntryPointContents += "  )\n"\r
-    EntryPointContents += "{\n"\r
-    EntryPointContents += "  EFI_STATUS              Status;\n"\r
-    EntryPointContents += InstallStatement + "\n"\r
-    GlobalDeclaration   = ""\r
-\r
-    if EntryPoint != "":\r
-        EntryPointContents += "  //\n  // Call the original Entry Point\n  //\n"\r
-        EntryPointContents += "  Status = %s (ImageHandle, SystemTable);\n\n" % EntryPoint\r
-        GlobalDeclaration  += EntryPointDeclarationTemplate % EntryPoint\r
-\r
-    EntryPointContents += "  return Status;\n"\r
-    EntryPointContents += "}\n"\r
-\r
-    return (NewEntryPoint, EntryPointContents, GlobalDeclaration)\r
-\r
-reFileHeader = re.compile(r"^\s*/\*.*?\*/\s*", re.DOTALL)\r
-reNext       = re.compile(r"#ifndef\s*(\w+)\s*#define\s*\1\s*")\r
-\r
-def AddCommonInclusionStatement(fileContents, includeStatement):\r
-    if includeStatement in fileContents:\r
-        return fileContents\r
-\r
-    insertPos       = 0\r
-    matchFileHeader = reFileHeader.search(fileContents)\r
-    if matchFileHeader:\r
-        insertPos = matchFileHeader.end()\r
-\r
-    matchFileHeader = reNext.search(fileContents, insertPos)\r
-    if matchFileHeader:\r
-        insertPos = matchFileHeader.end()\r
-                          \r
-    includeStatement = "\n%s\n\n" % includeStatement \r
-    fileContents = fileContents[0:insertPos] + includeStatement + fileContents[insertPos:] \r
-    return fileContents \r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed into another\r
-# script.\r
-if __name__ == '__main__':\r
-\r
-    pass\r
-    \r
diff --git a/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py b/BaseTools/Source/Python/MigrationMsa2Inf/MigrationMsa2Inf.py
deleted file mode 100644 (file)
index d69e230..0000000
+++ /dev/null
@@ -1,2478 +0,0 @@
-#!/usr/bin/env python
-#
-#
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-# This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution.  The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-# 
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-
-""" This program converts EDK II MSA files into EDK II Extended INF format files """
-
-import os, re, sys, fnmatch, xml.dom.minidom
-from optparse import OptionParser
-from AutoGenExterns import *
-from Common.XmlRoutines import  *             # XmlParseFile, XmlElement, XmlAttribute, XmlList, XmlElementData, XmlNode
-from Common.EdkIIWorkspace import *
-from Common.BuildVersion import gBUILD_VERSION
-
-versionNumber = ("0.9" + " " + gBUILD_VERSION)
-__version__ = "%prog Version " + versionNumber
-__copyright__ = "Copyright (c) 2007 - 2010, Intel Corporation  All rights reserved."
-
-commonHeaderFilename = "CommonHeader.h"
-entryPointFilename   = "EntryPoint.c"
-
-AutoGenLibraryMapping = {
-    "HiiLib":"HiiLibFramework",
-    "EdkIfrSupportLib":"IfrSupportLibFramework",
-    "EdkScsiLib":"ScsiLib",
-    "EdkUsbLib":"UsbLib",
-    "EdkFvbServiceLib":"FvbServiceLib",
-    "EdkGraphicsLib":"GraphicsLib"
-    }
-    
-def myOptionParser():
-    """ Argument Parser """
-    usage = "%prog [options] -f input_filename"
-    parser = OptionParser(usage=usage,description=__copyright__,version="%prog " + str(versionNumber))
-    parser.add_option("-f", "--file", dest="filename", help="Name of MSA file to convert")
-    parser.add_option("-o", "--output", dest="outfile", help="Specific Name of the INF file to create, otherwise it is the MSA filename with the extension repalced.")
-    parser.add_option("-a", "--auto", action="store_true", dest="autowrite", default=False, help="Automatically create output files and write the INF file")
-    parser.add_option("-i", "--interactive", action="store_true", dest="interactive", default=False, help="Set Interactive mode, user must approve each change.")
-    parser.add_option("-q", "--quiet", action="store_const", const=0, dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
-    parser.add_option("-v", "--verbose", action="count", dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")
-    parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Enable printing of debug messages.")
-    parser.add_option("-c", "--convert", action="store_true", dest="convert", default=False, help="Convert package: OldMdePkg->MdePkg EdkModulePkg->MdeModulePkg.")
-    parser.add_option("-e", "--event", action="store_true", dest="event", default=False, help="Enable handling of Exit Boot Services & Virtual Address Changed Event")
-    parser.add_option("-m", "--manual", action="store_true", dest="manual", default=False, help="Generate CommonHeader.txt, user picks up & copy it to a module common header")
-    parser.add_option("-w", "--workspace", dest="workspace", default=str(os.environ.get('WORKSPACE')), help="Specify workspace directory.")
-    (options, args) = parser.parse_args(sys.argv[1:])
-
-    return options,args
-
-
-def openDatabase(f):
-    """ Parse XML in the FrameworkDatabase.db file pointed to by f """
-    if (options.debug and options.verbose > 1):
-        print "Opening the database file:", f
-    if os.path.exists(f):
-        fdb = XmlParseFile(f)
-    else:
-        return "None"
-    return fdb
-
-def openSpd(s):
-    """ Parse XML in the SPD file pointed to by s """
-    if (options.debug and options.verbose > 1):
-        print "Opening the SPD file:", s
-    if os.path.exists(s):
-        spd = XmlParseFile(s)
-    else:
-        return "None"
-    return spd
-
-def openMsa(m):
-    """ Parse XML in the MSA file pointed to by m """
-    if (options.debug and options.verbose > 1):
-        print "Opening the MSA file:", m
-    if os.path.exists(m):
-        msa = XmlParseFile(m)
-    else:
-        return "None"
-    return msa
-
-def AddGuid(ArchList, CName, Usage):
-    """ Add a GUID to the Architecture array that the GUID is valid for. """
-    if "IA32" in ArchList:
-        GuidCNameIa32.insert(0, str("  %-45s # %s" % (CName, Usage)))
-    if "X64" in ArchList:
-        GuidCNameX64.insert(0, str("  %-45s # %s" % (CName, Usage)))
-    if "IPF" in ArchList:
-        GuidCNameIPF.insert(0, str("  %-45s # %s" % (CName, Usage)))
-    if "EBC" in ArchList:
-        GuidCNameEBC.insert(0, str("  %-45s # %s" % (CName, Usage)))
-    if "ALL" in ArchList:
-        GuidCName.insert(0, str("  %-45s # %s" % (CName, Usage)))
-
-
-def removeDups(CN, ListName):
-    """ Remove Duplicate Entries from the Guid List passed in """
-    for Entry in ListName[:]:
-        if " " + CN + " " in Entry:
-            if (options.verbose > 1):
-                print "Removing C Name %s Entry from Guids List." % (CN)
-            ListName.remove(Entry)
-
-def chkArch(Archs):
-    """ Process the supported architectures passed in to combine if possible """
-    Archs = Archs.upper()
-    if (("IA32" in Archs) & ("X64" in Archs) & ("IPF" in Archs) & ("EBC" in Archs)):
-        Archs = "ALL"
-    if (len(Archs) == 0):
-        Archs = "ALL"
-    return Archs
-
-def saveSourceFile(moduleDir, sourceFilename, sourceFileContents):
-    newFilename = os.path.join(moduleDir, sourceFilename)
-    
-    try:
-        f = open(newFilename, "w+")
-        f.write(sourceFileContents)
-        f.close()
-    except:
-        print "IO error in saving %s" % sourceFilename
-        
-    return sourceFilename
-
-def openSourceFile(moduleDir, sourceFilename):
-    newFilename = os.path.join(moduleDir, sourceFilename)
-    sourceFileContents = ""
-    try:
-        f = open(newFilename, "r")
-        sourceFileContents = f.read()
-        f.close()
-    except:
-        print "IO error in opening %s" % sourceFilename
-        
-    return sourceFileContents
-
-def MatchOption(eline, ToolChainFamily, Targets, Archs, ToolCode, Value):
-    IDs = eline.split("_")
-    
-    if len(IDs) < 5:
-        return []
-    
-    MatchedTargets = []
-    if (Targets[0] == "*") or IDs[0] in Targets:
-        MatchedTargets.append(IDs[0])
-    elif IDs[0] == "*":
-        MatchedTargets = Targets
-
-    MatchedArchs = []
-    if Archs[0] == "*" or IDs[2] in Archs:
-        MatchedArchs.append(IDs[2])
-    elif IDs[2] == "*":
-        MatchedArchs = Archs
-
-    if IDs[3] != ToolCode and IDs[3] != "*":
-        return []
-    
-    result = []
-    for arch in MatchedArchs:
-        for target in MatchedTargets:
-            line = "%s:%s_%s_%s_%s_FLAGS = %s" % (ToolChainFamily, target, IDs[1], arch, ToolCode, Value)
-            result.append(line)
-
-    return result
-        
-def main():
-
-    AutoGenSource = ""
-    AutoGenHeader = ""
-    AutoGenDeclaration = ""
-    AutoGenModuleFolder = None
-
-    workspace = ""
-
-    if (options.workspace == None):
-        print "ERROR: E0000: WORKSPACE not defined.\n  Please set the WORKSPACE environment variable to the location of the EDK II install directory."
-        sys.exit(1)
-    else:
-        workspace = options.workspace
-        if (options.debug):
-            print "Using Workspace:", workspace
-
-    try:
-        options.verbose +=1
-    except:
-        options.verbose = 1
-        pass
-
-
-    FdbPath = os.path.join(workspace, "Conf")
-    FdbPath = os.path.join(FdbPath, "FrameworkDatabase.db")
-    if os.path.exists(FdbPath):
-        FdbFile = FdbPath
-    else:
-        print "ERROR: E0001: WORKSPACE does not contain the FrameworkDatabase File.\n  Please run EdkSetup from the EDK II install directory.\n"
-        sys.exit(1)
-
-    Fdb = openDatabase(FdbFile)
-    if (Fdb == 'None'):
-        print "ERROR: E0002 Could not open the Framework Database file:", FdbFile
-        sys.exit(1)
-
-    if (options.debug):
-        print "FrameworkDataBase.db file:", FdbFile
-
-    #
-    InitializeAutoGen(workspace, Fdb)
-
-    if (options.filename):
-        filename = options.filename
-        if ((options.verbose > 1) | (options.autowrite)):
-            print "Filename:", filename
-    else:
-        print "ERROR: E0001 - You must specify an input filename"
-        sys.exit(1)
-
-    if (options.outfile):
-        outputFile = options.outfile
-    else:
-       outputFile = filename.replace('.msa', '.inf')
-
-    if ((options.verbose > 2) or (options.debug)):
-        print "Output Filename:", outputFile
-
-    Msa = openMsa(filename)
-    if (Msa == 'None'):
-        ## Maybe developer think WORKSPACE macro is the root directory of file name
-        ## So we will try to add WORKSPACE path into filename
-        MsaFileName = ""
-        MsaFileName = os.path.join(workspace, filename)
-        Msa = openMsa(MsaFileName)
-        if (Msa == 'None'):
-            print "ERROR: E0002: Could not open the file:", filename
-            sys.exit(1)
-
-    AutoGenModuleFolder = os.path.dirname(filename)
-        
-    MsaHeader = "/ModuleSurfaceArea/MsaHeader/"
-    MsaDefs = "/ModuleSurfaceArea/ModuleDefinitions/"
-    BaseName = str(XmlElement(Msa, MsaDefs + "OutputFileBasename")).strip()
-
-    if (len(BaseName) < 1):
-      BaseName = str(XmlElement(Msa, MsaHeader + "BaseName")).strip()
-      BaseName = re.sub(' ', '_', BaseName)
-
-    GuidValue = str(XmlElement(Msa, MsaHeader + "GuidValue")).strip()
-    VerString = str(XmlElement(Msa, MsaHeader + "Version")).strip()
-    ModType = str(XmlElement(Msa, MsaHeader + "ModuleType")).strip()
-    CopyRight = str(XmlElement(Msa, MsaHeader + "Copyright")).strip()
-    Abstract = str(XmlElement(Msa, MsaHeader + "Abstract")).strip()
-    Description = str(XmlElement(Msa, MsaHeader + "Description")).strip().replace("  ", " ").replace("  ", " ").replace("  ", " ")
-    if not CopyRight.find("2007"):
-        CopyRight = CopyRight.replace("2006", "2007")
-    License = str(XmlElement(Msa, MsaHeader + "License")).strip().replace("  ", " ")
-    MsaDefs = "/ModuleSurfaceArea/ModuleDefinitions/"
-    BinModule = ""
-    try:
-        BinModule = str(XmlElement(Msa, MsaDefs + "BinaryModule")).strip()
-    except:
-        pass
-
-    SupportedArchitectures = ""
-    try:
-        SupportedArchitectures = str(XmlElement(Msa, MsaDefs + "SupportedArchitectures")).strip()
-    except:
-        pass
-
-    DefinesComments = []
-    if (len(SupportedArchitectures) > 0):
-        DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-        DefinesComments.append("#  VALID_ARCHITECTURES           = " + SupportedArchitectures + "\n")
-        DefinesComments.append("#\n")
-
-    MsaExtern = "/ModuleSurfaceArea/Externs/"
-    PcdIsDriver = ""
-    try:
-        PcdIsDriver = str(XmlElement(Msa, MsaExtern + "PcdIsDriver")).strip()
-    except:
-        pass
-
-    SpecList = []
-    List = []
-    try:
-        List = XmlList(Msa, MsaExtern + "Specification")
-    except:
-        pass
-
-    if (len(List) > 0):
-        for spec in List[:]:
-            SpecList.insert(0, str(XmlElementData(spec)).strip())
-
-    DriverModules = []
-    LibraryModules = []
-    Externlist = []
-    Flag = (DefinesComments == [])
-
-    # Data structure to insert autogen code
-    AutoGenDriverModel = []
-    AutoGenExitBootServices = []
-    AutoGenVirtualAddressChanged = []
-    AutoGenEntryPoint = ""
-    AutoGenUnload = ""
-    AutoGenGuid = []
-    AutoGenLibClass = []
-    AutoGenPackage = []
-    AutoGenSourceFiles = []
-    OldEntryPoint = ""
-    OldUnload = ""
-    
-    try:
-        Externlist = XmlList(Msa, MsaExtern + "Extern")
-    except:
-        pass
-
-    if (len(Externlist) > 0):
-        if (options.debug and options.verbose > 2):
-            print "In Extern Parsing Routine"
-        for extern in Externlist:
-            EntryPoint = ""
-            Unload = ""
-            DBinding = ""
-            CompName = ""
-            Diag = ""
-            Config = ""
-            Constr = ""
-            Destr = ""
-            CallBack = ""
-            lFlag = False
-            AutoGenDriverModelItem = []
-            try:
-                EntryPoint = str(XmlElementData(extern.getElementsByTagName("ModuleEntryPoint")[0])).strip()
-                AutoGenEntryPoint = EntryPoint
-                #DriverModules.append("  %-30s = %s\n" % ("ENTRY_POINT" , EntryPoint))
-            except:
-                pass
-
-            try:
-                Unload = str(XmlElementData(extern.getElementsByTagName("ModuleUnloadImage")[0])).strip()
-                AutoGenUnload = Unload
-                DriverModules.append("  %-30s = %s\n" % ("UNLOAD_IMAGE", Unload))
-            except:
-                pass
-
-            try:
-                DBinding = str(XmlElementData(extern.getElementsByTagName("DriverBinding")[0])).strip()
-                AutoGenDriverModelItem.append("&" + DBinding)
-                DefinesComments.append("#  %-29s =  %-45s\n" % ("DRIVER_BINDING", DBinding))
-                lFlag = True
-            except:
-                pass
-
-            try:
-                CompName = str(XmlElementData(extern.getElementsByTagName("ComponentName")[0])).strip()
-                AutoGenDriverModelItem.append("&" + CompName)
-                DefinesComments.append("#  %-29s =  %-45s\n" % ("COMPONENT_NAME", CompName))
-                lFlag = True
-            except:
-                if lFlag:
-                    AutoGenDriverModelItem.append("NULL")
-                pass
-
-            try:
-                Config = str(XmlElementData(extern.getElementsByTagName("DriverConfig")[0])).strip()
-                AutoGenDriverModelItem.append("&" + Config)
-                DefinesComments.append("#  %-29s =  %-45s\n" % ("DRIVER_CONFIG", Config))
-                lFlag = True
-            except:
-                if lFlag:
-                    AutoGenDriverModelItem.append("NULL")
-                pass
-
-            try:
-                Diag = str(XmlElementData(extern.getElementsByTagName("DriverDiag")[0])).strip()
-                AutoGenDriverModelItem.append("&" + Diag)
-                DefinesComments.append("#  %-29s =  %-45s\n" % ("DRIVER_DIAG", Diag))
-                lFlag = True
-            except:
-                if lFlag:
-                    AutoGenDriverModelItem.append("NULL")
-                pass
-
-            if len(AutoGenDriverModelItem) > 0:
-                AutoGenDriverModel.append(AutoGenDriverModelItem)
-                
-            try:
-                Constr = str(XmlElementData(extern.getElementsByTagName("Constructor")[0])).strip()
-                LibraryModules.append("  %-30s = %s\n" % ("CONSTRUCTOR", Constr))
-            except:
-                pass
-
-            try:
-                Destr = str(XmlElementData(extern.getElementsByTagName("Destructor")[0])).strip()
-                LibraryModules.append("  %-30s = %s\n" % ("DESTRUCTOR", Destr))
-            except:
-                pass
-    
-            try:
-                CallBack = str(XmlElement(extern, "Extern/SetVirtualAddressMapCallBack")).strip()
-                if CallBack != "":
-                    AutoGenVirtualAddressChanged.append(CallBack)
-                    DefinesComments.append("#  %-29s =  %-45s\n" % ("VIRTUAL_ADDRESS_MAP_CALLBACK", CallBack))
-                    lFlag = True
-            except:
-
-                pass
-
-            try:
-                CallBack = str(XmlElement(extern, "Extern/ExitBootServicesCallBack")).strip()
-                if CallBack != "":
-                    AutoGenExitBootServices.append(CallBack)
-                    DefinesComments.append("#  %-29s =  %-45s\n" % ("EXIT_BOOT_SERVICES_CALLBACK", CallBack))
-                    lFlag = True
-            except:
-                pass
-
-       
-    Flag = False
-
-    """ Get the Module's custom build options """
-    MBOlines = []
-    MBO = "/ModuleSurfaceArea/ModuleBuildOptions/Options/Option"
-    mboList = []
-    try:
-        mboList = XmlList(Msa, MBO)
-    except:
-        pass
-
-    if (len(mboList) > 0):
-        for Option in mboList:
-            Targets = []
-            Archs = []
-
-            bt = ""
-            try:
-                bt = str(Option.getAttribute("BuildTargets"))
-            except:
-                pass
-
-            if (len(bt) > 0):
-                if (re.findall(" ", bt) > 0):
-                    Targets = bt.split()
-                else:
-                    Targets.insert(0, bt)
-            else:
-                Targets.insert(0, "*")
-
-            if (options.debug and options.verbose > 2):
-                print "Targets", len(Targets), Targets
-
-            pro = ""
-            try:
-                pro = Option.getAttribute("SupArchList")
-                if (re.findall(" ", pro) > 0):
-                    Archs = pro.split()
-                elif (re.findall(",", pro) > 0):
-                    Archs = pro.split(",")
-            except:
-                pass
-
-            if (len(pro) == 0):
-                Archs.insert(0, "*")
-
-            if (options.debug and options.verbose > 2):
-                print "Archs", len(Archs), Archs
-
-            ToolCode = ""
-            try:
-                ToolCode = str(Option.getAttribute("ToolCode"))
-            except:
-                pass
-
-            if (len(ToolCode) == 0):
-                ToolCode="*"
-
-            value = ""
-            try:
-                value = str(XmlElementData(Option))
-            except:
-                pass
-            Tags = []
-            TagName = ""
-            try:
-                TagName = str(Option.getAttribute("TagName"))
-            except:
-                pass
-
-            if (len(TagName) > 0) :
-                if (options.debug and options.verbose > 2):
-                    print "TagName was defined:", TagName
-                Tags.insert(0, TagName)
-            else:
-                if (options.debug and options.verbose > 2):
-                    print "TagName was NOT defined!"
-                TagName = "*"
-                Tags.insert(0, "*")
-
-            Family = ""
-            try:
-                Family = str(Option.getAttribute("ToolChainFamily")).strip()
-            except:
-                pass
-
-            if (len(Family) > 0):
-                if (options.debug):
-                    print "Searching tools_def.txt for Tool Tags that belong to:", Family, "family"
-                TCF = []
-                tdFile = ""
-                tdPath = os.path.join(workspace, "Tools")
-                tdPath = os.path.join(tdPath, "Conf")
-                tdPath = os.path.join(tdPath, "tools_def.txt")
-                tdPath = tdPath.replace("\\", "/")
-                if os.path.exists(tdPath):
-                    tdFile = tdPath
-                else:
-                    tdPath = os.path.join(workspace, "Conf")
-                    tdPath = os.path.join(tdPath, "tools_def.txt")
-                    if os.path.exists(tdPath):
-                        tdFile = tdPath
-                    else:
-                        print "ERROR: E0001: WORKSPACE does not contain the tools_def.txt File.\n  Please run EdkSetup from the EDK II install directory.\n"
-                        sys.exit(1)
-
-                if (options.debug and options.verbose > 2):
-                    print "Opening:", tdFile
-
-                TagNameList = []
-                tools_def = open(tdFile, "r")
-                for tdline in tools_def:
-                    if "# " in tdline:
-                        continue
-                    if "FAMILY" in tdline:
-                        if (options.debug and options.verbose > 2):
-                            print "Testing for FAMILY:", Family, "in the line:", tdline.strip()
-                        if Family in tdline:
-                            enter = tdline.split("=")[0]
-                            if (options.debug and options.verbose > 2):
-                                print "Adding TNL:", tdline
-                            TagNameList.insert(0, enter)
-                tools_def.close()
-
-                if (options.debug and options.verbose > 2):
-                    print "TagNameList:", TagNameList
-
-                olinesSet = {}
-                for eline in TagNameList:
-                    if "# " in eline:
-                        continue
-                    if (options.debug and options.verbose > 2):
-                        print "ToolsDef entry:", eline
-                        
-                    olines = MatchOption(eline, Family, Targets, Archs, ToolCode, value)
-                    for oline in olines:
-                        olinesSet[oline] = 1
-                        
-                for oline in olinesSet:
-                    if (options.debug and options.verbose > 2):
-                        print "Adding:", str(oline)
-                    MBOlines.insert(0, oline)
-            else:
-                for targ in Targets:
-                    for arch in Archs:
-                        oline = "  %s_%s_%s_%s_FLAGS = %s" % (targ, Tags[0], arch, str(ToolCode), str(Value))
-                        if (options.debug and options.verbose > 2):
-                            print "Adding:", str(oline)
-                        MBOlines.insert(0, oline)
-           
-
-
-
-            for tag in Tags:
-                for targ in Targets:
-                    for arch in Archs:
-                        oline = "  " + str(targ) + "_" + str(tag) + "_" + str(arch) + "_" + str(ToolCode) + "_FLAGS  = " + str(value)
-                        if (options.debug and options.verbose > 2):
-                            print "Adding:", str(oline)
-                        #MBOlines.insert(0, oline)
-  
-
-    """ Get the Library Class information """
-    MsaLcDefs = "/ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"
-    LcDefList = []
-    try:
-        LcDefList = XmlList(Msa, MsaLcDefs)
-    except:
-        pass
-
-    IamLibrary = []
-    LibClassList = []
-    LibClassListIa32 = []
-    LibClassListX64 = []
-    LibClassListIpf = []
-    LibClassListEbc = []
-
-    
-    if (len(LcDefList) > 0):
-        for Lc in LcDefList:
-            lcKeyword = ""
-            try:
-                lcKeyword = str(XmlElementData(Lc.getElementsByTagName("Keyword")[0]))
-            except:
-                raise SyntaxError, "The MSA is not correctly formed, a Library Class Keyword Element is required"
-
-            lcUsage = ""
-            try:
-                lcUsage = str(XmlAttribute(Lc, "Usage"))
-            except:
-                raise SyntaxError, "The MSA is not correctly formed, a Usage Attribute is required for all Library Class Elements"
-
-            Archs = ""
-            try:
-                Archs = str(XmlAttribute(Lc, "SupArchList"))
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            if (options.debug and options.verbose > 2):
-                print "Attr: ",  lcUsage, lcKeyword, Archs
-
-            if (options.convert):
-                lcKeyword = AutoGenLibraryMapping.get(lcKeyword, lcKeyword)
-                
-            if re.findall("PRODUCED", lcUsage, re.IGNORECASE):
-                try:
-                    lcSupModList = ""
-
-                    try:
-                        lcSupModList = str(XmlAttribute(Lc, "SupModuleList"))
-                    except:
-                        lcSupModList = ""
-                    pass
-
-                    lcLine = lcKeyword
-                    AutoGenLibClass.append(lcKeyword)
-                    if len(lcSupModList) > 0:
-                        lcLine = lcLine + "|" + lcSupModList
-                    IamLibrary.insert(0, lcLine)
-                except:
-                    pass
-            elif lcKeyword != "UefiDriverModelLib":
-                AutoGenLibClass.append(lcKeyword)
-                # This section handles the library classes that are CONSUMED
-                if "IA32" in Archs:
-                    LibClassListIa32.insert(0, lcKeyword)
-                if "X64" in Archs:
-                    LibClassListX64.insert(0, lcKeyword)
-                if "IPF" in Archs:
-                    LibClassListIpf.insert(0, lcKeyword)
-                if "EBC" in Archs:
-                    LibClassListEbc.insert(0, lcKeyword)
-                if "ALL" in Archs:
-                    LibClassList.insert(0, lcKeyword)
-        if len(AutoGenDriverModel) > 0 and "UefiLib" not in LibClassList:
-            AutoGenLibClass.append("UefiLib")
-            LibClassList.insert(0, "UefiLib")
-    
-    AutoGenDxsFiles = []
-    """ Get the Source File list """
-    SrcFilenames = []
-    SrcFilenamesIa32 = []
-    SrcFilenamesX64 = []
-    SrcFilenamesIpf = []
-    SrcFilenamesEbc = []
-    SrcFiles = "/ModuleSurfaceArea/SourceFiles/Filename"
-    SrcList = []
-    try:
-        SrcList = XmlList(Msa, SrcFiles)
-    except:
-        pass
-
-    if (len(SrcList) > 0):
-        for fn in SrcList:
-            file = ""
-            Archs = ""
-
-            try:
-                Archs = fn.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                file = str(XmlElementData(fn))
-            except:
-                pass
-
-            if file.endswith(".dxs"):
-                AutoGenDxsFiles.append((file, Archs))
-            else:
-                AutoGenSourceFiles.append(file)
-                if "IA32" in Archs:
-                    SrcFilenamesIa32.insert(0, file)
-                if "X64" in Archs:
-                    SrcFilenamesX64.insert(0, file)
-                if "IPF" in Archs:
-                    SrcFilenamesIpf.insert(0, file)
-                if "EBC" in Archs:
-                    SrcFilenamesEbc.insert(0, file)
-                if "ALL" in Archs:
-                    SrcFilenames.insert(0, file)
-
-    """ Package Dependency section """
-    DbPkgList = "/FrameworkDatabase/PackageList/Filename"
-    WorkspacePkgs = []
-    try:
-        WorkspacePkgs = XmlList(Fdb, DbPkgList)
-    except:
-        print "Could not tet the package data from the database"
-        sys.exit(1)
-
-    PkgDb = []
-    HeaderLocations = []
-
-    if (options.debug and options.verbose > 1):
-        print "Found %s packages in the WORKSPACE" % (len(WorkspacePkgs))
-
-    Dirs = []
-    GuidDecls = []
-    if (len(WorkspacePkgs) > 0):
-        SpdHeader = "/PackageSurfaceArea/SpdHeader/"
-        for Pkg in WorkspacePkgs[:]:
-            PackageGuid = ""
-            PackageVersion = ""
-            file = ""
-            try:
-                file = str(XmlElementData(Pkg))
-            except:
-                pass
-
-            if (options.debug and options.verbose > 2):
-                print "PKG:", file
-
-            if fnmatch.fnmatch(file, "*.dec"):
-                print "parsing " + os.path.join(workspace, file)
-                PackageGuid = ""
-                PackageVersion = ""
-                try:
-                    Lines = open(os.path.join(workspace, file)).readlines()
-                except:
-                    print "Could not parse the Package file:", file
-                    sys.exit(1)
-                    
-                for Line in Lines:
-                    Line = Line.split("#")[0]
-                    Items = Line.split("=")
-                    if len(Items) != 2:
-                        continue
-
-                    Key = Items[0].strip().upper()
-                    if Key == "PACKAGE_GUID":
-                        PackageGuid = Items[1].strip()
-                    if Key == "PACKAGE_VERSION":
-                        PackageVersion = Items[1].strip()
-
-            else:
-                Spd = openSpd(os.path.join(workspace, file))
-                if (Spd == 'None'):
-                    print "Could not parse the Package file:", file
-                    sys.exit(1)
-
-                path = os.path.split(file)[0]
-                file = file.replace(".nspd", ".dec")
-                file = file.replace(".spd", ".dec")
-
-                try:
-                    PackageGuid = str(XmlElement(Spd, SpdHeader + "GuidValue"))
-                except:
-                    pass
-
-                try:
-                    PackageVersion = str(XmlElement(Spd, SpdHeader + "Version"))
-                except:
-                    pass
-
-            file = file + "|" + PackageGuid + "|" + PackageVersion
-            PkgDb.insert(0, file)
-
-            GuidEntries = []
-            try:
-                GuidEntries = XmlList(Spd, "/PackageSurfaceArea/GuidDeclarations/Entry")
-            except:
-                pass
-
-            if (len(GuidEntries) > 0):
-                for Entry in GuidEntries[:]:
-                    try:
-                        GuidDecls.append(str(XmlElementData(Entry.getElementsByTagName("C_Name")[0])).strip())
-                    except:
-                        pass
-
-       
-            pHdrs = []
-            try:
-                pHdrs = XmlList(Spd, "/PackageSurfaceArea/PackageHeaders/IncludePkgHeader")
-            except:
-                pass
-
-            if (len(pHdrs) > 0):
-                for Hdr in pHdrs[:]:
-                    try:
-                        ModTypeList = str(Hdr.getAttribute("ModuleType"))
-                        if (ModType in ModTypeList):
-                            HeaderName= str(XmlElementData(Hdr))[0]
-                            Dirs.insert(0, os.path.join(packagepath,str(os.path.split(HeaderName))))
-                    except:
-                        pass
-
-            # Get the Guid:Header from the Packages
-            SpdLcDec = "/PackageSurfaceArea/LibraryClassDeclarations/LibraryClass"
-            lcList = []
-            try:
-                lcList = XmlList(Spd, SpdLcDec)
-            except:
-                pass
-
-            if (len(lcList) > 0):
-                for Lc in lcList[:]:
-                    Name = ""
-                    try:
-                        Name = Lc.getAttribute("Name")
-                    except:
-                        pass
-
-                    Header = ""
-                    try:
-                        Header = XmlElementData(Lc.getElementsByTagName("IncludeHeader")[0])
-                    except:
-                        pass
-
-                    if ((len(Name) > 0) and (len(Header) > 0)):
-                        line = Name + "|" + os.path.join(path, Header)
-                        if (options.debug and options.verbose > 2):
-                            print "Adding:", line
-                        HeaderLocations.insert(0, line)
-
-            ishList = []
-            try:
-                IndStdHeaders = "/PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader"
-                ishList = XmlList(Spd, IndStdHeaders)
-            except:
-                pass
-
-            if (len(ishList) > 0):
-                for Lc in ishList[:]:
-                    Name = ""
-                    try:
-                        Name = str(Lc.getAttribute("Name")).strip()
-                    except:
-                        pass
-
-                    Header = ""
-                    try:
-                        Header = str(XmlElementData(Lc.getElementsByTagName("IncludeHeader")[0])).strip()
-                    except:
-                        pass
-
-                    if ((len(Name) > 0) and (len(Header) > 0)):
-                        line = Name + "|" + os.path.join(path, Header)
-                        HeaderLocations.insert(0, str(line))
-
-    PkgList = []
-    PkgListIa32 = []
-    PkgListX64 = []
-    PkgListIpf = []
-    PkgListEbc = []
-    Pkgs = "/ModuleSurfaceArea/PackageDependencies/Package"
-    pkgL = []
-    try:
-       pkgL = XmlList(Msa, Pkgs)
-    except:
-       pass
-   
-
-    gUnknownPkgGuid = {}
-    if (len(pkgL) > 0):
-        if (options.debug and options.verbose > 1):
-            print "Found %s packages in the module" % (len(pkgL))
-        for pkg in pkgL[:]:
-            Archs = ""
-            pkgGuid = ""
-            pkgVer = ""
-            
-            FindPkgGuid = False
-            try:
-                Archs = pkg.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                pkgGuid = pkg.getAttribute("PackageGuid")
-            except:
-                pass
-
-            if options.convert:
-                if pkgGuid.lower() == "5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec":
-                    pkgGuid = "1E73767F-8F52-4603-AEB4-F29B510B6766"
-                if pkgGuid.lower() == "68169ab0-d41b-4009-9060-292c253ac43d":
-                    pkgGuid = "BA0D78D6-2CAF-414b-BD4D-B6762A894288"
-            AutoGenPackage.append(pkgGuid)
-            try:
-                pkgVer = pkg.getAttribute("PackageVersion")
-            except:
-                pass
-
-            for PkgEntry in PkgDb[:]:
-                if pkgGuid in PkgEntry:
-                    if len(pkgVer) > 0:
-                        if pkgVer in PkgEntry:
-                            FindPkgGuid = True
-                            if "IA32" in Archs:
-                                PkgListIa32.insert(0, PkgEntry.split("|")[0])
-                            if "X64" in Archs:
-                                PkgListX64.insert(0, PkgEntry.split("|")[0])
-                            if "IPF" in Archs:
-                                PkgListIpf.insert(0, PkgEntry.split("|")[0])
-                            if "EBC" in Archs:
-                                PkgListEbc.insert(0, PkgEntry.split("|")[0])
-                            if "ALL" in Archs:
-                                PkgList.insert(0, PkgEntry.split("|")[0])
-                    else:
-                        FindPkgGuid = True
-                        if "IA32" in Archs:
-                            PkgListIa32.insert(0, PkgEntry.split("|")[0])
-                        if "X64" in Archs:
-                            PkgListX64.insert(0, PkgEntry.split("|")[0])
-                        if "IPF" in Archs:
-                            PkgListIpf.insert(0, PkgEntry.split("|")[0])
-                        if "EBC" in Archs:
-                            PkgListEbc.insert(0, PkgEntry.split("|")[0])
-                        if "ALL" in Archs:
-                            PkgList.insert(0, PkgEntry.split("|")[0])
-
-            if not FindPkgGuid:
-                gUnknownPkgGuid[str(pkgGuid)] = 1
-
-    for UnknownPkgGuid in gUnknownPkgGuid:
-        print "Cannot resolve package dependency Guid:", UnknownPkgGuid
-
-    PkgList.reverse()
-    PkgListIa32.reverse()
-    PkgListX64.reverse()
-    PkgListIpf.reverse()
-    PkgListEbc.reverse()
-    if (options.debug):
-        print "Package List:", PkgList
-
-
-    
-    """ Setup the Global GuidCName arrays that will hold data from various MSA locations """
-    global GuidCName
-    global GuidCNameIa32
-    global GuidCNameX64
-    global GuidCNameIPF
-    global GuidCNameEBC
-    GuidCName = []
-    GuidCNameIa32 = []
-    GuidCNameX64 = []
-    GuidCNameIPF = []
-    GuidCNameEBC = []
-
-    """ Check for the GUIDs Element """
-    Guids = "/ModuleSurfaceArea/Guids/GuidCNames"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Guid.getElementsByTagName("GuidCName")[0]))
-                if CName in GuidDecls:
-                    if (options.debug and options.verbose > 1):
-                        print "Guids Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                    AddGuid(Archs, CName, Usage)
-                    AutoGenGuid.append(CName)
-                else:
-                    raise AssertionError, "Guid %s defined in %s is not declared in any package (.dec) file!" % (CName, filename)
-            except:
-                pass
-
-    if (options.debug and options.verbose > 2):
-        print "Guid C Name List:", GuidCName
-
-    """ Check for Events """
-    Guids = "/ModuleSurfaceArea/Events/CreateEvents/EventTypes"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Type = str(XmlElementData(Guid.getElementsByTagName("EventType")[0]))
-                Usage += "  Create Event: " + Type
-            except:
-                pass
-
-            try:
-                CName = str(Guid.getAttribute("EventGuidCName"))
-                if CName in GuidDecls:
-                    if (options.debug and options.verbose > 1):
-                        print "CreateEvent Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                    AddGuid(Archs, CName, Usage)
-                    AutoGenGuid.append(CName)
-                else:
-                    if (len(DefinesComments) == 0):
-                        DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-                    DefinesComments.append("#  Create Event Guid C Name: " + CName + " Event Type: " + Type + "\n")
-                    Flag = True
-            except:
-                pass
-
-    if (Flag):
-        DefinesComments.append("#\n")
-        Flag = False
-
-    Guids = "/ModuleSurfaceArea/Events/SignalEvents/EventTypes"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Type = str(XmlElementData(Guid.getElementsByTagName("EventType")[0]))
-                Usage += "  Signal Event: " + Type
-            except:
-                pass
-
-            try:
-                CName = str(Guid.getAttribute("EventGuidCName"))
-                if CName in GuidDecls:
-                    if (options.debug and options.verbose > 1):
-                        print "SignalEvent Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                    AddGuid(Archs, CName, Usage)
-                    AutoGenGuid.append(CName)
-                else:
-                    if (len(DefinesComments) == 0):
-                        DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-                    DefinesComments.append("#  Signal Event Guid C Name: " + CName + " Event Type: " + Type + "\n")
-                    Flag = True
-            except:
-                pass
-
-    if (Flag):
-        DefinesComments.append("#\n")
-        Flag = False
-
-    """ Check the HOB guids """
-    Guids = "/ModuleSurfaceArea/Hobs/HobTypes"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Type = str(XmlElementData(Guid.getElementsByTagName("HobType")[0]))
-                Usage += "  Hob: " + Type
-            except:
-                pass
-
-            try:
-                CName = str(Guid.getAttribute("HobGuidCName"))
-                if CName in GuidDecls:
-                    if (options.debug and options.verbose > 1):
-                        print "Hob Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                    AddGuid(Archs, CName, Usage)
-                    AutoGenGuid.append(CName)
-                else:
-                    if (len(DefinesComments) == 0):
-                        DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-                    DefinesComments.append("#  HOB Guid C Name: " + CName + " Hob Type: " + Type + "\n")
-                    Flag = True
-            except:
-                if (len(DefinesComments) == 0):
-                    DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-                DefinesComments.append("#  HOB: " + Type + "\n")
-                Flag = True
-                pass
-      
-    if (Flag):
-        DefinesComments.append("#\n")
-        Flag = False
-
-    """ Check for the SystemTables Element """
-    Guids = "/ModuleSurfaceArea/SystemTables/SystemTableCNames"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Usage += "  System Table"
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Guid.getElementsByTagName("SystemTableCName")[0]))
-                if (options.debug and options.verbose > 1):
-                    print "System Table Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                AddGuid(Archs, CName, Usage)
-                AutoGenGuid.append(CName)
-            except:
-                pass
-
-    """ Check for the DataHubs Element """
-    Guids = "/ModuleSurfaceArea/DataHubs/DataHubRecord"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Usage += "  Data Hub"
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Guid.getElementsByTagName("DataHubCName")[0]))
-                if (options.debug and options.verbose > 1):
-                    print "Data Hub Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                AddGuid(Archs, CName, Usage)
-                AutoGenGuid.append(CName)
-            except:
-                pass
-
-    """ Check for the HiiPackages Element """
-    Guids = "/ModuleSurfaceArea/HiiPackages/HiiPackage"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-                Usage += "  HII Formset"
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Guid.getElementsByTagName("HiiCName")[0]))
-                if (options.debug and options.verbose > 1):
-                    print "Hii Formset Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                AddGuid(Archs, CName, Usage)
-                AutoGenGuid.append(CName)
-            except:
-                pass
-    """ Check for the Variables Element """
-    Guids = "/ModuleSurfaceArea/Variables/Variable"
-    GuidList = []
-    try:
-        GuidList = XmlList(Msa, Guids)
-    except:
-        pass
-
-    if (len(GuidList) > 0):
-        for Guid in GuidList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-            VariableName = ""
-
-            try:
-                Archs = Guid.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Guid.getAttribute("Usage")
-            except:
-                pass
-
-            try:
-                VariableName = str(XmlElementData(Guid.getElementsByTagName("VariableName")[0]))
-                CName = str(XmlElementData(Guid.getElementsByTagName("GuidC_Name")[0]))
-
-                HexData = VariableName.strip().split()
-                UniString = " L\""
-                for dig in HexData[:]:
-                    UniString += str(unichr(eval(dig)))
-                UniString += "\""
-
-                Usage += UniString
-      
-                if CName in set(GuidDecls):
-                    removeDups(CName, GuidCName)
-                    removeDups(CName, GuidCNameIa32)
-                    removeDups(CName, GuidCNameX64)
-                    removeDups(CName, GuidCNameIPF)
-                    removeDups(CName, GuidCNameEBC)
-
-                    if (options.debug):
-                        print "Variable Adding Guid CName: %-45s # %s Archs: %s" % (CName, Usage, Archs)
-                    AddGuid(Archs, CName, Usage)
-                    AutoGenGuid.append(CName)
-                else:
-                    if (len(DefinesComments) == 0):
-                        DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-                    DefinesComments.append("#  Variable Guid C Name: " + CName + " Variable Name:" + UniString + "\n")
-                    Flag = True
-            except:
-                pass
-
-    if (Flag):
-        DefinesComments.append("#\n")
-        Flag = False
-
-    """ Check for the Protocol Element """
-    Protocols = "/ModuleSurfaceArea/Protocols/Protocol"
-    ProtocolList = []
-    ProtocolCName = []
-    ProtocolCNameIa32 = []
-    ProtocolCNameX64 = []
-    ProtocolCNameIPF = []
-    ProtocolCNameEBC = []
-
-    try:
-        ProtocolList = XmlList(Msa, Protocols)
-    except:
-        pass
-
-    if (len(ProtocolList) > 0):
-        for Protocol in ProtocolList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Protocol.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Protocol.getAttribute("Usage")
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Protocol.getElementsByTagName("ProtocolCName")[0]))
-                AutoGenGuid.append(CName)
-                removeDups(CName, GuidCName)
-                removeDups(CName, GuidCNameIa32)
-                removeDups(CName, GuidCNameX64)
-                removeDups(CName, GuidCNameIPF)
-                removeDups(CName, GuidCNameEBC)
-      
-                if (options.debug and options.verbose > 1):
-                    print "Found %s - %s - %s " % (CName, Usage, str(len(Archs)))
-
-                if "IA32" in Archs:
-                    ProtocolCNameIa32.insert(0, str("  %-45s # PROTOCOL %s" % (CName, Usage)))
-                if "X64" in Archs:
-                    ProtocolCNameX64.insert(0, str("  %-45s # PROTOCOL %s" % (CName, Usage)))
-                if "IPF" in Archs:
-                    ProtocolCNameIPF.insert(0, str("  %-45s # PROTOCOL %s" % (CName, Usage)))
-                if "EBC" in Archs:
-                    ProtocolCNameEBC.insert(0, str("  %-45s # PROTOCOL %s" % (CName, Usage)))
-                if "ALL" in Archs:
-                    ProtocolCName.insert(0, str("  %-45s # PROTOCOL %s" % (CName, Usage)))
-            except:
-                pass
-
-
-    Protocols = "/ModuleSurfaceArea/Protocols/ProtocolNotify"
-    try:
-        ProtocolList = XmlList(Msa, Protocols)
-    except:
-        pass
-
-    if (len(ProtocolList) > 0):
-        for Protocol in ProtocolList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Protocol.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Protocol.getAttribute("Usage")
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Protocol.getElementsByTagName("ProtocolNotifyCName")[0]))
-                AutoGenGuid.append(CName)
-                removeDups(CName, GuidCName)
-                removeDups(CName, GuidCNameIa32)
-                removeDups(CName, GuidCNameX64)
-                removeDups(CName, GuidCNameIPF)
-                removeDups(CName, GuidCNameEBC)
-      
-                if "IA32" in Archs:
-                    ProtocolCNameIa32.insert(0, "  %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
-                if "X64" in Archs:
-                    ProtocolCNameX64.insert(0, "  %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
-                if "IPF" in Archs:
-                    ProtocolCNameIPF.insert(0, "  %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
-                if "EBC" in Archs:
-                    ProtocolCNameEBC.insert(0, "  %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
-                if "ALL" in Archs:
-                    ProtocolCName.insert(0, "  %-45s # PROTOCOL_NOTIFY %s" % (CName, Usage))
-            except:
-                pass
-
-    """ Check for the PPIs Element """
-    PPIs = "/ModuleSurfaceArea/PPIs/Ppi"
-    PPIsList = []
-    PpiCName = []
-    PpiCNameIa32 = []
-    PpiCNameX64 = []
-    PpiCNameIPF = []
-    PpiCNameEBC = []
-
-    try:
-        PPIsList = XmlList(Msa, PPIs)
-    except:
-        pass
-
-    if (len(PPIsList) > 0):
-        for Ppi in PPIsList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = str(Ppi.getAttribute("SupArchList"))
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = str(Ppi.getAttribute("Usage"))
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Ppi.getElementsByTagName("PpiCName")[0])).strip()
-                AutoGenGuid.append(CName)
-                removeDups(CName, GuidCName)
-                removeDups(CName, GuidCNameIa32)
-                removeDups(CName, GuidCNameX64)
-                removeDups(CName, GuidCNameIPF)
-                removeDups(CName, GuidCNameEBC)
-      
-                if "IA32" in Archs:
-                    PpiCNameIa32.insert(0, "  %-45s # PPI %s" % (CName, Usage))
-                if "X64" in Archs:
-                    PpiCNameX64.insert(0, "  %-45s # PPI %s" % (CName, Usage))
-                if "IPF" in Archs:
-                    PpiCNameIPF.insert(0, "  %-45s # PPI %s" % (CName, Usage))
-                if "EBC" in Archs:
-                    PpiCNameEBC.insert(0, "  %-45s # PPI %s" % (CName, Usage))
-                if "ALL" in Archs:
-                    PpiCName.insert(0, "  %-45s # PPI %s" % (CName, Usage))
-            except:
-                pass
-
-
-    PPIs = "/ModuleSurfaceArea/PPIs/PpiNotify"
-    try:
-        PPIsList = XmlList(Msa, PPIs)
-    except:
-        pass 
-
-    if (len(PPIsList) > 0):
-        for Ppi in PPIsList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-
-            try:
-                Archs = Ppi.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                Usage = Ppi.getAttribute("Usage")
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Ppi.getElementsByTagName("PpiNotifyCName")[0]))
-                AutoGenGuid.append(CName)
-                removeDups(CName, GuidCName)
-                removeDups(CName, GuidCNameIa32)
-                removeDups(CName, GuidCNameX64)
-                removeDups(CName, GuidCNameIPF)
-                removeDups(CName, GuidCNameEBC)
-      
-                if "IA32" in Archs:
-                    PpiCNameIa32.insert(0, "  %-45s # PPI_NOTIFY %s" % (CName, Usage))
-                if "X64" in Archs:
-                    PpiCNameX64.insert(0,  "  %-45s # PPI_NOTIFY %s" % (CName, Usage))
-                if "IPF" in Archs:
-                    PpiCNameIPF.insert(0,  "  %-45s # PPI_NOTIFY %s" % (CName, Usage))
-                if "EBC" in Archs:
-                    PpiCNameEBC.insert(0,  "  %-45s # PPI_NOTIFY %s" % (CName, Usage))
-                if "ALL" in Archs:
-                    PpiCName.insert(0,     "  %-45s # PPI_NOTIFY %s" % (CName, Usage))
-            except:
-                pass
-
-
-    """ Get the PCD entries now """
-    PcdCoded = "/ModuleSurfaceArea/PcdCoded/PcdEntry"
-    PcdList = []
-    try:
-        PcdList = XmlList(Msa, PcdCoded)
-    except:
-        pass
-
-    (PcdFF, PcdFFIa32, PcdFFX64, PcdFFIpf, PcdFFEbc) = ([],[],[],[],[])
-    (PcdFAB, PcdFABIa32, PcdFABX64, PcdFABIpf, PcdFABEbc) = ([],[],[],[],[])
-    (PcdPIM, PcdPIMIa32, PcdPIMX64, PcdPIMIpf, PcdPIMEbc) = ([],[],[],[],[])
-    (PcdDY, PcdDYIa32, PcdDYX64, PcdDYIpf, PcdDYEbc) = ([],[],[],[],[])
-    (PcdDYE, PcdDYEIa32, PcdDYEX64, PcdDYEIpf, PcdDYEEbc) = ([],[],[],[],[])
-
-    if (len(PcdList) > 0):
-        for Pcd in PcdList:
-            Archs = ""
-            Usage = ""
-            CName = ""
-            DefVal = ""
-
-            try:
-                Archs = Pcd.getAttribute("SupArchList")
-            except:
-                pass
-
-            Archs = chkArch(Archs)
-
-            try:
-                ItemType = Pcd.getAttribute("PcdItemType")
-            except:
-                pass
-
-            try:
-                CName = str(XmlElementData(Pcd.getElementsByTagName("C_Name")[0]))
-            except:
-                raise SyntaxError, "ERROR: MSA has a PCD with no Pcd C_Name defined"
-
-            try:
-                TSGC = str(XmlElementData(Pcd.getElementsByTagName("TokenSpaceGuidCName")[0]))
-            except:
-                pass
-
-            try:
-                DefVal = str(XmlElementData(Pcd.getElementsByTagName("DefaultValue")))
-            except:
-                pass
-
-            if (len(DefVal) > 0):
-                line = TSGC + "." + CName + "|" + DefVal
-            else:
-                line = TSGC + "." + CName
-
-            if (ItemType == "FEATURE_FLAG"):
-                if ("IA32" in Archs):
-                    PcdFFIa32.insert(0, line)
-                if ("IPF" in Archs):
-                    PcdFFIpf.insert(0, line)
-                if ("X64" in Archs):
-                    PcdFFX64.insert(0, line)
-                if ("EBC" in Archs):
-                    PcdFFEbc.insert(0, line)
-                if ("ALL" in Archs):
-                    PcdFF.insert(0, line)
-            elif (ItemType == "FIXED_AT_BUILD"):
-                if ("IA32" in Archs):
-                    PcdFABIa32.insert(0, line)
-                if ("IPF" in Archs):
-                    PcdFABIpf.insert(0, line)
-                if ("X64" in Archs):
-                    PcdFABX64.insert(0, line)
-                if ("EBC" in Archs):
-                    PcdFABEbc.insert(0, line)
-                if ("ALL" in Archs):
-                    PcdFAB.insert(0, line)
-            elif (ItemType == "PATCHABLE_IN_MODULE"):
-                if ("IA32" in Archs):
-                    PcdPIMIa32.insert(0, line)
-                if ("IPF" in Archs):
-                    PcdPIMIpf.insert(0, line)
-                if ("X64" in Archs):
-                    PcdPIMX64.insert(0, line)
-                if ("EBC" in Archs):
-                    PcdPIMEbc.insert(0, line)
-                if ("ALL" in Archs):
-                    PcdFAB.insert(0, line)
-            elif (ItemType == "DYNAMIC_EX"):
-                if ("IA32" in Archs):
-                    PcdDYEIa32.insert(0, line)
-                if ("IPF" in Archs):
-                    PcdDYEIpf.insert(0, line)
-                if ("X64" in Archs):
-                    PcdDYEX64.insert(0, line)
-                if ("EBC" in Archs):
-                    PcdDYEEbc.insert(0, line)
-                if ("ALL" in Archs):
-                    PcdDYE.insert(0, line)
-            else:
-                if ("IA32" in Archs):
-                    PcdDYIa32.insert(0, line)
-                if ("IPF" in Archs):
-                    PcdDYIpf.insert(0, line)
-                if ("X64" in Archs):
-                    PcdDYX64.insert(0, line)
-                if ("EBC" in Archs):
-                    PcdDYEbc.insert(0, line)
-                if ("ALL" in Archs):
-                    PcdDY.insert(0, line)
-
-    """ User Extensions Section """
-    UEList = []
-    UESectionList = []
-    try:
-        UESectionList = XmlList(Msa, "/ModuleSurfaceArea/UserExtensions")
-    except:
-        pass
-
-    if (len(UESectionList) > 0):
-        for UE in UESectionList[:]:
-            UserId = ""
-            Identifier = ""
-            Value = ""
-
-            try:
-                UserId = str(UE.getAttribute("UserID"))
-            except:
-                raise SyntaxError, "ERROR: Malformed MSA, No UserID Specified in UserExtensions element"
-
-            try:
-                Identifier = str(UE.getAttribute("Identifier"))
-            except:
-                raise SyntaxError, "ERROR: Malformed MSA, No Identifier Specified in UserExtensions element"
-
-            if (options.debug):
-                print "FOUND A UE Element", UserId, Identifier
-
-            try:
-                Value = str(XmlElementData(UE))
-            except:
-                pass
-      
-            Entry = [UserId, Identifier, Value]
-            UEList.insert(0, Entry)
-
-
-
-    if (len(Externlist) > 0):
-        AutoGenSource = ""
-        AutoGenDefinitionSource = ""
-        AutoGenEntryPointSource = ""
-        AutoGenUnloadSource = ""
-        if (len(AutoGenDriverModel) > 0):
-            AutoGenCode = AddDriverBindingProtocolStatement(AutoGenDriverModel)
-            AutoGenEntryPointSource += AutoGenCode[0]
-            AutoGenUnloadSource += AutoGenCode[1]
-            AutoGenDeclaration += AutoGenCode[3]
-            
-
-        if (len(AutoGenExitBootServices) > 0):
-            print "[Warning] Please manually add Create Event statement for Exit Boot Service Event!"
-            if options.event:
-                AutoGenCode = AddBootServiceEventStatement(AutoGenExitBootServices)
-                AutoGenEntryPointSource += AutoGenCode[0]
-                AutoGenUnloadSource += AutoGenCode[1]
-                AutoGenDefinitionSource += AutoGenCode[2]
-                AutoGenDeclaration += AutoGenCode[3]
-
-        if (len(AutoGenVirtualAddressChanged) > 0):
-            print "[Warning] Please manually add Create Event statement for Virtual Address Change Event!"
-            if options.event:
-                AutoGenCode = AddVirtualAddressEventStatement(AutoGenVirtualAddressChanged)
-                AutoGenEntryPointSource += AutoGenCode[0]
-                AutoGenUnloadSource += AutoGenCode[1]
-                AutoGenDefinitionSource += AutoGenCode[2]
-                AutoGenDeclaration += AutoGenCode[3]
-            
-        if AutoGenEntryPointSource != "":
-            OldEntryPoint = AutoGenEntryPoint
-            AutoGenCode   = AddNewEntryPointContentsStatement(BaseName, AutoGenEntryPoint, AutoGenEntryPointSource)
-            AutoGenEntryPoint = AutoGenCode[0]
-            AutoGenEntryPointSource = AutoGenCode[1]
-            AutoGenDeclaration += AutoGenCode[2]
-                
-            
-        if AutoGenEntryPoint != "":    
-            DriverModules.insert(0, "  %-30s = %s\n" % ("ENTRY_POINT" , AutoGenEntryPoint))
-         
-        AutoGenSource = AutoGenDefinitionSource + AutoGenEntryPointSource + AutoGenUnloadSource     
-        
-        if (lFlag):
-            DefinesComments.append("#\n")
-
-        if (Flag and len(DefinesComments) > 0):
-            DefinesComments.insert(0, "\n#\n# The following information is for reference only and not required by the build tools.\n#\n")
-
-        if (options.debug and options.verbose > 2):
-            if (len(DriverModules) > 0):
-                print DriverModules
-            if (len(LibraryModules) > 0):
-                print LibraryModules
-            if (len(DefinesComments) > 0):
-                print DefinesComments
-
-    Depex = []
-    DepexIa32 = []
-    DepexX64 = []
-    DepexIpf = []
-    DepexEbc = []
-    
-    for DxsFile, Archs in AutoGenDxsFiles:
-        fileContents = openSourceFile(AutoGenModuleFolder, DxsFile)
-        Contents, Unresolved = TranslateDpxSection(fileContents)
-        if Contents == "":
-            print "[warning] Cannot read dxs expression"
-        else:
-            if (len(Unresolved) > 0):
-                print "[warning] Guid Macro(s): %s cannot find corresponding cNames. Please resolve it in [depex] section in extened inf" % ",".join(Unresolved)
-                
-            if ("IA32" in Archs):
-                DepexIa32.insert(0, Contents)
-            if ("IPF" in Archs):
-                DepexIpf.insert(0, Contents)
-            if ("X64" in Archs):
-                DepexX64.insert(0, Contents)
-            if ("EBC" in Archs):
-                DepexEbc.insert(0, Contents)
-            if ("ALL" in Archs):
-                Depex.insert(0, Contents)
-
-    AutoGenSourceHeaderFormat = "/**@file\n  %s\n\n  %s\n  %s\n  %s\n**/\n\n%s"
-    includeCommonHeaderFileStatement = "#include \"%s\"" % commonHeaderFilename
-
-    AutoGenHeader += AddSystemIncludeStatement(ModType, AutoGenPackage)
-    AutoGenHeader += AddGuidStatement(AutoGenGuid)
-    AutoGenHeader += AddLibraryClassStatement(AutoGenLibClass)
-
-    if options.manual:
-        saveSourceFile(AutoGenModuleFolder, "CommonHeader.txt", AutoGenHeader)
-    else:
-        commonHeaderFilename2 = re.sub("(?=[^a-z])", "_", commonHeaderFilename)
-        commonHeaderFilename2 = "_" + commonHeaderFilename2.replace(".", "").upper() + "_"
-        briefDiscription = "Common header file shared by all source files."
-        detailedDiscription = "This file includes package header files, library classes and protocol, PPI & GUID definitions.\n"
-        AutoGenHeader += AutoGenDeclaration
-        AutoGenHeader = "#ifndef %s\n#define %s\n\n\n%s\n#endif\n" % (commonHeaderFilename2, commonHeaderFilename2, AutoGenHeader)
-        AutoGenHeader = AutoGenSourceHeaderFormat % (briefDiscription, detailedDiscription, CopyRight, License, AutoGenHeader)
-        saveSourceFile(AutoGenModuleFolder, commonHeaderFilename, AutoGenHeader)
-        SrcFilenames.append(commonHeaderFilename)
-
-        for source in AutoGenSourceFiles:
-            extension = os.path.splitext(source)[1]
-            if extension == ".c":
-                sourceContents = openSourceFile(AutoGenModuleFolder, source)
-                sourceContents = AddCommonInclusionStatement(sourceContents, includeCommonHeaderFileStatement)
-                saveSourceFile(AutoGenModuleFolder, source, sourceContents)
-    
-
-    if AutoGenSource != "":
-        briefDiscription = "Entry Point Source file."
-        detailedDiscription = "This file contains the user entry point \n"
-        AutoGenSource = AutoGenSourceHeaderFormat % (briefDiscription, detailedDiscription, CopyRight, License, AutoGenSource)
-        AutoGenSource = AddCommonInclusionStatement(AutoGenSource, includeCommonHeaderFileStatement)
-
-        saveSourceFile(AutoGenModuleFolder, entryPointFilename, AutoGenSource)
-        SrcFilenames.append(entryPointFilename)
-    
-    
-
-      
-    # DONE Getting data, now output it in INF format.
-    Msa.unlink()
-    Fdb.unlink()
-    Output = []
-
-    """ Print the converted data format """
-    head =  "#/** @file\n"
-    head += "# " + str(Abstract) + "\n#\n"
-    head += "# " + str(Description).strip().replace("\n", "\n# ") + "\n"
-    head += "# " + str(CopyRight) + "\n#\n"
-    head += "#  " + str(License).replace("\n", "\n# ").replace("  ", " ").strip() + "\n#\n"
-    head += "#\n#**/\n"
-  
-    Output.append(head)
-    if (options.debug):
-        print head
-
-##    Defines = "\n" + "#"*80+ "\n#\n"
-##    if (BinModule != "false"):
-##        Defines += "# Defines Section - statements that will be processed to generate a binary image.\n"
-##    else:
-##        Defines += "# Defines Section - statements that will be processed to create a Makefile.\n"
-##    Defines += "#\n" + "#"*80 + "\n"
-
-    Defines  = "\n"
-    Defines += "[Defines]\n"
-    Defines += "  %-30s = %s\n" % ("INF_VERSION", "0x00010005")
-    Defines += "  %-30s = %s\n" % ("BASE_NAME", BaseName)
-    Defines += "  %-30s = %s\n" % ("FILE_GUID", GuidValue)
-    Defines += "  %-30s = %s\n" % ("MODULE_TYPE", ModType)
-    Defines += "  %-30s = %s\n" % ("VERSION_STRING", VerString)
-  
-    if (len(PcdIsDriver) > 0):
-        Defines += "  %-30s = %s\n" %  ("PCD_DRIVER", PcdIsDriver)
-  
-    if (len(IamLibrary) > 0):
-        lcstr = ""
-        for lc in IamLibrary[:]:
-            lcstr += lc + " "
-            Defines += "  %-30s = %s" %  ("LIBRARY_CLASS", lcstr)
-        Defines += "\n"
-  
-    if (len(SpecList) > 0):
-        for spec in SpecList[:]:
-            (specname, specval) = spec.split()
-            Defines += "  %-30s = %s\n" %  (specname, specval)
-        Defines += "\n"
-  
-    if (len(DriverModules) > 0):
-        for line in DriverModules[:]:
-            Defines += line
-
-    if (len(LibraryModules) > 0):
-        for line in LibraryModules[:]:
-            Defines += line
-     
-    if (len(DefinesComments) > 0):
-        for line in DefinesComments[:]:
-            Defines += line
-  
-    Output.append(Defines)
-  
-    if (options.debug):
-        print Defines
-  
-    if (BinModule != "false"):
-        """ Binary Module, so sources are really binaries. """
-##        Sources = "\n" + "#"*80 + "\n#\n"
-##        Sources += "# Binaries Section - list of binary files that are required for the build\n# to succeed.\n"
-##        Sources += "#\n" + "#"*80 + "\n\n"
-        Sources = "\n"
-        if ModType == "UEFI_APPLICATION":
-            FileType = "UEFI_APP"
-            if options.verbose > 0:
-                print "WARNING: Binary Module: %s is assuming UEFI_APPLICATION file type." % (options.filename)
-        else:
-            FileType = "FV"
-            if options.verbose > 0:
-                print "WARNING: Binary Module: %s is assuming FV file type." % (options.filename)
-  
-        if (len(SrcFilenames) > 0):
-            Sources += "[Binaries.common]\n"
-            for file in SrcFilenames[:]:
-                file = file.replace("\\", "/")
-                Sources += "  " + FileType + "|" + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesIa32) > 0):
-            Sources += "[Binaries.Ia32]\n"
-            for file in SrcFilenamesIa32[:]:
-                file = file.replace("\\", "/")
-                Sources += "  " + FileType + "|" + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesX64) > 0):
-            Sources += "[Binaries.X64]\n"
-            for file in SrcFilenamesX64[:]:
-                file = file.replace("\\", "/")
-                Sources += "  " + FileType + "|" + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesIpf) > 0):
-            Sources += "[Binaries.IPF]\n"
-            for file in SrcFilenamesIpf[:]:
-                file = file.replace("\\", "/")
-                Sources += "  " + FileType + "|" + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesEbc) > 0):
-            Sources += "[Binaries.EBC]\n"
-            for file in SrcFilenamesEbc[:]:
-                file = file.replace("\\", "/")
-                Sources += "  " + FileType + "|" + file + "\n"
-            Sources += "\n"
-  
-        Output.append(Sources)
-        if (options.debug):
-            print Sources
-    else: 
-##        Sources = "\n" + "#"*80 + "\n#\n"
-##        Sources += "# Sources Section - list of files that are required for the build to succeed.\n"
-##        Sources += "#\n" + "#"*80 + "\n\n"
-        Sources = "\n"
-        if (len(SrcFilenames) > 0):
-            Sources += "[Sources.common]\n"
-            for file in SrcFilenames[:]:
-                Sources += "  " + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesIa32) > 0):
-            Sources += "[Sources.Ia32]\n"
-            for file in SrcFilenamesIa32[:]:
-                Sources += "  " + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesX64) > 0):
-            Sources += "[Sources.X64]\n"
-            for file in SrcFilenamesX64[:]:
-                Sources += "  " + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesIpf) > 0):
-            Sources += "[Sources.IPF]\n"
-            for file in SrcFilenamesIpf[:]:
-                Sources += "  " + file + "\n"
-            Sources += "\n"
-  
-        if (len(SrcFilenamesEbc) > 0):
-            Sources += "[Sources.EBC]\n"
-            for file in SrcFilenamesEbc[:]:
-                Sources += "  " + file + "\n"
-            Sources += "\n"
-  
-        Output.append(Sources)
-        if (options.debug):
-            print Sources
-  
-
-    includeLine = ""
-    if ((len(HeaderLocations) > 0) or (len(Dirs) > 0)):
-        allLcs = set(LibClassList + LibClassListIa32 + LibClassListX64 + LibClassListIpf + LibClassListEbc + Dirs)
-        Lines = []
-        for line in HeaderLocations[:]:
-            for Lc in allLcs:
-                (keyword, header) = line.split("|")
-                if Lc in keyword:
-                    if (options.debug):
-                        print "FOUND", Lc, "in", keyword, "header", header
-                    path = "$(WORKSPACE)/" + os.path.split(header)[0]
-                    Lines.insert(0, path.strip())
-        Includes = ""
-##        Includes = "\n" + "#"*80 + "\n#\n"
-##        Includes += "# Includes Section - list of Include locations that are required for\n"
-##        Includes += "#                    this module.\n"
-##        Includes += "#\n" + "#"*80 + "\n\n"
-##        Includes += "[Includes]\n"
-##        includeLines = []
-##        includeLines = set(Lines)
-##        if (options.debug):
-##            print "There are", len(includeLines), "entries"
-##        for Line in includeLines:
-##            Includes += "  " + str(Line).strip().replace("\\", "/") + "\n"
-  
-        Output.append(Includes)
-        if (options.debug):
-            print Includes
-  
-         
-  
-    if ((len(PkgList) + len(PkgListIa32) + len(PkgListX64) + len(PkgListIpf) + len(PkgListEbc)) > 0):
-        """ We do this if and only if we have Package Dependencies """
-##        PackageDepends = "\n" + "#"*80 + "\n#\n"
-##        PackageDepends += "# Package Dependency Section - list of Package files that are required for\n"
-##        PackageDepends += "#                              this module.\n"
-##        PackageDepends += "#\n" + "#"*80 + "\n\n"
-        PackageDepends = "\n"
-        if (len(PkgList) > 0):
-            PackageDepends += "[Packages]\n"
-            for lc in PkgList[:]:
-                lc = lc.replace("\\", "/")
-                PackageDepends += "  " + lc + "\n"
-            PackageDepends += "\n"
-  
-        if (len(PkgListIa32) > 0):
-            PackageDepends += "[Packages.IA32]\n"
-            for lc in PkgListIa32[:]:
-                lc = lc.replace("\\", "/")
-                PackageDepends += "  " + lc + "\n"
-            PackageDepends += "\n"
-  
-        if (len(PkgListX64) > 0):
-            PackageDepends += "[Packages.X64]\n"
-            for lc in PkgListX64[:]:
-                lc = lc.replace("\\", "/")
-                PackageDepends += "  " + lc + "\n"
-            PackageDepends += "\n"
-  
-        if (len(PkgListIpf) > 0):
-            PackageDepends += "[Packages.IPF]\n"
-            for lc in PkgListIpf[:]:
-                lc = lc.replace("\\", "/")
-                PackageDepends += "  " + lc + "\n"
-            PackageDepends += "\n"
-  
-        if (len(PkgListEbc) > 0):
-            PackageDepends += "[Packages.EBC]\n"
-            for lc in PkgListEbc[:]:
-                lc = lc.replace("\\", "/")
-                PackageDepends += "  " + lc + "\n"
-            PackageDepends += "\n"
-  
-        Output.append(PackageDepends)
-        if (options.debug):
-            print PackageDepends
-  
-    if ((len(LibClassList) + len(LibClassListIa32) + len(LibClassListX64) + len(LibClassListIpf) + len(LibClassListEbc)) > 0):
-##        LibraryClasses = "\n" + "#"*80 + "\n#\n"
-##        LibraryClasses += "# Library Class Section - list of Library Classes that are required for\n"
-##        LibraryClasses += "#                         this module.\n"
-##        LibraryClasses += "#\n" + "#"*80 + "\n\n"
-  
-        LibraryClasses = "\n"
-        if (len(LibClassList) > 0):
-            LibraryClasses += "[LibraryClasses]\n"
-            for lc in LibClassList[:]:
-              LibraryClasses += "  " + lc + "\n"
-            LibraryClasses += "\n"
-  
-        if (len(LibClassListIa32) > 0):
-            LibraryClasses += "[LibraryClasses.IA32]\n"
-            for lc in LibClassListIa32[:]:
-                LibraryClasses += "  " + lc + "\n"
-            LibraryClasses += "\n"
-  
-        if (len(LibClassListX64) > 0):
-            LibraryClasses += "[LibraryClasses.X64]\n"
-            for lc in LibClassListX64[:]:
-                LibraryClasses += "  " + lc + "\n"
-            LibraryClasses += "\n"
-  
-        if (len(LibClassListIpf) > 0):
-            LibraryClasses += "[LibraryClasses.IPF]\n"
-            for lc in LibClassListIpf[:]:
-                LibraryClasses += "  " + lc + "\n"
-            LibraryClasses += "\n"
-  
-        if (len(LibClassListEbc) > 0):
-            LibraryClasses += "[LibraryClasses.EBC]\n"
-            for lc in LibClassListEbc[:]:
-                LibraryClasses += "  " + lc + "\n"
-            LibraryClasses += "\n"
-  
-        Output.append(LibraryClasses)
-        if (options.debug):
-            print LibraryClasses
-  
-    # Print the Guids sections
-    if (len(GuidCName) + len(GuidCNameIa32) + len(GuidCNameIPF) + len(GuidCNameX64) + len(GuidCNameEBC)) > 0:
-##        GuidSection = "\n" + "#"*80 + "\n#\n"
-##        GuidSection += "# Guid C Name Section - list of Guids that this module uses or produces.\n"
-##        GuidSection += "#\n" + "#"*80 + "\n\n"
-        GuidSection = "\n"
-        if (len(GuidCName) > 0):
-            GuidSection += "[Guids]\n"
-            for Guid in GuidCName[:]:
-                GuidSection += Guid + "\n"
-            GuidSection += "\n"
-  
-        if (len(GuidCNameIa32) > 0):
-            GuidSection += "[Guids.IA32]\n"
-            for Guid in GuidCNameIa32[:]:
-                GuidSection += Guid + "\n"
-            GuidSection += "\n"
-  
-        if (len(GuidCNameX64) > 0):
-            GuidSection += "[Guids.X64]\n"
-            for Guid in GuidCNameX64[:]:
-                GuidSection += Guid + "\n"
-            GuidSection += "\n"
-  
-        if (len(GuidCNameIPF) > 0):
-            GuidSection += "[Guids.IPF]\n"
-            for Guid in GuidCNameIPF[:]:
-                GuidSection += Guid + "\n"
-            GuidSection += "\n"
-  
-        if (len(GuidCNameEBC) > 0):
-            GuidSection += "[Guids.EBC]\n"
-            for Guid in GuidCNameEBC[:]:
-                GuidSection += Guid + "\n"
-            GuidSection += "\n"
-  
-        Output.append(GuidSection)
-        if (options.debug and options.verbose > 1):
-            print GuidSection
-  
-    # Print the Protocol sections
-    if (len(ProtocolCName) + len(ProtocolCNameIa32) + len(ProtocolCNameIPF) + len(ProtocolCNameX64) + len(ProtocolCNameEBC)) > 0:
-##        ProtocolsSection = "\n" + "#"*80 + "\n#\n"
-##        ProtocolsSection += "# Protocol C Name Section - list of Protocol and Protocol Notify C Names\n"
-##        ProtocolsSection += "#                           that this module uses or produces.\n"
-##        ProtocolsSection += "#\n" + "#"*80 + "\n\n"
-  
-        ProtocolsSection = "\n"
-        if (len(ProtocolCName) > 0):
-            ProtocolsSection += "[Protocols]\n"
-            for Guid in ProtocolCName[:]:
-                ProtocolsSection += Guid + "\n"
-            ProtocolsSection += "\n"
-  
-        if (len(ProtocolCNameIa32) > 0):
-            ProtocolsSection += "[Protocols.IA32]\n"
-            for Guid in ProtocolCNameIa32[:]:
-                ProtocolsSection += Guid + "\n"
-            ProtocolsSection += "\n"
-  
-        if (len(ProtocolCNameX64) > 0):
-            ProtocolsSection += "[Protocols.X64]\n"
-            for Guid in ProtocolCNameX64[:]:
-                ProtocolsSection += Guid + "\n"
-            ProtocolsSection += "\n"
-  
-        if (len(ProtocolCNameIPF) > 0):
-            ProtocolsSection += "[Protocols.IPF]\n"
-            for Guid in ProtocolCNameIPF[:]:
-                ProtocolsSection += Guid + "\n"
-            ProtocolsSection += "\n"
-  
-        if (len(ProtocolCNameEBC) > 0):
-            ProtocolsSection += "[Protocols.EBC]\n"
-            for Guid in ProtocolCNameEBC[:]:
-                ProtocolsSection += Guid + "\n"
-            ProtocolsSection += "\n"
-  
-        Output.append(ProtocolsSection)
-        if (options.debug):
-          print ProtocolsSection
-  
-    # Print the PPI sections
-    if (len(PpiCName) + len(PpiCNameIa32) + len(PpiCNameIPF) + len(PpiCNameX64) + len(PpiCNameEBC)) > 0:
-##        PpiSection = "\n" + "#"*80 + "\n#\n"
-##        PpiSection += "# PPI C Name Section - list of PPI and PPI Notify C Names that this module\n"
-##        PpiSection += "#                      uses or produces.\n"
-##        PpiSection += "#\n" + "#"*80 + "\n\n"
-  
-        PpiSection = "\n"
-        if (len(PpiCName) > 0):
-            PpiSection += "[Ppis]\n"
-            for Guid in PpiCName[:]:
-                PpiSection += Guid + "\n"
-            PpiSection += "\n"
-  
-        if (len(PpiCNameIa32) > 0):
-            PpiSection += "[Ppis.IA32]\n"
-            for Guid in PpiCNameIa32[:]:
-                PpiSection += Guid + "\n"
-            PpiSection += "\n"
-  
-        if (len(PpiCNameX64) > 0):
-            PpiSection += "[Ppis.X64]\n"
-            for Guid in PpiCNameX64[:]:
-                PpiSection += Guid + "\n"
-            PpiSection += "\n"
-  
-        if (len(PpiCNameIPF) > 0):
-            PpiSection += "[Ppis.IPF]\n"
-            for Guid in PpiCNameIPF[:]:
-                PpiSection += Guid + "\n"
-            PpiSection += "\n"
-  
-        if (len(PpiCNameEBC) > 0):
-            PpiSection += "[Ppis.EBC]\n"
-            for Guid in PpiCNameEBC[:]:
-                PpiSection += Guid + "\n"
-            PpiSection += "\n"
-  
-        Output.append(PpiSection)
-        if (options.debug):
-            print PpiSection
-  
-    # Print the PCD sections
-    if ((len(PcdFF)+len(PcdFFIa32)+len(PcdFFX64)+len(PcdFFIpf)+len(PcdFFEbc)) > 0):
-##        FeatureFlagSection = "\n" + "#"*80 + "\n#\n"
-##        FeatureFlagSection += "# Pcd FEATURE_FLAG - list of PCDs that this module is coded for.\n"
-##        FeatureFlagSection += "#\n" + "#"*80 + "\n\n"
-  
-        FeatureFlagSection = "\n"
-        if (len(PcdFF) > 0):
-            FeatureFlagSection += "[FeaturePcd.common]\n"
-            for Entry in PcdFF[:]:
-                FeatureFlagSection += "  " + Entry + "\n"
-            FeatureFlagSection += "\n"
-        if (len(PcdFFIa32) > 0):
-            FeatureFlagSection += "[FeaturePcd.IA32]\n"
-            for Entry in PcdFFIa32[:]:
-                FeatureFlagSection += "  " + Entry + "\n"
-            FeatureFlagSection += "\n"
-        if (len(PcdFFX64) > 0):
-            FeatureFlagSection += "[FeaturePcd.X64]\n"
-            for Entry in PcdFFX64[:]:
-                FeatureFlagSection += "  " + Entry + "\n"
-            FeatureFlagSection += "\n"
-        if (len(PcdFFIpf) > 0):
-            FeatureFlagSection += "[PcdsFeatureFlag.IPF]\n"
-            for Entry in PcdFFIpf[:]:
-                FeatureFlagSection += "  " + Entry + "\n"
-            FeatureFlagSection += "\n"
-        if (len(PcdFFEbc) > 0):
-            FeatureFlagSection += "[FeaturePcd.EBC]\n"
-            for Entry in PcdFFEbc[:]:
-                FeatureFlagSection += "  " + Entry + "\n"
-            FeatureFlagSection += "\n"
-  
-        Output.append(FeatureFlagSection)
-        if (options.debug):
-          print FeatureFlagSection
-  
-    if ((len(PcdFAB)+len(PcdFABIa32)+len(PcdFABX64)+len(PcdFABIpf)+len(PcdFABEbc)) > 0):
-##        FixedAtBuildSection = "\n" + "#"*80 + "\n#\n"
-##        FixedAtBuildSection += "# Pcd FIXED_AT_BUILD - list of PCDs that this module is coded for.\n"
-##        FixedAtBuildSection += "#\n" + "#"*80 + "\n\n"
-  
-        FixedAtBuildSection = "\n"
-        if (len(PcdFAB) > 0):
-            FixedAtBuildSection += "[FixedPcd.common]\n"
-            for Entry in PcdFAB[:]:
-                FixedAtBuildSection += "  " + Entry + "\n"
-            FixedAtBuildSection += "\n"
-        if (len(PcdFABIa32) > 0):
-            FixedAtBuildSection += "[FixedPcd.IA32]\n"
-            for Entry in PcdFABIa32[:]:
-                FixedAtBuildSection += "  " + Entry + "\n"
-            FixedAtBuildSection += "\n"
-        if (len(PcdFABX64) > 0):
-            FixedAtBuildSection += "[FixedPcd.X64]\n"
-            for Entry in PcdFABX64[:]:
-                FixedAtBuildSection += "  " + Entry + "\n"
-            FixedAtBuildSection += "\n"
-        if (len(PcdFABIpf) > 0):
-            FixedAtBuildSection += "[FixedPcd.IPF]\n"
-            for Entry in PcdFABIpf[:]:
-                FixedAtBuildSection += "  " + Entry + "\n"
-            FixedAtBuildSection += "\n"
-        if (len(PcdFABEbc) > 0):
-            FixedAtBuildSection += "[FixedPcd.EBC]\n"
-            for Entry in PcdFABEbc[:]:
-                FixedAtBuildSection += "  " + Entry + "\n"
-            FixedAtBuildSection += "\n"
-  
-        Output.append(FixedAtBuildSection)
-        if (options.debug):
-            print FixedAtBuildSection
-  
-    if ((len(PcdPIM)+len(PcdPIMIa32)+len(PcdPIMX64)+len(PcdPIMIpf)+len(PcdPIMEbc)) > 0):
-##        PatchableInModuleSection = "\n" + "#"*80 + "\n#\n"
-##        PatchableInModuleSection += "# Pcd PATCHABLE_IN_MODULE - list of PCDs that this module is coded for.\n"
-##        PatchableInModuleSection += "#\n" + "#"*80 + "\n\n"
-    
-        PatchableInModuleSection = "\n"
-        if (len(PcdPIM) > 0):
-            PatchableInModuleSection += "[PatchPcd.common]\n"
-            for Entry in PcdPIM[:]:
-                PatchableInModuleSection += "  " + Entry + "\n"
-            PatchableInModuleSection += "\n"
-        if (len(PcdPIMIa32) > 0):
-            PatchableInModuleSection += "[PatchPcd.IA32]\n"
-            for Entry in PcdPIMIa32[:]:
-                PatchableInModuleSection += "  " + Entry + "\n"
-            PatchableInModuleSection += "\n"
-        if (len(PcdPIMX64) > 0):
-            PatchableInModuleSection += "[PatchPcd.X64]\n"
-            for Entry in PcdPIMX64[:]:
-                PatchableInModuleSection += "  " + Entry + "\n"
-            PatchableInModuleSection += "\n"
-        if (len(PcdPIMIpf) > 0):
-            PatchableInModuleSection += "[PatchPcd.IPF]\n"
-            for Entry in PcdPIMIpf[:]:
-                PatchableInModuleSection += "  " + Entry + "\n"
-            PatchableInModuleSection += "\n"
-        if (len(PcdPIMEbc) > 0):
-            PatchableInModuleSection += "[PatchPcd.EBC]\n"
-            for Entry in PcdPIMEbc[:]:
-                PatchableInModuleSection += "  " + Entry + "\n"
-            PatchableInModuleSection += "\n"
-  
-        Output.append(PatchableInModuleSection)
-        if (options.debug):
-            print PatchableInModuleSection
-  
-    if ((len(PcdDYE)+len(PcdDYEIa32)+len(PcdDYEX64)+len(PcdDYEIpf)+len(PcdDYEEbc)) > 0):
-##        DynamicExSection = "\n" + "#"*80 + "\n#\n"
-##        DynamicExSection += "# Pcd DYNAMIC_EX - list of PCDs that this module is coded for.\n"
-##        DynamicExSection += "#\n" + "#"*80 + "\n\n"
-  
-        DynamicExSection = "\n"
-        if (len(PcdDYE) > 0):
-            DynamicExSection += "[PcdEx.common]\n"
-            for Entry in PcdDYE[:]:
-                DynamicExSection += "  " + Entry + "\n"
-            DynamicExSection += "\n"
-        if (len(PcdDYEIa32) > 0):
-            DynamicExSection += "[PcdEx.IA32]\n"
-            for Entry in PcdDYEIa32[:]:
-                DynamicExSection += "  " + Entry + "\n"
-            DynamicExSection += "\n"
-        if (len(PcdDYEX64) > 0):
-            DynamicExSection += "[PcdEx.X64]\n"
-            for Entry in PcdDYEX64[:]:
-                DynamicExSection += "  " + Entry + "\n"
-            DynamicExSection += "\n"
-        if (len(PcdDYEIpf) > 0):
-            DynamicExSection += "[PcdEx.IPF]\n"
-            for Entry in PcdDYEIpf[:]:
-                DynamicExSection += "  " + Entry + "\n"
-            DynamicExSection += "\n"
-        if (len(PcdDYEEbc) > 0):
-            DynamicExSection += "[PcdEx.EBC]\n"
-            for Entry in PcdDYEEbc[:]:
-                DynamicExSection += "  " + Entry + "\n"
-            DynamicExSection += "\n"
-    
-        Output.append(DynamicExSection)
-        if (options.debug):
-            print DynamicExSection
-  
-    if ((len(PcdDY)+len(PcdDYIa32)+len(PcdDYX64)+len(PcdDYIpf)+len(PcdDYEbc)) > 0):
-##        DynamicSection = "\n" + "#"*80 + "\n#\n"
-##        DynamicSection += "# Pcd DYNAMIC - list of PCDs that this module is coded for.\n"
-##        DynamicSection += "#\n" + "#"*80 + "\n\n"
-      
-        DynamicSection = "\n"
-        if (len(PcdDY) > 0):
-            DynamicSection += "[Pcd.common]\n"
-            for Entry in PcdDY[:]:
-                DynamicSection += "  " + Entry + "\n"
-            DynamicSection += "\n"
-        if (len(PcdDYIa32) > 0):
-            DynamicSection += "[Pcd.IA32]\n"
-            for Entry in PcdDYIa32[:]:
-                DynamicSection += "  " + Entry + "\n"
-            DynamicSection += "\n"
-        if (len(PcdDYX64) > 0):
-            DynamicSection += "[Pcd.X64]\n"
-            for Entry in PcdDYX64[:]:
-                DynamicSection += "  " + Entry + "\n"
-            DynamicSection += "\n"
-        if (len(PcdDYIpf) > 0):
-            DynamicSection += "[Pcd.IPF]\n"
-            for Entry in PcdDYIpf[:]:
-                DynamicSection += "  " + Entry + "\n"
-            DynamicSection += "\n"
-        if (len(PcdDYEbc) > 0):
-            DynamicSection += "[Pcd.EBC]\n"
-            for Entry in PcdDYEbc[:]:
-                DynamicSection += "  " + Entry + "\n"
-            DynamicSection += "\n"
-    
-        Output.append(DynamicSection)
-        if (options.debug):
-            print DynamicSection
-  
-    if ((len(Depex) + len(DepexIa32) + len(DepexX64) + len(DepexIpf) + len(DepexEbc)) > 0):
-        """ We do this if and only if we have Package Dependencies """
-##        Dpx = "\n" + "#"*80 + "\n#\n"
-##        Dpx += "# Dependency Expression Section - list of Dependency expressions that are required for\n"
-##        Dpx += "#                              this module.\n"
-##        Dpx += "#\n" + "#"*80 + "\n\n"
-        Dpx = "\n"
-        if (len(Depex) > 0):
-            Dpx += "[Depex]\n"
-            for lc in Depex[:]:
-                Dpx += "  " + lc + "\n"
-            Dpx += "\n"
-
-        if (len(DepexIa32) > 0):
-            Dpx += "[Depex.IA32]\n"
-            for lc in DepexIa32[:]:
-                Dpx += "  " + lc + "\n"
-            Dpx += "\n"
-
-        if (len(DepexX64) > 0):
-            Dpx += "[Depex.X64]\n"
-            for lc in DepexX64[:]:
-                Dpx += "  " + lc + "\n"
-            Dpx += "\n"
-
-        if (len(DepexIpf) > 0):
-            Dpx += "[Depex.IPF]\n"
-            for lc in DepexIpf[:]:
-                Dpx += "  " + lc + "\n"
-            Dpx += "\n"
-
-        if (len(DepexEbc) > 0):
-            Dpx += "[Depex.EBC]\n"
-            for lc in DepexEbc[:]:
-                Dpx += "  " + lc + "\n"
-            Dpx += "\n"
-
-        Output.append(Dpx)
-        if (options.debug):
-            print Dpx
-            
-    if (len(MBOlines) > 0):
-        BuildSection = ""
-##        BuildSection = "\n" + "#"*80 + "\n#\n"
-##        BuildSection += "# Build Options - list of custom build options for this module.\n"
-##        BuildSection += "#\n" + "#"*80 + "\n\n"
-        BuildSection += "\n[BuildOptions]\n"
-        for mbo in MBOlines:
-            tool, targs = mbo.split("=",2)
-            BuildSection += "  %-40s = %s\n" %  (tool.strip(), targs.strip())
-
-        Output.append(BuildSection)
-        if (options.debug):
-            print BuildSection
-  
-
-    if (len(UEList) > 0):
-        UserExtensionSection = ""
-        for UE in UEList[:]:
-            UserExtensionSection += "[UserExtensions." + UE[0] + '."' + UE[1] + '"]\n'
-            if (len(UE[2]) > 0):
-                UserExtensionSection += '"' + UE[2] + '"\n'
-            else:
-                UserExtensionSection += "\n"
-  
-        Output.append(UserExtensionSection)
-        if (options.debug):
-            print UserExtensionSection
-
-    print "write file", outputFile
-    if (options.autowrite):
-        fo = open(outputFile, "w")
-        for Section in Output[:]:
-            fo.writelines(Section)
-            if (options.verbose > 1):
-                print Section
-        fo.close()
-    elif (options.outfile):
-        fo = open(outputFile, "w")
-        for Section in Output[:]:
-            fo.writelines(Section)
-        fo.close()
-    else:
-        for Section in Output[:]:
-            print Section
-
-  
-if __name__ == '__main__':
-
-    global options
-    global args
-    options,args = myOptionParser()
-    
-    main()
-    sys.exit(0)
-  
diff --git a/BaseTools/Source/Python/MigrationMsa2Inf/__init__.py b/BaseTools/Source/Python/MigrationMsa2Inf/__init__.py
deleted file mode 100644 (file)
index 4c44c24..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'MigrationMsa2Inf' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
diff --git a/BaseTools/Source/Python/MkBOM/__init__.py b/BaseTools/Source/Python/MkBOM/__init__.py
deleted file mode 100644 (file)
index 86ef629..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'MkBOM' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
index bd5876dd5c48755f16352c668f0d0e638e9fc842..1510430fe5ca32f5095009ad8320310f3ba46524 100644 (file)
@@ -17,4 +17,4 @@
 Build version information\r
 '''\r
 \r
-gBUILD_VERSION = "Build 2474"\r
+gBUILD_VERSION = "Build 2518"\r
index e26b558de0b6c7858e70188161238bcf3d00a784..a6668774b570371fd3b8af039abeea1edeabaa61 100644 (file)
@@ -340,6 +340,7 @@ class MetaFileParser(object):
     ## [BuildOptions] section parser
     @ParseMacro
     def _BuildOptionParser(self):
+        self._CurrentLine = CleanString(self._CurrentLine, BuildOption=True)
         TokenList = GetSplitValueList(self._CurrentLine, TAB_EQUAL_SPLIT, 1)
         TokenList2 = GetSplitValueList(TokenList[0], ':', 1)
         if len(TokenList2) == 2:
@@ -913,6 +914,9 @@ class DscParser(MetaFileParser):
                             ExtraData=self._CurrentLine)
 
         ItemType = self.DataType[DirectiveName]
+        Scope = [['COMMON', 'COMMON']]
+        if ItemType == MODEL_META_DATA_INCLUDE:
+            Scope = self._Scope
         if ItemType == MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF:
             # Remove all directives between !if and !endif, including themselves
             while self._DirectiveStack:
@@ -945,21 +949,22 @@ class DscParser(MetaFileParser):
         # Model, Value1, Value2, Value3, Arch, ModuleType, BelongsToItem=-1, BelongsToFile=-1,
         # LineBegin=-1, ColumnBegin=-1, LineEnd=-1, ColumnEnd=-1, Enabled=-1
         #
-        self._LastItem = self._Store(
-                                ItemType,
-                                self._ValueList[0],
-                                self._ValueList[1],
-                                self._ValueList[2],
-                                'COMMON',
-                                'COMMON',
-                                self._Owner[-1],
-                                self._From,
-                                self._LineIndex+1,
-                                -1,
-                                self._LineIndex+1,
-                                -1,
-                                0
-                                )
+        for Arch, ModuleType in Scope:
+            self._LastItem = self._Store(
+                                    ItemType,
+                                    self._ValueList[0],
+                                    self._ValueList[1],
+                                    self._ValueList[2],
+                                    Arch,
+                                    ModuleType,
+                                    self._Owner[-1],
+                                    self._From,
+                                    self._LineIndex+1,
+                                    -1,
+                                    self._LineIndex+1,
+                                    -1,
+                                    0
+                                    )
 
     ## [defines] section parser
     @ParseMacro
@@ -1065,6 +1070,7 @@ class DscParser(MetaFileParser):
     ## [BuildOptions] section parser
     @ParseMacro
     def _BuildOptionParser(self):
+        self._CurrentLine = CleanString(self._CurrentLine, BuildOption=True)
         TokenList = GetSplitValueList(self._CurrentLine, TAB_EQUAL_SPLIT, 1)
         TokenList2 = GetSplitValueList(TokenList[0], ':', 1)
         if len(TokenList2) == 2:
@@ -1154,6 +1160,21 @@ class DscParser(MetaFileParser):
             self._ContentIndex += 1
 
             self._Scope = [[S1, S2]]
+            #
+            # For !include directive, handle it specially,
+            # merge arch and module type in case of duplicate items
+            #
+            while self._ItemType == MODEL_META_DATA_INCLUDE:
+                if self._ContentIndex >= len(self._Content):
+                    break
+                Record = self._Content[self._ContentIndex]
+                if LineStart == Record[9] and LineEnd == Record[11]:
+                    if [Record[5], Record[6]] not in self._Scope:
+                        self._Scope.append([Record[5], Record[6]])
+                    self._ContentIndex += 1
+                else:
+                    break
+
             self._LineIndex = LineStart - 1
             self._ValueList = [V1, V2, V3]
 
@@ -1164,9 +1185,23 @@ class DscParser(MetaFileParser):
                 # Only catch expression evaluation error here. We need to report
                 # the precise number of line on which the error occurred
                 #
-                EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt),
-                                File=self._FileWithError, ExtraData=' '.join(self._ValueList), 
-                                Line=self._LineIndex+1)
+                if hasattr(Excpt, 'Pcd'):
+                    if Excpt.Pcd in GlobalData.gPlatformOtherPcds:
+                        Info = GlobalData.gPlatformOtherPcds[Excpt.Pcd]
+                        EdkLogger.error('Parser', FORMAT_INVALID, "Cannot use this PCD (%s) in an expression as"
+                                        " it must be defined in a [PcdsFixedAtBuild] or [PcdsFeatureFlag] section"
+                                        " of the DSC file, and it is currently defined in this section:"
+                                        " %s, line #: %d." % (Excpt.Pcd, Info[0], Info[1]),
+                                    File=self._FileWithError, ExtraData=' '.join(self._ValueList), 
+                                    Line=self._LineIndex+1)
+                    else:
+                        EdkLogger.error('Parser', FORMAT_INVALID, "PCD (%s) is not defined in DSC file" % Excpt.Pcd,
+                                    File=self._FileWithError, ExtraData=' '.join(self._ValueList), 
+                                    Line=self._LineIndex+1)
+                else:
+                    EdkLogger.error('Parser', FORMAT_INVALID, "Invalid expression: %s" % str(Excpt),
+                                    File=self._FileWithError, ExtraData=' '.join(self._ValueList), 
+                                    Line=self._LineIndex+1)
             except MacroException, Excpt:
                 EdkLogger.error('Parser', FORMAT_INVALID, str(Excpt),
                                 File=self._FileWithError, ExtraData=' '.join(self._ValueList), 
@@ -1225,6 +1260,20 @@ class DscParser(MetaFileParser):
             Name = TokenSpaceGuid + '.' + PcdName
             self._Symbols[Name] = Value
 
+        Content = open(str(self.MetaFile), 'r').readlines()
+        GlobalData.gPlatformOtherPcds['DSCFILE'] = str(self.MetaFile)
+        for PcdType in (MODEL_PCD_PATCHABLE_IN_MODULE, MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_HII,
+                        MODEL_PCD_DYNAMIC_VPD, MODEL_PCD_DYNAMIC_EX_DEFAULT, MODEL_PCD_DYNAMIC_EX_HII,
+                        MODEL_PCD_DYNAMIC_EX_VPD):
+            Records = self._RawTable.Query(PcdType, BelongsToItem=-1.0)
+            for TokenSpaceGuid,PcdName,Value,Dummy2,Dummy3,ID,Line in Records:
+                Name = TokenSpaceGuid + '.' + PcdName
+                if Name not in GlobalData.gPlatformOtherPcds:
+                    PcdLine = Line
+                    while not Content[Line - 1].lstrip().startswith(TAB_SECTION_START):
+                        Line -= 1
+                    GlobalData.gPlatformOtherPcds[Name] = (CleanString(Content[Line - 1]), PcdLine, PcdType)
+
     def __ProcessDefine(self):
         if not self._Enabled:
             return
@@ -1386,7 +1435,8 @@ class DscParser(MetaFileParser):
             try:
                 ValueList[0] = ValueExpression(PcdValue, self._Macros)(True)
             except WrnExpression, Value:
-                ValueList[0] = Value.result          
+                ValueList[0] = Value.result
+            PcdValue = ValueList[0]
         else:
             #
             # Int*/Boolean VPD PCD
@@ -1412,8 +1462,10 @@ class DscParser(MetaFileParser):
                 if ValueList[-1] == 'True':
                     ValueList[-1] = '1'
                 if ValueList[-1] == 'False':
-                    ValueList[-1] = '0'      
-
+                    ValueList[-1] = '0'
+                PcdValue = ValueList[-1]
+        if PcdValue and self._ItemType in [MODEL_PCD_FEATURE_FLAG, MODEL_PCD_FIXED_AT_BUILD]:
+            GlobalData.gPlatformPcds[TAB_SPLIT.join(self._ValueList[0:2])] = PcdValue
         self._ValueList[2] = '|'.join(ValueList)
 
     def __ProcessComponent(self):
index f20eab96887829db0cab77b0aaaddeac1ef38197..088a118de1a1e609864cd9cd99669984d5ded393 100644 (file)
@@ -50,11 +50,13 @@ class MetaFileTable(Table):
 \r
     def IsIntegrity(self):\r
         try:\r
+            TimeStamp = self.MetaFile.TimeStamp\r
             Result = self.Cur.execute("select ID from %s where ID<0" % (self.Table)).fetchall()\r
             if not Result:\r
+                # update the timestamp in database\r
+                self._FileIndexTable.SetFileTimeStamp(self.IdBase, TimeStamp)                \r
                 return False\r
 \r
-            TimeStamp = self.MetaFile.TimeStamp\r
             if TimeStamp != self._FileIndexTable.GetFileTimeStamp(self.IdBase):\r
                 # update the timestamp in database\r
                 self._FileIndexTable.SetFileTimeStamp(self.IdBase, TimeStamp)\r
index 6ff33db329cdf819c960ef6ee3932c62baaec392..16766d32dc38dacd18f9668a246d73d6ec3dd363 100644 (file)
@@ -262,7 +262,7 @@ class DscBuildData(PlatformBuildClassObject):
             if self._Header == None:\r
                 self._GetHeaderInfo()\r
             if self._Guid == None:\r
-                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No FILE_GUID", File=self.MetaFile)\r
+                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_GUID", File=self.MetaFile)\r
         return self._Guid\r
 \r
     ## Retrieve platform version\r
@@ -271,7 +271,7 @@ class DscBuildData(PlatformBuildClassObject):
             if self._Header == None:\r
                 self._GetHeaderInfo()\r
             if self._Version == None:\r
-                self._Version = ''\r
+                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No PLATFORM_VERSION", File=self.MetaFile)\r
         return self._Version\r
 \r
     ## Retrieve platform description file version\r
@@ -280,7 +280,7 @@ class DscBuildData(PlatformBuildClassObject):
             if self._Header == None:\r
                 self._GetHeaderInfo()\r
             if self._DscSpecification == None:\r
-                self._DscSpecification = ''\r
+                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No DSC_SPECIFICATION", File=self.MetaFile)                \r
         return self._DscSpecification\r
 \r
     ## Retrieve OUTPUT_DIRECTORY\r
@@ -298,7 +298,7 @@ class DscBuildData(PlatformBuildClassObject):
             if self._Header == None:\r
                 self._GetHeaderInfo()\r
             if self._SupArchList == None:\r
-                self._SupArchList = ARCH_LIST\r
+                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No SUPPORTED_ARCHITECTURES", File=self.MetaFile)\r
         return self._SupArchList\r
 \r
     ## Retrieve BUILD_TARGETS\r
@@ -307,7 +307,7 @@ class DscBuildData(PlatformBuildClassObject):
             if self._Header == None:\r
                 self._GetHeaderInfo()\r
             if self._BuildTargets == None:\r
-                self._BuildTargets = ['DEBUG', 'RELEASE', 'NOOPT']\r
+                EdkLogger.error('build', ATTRIBUTE_NOT_AVAILABLE, "No BUILD_TARGETS", File=self.MetaFile)\r
         return self._BuildTargets\r
 \r
     ## Retrieve SKUID_IDENTIFIER\r
@@ -463,7 +463,8 @@ class DscBuildData(PlatformBuildClassObject):
                 EdkLogger.error('build', ErrorCode, File=self.MetaFile, Line=LineNo,\r
                                 ExtraData=ErrorInfo)\r
             # Check duplication\r
-            if ModuleFile in self._Modules:\r
+            # If arch is COMMON, no duplicate module is checked since all modules in all component sections are selected\r
+            if self._Arch != 'COMMON' and ModuleFile in self._Modules:\r
                 EdkLogger.error('build', FILE_DUPLICATED, File=self.MetaFile, ExtraData=str(ModuleFile), Line=LineNo)\r
 \r
             Module = ModuleBuildClassObject()\r
@@ -841,6 +842,17 @@ class DscBuildData(PlatformBuildClassObject):
             self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, False, None)\r
         self.Pcds[Name, Guid].DefaultValue = Value\r
 \r
+    def IsPlatformPcdDeclared(self, DecPcds):\r
+        for PcdType in (MODEL_PCD_FIXED_AT_BUILD, MODEL_PCD_PATCHABLE_IN_MODULE, MODEL_PCD_FEATURE_FLAG,\r
+                        MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_HII, MODEL_PCD_DYNAMIC_VPD,\r
+                        MODEL_PCD_DYNAMIC_EX_DEFAULT, MODEL_PCD_DYNAMIC_EX_HII, MODEL_PCD_DYNAMIC_EX_VPD):\r
+            RecordList = self._RawData[PcdType, self._Arch]\r
+            for TokenSpaceGuid, PcdCName, Setting, Arch, SkuName, Dummy3, Dummy4 in RecordList:\r
+                if (PcdCName, TokenSpaceGuid) not in DecPcds:\r
+                    EdkLogger.error('build', PARSER_ERROR,\r
+                                    "Pcd (%s.%s) defined in DSC is not declared in DEC files." % (TokenSpaceGuid, PcdCName),\r
+                                    File=self.MetaFile, Line=Dummy4)\r
+\r
     _Macros             = property(_GetMacros)\r
     Arch                = property(_GetArch, _SetArch)\r
     Platform            = property(_GetPlatformName)\r
index f3555d705dcf92f5c45fbd0dd1f70fce24009c1f..e20131a3123f48a1b0d027d453c9b476cfbde306 100644 (file)
@@ -33,7 +33,12 @@ from Common.Misc import GuidStructureStringToGuidString
 from Common.InfClassObject import gComponentType2ModuleType\r
 from Common.BuildToolError import FILE_WRITE_FAILURE\r
 from Common.BuildToolError import CODE_ERROR\r
-\r
+from Common.DataType import TAB_LINE_BREAK\r
+from Common.DataType import TAB_DEPEX\r
+from Common.DataType import TAB_SLASH\r
+from Common.DataType import TAB_SPACE_SPLIT\r
+from Common.DataType import TAB_BRG_PCD\r
+from Common.DataType import TAB_BRG_LIBRARY\r
 \r
 ## Pattern to extract contents in EDK DXS files\r
 gDxsDependencyPattern = re.compile(r"DEPENDENCY_START(.+)DEPENDENCY_END", re.DOTALL)\r
@@ -63,15 +68,19 @@ gIncludePattern2 = re.compile(r"#include\s+EFI_([A-Z_]+)\s*[(]\s*(\w+)\s*[)]")
 ## Pattern to find the entry point for EDK module using EDKII Glue library\r
 gGlueLibEntryPoint = re.compile(r"__EDKII_GLUE_MODULE_ENTRY_POINT__\s*=\s*(\w+)")\r
 \r
+## Tags for MaxLength of line in report\r
+gLineMaxLength = 120\r
+\r
 ## Tags for section start, end and separator\r
-gSectionStart = ">" + "=" * 118 + "<"\r
-gSectionEnd = "<" + "=" * 118 + ">" + "\n"\r
-gSectionSep = "=" * 120\r
+gSectionStart = ">" + "=" * (gLineMaxLength-2) + "<"\r
+gSectionEnd = "<" + "=" * (gLineMaxLength-2) + ">" + "\n"\r
+gSectionSep = "=" * gLineMaxLength\r
 \r
 ## Tags for subsection start, end and separator\r
-gSubSectionStart = ">" + "-" * 118 + "<"\r
-gSubSectionEnd = "<" + "-" * 118 + ">"\r
-gSubSectionSep = "-" * 120\r
+gSubSectionStart = ">" + "-" * (gLineMaxLength-2) + "<"\r
+gSubSectionEnd = "<" + "-" * (gLineMaxLength-2) + ">"\r
+gSubSectionSep = "-" * gLineMaxLength\r
+\r
 \r
 ## The look up table to map PCD type to pair of report display type and DEC type\r
 gPcdTypeMap = {\r
@@ -166,6 +175,37 @@ def FindIncludeFiles(Source, IncludePathList, IncludeFiles):
                 IncludeFiles[FullFileName.lower().replace("\\", "/")] = FullFileName\r
                 break\r
 \r
+## Split each lines in file\r
+#\r
+#  This method is used to split the lines in file to make the length of each line \r
+#  less than MaxLength.\r
+#\r
+#  @param      Content           The content of file\r
+#  @param      MaxLength         The Max Length of the line\r
+#\r
+def FileLinesSplit(Content=None, MaxLength=None):\r
+    ContentList = Content.split(TAB_LINE_BREAK)\r
+    NewContent = ''\r
+    NewContentList = []\r
+    for Line in ContentList:\r
+        while len(Line.rstrip()) > MaxLength:\r
+            LineSpaceIndex = Line.rfind(TAB_SPACE_SPLIT, 0, MaxLength)\r
+            LineSlashIndex = Line.rfind(TAB_SLASH, 0, MaxLength)\r
+            LineBreakIndex = MaxLength\r
+            if LineSpaceIndex > LineSlashIndex:\r
+                LineBreakIndex = LineSpaceIndex\r
+            elif LineSlashIndex > LineSpaceIndex:\r
+                LineBreakIndex = LineSlashIndex\r
+            NewContentList.append(Line[:LineBreakIndex])\r
+            Line = Line[LineBreakIndex:]\r
+        if Line:\r
+            NewContentList.append(Line)\r
+    for NewLine in NewContentList:\r
+        NewContent += NewLine + TAB_LINE_BREAK\r
+    return NewContent\r
+    \r
+    \r
+    \r
 ##\r
 # Parse binary dependency expression section\r
 #\r
@@ -263,7 +303,7 @@ class LibraryReport(object):
     #\r
     def GenerateReport(self, File):\r
         FileWrite(File, gSubSectionStart)\r
-        FileWrite(File, "Library")\r
+        FileWrite(File, TAB_BRG_LIBRARY)\r
         if len(self.LibraryList) > 0:\r
             FileWrite(File, gSubSectionSep)\r
             for LibraryItem in self.LibraryList:\r
@@ -355,8 +395,10 @@ class DepexReport(object):
     #\r
     def GenerateReport(self, File, GlobalDepexParser):\r
         if not self.Depex:\r
+            FileWrite(File, gSubSectionStart)\r
+            FileWrite(File, TAB_DEPEX)\r
+            FileWrite(File, gSubSectionEnd)\r
             return\r
-\r
         FileWrite(File, gSubSectionStart)\r
         if os.path.isfile(self._DepexFileName):\r
             try:\r
@@ -685,7 +727,7 @@ class PcdReport(object):
             # For module PCD sub-section\r
             #\r
             FileWrite(File, gSubSectionStart)\r
-            FileWrite(File, "PCD")\r
+            FileWrite(File, TAB_BRG_PCD)\r
             FileWrite(File, gSubSectionSep)\r
 \r
         for Key in self.AllPcds:\r
@@ -1511,7 +1553,8 @@ class BuildReport(object):
                 File = StringIO('')\r
                 for (Wa, MaList) in self.ReportList:\r
                     PlatformReport(Wa, MaList, self.ReportType).GenerateReport(File, BuildDuration, self.ReportType)\r
-                SaveFileOnChange(self.ReportFile, File.getvalue(), False)\r
+                Content = FileLinesSplit(File.getvalue(), gLineMaxLength)\r
+                SaveFileOnChange(self.ReportFile, Content, True)\r
                 EdkLogger.quiet("Build report can be found at %s" % os.path.abspath(self.ReportFile))\r
             except IOError:\r
                 EdkLogger.error(None, FILE_WRITE_FAILURE, ExtraData=self.ReportFile)\r
index ef52162ea15162ae2fb0ba028b32946b6a7247e8..a463c527be130c6745716d93d28ed893b6d55c49 100644 (file)
@@ -59,6 +59,9 @@ gBuildConfiguration = "Conf/target.txt"
 gBuildCacheDir = "Conf/.cache"\r
 gToolsDefinition = "Conf/tools_def.txt"\r
 \r
+TemporaryTablePattern = re.compile(r'^_\d+_\d+_[a-fA-F0-9]+$')\r
+TmpTableDict = {}\r
+\r
 ## Check environment PATH variable to make sure the specified tool is found\r
 #\r
 #   If the tool is found in the PATH, then True is returned\r
@@ -1448,6 +1451,14 @@ class Build():
                     if BuildTask.HasError():\r
                         EdkLogger.error("build", BUILD_ERROR, "Failed to build module", ExtraData=GlobalData.gBuildingModule)\r
 \r
+                #\r
+                # Save temp tables to a TmpTableDict.\r
+                #\r
+                for Key in Wa.BuildDatabase._CACHE_:\r
+                    if Wa.BuildDatabase._CACHE_[Key]._RawData and Wa.BuildDatabase._CACHE_[Key]._RawData._Table and Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table:\r
+                        if TemporaryTablePattern.match(Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table):\r
+                            TmpTableDict[Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Table] = Wa.BuildDatabase._CACHE_[Key]._RawData._Table.Cur\r
+                #\r
                 #\r
                 # All modules have been put in build tasks queue. Tell task scheduler\r
                 # to exit if all tasks are completed\r
@@ -1651,8 +1662,8 @@ def MyOptionParser():
         help="Build the platform specified by the DSC file name argument, overriding target.txt's ACTIVE_PLATFORM definition.")\r
     Parser.add_option("-m", "--module", action="callback", type="string", dest="ModuleFile", callback=SingleCheckCallback,\r
         help="Build the module specified by the INF file name argument.")\r
-    Parser.add_option("-b", "--buildtarget", action="append", type="choice", choices=['DEBUG','RELEASE','NOOPT'], dest="BuildTarget",\r
-        help="BuildTarget is one of list: DEBUG, RELEASE, NOOPT, which overrides target.txt's TARGET definition. To specify more TARGET, please repeat this option.")\r
+    Parser.add_option("-b", "--buildtarget", type="string", dest="BuildTarget", help="Using the TARGET to build the platform, overriding target.txt's TARGET definition.",\r
+                      action="append")\r
     Parser.add_option("-t", "--tagname", action="append", type="string", dest="ToolChain",\r
         help="Using the Tool Chain Tagname to build the platform, overriding target.txt's TOOL_CHAIN_TAG definition.")\r
     Parser.add_option("-x", "--sku-id", action="callback", type="string", dest="SkuId", callback=SingleCheckCallback,\r
@@ -1809,7 +1820,12 @@ def Main():
             EdkLogger.error("build", OPTION_VALUE_INVALID, "UNI flag must be one of -c or -s")\r
 \r
         MyBuild = Build(Target, Workspace, Option)\r
+        GlobalData.gCommandLineDefines['ARCH'] = ' '.join(MyBuild.ArchList)\r
         MyBuild.Launch()\r
+        # Drop temp tables to avoid database locked.\r
+        for TmpTableName in TmpTableDict:\r
+            SqlCommand = """drop table IF EXISTS %s""" % TmpTableName\r
+            TmpTableDict[TmpTableName].execute(SqlCommand)\r
         #MyBuild.DumpBuildData()\r
     except FatalError, X:\r
         if MyBuild != None:\r
diff --git a/BaseTools/Source/Python/fpd2dsc/EdkIIWorkspaceGuidsInfo.py b/BaseTools/Source/Python/fpd2dsc/EdkIIWorkspaceGuidsInfo.py
deleted file mode 100644 (file)
index 68fa79e..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-## @file\r
-# Collects the Guid Information in current workspace.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-import fnmatch\r
-from Common.EdkIIWorkspace import EdkIIWorkspace\r
-from Common.MigrationUtilities import *\r
-\r
-## A class for EdkII work space to resolve Guids\r
-#\r
-# This class inherits from EdkIIWorkspace and collects the Guids information\r
-# in current workspace. The Guids information is important to translate the\r
-# package Guids and recommended library instances Guids to relative file path\r
-# (to workspace directory) in MSA files.\r
-#\r
-class EdkIIWorkspaceGuidsInfo(EdkIIWorkspace):\r
-\r
-    ## The classconstructor\r
-    #\r
-    # The constructor initialize workspace directory. It does not collect\r
-    # pakage and module Guids info at initialization; instead, it collects them\r
-    # on the fly.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __init__(self):\r
-        # Initialize parent class.\r
-        EdkIIWorkspace.__init__(self)\r
-        # The internal map from Guid to FilePath.\r
-        self.__GuidToFilePath = {}\r
-        # The internal package directory list.\r
-        self.__PackageDirList = []\r
-        # The internal flag to indicate whether package Guids info has been initialized\r
-        # to avoid re-collection collected.\r
-        self.__PackageGuidInitialized = False\r
-        # The internal flag to indicate whether module Guids info has been initialized\r
-        # to avoid re-collection collected.\r
-        self.__ModuleGuidInitialized = False\r
-\r
-    ## Add Guid, Version and FilePath to Guids database\r
-    #\r
-    # Add Guid, Version and FilePath to Guids database. It constructs a map\r
-    # table from Guid, Version to FilePath internally. If also detects possible\r
-    # Guid collision. For now, the version information is simply ignored and\r
-    # Guid value itself acts as master key.\r
-    #\r
-    # @param  self           The object pointer\r
-    # @param  Guid           The Guid Value\r
-    # @param  Version        The version information\r
-    # @param  FilePath       The Guid related file path\r
-    #\r
-    # @retval True           The Guid value is successfully added to map table\r
-    # @retval False          The Guid is an empty string or the map table\r
-    #                        already contains a same Guid\r
-    #\r
-    def __AddGuidToFilePath(self, Guid, Version, FilePath):\r
-        if Guid == "":\r
-            EdkLogger.info("Cannot find Guid in file %s" % FilePath)\r
-            return False\r
-        #Add the Guid value to map table to ensure case insensitive comparison.\r
-        OldFilePath = self.__GuidToFilePath.setdefault(Guid.lower(), FilePath)\r
-        if OldFilePath == FilePath:\r
-            EdkLogger.verbose("File %s has new Guid '%s'" % (FilePath, Guid))\r
-            return True\r
-        else:\r
-            EdkLogger.info("File %s has duplicate Guid with & %s" % (FilePath, OldFilePath))\r
-            return False\r
-        \r
-\r
-    ## Gets file information from a module description file\r
-    #\r
-    # Extracts Module Name, File Guid and Version number from INF, MSA and NMSA\r
-    # file. It supports to exact such information from text based INF file or\r
-    # XML based (N)MSA file.\r
-    #\r
-    # @param  self           The object pointer\r
-    # @param  FileName       The input module file name\r
-    #\r
-    # @retval True           This module file represents a new module discovered\r
-    #                        in current workspace\r
-    # @retval False          This module file is not regarded as a valid module\r
-    #                        The File Guid cannot be extracted or the another\r
-    #                        file with the same Guid already exists\r
-    #\r
-    def __GetModuleFileInfo(self, FileName):\r
-        if fnmatch.fnmatch(FileName, "*.inf"):\r
-            TagTuple = ("BASE_NAME", "FILE_GUID", "VERSION_STRING")\r
-            (Name, Guid, Version) = GetTextFileInfo(FileName, TagTuple)\r
-        else :\r
-            XmlTag1 = "ModuleSurfaceArea/MsaHeader/ModuleName"\r
-            XmlTag2 = "ModuleSurfaceArea/MsaHeader/GuidValue"\r
-            XmlTag3 = "ModuleSurfaceArea/MsaHeader/Version"\r
-            TagTuple = (XmlTag1, XmlTag2, XmlTag3)\r
-            (Name, Guid, Version) = GetXmlFileInfo(FileName, TagTuple)\r
-\r
-        return self.__AddGuidToFilePath(Guid, Version, FileName)\r
-    \r
-    \r
-    ## Gets file information from a package description file\r
-    #\r
-    # Extracts Package Name, File Guid and Version number from INF, SPD and NSPD\r
-    # file. It supports to exact such information from text based DEC file or\r
-    # XML based (N)SPD file. EDK Compatibility Package is hardcoded to be\r
-    # ignored since no EDKII INF file depends on that package.\r
-    #\r
-    # @param  self           The object pointer\r
-    # @param  FileName       The input package file name\r
-    #\r
-    # @retval True           This package file represents a new package\r
-    #                        discovered in current workspace\r
-    # @retval False          This package is not regarded as a valid package\r
-    #                        The File Guid cannot be extracted or the another\r
-    #                        file with the same Guid already exists\r
-    #\r
-    def __GetPackageFileInfo(self, FileName):\r
-        if fnmatch.fnmatch(FileName, "*.dec"):\r
-            TagTuple = ("PACKAGE_NAME", "PACKAGE_GUID", "PACKAGE_VERSION")\r
-            (Name, Guid, Version) = GetTextFileInfo(FileName, TagTuple)\r
-        else:\r
-            XmlTag1 = "PackageSurfaceArea/SpdHeader/PackageName"\r
-            XmlTag2 = "PackageSurfaceArea/SpdHeader/GuidValue"\r
-            XmlTag3 = "PackageSurfaceArea/SpdHeader/Version"\r
-            TagTuple = (XmlTag1, XmlTag2, XmlTag3)\r
-            (Name, Guid, Version) = GetXmlFileInfo(FileName, TagTuple)\r
-                \r
-        if Name == "EdkCompatibilityPkg":\r
-            # Do not scan EDK compatibitilty package to avoid Guid collision\r
-            # with those in EDK Glue Library.\r
-            EdkLogger.verbose("Bypass EDK Compatibility Pkg")\r
-            return False\r
-        \r
-        return self.__AddGuidToFilePath(Guid, Version, FileName)\r
-\r
-    ## Iterate on all package files listed in framework database file\r
-    #\r
-    # Yields all package description files listed in framework database files.\r
-    # The framework database file describes the packages current workspace\r
-    # includes.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __FrameworkDatabasePackageFiles(self):\r
-        XmlFrameworkDb = XmlParseFile(self.WorkspaceFile)\r
-        XmlTag = "FrameworkDatabase/PackageList/Filename"\r
-        for PackageFile in XmlElementList(XmlFrameworkDb, XmlTag):\r
-            yield os.path.join(self.WorkspaceDir, PackageFile)\r
-    \r
-    \r
-    ## Iterate on all package files in current workspace directory\r
-    #\r
-    # Yields all package description files listed in current workspace\r
-    # directory. This happens when no framework database file exists.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __TraverseAllPackageFiles(self):\r
-        for Path, Dirs, Files in os.walk(self.WorkspaceDir):\r
-            # Ignore svn version control directory.\r
-            if ".svn" in Dirs:\r
-                Dirs.remove(".svn")\r
-            if "Build" in Dirs:\r
-                Dirs.remove("Build")\r
-            # Assume priority from high to low: DEC, NSPD, SPD.\r
-            PackageFiles = fnmatch.filter(Files, "*.dec")\r
-            if len(PackageFiles) == 0:\r
-                PackageFiles = fnmatch.filter(Files, "*.nspd")\r
-                if len(PackageFiles) == 0:\r
-                    PackageFiles = fnmatch.filter(Files, "*.spd")\r
-\r
-            for File in PackageFiles:\r
-                # Assume no more package decription file in sub-directory.\r
-                del Dirs[:]\r
-                yield os.path.join(Path, File)\r
-\r
-    ## Iterate on all module files in current package directory\r
-    #\r
-    # Yields all module description files listed in current package\r
-    # directory.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __TraverseAllModuleFiles(self):\r
-        for PackageDir in self.__PackageDirList:\r
-            for Path, Dirs, Files in os.walk(PackageDir):\r
-                # Ignore svn version control directory.\r
-                if ".svn" in Dirs:\r
-                    Dirs.remove(".svn")\r
-                # Assume priority from high to low: INF, NMSA, MSA.\r
-                ModuleFiles = fnmatch.filter(Files, "*.inf")\r
-                if len(ModuleFiles) == 0:\r
-                    ModuleFiles = fnmatch.filter(Files, "*.nmsa")\r
-                    if len(ModuleFiles) == 0:\r
-                        ModuleFiles = fnmatch.filter(Files, "*.msa")\r
-\r
-                for File in ModuleFiles:\r
-                    yield os.path.join(Path, File)\r
-\r
-    ## Initialize package Guids info mapping table\r
-    #\r
-    # Collects all package guids map to package decription file path. This\r
-    # function is invokes on demand to avoid unnecessary directory scan.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __InitializePackageGuidInfo(self):\r
-        if self.__PackageGuidInitialized:\r
-            return\r
-\r
-        EdkLogger.verbose("Start to collect Package Guids Info.")\r
-   \r
-        WorkspaceFile = os.path.join("Conf", "FrameworkDatabase.db")\r
-        self.WorkspaceFile = os.path.join(self.WorkspaceDir, WorkspaceFile)\r
-        \r
-        # Try to find the frameworkdatabase file to discover package lists\r
-        if os.path.exists(self.WorkspaceFile):\r
-            TraversePackage = self.__FrameworkDatabasePackageFiles\r
-            EdkLogger.verbose("Package list bases on: %s" % self.WorkspaceFile)\r
-        else:\r
-            TraversePackage = self.__TraverseAllPackageFiles\r
-            EdkLogger.verbose("Package list in: %s" % self.WorkspaceDir)\r
-\r
-        for FileName in TraversePackage():\r
-            if self.__GetPackageFileInfo(FileName):\r
-                PackageDir = os.path.dirname(FileName)\r
-                EdkLogger.verbose("Find new package directory %s" % PackageDir)\r
-                self.__PackageDirList.append(PackageDir)\r
-                \r
-        self.__PackageGuidInitialized = True\r
-\r
-    ## Initialize module Guids info mapping table\r
-    #\r
-    # Collects all module guids map to module decription file path. This\r
-    # function is invokes on demand to avoid unnecessary directory scan.\r
-    #\r
-    # @param  self           The object pointer\r
-    #\r
-    def __InitializeModuleGuidInfo(self):\r
-        if self.__ModuleGuidInitialized:\r
-            return\r
-        EdkLogger.verbose("Start to collect Module Guids Info")\r
-        \r
-        self.__InitializePackageGuidInfo()\r
-        for FileName in self.__TraverseAllModuleFiles():\r
-            if self.__GetModuleFileInfo(FileName):\r
-                EdkLogger.verbose("Find new module %s" % FileName)\r
-                \r
-        self.__ModuleGuidInitialized = True\r
-\r
-    ## Get Package file path by Package Guid and Version\r
-    #\r
-    # Translates the Package Guid and Version to a file path relative\r
-    # to workspace directory. If no package in current workspace match the\r
-    # input Guid, an empty file path is returned. For now, the version\r
-    # value is simply ignored.\r
-    #\r
-    # @param  self           The object pointer\r
-    # @param  Guid           The Package Guid value to look for\r
-    # @param  Version        The Package Version value to look for\r
-    #\r
-    def ResolvePackageFilePath(self, Guid, Version = ""):\r
-        self.__InitializePackageGuidInfo()\r
-        \r
-        EdkLogger.verbose("Resolve Package Guid '%s'" % Guid)\r
-        FileName = self.__GuidToFilePath.get(Guid.lower(), "")\r
-        if FileName == "":\r
-            EdkLogger.info("Cannot resolve Package Guid '%s'" % Guid)\r
-        else:\r
-            FileName = self.WorkspaceRelativePath(FileName)\r
-            FileName = os.path.splitext(FileName)[0] + ".dec"\r
-            FileName = FileName.replace("\\", "/")\r
-        return FileName\r
-\r
-    ## Get Module file path by Module Guid and Version\r
-    #\r
-    # Translates the Module Guid and Version to a file path relative\r
-    # to workspace directory. If no module in current workspace match the\r
-    # input Guid, an empty file path is returned. For now, the version\r
-    # value is simply ignored.\r
-    #\r
-    # @param  self           The object pointer\r
-    # @param  Guid           The Module Guid value to look for\r
-    # @param  Version        The Module Version value to look for\r
-    #\r
-    def ResolveModuleFilePath(self, Guid, Version = ""):\r
-        self.__InitializeModuleGuidInfo()\r
-        \r
-        EdkLogger.verbose("Resolve Module Guid '%s'" % Guid)\r
-        FileName = self.__GuidToFilePath.get(Guid.lower(), "")\r
-        if FileName == "":\r
-            EdkLogger.info("Cannot resolve Module Guid '%s'" % Guid)\r
-        else:\r
-            FileName = self.WorkspaceRelativePath(FileName)\r
-            FileName = os.path.splitext(FileName)[0] + ".inf"\r
-            FileName = FileName.replace("\\", "/")\r
-        return FileName\r
-\r
-# A global class object of EdkIIWorkspaceGuidsInfo for external reference.\r
-gEdkIIWorkspaceGuidsInfo = EdkIIWorkspaceGuidsInfo()\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    # Test the translation of package Guid.\r
-#    MdePkgGuid = "1E73767F-8F52-4603-AEB4-F29B510B6766"\r
-#    OldMdePkgGuid = "5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"\r
-#    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(MdePkgGuid)\r
-#    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(OldMdePkgGuid)\r
-    \r
-    # Test the translation of module Guid.\r
-#    UefiLibGuid = "3a004ba5-efe0-4a61-9f1a-267a46ae5ba9"\r
-#    UefiDriverModelLibGuid = "52af22ae-9901-4484-8cdc-622dd5838b09"\r
-#    print gEdkIIWorkspaceGuidsInfo.ResolvePlatformFilePath(UefiLibGuid)\r
-#    print gEdkIIWorkspaceGuidsInfo.ResolvePlatformFilePath(UefiDriverModelLibGuid)\r
-    pass
\ No newline at end of file
diff --git a/BaseTools/Source/Python/fpd2dsc/LoadFpd.py b/BaseTools/Source/Python/fpd2dsc/LoadFpd.py
deleted file mode 100644 (file)
index fe271ac..0000000
+++ /dev/null
@@ -1,1039 +0,0 @@
-## @file\r
-# Open an FPD file and load all its contents to a PlatformClass object.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-from CommonDataClass.PlatformClass import *\r
-from CommonDataClass.FdfClass import *\r
-from Common.XmlRoutines import *\r
-from Common.MigrationUtilities import *\r
-from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo\r
-\r
-## Load Platform Header\r
-#\r
-# Read an input Platform XML DOM object and return Platform Header class object\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFpd                An XML DOM object read from FPD file\r
-# @param  FpdFileName           The file path of FPD File\r
-#\r
-# @retvel  PlatformHeader       A new Platform Header object loaded from XmlFpd\r
-#\r
-def LoadPlatformHeader(XmlFpd, FpdFileName):\r
-    PlatformHeader = PlatformHeaderClass()\r
-    \r
-    XmlTag = "PlatformSurfaceArea/PlatformHeader"\r
-    FpdHeader = XmlNode(XmlFpd, XmlTag)\r
-    \r
-    SetIdentification(PlatformHeader, FpdHeader, "PlatformName", FpdFileName)\r
-    SetCommonHeader(PlatformHeader, FpdHeader)\r
-\r
-    XmlTag = "PlatformSurfaceArea/PlatformHeader/Specification"\r
-    List = XmlElement(XmlFpd, XmlTag).split()\r
-    SpecificationName = List[0]\r
-    SpecificationValue = List[1]\r
-    PlatformHeader.Specification = {SpecificationName:SpecificationValue}\r
-    \r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SupportedArchitectures"\r
-    PlatformHeader.SupArchList = XmlElement(XmlFpd, XmlTag).split()\r
-\r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/BuildTargets"\r
-    PlatformHeader.BuildTargets = XmlElement(XmlFpd, XmlTag).split()\r
-\r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/IntermediateDirectories"\r
-    PlatformHeader.IntermediateDirectories = XmlElement(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/OutputDirectory"\r
-    PlatformHeader.OutputDirectory = XmlElement(XmlFpd, XmlTag)\r
-\r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo"\r
-    List = map(LoadSkuId, XmlList(XmlFpd, XmlTag))\r
-    if List != []:\r
-        PlatformHeader.SkuIdName = List[0]\r
-    \r
-    return PlatformHeader\r
-\r
-## Load a Platform SkuId\r
-#\r
-# Read an input Platform XML DOM object and return a list of Platform SkuId\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlPlatformSkuInfo     An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformSkuInfo        A SkuInfo loaded from XmlFpd\r
-#\r
-def LoadPlatformSkuInfo(XmlPlatformSkuInfo):\r
-    XmlTag = "SkuInfo/SkuId"\r
-    SkuInfo = []\r
-    SkuId = XmlElement(XmlPlatformSkuInfo, XmlTag)\r
-    SkuInfo.append(SkuId)\r
-    \r
-    XmlTag = "SkuInfo/Value"\r
-    Value = XmlElement(XmlPlatformSkuInfo, XmlTag)\r
-    SkuInfo.append(Value)\r
-    return SkuInfo\r
-\r
-## Load a Platform SkuId\r
-#\r
-# Read an input Platform XML DOM object and return a list of Platform SkuId\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlSkuInfo     An XML DOM object read from FPD file\r
-#\r
-# @retvel   List           A list of SkuId and SkuValue loaded from XmlFpd\r
-#\r
-def LoadSkuId(XmlSkuInfo):\r
-    XmlTag = "SkuInfo/UiSkuName"\r
-    SkuValue = XmlElement(XmlSkuInfo, XmlTag)\r
-    \r
-    XmlTag = "SkuInfo/UiSkuName"\r
-    List = map(LoadSkuID, XmlList(XmlSkuInfo, XmlTag))\r
-    if List != []:\r
-        SkuID = List[0]\r
-    #SkuID = XmlAttribute(XmlSkuInfo, XmlTag)\r
-    List = []\r
-    List.append(SkuID)\r
-    List.append(SkuValue)\r
-    return List\r
-\r
-def LoadSkuID(XmlUiSkuName):\r
-    XmlTag = "SkuID"\r
-    SkuID = XmlAttribute(XmlUiSkuName, XmlTag)\r
-    return SkuID\r
-\r
-## Load a list of Platform SkuIds\r
-#\r
-# Read an input Platform XML DOM object and return a list of Platform SkuId\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlFpd                 An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformSkuIds         A platform SkuIds object loaded from XmlFpd\r
-#\r
-def LoadPlatformSkuInfos(XmlFpd):\r
-    PlatformSkuIds = SkuInfoListClass()\r
-\r
-    SkuInfoList = []\r
-    \r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo"\r
-    List = map(LoadSkuId, XmlList(XmlFpd, XmlTag))\r
-    SkuInfoList = List\r
-    \r
-    XmlTag = "PlatformSurfaceArea/PlatformDefinitions/SkuInfo/UiSkuName"\r
-    Value = XmlElement(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/DynamicPcdBuildDefinitions/PcdBuildData/SkuInfo"\r
-    # here return a List\r
-    List = map(LoadPlatformSkuInfo, XmlList(XmlFpd, XmlTag))\r
-\r
-    for SkuInfo in List:\r
-        SkuId = SkuInfo[0]\r
-        Value = SkuInfo[1]\r
-\r
-        SkuInfoList.append(SkuInfo)\r
-\r
-    PlatformSkuIds.SkuInfoList = SkuInfoList\r
-\r
-    return PlatformSkuIds\r
-\r
-## Load Platform Module Build Option\r
-#\r
-# Read an input Platform XML DOM object and return Platform Module Build Option class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlModuleBuildOption            An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformBuildOption             A Platform Build Option object loaded from XmlFpd\r
-#\r
-def LoadModuleBuildOption(XmlModuleBuildOption):\r
-    PlatformBuildOption = PlatformBuildOptionClass()\r
-    PlatformBuildOption.UserDefinedAntTasks = {}\r
-    \r
-    XmlTag = "BuildOptions/Options/Option"\r
-    PlatformBuildOption.Options = map(LoadBuildOption, XmlList(XmlModuleBuildOption, XmlTag))\r
-    \r
-    PlatformBuildOption.UserExtensions = {}\r
-    PlatformBuildOption.FfsKeyList = {}\r
-    return PlatformBuildOption\r
-\r
-## Load Platform Module Extern\r
-#\r
-# Read an input Platform XML DOM object and return Platform Module Extern class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlModuleExtern                  An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformModuleExtern             A Platform Module Extern object loaded from XmlFpd\r
-#\r
-def LoadModuleExtern(XmlModuleExtern):\r
-    PlatformModuleExtern = []\r
-    \r
-    XmlTag = "Externs/PcdIsDriver"\r
-    PcdIsDriver = XmlElement(XmlModuleExtern, XmlTag)\r
-    PlatformModuleExtern.append(PcdIsDriver)\r
-    \r
-    XmlTag = "Externs/Specification"\r
-    Specification = XmlElement(XmlModuleExtern, XmlTag)\r
-    PlatformModuleExtern.append(Specification)\r
-    \r
-    XmlTag = "Externs/Extern"\r
-\r
-    return PlatformModuleExtern\r
-\r
-## Load Platform ModuleSaBuildOptions\r
-#\r
-# Read an input Platform XML DOM object and return Platform ModuleSaBuildOptions class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlModuleSaBuildOptions            An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformBuildOptions               A list of Platform ModuleSaBuildOption object loaded from XmlFpd\r
-#\r
-def LoadPlatformModuleSaBuildOption(XmlModuleSA):\r
-    PlatformModuleSaBuildOption = PlatformBuildOptionClasses()\r
-    \r
-    XmlTag = "ModuleSA/ModuleSaBuildOptions/FvBinding"\r
-    PlatformModuleSaBuildOption.FvBinding = XmlElement(XmlModuleSA, XmlTag)\r
-    \r
-    XmlTag = "ModuleSA/ModuleSaBuildOptions/FfsFormatKey"\r
-    PlatformModuleSaBuildOption.FfsFormatKey = XmlElement(XmlModuleSA, XmlTag)\r
-    \r
-    XmlTag = "ModuleSA/ModuleSaBuildOptions/FfsFileNameGuid"\r
-    PlatformModuleSaBuildOption.FfsFileNameGuid = XmlElement(XmlModuleSA, XmlTag)\r
-    \r
-    XmlTag = "ModuleSA/ModuleSaBuildOptions/Options/Option"\r
-    PlatformModuleSaBuildOption.BuildOptionList = map(LoadBuildOption, XmlList(XmlModuleSA, XmlTag))\r
-\r
-    return PlatformModuleSaBuildOption\r
-\r
-## Load a list of Platform Library Classes\r
-#\r
-# Read an input Platform XML DOM object and return a list of Library Classes\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlLibraryInstance       An XML DOM object read from FPD file\r
-#\r
-# @retvel  LibraryInstance         A Library Instance loaded from XmlFpd\r
-#\r
-def LoadPlatformModuleLibraryInstance(XmlLibraryInstance):\r
-    LibraryInstance = []\r
-\r
-    XmlTag = "ModuleGuid"\r
-    ModuleGuid = XmlAttribute(XmlLibraryInstance, XmlTag)\r
-    \r
-    ModulePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(ModuleGuid)\r
-    ModuleMSAFile = ModulePath.replace('.inf', '.msa')\r
-    WorkSpace = os.getenv('WORKSPACE')\r
-    ModuleMSAFileName = os.path.join(WorkSpace, ModuleMSAFile)\r
-    XmlMsa = XmlParseFile(ModuleMSAFileName)\r
-    \r
-    XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass/Keyword"\r
-    Name = XmlElement(XmlMsa, XmlTag)\r
-    LibraryInstance.append(Name)\r
-    LibraryInstance.append(ModulePath)\r
-    \r
-    #XmlTag = "PackageGuid"\r
-    #PackageGuid = XmlAttribute(XmlLibraryInstance, XmlTag)\r
-    #LibraryInstance.append(PackageGuid)\r
-    return LibraryInstance\r
-\r
-## Load a Library Class\r
-#\r
-# Read an input Platform XML DOM object and return a library class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlLibraryClass       An XML DOM object read from FPD file\r
-#\r
-# @retvel   SupModuleList         A Library Class Supported Module List object loaded from XmlFpd\r
-#\r
-def LoadLibraryClassSupModuleList(XmlLibraryClass):\r
-    XmlTag = "Usage"\r
-    Usage = XmlAttribute(XmlLibraryClass, XmlTag)\r
-    if Usage == "ALWAYS_PRODUCED":\r
-        XmlTag = "SupModuleList"\r
-        SupModuleList = XmlAttribute(XmlLibraryClass, XmlTag).split()\r
-        return SupModuleList\r
-        \r
-## Load Platform Library Class\r
-#\r
-# Read an input Platform XML DOM object and return Platform module class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlLibraries             An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformLibraryClass     A Platform Library Class object loaded from XmlFpd\r
-#\r
-def LoadPlatformLibraryClass(XmlPlatformLibraryClass):\r
-    PlatformLibraryInstance = PlatformLibraryClass()\r
-\r
-    XmlTag = "ModuleGuid"\r
-    LibraryInstanceModuleGuid = XmlAttribute(XmlPlatformLibraryClass, XmlTag)\r
-    \r
-    XmlTag = "PackageGuid"\r
-    LibraryInstancePackageGuid = XmlAttribute(XmlPlatformLibraryClass, XmlTag)\r
-    \r
-    LibraryInstancePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(LibraryInstanceModuleGuid)\r
-    \r
-    if LibraryInstancePath != "": # if LibraryInstancePath == "" that's because the module guid cannot be resolved\r
-        PlatformLibraryInstance.FilePath = LibraryInstancePath\r
-        # replace *.inf to *.msa\r
-        LibraryInstanceMSAName = LibraryInstancePath.replace('.inf', '.msa')\r
-        WorkSpace = os.getenv('WORKSPACE')\r
-        LibraryInstanceMSAPath = os.path.join(WorkSpace, LibraryInstanceMSAName)\r
-        \r
-        PlatformLibraryInstance.FilePath = LibraryInstancePath\r
-    \r
-        XmlMsa = XmlParseFile(LibraryInstanceMSAPath)\r
-\r
-        XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleName"\r
-        PlatformLibraryInstance.Name = XmlElement(XmlMsa, XmlTag)\r
-    \r
-        XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleType"\r
-        PlatformLibraryInstance.ModuleType = XmlElement(XmlMsa, XmlTag)\r
-    \r
-        if PlatformLibraryInstance.ModuleType != "BASE":\r
-            XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"\r
-            List = map(LoadLibraryClassSupModuleList, XmlList(XmlMsa, XmlTag))\r
-            if List != []:\r
-                PlatformLibraryInstance.SupModuleList = List[0]\r
-        XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"\r
-        PlatformLibraryInstance.SupArchList = XmlElement(XmlMsa, XmlTag).split()\r
-    \r
-        PlatformLibraryInstance.ModuleGuid = LibraryInstanceModuleGuid\r
-    \r
-        XmlTag = "ModuleSurfaceArea/MsaHeader/Version"\r
-        PlatformLibraryInstance.ModuleVersion = XmlElement(XmlMsa, XmlTag)\r
-    \r
-        PlatformLibraryInstance.PackageGuid = LibraryInstancePackageGuid\r
-        PlatformLibraryInstance.PackageVersion = ''\r
-    \r
-        return PlatformLibraryInstance\r
-\r
-## Load Platform Library Classes\r
-#\r
-# Read an input Platform XML DOM object and return Platform module class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlLibraries             An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformLibraryClasses    A list of Platform Library Class object loaded from XmlFpd\r
-#\r
-def LoadPlatformLibraryClasses(XmlFpd):\r
-    PlatformLibraryInstances = PlatformLibraryClasses()\r
-    PlatformLibraryInstances.LibraryList = []\r
-\r
-    List = []\r
-    XmlTag = "PlatformSurfaceArea/FrameworkModules/ModuleSA/Libraries/Instance"\r
-    List = map(LoadPlatformLibraryClass, XmlList(XmlFpd, XmlTag))\r
-    #List.sort()\r
-    if List == []:\r
-        print "Error"\r
-    else:\r
-        PlatformLibraryInstances.LibraryList = List\r
-    \r
-    return PlatformLibraryInstances\r
-\r
-## Load Platform module\r
-#\r
-# Read an input Platform XML DOM object and return Platform module class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlModuleSA            An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformModule         A Platform module object loaded from XmlFpd\r
-#\r
-def LoadModuleSA(XmlModuleSA):\r
-    PlatformModule = PlatformModuleClass()\r
-\r
-    # three parts: Libraries instances, PcdBuildDefinition, ModuleSaBuildOptions\r
-    XmlTag = "ModuleSA/Libraries/Instance"\r
-\r
-    PlatformModule.LibraryClasses = map(LoadPlatformModuleLibraryInstance, XmlList(XmlModuleSA, XmlTag))\r
-\r
-    XmlTag = "ModuleSA/PcdBuildDefinition/PcdData"\r
-    PlatformModule.PcdBuildDefinitions = map(LoadPlatformPcdData, XmlList(XmlModuleSA, XmlTag))\r
-\r
-    XmlTag = "ModuleSA/ModuleSaBuildOptions"\r
-    PlatformModule.ModuleSaBuildOption = LoadPlatformModuleSaBuildOption(XmlModuleSA)\r
-\r
-    XmlTag = "ModuleSA/BuildOptions"\r
-    PlatformModule.BuildOptions = map(LoadModuleBuildOption, XmlList(XmlModuleSA, XmlTag)) #bugbug fix me\r
-    \r
-    XmlTag = "ModuleSA/Externs"\r
-    PlatformModule.Externs = map(LoadModuleExtern, XmlList(XmlModuleSA, XmlTag)) #bugbug fix me\r
-    \r
-    XmlTag = "SupArchList"\r
-    PlatformModule.SupArchList = XmlAttribute(XmlModuleSA, XmlTag).split()\r
-    \r
-    # the package guid which the module depends on, do not care for now\r
-    XmlTag = "PackageGuid"\r
-    PlatformModule.PackageGuid = XmlAttribute(XmlModuleSA, XmlTag)\r
-\r
-    # the module guid, use this guid to get the module *.msa file and convert it to *.inf file with path\r
-    XmlTag = "ModuleGuid"\r
-    PlatformModule.ModuleGuid = XmlAttribute(XmlModuleSA, XmlTag)\r
-    # use this guid to find the *.msa file path or FilePath $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.msa\r
-    # then convert $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.msa to $(WORKSPACE)/EdkModulePkg/Core/Dxe/DxeMain.inf, it's FilePath\r
-    PlatformModulePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(PlatformModule.ModuleGuid)\r
-\r
-    PlatformModule.FilePath = PlatformModulePath # *.inf file path\r
-    # *.inf back to *.msa\r
-    ModuleMSAFileName = PlatformModulePath.replace('.inf', '.msa')\r
-    WorkSpace = os.getenv('WORKSPACE')\r
-    ModuleMSAFileName = os.path.join(WorkSpace, ModuleMSAFileName)\r
-    # Open this module\r
-    #ModuleMSA = open(ModuleMSAFileName, "r")\r
-    XmlMsa = XmlParseFile(ModuleMSAFileName)\r
-\r
-    XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleName"\r
-    PlatformModule.Name = XmlElement(XmlMsa, XmlTag)     # ModuleName\r
-\r
-    XmlTag = "ModuleSurfaceArea/MsaHeader/ModuleType"\r
-    PlatformModule.ModuleType = XmlElement(XmlMsa, XmlTag)\r
-\r
-    # IA32, X64, IPF and EBC which the module support arch\r
-    #XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"\r
-    #PlatformModule.SupArchList = XmlElement(XmlMsa, XmlTag).split()\r
-\r
-    #XmlTag = "ModuleSurfaceArea/MsaHeader/"\r
-    PlatformModule.Type = ''     #LIBRARY | LIBRARY_CLASS | MODULE, used by dsc. New in DSC spec\r
-\r
-    PlatformModule.ExecFilePath = '' # New in DSC spec\r
-\r
-    XmlTag = "ModuleSurfaceArea/MsaHeader/Specification"\r
-    PlatformModule.Specifications = XmlElement(XmlMsa, XmlTag).split()\r
-\r
-    return PlatformModule\r
-\r
-## Load Platform modules\r
-#\r
-# Read an input Platform XML DOM object and return a list of Platform modules class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlFpd                  An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformModules         A list of Platform modules object loaded from XmlFpd\r
-#\r
-def LoadPlatformModules(XmlFpd):\r
-    PlatformModules = PlatformModuleClasses()\r
-    \r
-    XmlTag = "PlatformSurfaceArea/FrameworkModules/ModuleSA"\r
-    PlatformModules.ModuleList = map(LoadModuleSA, XmlList(XmlFpd, XmlTag))\r
-    \r
-    return PlatformModules\r
-\r
-## Load Platform Flash Definition File\r
-#\r
-# Read an input Platform XML DOM object and return Platform Flash Definition File class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlFpd                              An XML DOM object read from FPD file\r
-# @param    FpdFileName                         The file path of FPD File\r
-#\r
-# @retvel   PlatformFlashDefinitionFile         A new Platform Flash Definition File object loaded from XmlFpd\r
-#\r
-def LoadPlatformFlashDefinitionFile(XmlFpd, FpdFileName):\r
-    PlatformFlashDefinitionFile = PlatformFlashDefinitionFileClass()\r
-    \r
-    XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile"\r
-    PlatformFlashDefinitionFile.FilePath = XmlElement(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/Id"\r
-    PlatformFlashDefinitionFile.Id = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/UiName"\r
-    PlatformFlashDefinitionFile.UiName = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/Flash/FlashDefinitionFile/Preferred"\r
-    PlatformFlashDefinitionFile.Preferred = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    return PlatformFlashDefinitionFile\r
-\r
-## Load Platform User Defined Ant Tasks\r
-#\r
-# Read an input Platform XML DOM object and return platform\r
-# User Defined Ant Tasks contained in the DOM object.\r
-#\r
-# @param   XmlUserDefinedAntTasks   An XML DOM object read from FPD file\r
-#\r
-# @retvel  AntTask                  An Ant Task loaded from XmlFpd\r
-#\r
-def LoadUserDefinedAntTasks(XmlFpd):\r
-    Dict = {}\r
-    AntTask = PlatformAntTaskClass()\r
-\r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/Id"\r
-    AntTask.Id = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/AntCmdOptions"\r
-    AntTask.AntCmdOptions = XmlElement(XmlFpd, XmlTag)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/UserDefinedAntTasks/AntTask/Filename"\r
-    AntTask.FilePath = XmlElement(XmlFpd, XmlTag)\r
-    \r
-    Dict[AntTask.Id] = AntTask\r
-    return Dict\r
-\r
-## Load Platform Build Options\r
-#\r
-# Read an input Platform XML DOM object and return a list of platform\r
-# Build Option contained in the DOM object.\r
-#\r
-# @param   XmlBuildOptions              An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformBuildOptions         A list of platform Build Options loaded from XmlFpd\r
-#\r
-def LoadBuildOptions(XmlBuildOptions):\r
-    XmlTag = "Option"\r
-    return map(LoadBuildOption, XmlList(XmlBuildOptions, XmlTag)) # LoadBuildOption is a method in MigrationUtilities.py\r
-\r
-## Load Platform Build Option\r
-#\r
-# Read an input Platform XML DOM object and return a Build Option\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFpd                      An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformBuildOption         A Build Options loaded from XmlFpd\r
-#\r
-def LoadPlatformBuildOption(XmlBuildOptions):\r
-    PlatformBuildOption = PlatformBuildOptionClass()\r
-    \r
-    # handle UserDefinedAntTasks\r
-    XmlTag = "BuildOptions/UserDefinedAntTasks/AntTask"\r
-    PlatformBuildOption.UserDefinedAntTasks = LoadUserDefinedAntTasks(XmlTag)\r
-    \r
-    # handle Options\r
-    XmlTag = "BuildOptions/Options/Option"\r
-    PlatformBuildOption.Options = map(LoadBuildOption, XmlList(XmlBuildOptions, XmlTag))\r
-    \r
-    # handle UserExtensions\r
-    XmlTag = "BuildOptions/UserExtensions"\r
-    PlatformBuildOption.UserExtensions = LoadUserExtensions(XmlTag) # from MigrationUtilities.py LoadUserExtensions\r
-\r
-    # handle Ffs\r
-    XmlTag = "BuildOptions/Ffs/FfsKey"\r
-    PlatformBuildOption.FfsKeyList = map(LoadPlatformFfs, XmlList(XmlBuildOptions, XmlTag))\r
-\r
-    return PlatformBuildOption\r
-\r
-## Load Platform Ffs Dictionary\r
-#\r
-# Read an input Platform XML DOM object and return a platform Ffs Dictionary\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFpd     An XML DOM object read from FPD file\r
-#\r
-# @retvel  Dict      A platform Ffs Dict loaded from XmlFpd\r
-#\r
-def LoadPlatformFfsDict(XmlFpd):\r
-    Dict = {}\r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/Ffs"\r
-    List = map(LoadPlatformFfs, XmlList(XmlFpd, XmlTag))\r
-    if List != []:\r
-        for Ffs in List:\r
-            Dict[Ffs.Key] = Ffs\r
-    return Dict\r
-\r
-## Load Platform Ffs Section\r
-#\r
-# Read an input Platform XML DOM object and return a platform Ffs Section\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFfs                  An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformFfsSection      A platform Ffs Section loaded from XmlFpd\r
-#\r
-def LoadPlatformFfsSection(XmlFfsSection):\r
-    PlatformFfsSection = PlatformFfsSectionClass()\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.BindingOrder = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.Compressible = ''\r
-    \r
-    XmlTag = "SectionType"\r
-    PlatformFfsSection.SectionType = XmlAttribute(XmlFfsSection, XmlTag)\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.EncapsulationType = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.ToolName = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.Filenames = []\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.Args = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.OutFile = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.OutputFileExtension = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSection.ToolNameElement = ''\r
-    \r
-    return PlatformFfsSection\r
-\r
-## Load Platform Ffs Sections\r
-#\r
-# Read an input Platform XML DOM object and return a platform Ffs Sections\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFfs                   An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformFfsSections      A platform Ffs Sections loaded from XmlFpd\r
-#\r
-def LoadFfsSections():\r
-    PlatformFfsSections = PlatformFfsSectionsClass()\r
-    PlatformFfsSections.BindingOrder = ''\r
-    PlatformFfsSections.Compressible = ''\r
-    PlatformFfsSections.SectionType = ''\r
-    PlatformFfsSections.EncapsulationType = ''\r
-    PlatformFfsSections.ToolName = ''\r
-    PlatformFfsSections.Section = []\r
-    PlatformFfsSections.Sections = []\r
-    \r
-    return PlatformFfsSections\r
-\r
-## Load Platform Ffs Sections\r
-#\r
-# Read an input Platform XML DOM object and return a platform Ffs Sections\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFfs                   An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformFfsSections      A platform Ffs Sections loaded from XmlFpd\r
-#\r
-def LoadPlatformFfsSections(XmlFfsSections):\r
-    PlatformFfsSections = PlatformFfsSectionsClass()\r
-    \r
-    XmlTag = ""\r
-    PlatformFfsSections.BindingOrder = ''\r
-    \r
-    XmlTag = ""\r
-    Compressible = ''\r
-    \r
-    XmlTag = ""\r
-    SectionType = ''\r
-    \r
-    XmlTag = "EncapsulationType"\r
-    EncapsulationType = XmlAttribute(XmlFfsSections, XmlTag)\r
-    \r
-    XmlTag = ""\r
-    ToolName = ''\r
-    \r
-    XmlTag = "Sections/Section"\r
-    Section = []   #[ PlatformFfsSectionClass, ... ]\r
-    Section = map(LoadPlatformFfsSection, XmlList(XmlFfsSections, XmlTag))\r
-    \r
-    \r
-    XmlTag = "Sections/Sections"\r
-    Sections = map(LoadFfsSections, XmlList(XmlFfsSections, XmlTag)) #[ PlatformFfsSectionsClass, ...]\r
-    \r
-    return PlatformFfsSections\r
-\r
-## Load Platform Ffs Attribute\r
-#\r
-# Read an input Platform XML DOM object and return a platform Ffs Attribute\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFfs    An XML DOM object read from FPD file\r
-#\r
-# @retvel  List      A platform Ffs Attribute loaded from XmlFpd\r
-#\r
-def LoadFfsAttribute(XmlFfs):\r
-    List = []\r
-    XmlTag = "Ffs/Attribute"\r
-    for XmlAttr in XmlList(XmlFfs, XmlTag):\r
-        XmlTag = "Name"\r
-        Name = XmlAttribute(XmlAttr, XmlTag)\r
-        XmlTag = "Value"\r
-        Value = XmlAttribute(XmlAttr, XmlTag)\r
-        List.append([Name,Value])\r
-    return List\r
-\r
-## Load a list of Platform Build Options\r
-#\r
-# Read an input Platform XML DOM object and return a list of Build Options\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFfs              An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformFfsKey      A platform Ffs key loaded from XmlFpd\r
-#\r
-def LoadPlatformFfs(XmlFfs):\r
-    PlatformFfs = PlatformFfsClass()\r
-    \r
-    PlatformFfs.Attribute = {}\r
-    Dict = {}\r
-\r
-    List = LoadFfsAttribute(XmlFfs)\r
-    \r
-    XmlTag = "Ffs/Sections/Sections"\r
-    PlatformFfs.Sections = map(LoadPlatformFfsSections, XmlList(XmlFfs, XmlTag)) #[PlatformFfsSectionsClass, ...]\r
-    \r
-    for Item in List:\r
-        Name = Item[0]\r
-        Value = Item[1]\r
-        for Item in PlatformFfs.Sections:\r
-            Dict[(Name, Item)] = Value\r
-    PlatformFfs.Attribute = Dict\r
-    \r
-    XmlTag = "Ffs/FfsKey"\r
-    PlatformFfs.Key = XmlAttribute(XmlFfs, XmlTag)\r
-    \r
-    return PlatformFfs\r
-\r
-## Load a list of Platform Build Options\r
-#\r
-# Read an input Platform XML DOM object and return a list of Build Options\r
-# contained in the DOM object.\r
-#\r
-# @param   XmlFpd                       An XML DOM object read from FPD file\r
-#\r
-# @retvel  PlatformBuildOptions         A list of Build Options loaded from XmlFpd\r
-#\r
-def LoadPlatformBuildOptions(XmlFpd):\r
-    PlatformBuildOptions = PlatformBuildOptionClass()\r
-\r
-    PlatformBuildOptions.UserDefinedAntTasks = LoadUserDefinedAntTasks(XmlFpd)\r
-    \r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/Options/Option"\r
-    PlatformBuildOptions.Options = map(LoadBuildOption, XmlList(XmlFpd, XmlTag))\r
-\r
-    PlatformBuildOptions.UserExtensions = LoadPlatformUserExtension(XmlFpd)\r
-    \r
-    PlatformBuildOptions.FfsKeyList = LoadPlatformFfsDict(XmlFpd)\r
-    \r
-    return PlatformBuildOptions\r
-\r
-## Load Platform Pcd Data\r
-#\r
-# Read an input Platform XML DOM object and return Platform module class object\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlPcd             An XML DOM object read from FPD file\r
-#\r
-# @retvel   PlatformPcdData    A Platform Pcd object loaded from XmlFpd\r
-#\r
-def LoadPlatformPcdData(XmlPcdData):\r
-    PcdData = PcdClass() # defined in CommonDataClass.CommonClass.py\r
-\r
-    XmlTag = "ItemType"\r
-    PcdData.ItemType = XmlAttribute(XmlPcdData, XmlTag) #DYNAMIC\r
-\r
-    XmlTag = "PcdData/C_Name"\r
-    PcdData.C_NAME = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    XmlTag = "PcdData/Token"\r
-    PcdData.Token = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    XmlTag = "PcdData/TokenSpaceGuidCName"\r
-    PcdData.TokenSpaceGuidCName = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    XmlTag = "PcdData/DatumType"\r
-    PcdData.DatumType = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    XmlTag = "PcdData/MaxDatumSize"\r
-    PcdData.MaxDatumSize = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    XmlTag = "PcdData/Value"\r
-    PcdData.Value = XmlElement(XmlPcdData, XmlTag)\r
-    \r
-    return PcdData\r
-\r
-## Load a Platform Pcd Build Data\r
-#\r
-# Read an input Platform XML DOM object and return a list of Pcd Dynamic\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlPcdBuildData        An XML DOM object read from FPD file\r
-#\r
-# @retvel   PcdBuildData           A Platform Pcd Build Data loaded from XmlFpd\r
-#\r
-def LoadPlatformPcdBuildData(XmlPcdBuildData):\r
-    PcdBuildData = PcdClass() # defined in CommonDataClass.CommonClass.py\r
-\r
-    XmlTag = "ItemType"\r
-    PcdBuildData.ItemType = XmlAttribute(XmlPcdBuildData, XmlTag) #DYNAMIC\r
-\r
-    XmlTag = "PcdBuildData/C_Name"\r
-    PcdBuildData.C_NAME = XmlElement(XmlPcdBuildData, XmlTag)\r
-\r
-    XmlTag = "PcdBuildData/Token"\r
-    PcdBuildData.Token = XmlElement(XmlPcdBuildData, XmlTag)\r
-\r
-    XmlTag = "PcdBuildData/TokenSpaceGuidCName"\r
-    PcdBuildData.TokenSpaceGuidCName = XmlElement(XmlPcdBuildData, XmlTag)\r
-\r
-    XmlTag = "PcdBuildData/DatumType"\r
-    PcdBuildData.DatumType = XmlElement(XmlPcdBuildData, XmlTag)\r
-\r
-    XmlTag = "PcdBuildData/MaxDatumSize"\r
-    PcdBuildData.MaxDatumSize = XmlElement(XmlPcdBuildData, XmlTag)\r
-    \r
-    #XmlTag = "PcdBuildData/Value"\r
-    #PcdBuildData.Value = XmlElement(XmlPcdBuildData, XmlTag)\r
-\r
-    return PcdBuildData\r
-\r
-## Load a list of Platform Pcd Dynamic\r
-#\r
-# Read an input Platform XML DOM object and return a list of Pcd Dynamic\r
-# contained in the DOM object.\r
-#\r
-# @param    XmlFpd             An XML DOM object read from FPD file\r
-#\r
-# @retvel   PcdDynamic         A list of Pcd Dynamic loaded from XmlFpd\r
-#\r
-def LoadDynamicPcdBuildDefinitions(XmlFpd):\r
-    DynamicPcdBuildDefinitions = []\r
-    XmlTag = "PlatformSurfaceArea/DynamicPcdBuildDefinitions/PcdBuildData"\r
-    return map(LoadPlatformPcdBuildData, XmlList(XmlFpd, XmlTag))\r
-\r
-## Load a Platform NameValue object\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlNameValue       An XML DOM object read from FPD file\r
-#\r
-# @retvel NameValue          A Platform NameValue object\r
-#\r
-def LoadNameValue(XmlNameValue):\r
-    NameValue = []\r
-    \r
-    XmlTag = "Name"\r
-    Name = XmlAttribute(XmlNameValue, XmlTag)\r
-    NameValue.append(Name)\r
-\r
-    XmlTag = "Value"\r
-    Value = XmlAttribute(XmlNameValue, XmlTag)\r
-    NameValue.append(Value)\r
-    \r
-    return NameValue\r
-\r
-## Load a Platform Fv Image Name object\r
-#\r
-# Read an input Platform XML DOM object and return a platform Fv Image\r
-# Name contained in the DOM object.\r
-#\r
-# @param  XmlFvImageNames       An XML DOM object read from FPD file\r
-#\r
-# @retvel FvImageNames          A Platform Fv Image Name object\r
-#\r
-def LoadFvImageNames(XmlFvImageNames):\r
-    XmlTag = "FvImageNames"\r
-    FvImageNames = XmlElement(XmlFvImageNames, XmlTag)\r
-    return FvImageNames\r
-\r
-## Load a Platform Fv Image option object\r
-#\r
-# Read an input Platform XML DOM object and return a platform Fv Image\r
-# Option contained in the DOM object.\r
-#\r
-# @param  XmlFvImageOptions         An XML DOM object read from FPD file\r
-#\r
-# @retvel PlatformFvImageOption     A Platform Fv Image Option object\r
-#\r
-def LoadFvImageOptions(XmlFvImageOptions):\r
-    PlatformFvImageOption = PlatformFvImageOptionClass()\r
-    \r
-    XmlTag = ""\r
-    PlatformFvImageOption.FvImageOptionName = ''\r
-    \r
-    XmlTag = ""\r
-    PlatformFvImageOption.FvImageOptionValues = []\r
-\r
-    XmlTag = "FvImageOptions/NameValue"\r
-    List = map(LoadNameValue, XmlList(XmlFvImageOptions, XmlTag))\r
-    \r
-    return PlatformFvImageOption\r
-    \r
-## Load a Platform Fv Image object\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFvImage          An XML DOM object read from Fpd file\r
-#\r
-# @retvel PlatformFvImage     A Platform Fv Image object\r
-#\r
-def LoadPlatformFvImage(XmlFvImage):\r
-    PlatformFvImage = PlatformFvImageClass()\r
-\r
-    XmlTag = "Name"\r
-    PlatformFvImage.Name = XmlAttribute(XmlFvImage, XmlTag)\r
-\r
-    XmlTag = "Value"\r
-    PlatformFvImage.Value = XmlAttribute(XmlFvImage, XmlTag)\r
-\r
-    XmlTag = "Type"\r
-    PlatformFvImage.Type = XmlAttribute(XmlFvImage, XmlTag)\r
-\r
-    XmlTag = "FvImage/FvImageNames"\r
-    PlatformFvImage.FvImageNames = map(LoadFvImageNames, XmlList(XmlFvImage, XmlTag))\r
-\r
-    XmlTag = "FvImage/FvImageOptions"\r
-    PlatformFvImage.FvImageOptions = map(LoadFvImageOptions, XmlList(XmlFvImage, XmlTag))\r
-    \r
-    return PlatformFvImage\r
-\r
-## Load a Platform fdf object\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFvImages          An XML DOM object read from FPD file\r
-#\r
-# @retvel PlatformFdf          A Platform fdf object\r
-#\r
-def LoadPlatformFvImages(XmlFvImages):\r
-    List = []\r
-    \r
-    XmlTag = "FvImages/NameValue"\r
-    NameValues = map(LoadNameValue, XmlList(XmlFvImages, XmlTag))\r
-    List.append(NameValues)\r
-    \r
-    XmlTag = "FvImages/FvImage"\r
-    FvImages = map(LoadPlatformFvImage, XmlList(XmlFvImages, XmlTag))\r
-    List.append(FvImages)\r
-    \r
-    XmlTag = "FvImages/FvImageName"\r
-    FvImageNames = map(LoadPlatformFvImageName, XmlList(XmlFvImages, XmlTag))\r
-    List.append(FvImageNames)\r
-    \r
-    return List\r
-\r
-## Load a Platform Fv Image Name object\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFvImageName        An XML DOM object read from FPD file\r
-#\r
-# @retvel PlatformFvImageName   A Platform Fv Image Name object\r
-#\r
-def LoadPlatformFvImageName(XmlFvImageName):\r
-    PlatformFvImageName = PlatformFvImageNameClass()\r
-\r
-    XmlTag = "Name"\r
-    PlatformFvImageName.Name = XmlAttribute(XmlFvImageName, XmlTag)\r
-    \r
-    XmlTag = "Type"\r
-    PlatformFvImageName.Type = XmlAttribute(XmlFvImageName, XmlTag)\r
-    \r
-    XmlTag = "FvImageOptions"\r
-    PlatformFvImageName.FvImageOptions = map(LoadFvImageOptions, XmlList(XmlFvImageName, XmlTag))\r
-    \r
-    return PlatformFvImageName\r
-    \r
-## Load a list of Platform fdf objects\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFpd                An XML DOM object read from FPD file\r
-#\r
-# @retvel PlatformFdfs          A list of Platform fdf object\r
-#\r
-def LoadPlatformFdfs(XmlFpd):\r
-    PlatformFvImages = PlatformFvImagesClass()\r
-\r
-    XmlTag = "PlatformSurfaceArea/Flash/FvImages"\r
-    PlatformFvImages.FvImages = map(LoadPlatformFvImages, XmlList(XmlFpd, XmlTag))\r
-\r
-    return PlatformFvImages\r
-\r
-## Load a Platform User Extensions\r
-#\r
-# Read an input Platform XML DOM object and return an User Extension\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlUserExtension             An XML DOM object read from FPD file\r
-#\r
-# @retvel PlatformUserExtensions       A platform User Extension loaded from XmlFpd\r
-#\r
-def LoadPlatformUserExtension(XmlFpd):\r
-    Dict = {}\r
-    \r
-    PlatformUserExtensions = UserExtensionsClass()\r
-\r
-    XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions"\r
-    List = map(LoadUserExtensions, XmlList(XmlFpd, XmlTag))\r
-    if List != []:\r
-        for Item in List:\r
-            UserID = Item.UserID\r
-            Identifier = Item.Identifier\r
-            Dict[(UserID, Identifier)] = Item\r
-    #XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions/UserID"\r
-    #PlatformUserExtensions.UserID = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    #XmlTag = "PlatformSurfaceArea/BuildOptions/UserExtensions/Identifier"\r
-    #PlatformUserExtensions.Identifier = XmlAttribute(XmlFpd, XmlTag)\r
-    \r
-    #PlatformUserExtensions.Content = XmlElementData(XmlFpd)\r
-    #Dict[(PlatformUserExtensions.UserID,PlatformUserExtensions.Identifier)] = PlatformUserExtensions\r
-    #return PlatformUserExtensions\r
-    return Dict\r
-\r
-## Load a list of Platform User Extensions\r
-#\r
-# Read an input Platform XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFpd               An XML DOM object read from FPD file\r
-#\r
-# @retvel UserExtensions       A list of platform User Extensions loaded from XmlFpd\r
-#\r
-def LoadPlatformUserExtensions(XmlFpd):\r
-    XmlTag = "PlatformSurfaceArea/UserExtensions"\r
-    return map(LoadUserExtensions, XmlList(XmlFpd, XmlTag)) # from MigrationUtilities.py LoadUserExtensions\r
-\r
-## Load a new Platform class object\r
-#\r
-# Read an input FPD File and return a new Platform class Object.\r
-#\r
-# @param   FpdFileName              An XML DOM object read from FPD file\r
-#\r
-# @retvel  Platform                 A new Platform class object loaded from FPD File\r
-#\r
-def LoadFpd(FpdFileName):\r
-    XmlFpd = XmlParseFile(FpdFileName)\r
-    EdkLogger.verbose("Load FPD File: %s" % FpdFileName)\r
-    \r
-    Platform = PlatformClass()\r
-    Platform.Header = LoadPlatformHeader(XmlFpd, FpdFileName)\r
-    Platform.SkuInfos = LoadPlatformSkuInfos(XmlFpd)\r
-    Platform.Libraries = [] #New in dsc spec, do not handle for now\r
-    Platform.LibraryClasses = LoadPlatformLibraryClasses(XmlFpd)\r
-    Platform.Modules = LoadPlatformModules(XmlFpd)\r
-    Platform.FlashDefinitionFile = LoadPlatformFlashDefinitionFile(XmlFpd, FpdFileName)\r
-    Platform.BuildOptions = LoadPlatformBuildOptions(XmlFpd)\r
-    Platform.DynamicPcdBuildDefinitions = LoadDynamicPcdBuildDefinitions(XmlFpd)\r
-    Platform.Fdf = LoadPlatformFdfs(XmlFpd)\r
-    Platform.UserExtensions = LoadPlatformUserExtensions(XmlFpd)\r
-\r
-    return Platform\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass
\ No newline at end of file
diff --git a/BaseTools/Source/Python/fpd2dsc/MigrationUtilities.py b/BaseTools/Source/Python/fpd2dsc/MigrationUtilities.py
deleted file mode 100644 (file)
index 8e360b9..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-## @file\r
-# Contains several utilitities shared by migration tools.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-import re\r
-import EdkLogger\r
-from optparse import OptionParser\r
-from Common.BuildToolError import *\r
-from XmlRoutines import *\r
-from CommonDataClass.CommonClass import *\r
-\r
-## Set all fields of CommonClass object.\r
-#\r
-# Set all attributes of CommonClass object from XML Dom object of XmlCommon.\r
-#\r
-# @param  Common     The destine CommonClass object.\r
-# @param  XmlCommon  The source XML Dom object.\r
-#\r
-def SetCommon(Common, XmlCommon):\r
-    XmlTag = "Usage"\r
-    Common.Usage = XmlAttribute(XmlCommon, XmlTag).split()\r
-\r
-    XmlTag = "FeatureFlag"\r
-    Common.FeatureFlag = XmlAttribute(XmlCommon, XmlTag)\r
-    \r
-    XmlTag = "SupArchList"\r
-    Common.SupArchList = XmlAttribute(XmlCommon, XmlTag).split()\r
-    \r
-    XmlTag = XmlNodeName(XmlCommon) + "/" + "HelpText"\r
-    Common.HelpText = XmlElement(XmlCommon, XmlTag)\r
-\r
-\r
-## Set some fields of CommonHeaderClass object.\r
-#\r
-# Set Name, Guid, FileName and FullPath fields of CommonHeaderClass object from\r
-# XML Dom object of XmlCommonHeader, NameTag and FileName.\r
-#\r
-# @param  CommonHeader       The destine CommonClass object.\r
-# @param  XmlCommonHeader    The source XML Dom object.\r
-# @param  NameTag            The name tag in XML Dom object.\r
-# @param  FileName           The file name of the XML file.\r
-#\r
-def SetIdentification(CommonHeader, XmlCommonHeader, NameTag, FileName):\r
-    XmlParentTag = XmlNodeName(XmlCommonHeader)\r
-    \r
-    XmlTag = XmlParentTag + "/" + NameTag\r
-    CommonHeader.Name = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParentTag + "/" + "GuidValue"\r
-    CommonHeader.Guid = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParentTag + "/" + "Version"\r
-    CommonHeader.Version = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    CommonHeader.FileName = os.path.basename(FileName)\r
-    CommonHeader.FullPath = os.path.abspath(FileName)\r
-\r
-\r
-## Regular expression to match specification and value.\r
-mReSpecification = re.compile(r"(?P<Specification>\w+)\s+(?P<Value>\w*)")\r
-\r
-## Add specification to specification dictionary.\r
-#\r
-# Abstract specification name, value pair from Specification String and add them\r
-# to specification dictionary.\r
-#\r
-# @param  SpecificationDict   The destine Specification dictionary.\r
-# @param  SpecificationString The source Specification String from which the\r
-#                             specification name and value pair is abstracted.\r
-#\r
-def AddToSpecificationDict(SpecificationDict, SpecificationString):\r
-    """Abstract specification name, value pair from Specification String"""\r
-    for SpecificationMatch in mReSpecification.finditer(SpecificationString):\r
-        Specification = SpecificationMatch.group("Specification")\r
-        Value = SpecificationMatch.group("Value")\r
-        SpecificationDict[Specification] = Value\r
-\r
-## Set all fields of CommonHeaderClass object.\r
-#\r
-# Set all attributes of CommonHeaderClass object from XML Dom object of\r
-# XmlCommonHeader, NameTag and FileName.\r
-#\r
-# @param  CommonHeader       The destine CommonClass object.\r
-# @param  XmlCommonHeader    The source XML Dom object.\r
-# @param  NameTag            The name tag in XML Dom object.\r
-# @param  FileName           The file name of the XML file.\r
-#\r
-def SetCommonHeader(CommonHeader, XmlCommonHeader):\r
-    """Set all attributes of CommonHeaderClass object from XmlCommonHeader"""\r
-    XmlParent = XmlNodeName(XmlCommonHeader)\r
-    \r
-    XmlTag = XmlParent + "/" + "Abstract"\r
-    CommonHeader.Abstract = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParent + "/" + "Description"\r
-    CommonHeader.Description = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParent + "/" + "Copyright"\r
-    CommonHeader.Copyright = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParent + "/" + "License"\r
-    CommonHeader.License = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    XmlTag = XmlParent + "/" + "Specification"\r
-    Specification = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-    AddToSpecificationDict(CommonHeader.Specification, Specification)\r
-\r
-    XmlTag = XmlParent + "/" + "ModuleType"\r
-    CommonHeader.ModuleType = XmlElement(XmlCommonHeader, XmlTag)\r
-\r
-\r
-## Load a new Cloned Record class object.\r
-#\r
-# Read an input XML ClonedRecord DOM object and return an object of Cloned Record\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlCloned            A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel ClonedRecord         A new Cloned Record object created by XmlCloned.\r
-#\r
-def LoadClonedRecord(XmlCloned):\r
-    ClonedRecord = ClonedRecordClass()\r
-\r
-    XmlTag = "Id"\r
-    ClonedRecord.Id = int(XmlAttribute(XmlCloned, XmlTag))\r
-\r
-    XmlTag = "FarGuid"\r
-    ClonedRecord.FarGuid = XmlAttribute(XmlCloned, XmlTag)\r
-\r
-    XmlTag = "Cloned/PackageGuid"\r
-    ClonedRecord.PackageGuid = XmlElement(XmlCloned, XmlTag)\r
-    \r
-    XmlTag = "Cloned/PackageVersion"\r
-    ClonedRecord.PackageVersion = XmlElement(XmlCloned, XmlTag)\r
-    \r
-    XmlTag = "Cloned/ModuleGuid"\r
-    ClonedRecord.ModuleGuid = XmlElement(XmlCloned, XmlTag)\r
-    \r
-    XmlTag = "Cloned/ModuleVersion"\r
-    ClonedRecord.ModuleVersion = XmlElement(XmlCloned, XmlTag)\r
-    \r
-    return ClonedRecord\r
-\r
-\r
-## Load a new Guid/Protocol/Ppi common class object.\r
-#\r
-# Read an input XML Guid/Protocol/Ppi DOM object and return an object of\r
-# Guid/Protocol/Ppi contained in the DOM object.\r
-#\r
-# @param  XmlGuidProtocolPpiCommon A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel GuidProtocolPpiCommon    A new GuidProtocolPpiCommon class object\r
-#                                  created by XmlGuidProtocolPpiCommon.\r
-#\r
-def LoadGuidProtocolPpiCommon(XmlGuidProtocolPpiCommon):\r
-    GuidProtocolPpiCommon = GuidProtocolPpiCommonClass()\r
-    \r
-    XmlTag = "Name"\r
-    GuidProtocolPpiCommon.Name = XmlAttribute(XmlGuidProtocolPpiCommon, XmlTag)\r
-\r
-    XmlParent = XmlNodeName(XmlGuidProtocolPpiCommon)\r
-    if XmlParent == "Entry":\r
-        XmlTag = "%s/C_Name" % XmlParent\r
-    elif XmlParent == "GuidCNames":\r
-        XmlTag = "%s/GuidCName" % XmlParent\r
-    else:\r
-        XmlTag = "%s/%sCName" % (XmlParent, XmlParent)\r
-        \r
-    GuidProtocolPpiCommon.CName = XmlElement(XmlGuidProtocolPpiCommon, XmlTag)\r
-    \r
-    XmlTag = XmlParent + "/" + "GuidValue"\r
-    GuidProtocolPpiCommon.Guid = XmlElement(XmlGuidProtocolPpiCommon, XmlTag)\r
-    \r
-    if XmlParent.endswith("Notify"):\r
-        GuidProtocolPpiCommon.Notify = True\r
-\r
-    XmlTag = "GuidTypeList"\r
-    GuidTypes = XmlAttribute(XmlGuidProtocolPpiCommon, XmlTag)\r
-    GuidProtocolPpiCommon.GuidTypeList = GuidTypes.split()\r
-    \r
-    XmlTag = "SupModuleList"\r
-    SupModules = XmlAttribute(XmlGuidProtocolPpiCommon, XmlTag)\r
-    GuidProtocolPpiCommon.SupModuleList = SupModules.split()\r
-\r
-    SetCommon(GuidProtocolPpiCommon, XmlGuidProtocolPpiCommon)\r
-\r
-    return GuidProtocolPpiCommon\r
-\r
-\r
-## Load a new Pcd class object.\r
-#\r
-# Read an input XML Pcd DOM object and return an object of Pcd\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlPcd               A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel Pcd                  A new Pcd object created by XmlPcd.\r
-#\r
-def LoadPcd(XmlPcd):\r
-    """Return a new PcdClass object equivalent to XmlPcd"""\r
-    Pcd = PcdClass()\r
-\r
-    XmlTag = "PcdEntry/C_Name"\r
-    Pcd.CName = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/Token"\r
-    Pcd.Token = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/TokenSpaceGuidCName"\r
-    Pcd.TokenSpaceGuidCName = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/DatumType"\r
-    Pcd.DatumType = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/MaxDatumSize"\r
-    Pcd.MaxDatumSize = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/DefaultValue"\r
-    Pcd.DefaultValue = XmlElement(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdItemType"\r
-    Pcd.ItemType = XmlAttribute(XmlPcd, XmlTag)\r
-\r
-    XmlTag = "PcdEntry/ValidUsage"\r
-    Pcd.ValidUsage = XmlElement(XmlPcd, XmlTag).split()\r
-\r
-    XmlTag = "SupModuleList"\r
-    Pcd.SupModuleList = XmlAttribute(XmlPcd, XmlTag).split()\r
-\r
-    SetCommon(Pcd, XmlPcd)\r
-\r
-    return Pcd\r
-\r
-\r
-## Load a new LibraryClass class object.\r
-#\r
-# Read an input XML LibraryClass DOM object and return an object of LibraryClass\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlLibraryClass    A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel LibraryClass       A new LibraryClass object created by XmlLibraryClass.\r
-#\r
-def LoadLibraryClass(XmlLibraryClass):\r
-    LibraryClass = LibraryClassClass()\r
-\r
-    XmlTag = "LibraryClass/Keyword"\r
-    LibraryClass.LibraryClass = XmlElement(XmlLibraryClass, XmlTag)\r
-    if LibraryClass.LibraryClass == "":\r
-        XmlTag = "Name"\r
-        LibraryClass.LibraryClass = XmlAttribute(XmlLibraryClass, XmlTag)\r
-    \r
-    XmlTag = "LibraryClass/IncludeHeader"\r
-    LibraryClass.IncludeHeader = XmlElement(XmlLibraryClass, XmlTag)\r
-    \r
-    XmlTag = "RecommendedInstanceVersion"\r
-    RecommendedInstanceVersion = XmlAttribute(XmlLibraryClass, XmlTag)\r
-    LibraryClass.RecommendedInstanceVersion = RecommendedInstanceVersion\r
-    \r
-    XmlTag = "RecommendedInstanceGuid"\r
-    RecommendedInstanceGuid = XmlAttribute(XmlLibraryClass, XmlTag)\r
-    LibraryClass.RecommendedInstanceGuid = RecommendedInstanceGuid\r
-    \r
-    XmlTag = "SupModuleList"\r
-    SupModules = XmlAttribute(XmlLibraryClass, XmlTag)\r
-    LibraryClass.SupModuleList = SupModules.split()\r
-    \r
-    SetCommon(LibraryClass, XmlLibraryClass)\r
-    \r
-    return LibraryClass\r
-\r
-\r
-## Load a new Build Option class object.\r
-#\r
-# Read an input XML BuildOption DOM object and return an object of Build Option\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlBuildOption       A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel BuildOption          A new Build Option object created by XmlBuildOption.\r
-#\r
-def LoadBuildOption(XmlBuildOption):\r
-    """Return a new BuildOptionClass object equivalent to XmlBuildOption"""\r
-    BuildOption = BuildOptionClass()\r
-    \r
-    BuildOption.Option = XmlElementData(XmlBuildOption)\r
-\r
-    XmlTag = "BuildTargets"\r
-    BuildOption.BuildTargetList = XmlAttribute(XmlBuildOption, XmlTag).split()\r
-    \r
-    XmlTag = "ToolChainFamily"\r
-    BuildOption.ToolChainFamily = XmlAttribute(XmlBuildOption, XmlTag)\r
-    \r
-    XmlTag = "TagName"\r
-    BuildOption.TagName = XmlAttribute(XmlBuildOption, XmlTag)\r
-    \r
-    XmlTag = "ToolCode"\r
-    BuildOption.ToolCode = XmlAttribute(XmlBuildOption, XmlTag)\r
-    \r
-    XmlTag = "SupArchList"\r
-    BuildOption.SupArchList = XmlAttribute(XmlBuildOption, XmlTag).split()\r
-    \r
-    return BuildOption\r
-\r
-\r
-## Load a new User Extensions class object.\r
-#\r
-# Read an input XML UserExtensions DOM object and return an object of User\r
-# Extensions contained in the DOM object.\r
-#\r
-# @param  XmlUserExtensions    A child XML DOM object in a Common XML DOM.\r
-#\r
-# @retvel UserExtensions       A new User Extensions object created by\r
-#                              XmlUserExtensions.\r
-#\r
-def LoadUserExtensions(XmlUserExtensions):\r
-    UserExtensions = UserExtensionsClass()\r
-    \r
-    XmlTag = "UserId"\r
-    UserExtensions.UserID = XmlAttribute(XmlUserExtensions, XmlTag)\r
-    \r
-    XmlTag = "Identifier"\r
-    UserExtensions.Identifier = XmlAttribute(XmlUserExtensions, XmlTag)\r
-    \r
-    UserExtensions.Content = XmlElementData(XmlUserExtensions)\r
-    \r
-    return UserExtensions\r
-\r
-\r
-## Store content to a text file object.\r
-#\r
-# Write some text file content to a text file object. The contents may echo\r
-# in screen in a verbose way.\r
-#\r
-# @param  TextFile           The text file object.\r
-# @param  Content            The string object to be written to a text file.\r
-#\r
-def StoreTextFile(TextFile, Content):\r
-    EdkLogger.verbose(Content)\r
-    TextFile.write(Content)\r
-\r
-\r
-## Add item to a section.\r
-#\r
-# Add an Item with specific CPU architecture to section dictionary.\r
-# The possible duplication is ensured to be removed.\r
-#\r
-# @param  Section            Section dictionary indexed by CPU architecture.\r
-# @param  Arch               CPU architecture: Ia32, X64, Ipf, Ebc or Common.\r
-# @param  Item               The Item to be added to section dictionary.\r
-#\r
-def AddToSection(Section, Arch, Item):\r
-    SectionArch = Section.get(Arch, [])\r
-    if Item not in SectionArch:\r
-        SectionArch.append(Item)\r
-        Section[Arch] = SectionArch\r
-\r
-\r
-## Get section contents.\r
-#\r
-# Return the content of section named SectionName.\r
-# the contents is based on Methods and ObjectLists.\r
-#\r
-# @param  SectionName        The name of the section.\r
-# @param  Method             A function returning a string item of an object.\r
-# @param  ObjectList         The list of object.\r
-#\r
-# @retval Section            The string content of a section.\r
-#\r
-def GetSection(SectionName, Method, ObjectList):\r
-    SupportedArches = ["common", "Ia32", "X64", "Ipf", "Ebc"]\r
-    SectionDict = {}\r
-    for Object in ObjectList:\r
-        Item = Method(Object)\r
-        if Item == "":\r
-            continue\r
-        Item = "  %s" % Item\r
-        Arches = Object.SupArchList\r
-        if len(Arches) == 0:\r
-            AddToSection(SectionDict, "common", Item)\r
-        else:\r
-            for Arch in SupportedArches:\r
-                if Arch.upper() in Arches:\r
-                    AddToSection(SectionDict, Arch, Item)\r
-\r
-    Section = ""\r
-    for Arch in SupportedArches:\r
-        SectionArch = "\n".join(SectionDict.get(Arch, []))\r
-        if SectionArch != "":\r
-            Section += "[%s.%s]\n%s\n" % (SectionName, Arch, SectionArch)\r
-            Section += "\n"\r
-    if Section != "":\r
-        Section += "\n"\r
-    return Section\r
-\r
-\r
-## Store file header to a text file.\r
-#\r
-# Write standard file header to a text file. The content includes copyright,\r
-# abstract, description and license extracted from CommonHeader class object.\r
-#\r
-# @param  TextFile           The text file object.\r
-# @param  CommonHeader       The source CommonHeader class object.\r
-#\r
-def StoreHeader(TextFile, CommonHeader):\r
-    CopyRight = CommonHeader.Copyright\r
-    Abstract = CommonHeader.Abstract\r
-    Description = CommonHeader.Description\r
-    License = CommonHeader.License\r
-\r
-    Header =  "#/** @file\n#\n"\r
-    Header += "# " + Abstract + "\n#\n"\r
-    Header += "# " + Description.strip().replace("\n", "\n# ") + "\n"\r
-    Header += "# " + CopyRight + "\n#\n"\r
-    Header += "#  " + License.replace("\n", "\n# ").replace("  ", " ")\r
-    Header += "\n#\n#**/\n\n"\r
-\r
-    StoreTextFile(TextFile, Header)\r
-\r
-## Store file header to a text file.\r
-#\r
-# Write Defines section to a text file. DefinesTupleList determines the content.\r
-#\r
-# @param  TextFile           The text file object.\r
-# @param  DefinesTupleList   The list of (Tag, Value) to be added as one item.\r
-#\r
-def StoreDefinesSection(TextFile, DefinesTupleList):\r
-    Section = "[Defines]\n"\r
-    for DefineItem in DefinesTupleList:\r
-        Section += "  %-30s = %s\n" % DefineItem\r
-\r
-    Section += "\n\n"\r
-    StoreTextFile(TextFile, Section)\r
-\r
-\r
-## Add item to PCD dictionary.\r
-#\r
-# Add an PcdClass object to PCD dictionary. The key is generated from\r
-# PcdItemType.\r
-#\r
-# @param  PcdDict            PCD dictionary indexed by Pcd Item Type.\r
-# @param  Arch               CPU architecture: Ia32, X64, Ipf, Ebc or Common.\r
-# @param  Item               The Item to be added to section dictionary.\r
-#\r
-def AddToPcdsDict(PcdDict, PcdItemType, PcdCode):\r
-    PcdSectionName = PcdItemType\r
-    PcdSectionName = PcdSectionName.title()\r
-    PcdSectionName = PcdSectionName.replace("_", "")\r
-    PcdSectionName = "Pcds" + PcdSectionName\r
-    PcdDict.setdefault(PcdSectionName, []).append(PcdCode)\r
-\r
-## Regular expression to match an equation.\r
-mReEquation = re.compile(r"\s*(\S+)\s*=\s*(\S*)\s*")\r
-\r
-## Return a value tuple matching information in a text fle.\r
-#\r
-# Parse the text file and return a value tuple corresponding to an input tag\r
-# tuple. In case of any error, an tuple of empty strings is returned.\r
-#\r
-# @param  FileName           The file name of the text file.\r
-# @param  TagTuple           A tuple of tags as the key to the value.\r
-#\r
-# @param  ValueTupe          The returned tuple corresponding to the tag tuple.\r
-#\r
-def GetTextFileInfo(FileName, TagTuple):\r
-    ValueTuple = [""] * len(TagTuple)\r
-    try:\r
-        for Line in open(FileName):\r
-            Line = Line.split("#", 1)[0]\r
-            MatchEquation = mReEquation.match(Line)\r
-            if MatchEquation:\r
-                Tag = MatchEquation.group(1).upper()\r
-                Value = MatchEquation.group(2)\r
-                for Index in range(len(TagTuple)):\r
-                    if TagTuple[Index] == Tag:\r
-                        ValueTuple[Index] = Value\r
-    except:\r
-        EdkLogger.info("IO Error in reading file %s" % FileName)\r
-        \r
-    return ValueTuple\r
-\r
-## Return a value tuple matching information in an XML fle.\r
-#\r
-# Parse the XML file and return a value tuple corresponding to an input tag\r
-# tuple. In case of any error, an tuple of empty strings is returned.\r
-#\r
-# @param  FileName           The file name of the XML file.\r
-# @param  TagTuple           A tuple of tags as the key to the value.\r
-#\r
-# @param  ValueTupe          The returned tuple corresponding to the tag tuple.\r
-#\r
-def GetXmlFileInfo(FileName, TagTuple):\r
-    XmlDom = XmlParseFile(FileName)\r
-    return tuple([XmlElement(XmlDom, XmlTag) for XmlTag in TagTuple])\r
-\r
-# Version and Copyright\r
-__version_number__ = "1.0"\r
-__version__ = "%prog Version " + __version_number__\r
-__copyright__ = "Copyright (c) 2007, Intel Corporation. All rights reserved."\r
-\r
-## Parse migration command line options\r
-#\r
-# Use standard Python module optparse to parse command line option of this tool.\r
-#\r
-# @param  Source             The source file type.\r
-# @param  Destinate          The destinate file type.\r
-#\r
-# @retval Options            A optparse object containing the parsed options.\r
-# @retval InputFile          Path of an source file to be migrated.\r
-#\r
-def MigrationOptionParser(Source, Destinate):\r
-    # use clearer usage to override default usage message\r
-    UsageString = "%prog [-a] [-o <output_file>] <input_file>"\r
-\r
-    Parser = OptionParser(description=__copyright__, version=__version__, usage=UsageString)\r
-\r
-    HelpText = "The name of the %s file to be created." % Destinate\r
-    Parser.add_option("-o", "--output", dest="OutputFile", help=HelpText)\r
-    \r
-    HelpText = "Automatically create the %s file using the name of the %s file and replacing file extension" % (Source, Destinate)\r
-    Parser.add_option("-a", "--auto", dest="AutoWrite", action="store_true", default=False, help=HelpText)\r
-\r
-    Options, Args = Parser.parse_args()\r
-\r
-    # error check\r
-    if len(Args) == 0:\r
-        raise MigrationError(OPTION_MISSING, name="Input file", usage=Parser.get_usage())\r
-    if len(Args) > 1:\r
-        raise MigrationError(OPTION_NOT_SUPPORTED, name="Too many input files", usage=Parser.get_usage())\r
-\r
-    InputFile = Args[0]\r
-    if not os.path.exists(InputFile):\r
-        raise MigrationError(FILE_NOT_FOUND, name=InputFile)\r
-\r
-    if Options.OutputFile:\r
-        if Options.AutoWrite:\r
-            raise MigrationError(OPTION_CONFLICT, arg1="-o", arg2="-a", usage=Parser.get_usage())\r
-    else:\r
-        if Options.AutoWrite:\r
-            Options.OutputFile = os.path.splitext(InputFile)[0] + "." + Destinate.lower()\r
-        else:\r
-            raise MigrationError(OPTION_MISSING, name="-o", usage=Parser.get_usage())\r
-\r
-    return Options, InputFile\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass\r
diff --git a/BaseTools/Source/Python/fpd2dsc/StoreDsc.py b/BaseTools/Source/Python/fpd2dsc/StoreDsc.py
deleted file mode 100644 (file)
index f8123a2..0000000
+++ /dev/null
@@ -1,765 +0,0 @@
-## @file\r
-# Store a Platform class object to an INF file.\r
-#\r
-# Copyright (c) 2007 - 2009, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-from LoadFpd import LoadFpd\r
-from CommonDataClass.PlatformClass import *\r
-from CommonDataClass.FdfClass import *\r
-from Common.MigrationUtilities import *\r
-from Common.ToolDefClassObject import *\r
-from Common.TargetTxtClassObject import *\r
-\r
-## Store Defines section\r
-#\r
-# Write [Defines] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Defines section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformDefinesSection(DscFile, Platform):\r
-    PlatformHeader = Platform.Header\r
-    \r
-    DefinesTupleList = []\r
-    \r
-    if PlatformHeader.Name != "":\r
-        DefinesTupleList.append(("PLATFORM_NAME", PlatformHeader.Name))\r
-\r
-    if PlatformHeader.Guid != "":\r
-        DefinesTupleList.append(("PLATFORM_GUID", PlatformHeader.Guid))\r
-\r
-    if PlatformHeader.Version != "":\r
-        DefinesTupleList.append(("PLATFORM_VERSION", PlatformHeader.Version))\r
-    for key in PlatformHeader.Specification.keys():\r
-        SpecificationValue = PlatformHeader.Specification.get(key)\r
-        DefinesTupleList.append(("DSC_ SPECIFICATION", SpecificationValue))\r
-    \r
-    if PlatformHeader.OutputDirectory != "":\r
-        DefinesTupleList.append(("OUTPUT_DIRECTORY", PlatformHeader.OutputDirectory))\r
-\r
-    if PlatformHeader.SupArchList != "":\r
-        String = "|".join(PlatformHeader.SupArchList)\r
-        DefinesTupleList.append(("SUPPORTED_ARCHITECTURES", String))\r
-\r
-    if PlatformHeader.BuildTargets != "":\r
-        String = "|".join(PlatformHeader.BuildTargets)\r
-        DefinesTupleList.append(("BUILD_TARGETS", String))\r
-\r
-    if PlatformHeader.SkuIdName != "":\r
-        #DefinesTupleList.append(("SKUID_IDENTIFIER", PlatformHeader.SkuIdName))\r
-        String = "|".join(PlatformHeader.SkuIdName)\r
-        if String != "":\r
-            DefinesTupleList.append(("SKUID_IDENTIFIER", String))\r
-        \r
-       String = Platform.FlashDefinitionFile.FilePath\r
-       if String != "":\r
-           DefinesTupleList.append(("FLASH_DEFINITION", String))\r
-\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Defines Section - statements that will be processed to create a Makefile.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    Section = "\n".join(List)\r
-    Section += "\n"\r
-    StoreTextFile(DscFile, Section)\r
-    \r
-    StoreDefinesSection(DscFile, DefinesTupleList)\r
-\r
-## Store SkuIds section\r
-#\r
-# Write [SkuIds] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Library Classes section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformSkuIdsSection(DscFile, Platform):\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# SKU Identification section - list of all SKU IDs supported by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    Section = "\n".join(List)\r
-    Section += "\n"\r
-    \r
-    Section += "[SkuIds]" + '\n'\r
-    \r
-    List = Platform.SkuInfos.SkuInfoList\r
-    for Item in List:\r
-        Section = Section + "%s" % Item[0] + '|' + "%s" % Item[1] + '\n'\r
-    Section = Section + '\n'\r
-    \r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Store Build Options section\r
-#\r
-# Write [BuildOptions] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Build Options section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformBuildOptionsSection(DscFile, Platform):\r
-    # which is from tools_def.txt\r
-    StandardBuildTargets = ["DEBUG", "RELEASE"]\r
-    SupportedArches = ["COMMON", "IA32", "X64", "IPF", "EBC", "ARM"]\r
-    Target = TargetTxtClassObject()\r
-    WorkSpace = os.getenv('WORKSPACE')\r
-    Target.LoadTargetTxtFile(WorkSpace + '\\Conf\\target.txt')\r
-    ToolDef = ToolDefClassObject()\r
-    ToolDef.LoadToolDefFile(WorkSpace + '\\' + Target.TargetTxtDictionary[DataType.TAB_TAT_DEFINES_TOOL_CHAIN_CONF])\r
-    # Now we have got ToolDef object\r
-    #ToolDef.ToolsDefTxtDictionary\r
-    Dict = ToolDef.ToolsDefTxtDatabase\r
-\r
-    Dict1 = ToolDef.ToolsDefTxtDictionary # we care the info in this Dict\r
-    #\r
-    # We only support *(DEBUG/RELEASE) and *(All Arch: IA32, X64, IPF and EBC) for now\r
-    #\r
-    SectionWINDDK = ''\r
-    SectionVS2003 = ''\r
-    SectionVS2005EXP = ''\r
-    SectionVS2005STD = ''\r
-    SectionVS2005PRO = ''\r
-    SectionVS2005TEAMSUITE = ''\r
-    SectionUNIXGCC = ''\r
-    SectionCYGWINGCC = ''\r
-    SectionELFGCC = ''\r
-    SectionICC = ''\r
-    SectionMYTOOLS = ''\r
-    for key in Dict1.keys():\r
-        if key.find("_CC_FLAGS") != -1:\r
-            if key.find('WINDDK3790x1830') != -1:\r
-                SectionWINDDK = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('VS2003') != -1:\r
-                SectionVS2003 = "  =  " + Dict1.get(key)+ "\n"\r
-            elif key.find('VS2005EXP') != -1:\r
-                SectionVS2005EXP = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('VS2005STD') != -1:\r
-                SectionVS2005STD = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('VS2005PRO') != -1:\r
-                SectionVS2005PRO = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('VS2005TEAMSUITE') != -1:\r
-                SectionVS2005TEAMSUITE = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('UNIXGCC') != -1:\r
-                SectionUNIXGCC = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('CYGWINGCC') != -1:\r
-                SectionCYGWINGCC = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('ELFGCC') != -1:\r
-                SectionELFGCC = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('ICC') != -1:\r
-                SectionICC = "  =  " + Dict1.get(key) + "\n"\r
-            elif key.find('MYTOOLS') != -1:\r
-                SectionMYTOOLS = "  =  " + Dict1.get(key) + "\n"\r
-            else:\r
-                print "Error!"\r
-\r
-    #\r
-    # First need to check which arch\r
-    #\r
-    Archs = Platform.Header.SupArchList\r
-    BuildTargets = Platform.Header.BuildTargets\r
-    #if BuildTargets == StandardBuildTargets:\r
-        #print "Debug and Release both support" # skip debug/release string search\r
-    #else:\r
-        #print "need to search debug/release string"\r
-\r
-    if len(Archs) == 4:\r
-        Arch = "*"\r
-        SectionName = "[BuildOptions.Common]\n"\r
-    else:\r
-        for Arch in Archs:\r
-            if Arch == 'IA32':\r
-                SectionName = "[BuildOptions.IA32]\n"\r
-            elif Arch == 'X64':\r
-                SectionName = "[BuildOptions.X64]\n"\r
-            elif Arch == 'IPF':\r
-                SectionName = "[BuildOptions.IPF]\n"\r
-            elif Arch == 'EBC':\r
-                SectionName = "[BuildOptions.EBC]\n"\r
-            else:\r
-                print 'Error!'\r
-    Section = ""\r
-    if SectionWINDDK != "":\r
-        SectionWINDDK = "*_WINDDK3790x1830_" + Arch + "_CC_FLAGS" + SectionWINDDK\r
-        Section += SectionWINDDK\r
-    if SectionVS2003 != "":\r
-        SectionVS2003 = "*_VS2003_" + Arch + "_CC_FLAGS" + SectionVS2003\r
-        Section += SectionVS2003\r
-    if SectionVS2005EXP != "":\r
-        SectionVS2005EXP = "*_VS2005EXP_" + Arch + "_CC_FLAGS" + SectionVS2005EXP\r
-        Section += SectionVS2005EXP\r
-    if SectionVS2005STD != "":\r
-        SectionVS2005STD = "*_VS2005STD_" + Arch + "_CC_FLAGS" + SectionVS2005STD\r
-        Section += SectionVS2005STD\r
-    if SectionVS2005PRO != "":\r
-        SectionVS2005PRO = "*_VS2005PRO_" + Arch + "_CC_FLAGS" + SectionVS2005PRO\r
-        Section += SectionVS2005PRO\r
-    if SectionVS2005TEAMSUITE != "":\r
-        SectionVS2005TEAMSUITE = "*_VS2005TEAMSUITE_" + Arch + "_CC_FLAGS" + SectionVS2005TEAMSUITE\r
-        Section += SectionVS2005TEAMSUITE\r
-    if SectionUNIXGCC != "":\r
-        SectionUNIXGCC = "*_UNIXGCC_" + Arch + "_CC_FLAGS" + SectionUNIXGCC\r
-        Section += SectionUNIXGCC\r
-    if SectionCYGWINGCC != "":\r
-        SectionCYGWINGCC = "*_CYGWINGCC_" + Arch + "_CC_FLAGS" + SectionCYGWINGCC\r
-        Section += SectionCYGWINGCC\r
-    if SectionELFGCC != "":\r
-        SectionELFGCC = "*_ELFGCC_" + Arch + "_CC_FLAGS" + SectionELFGCC\r
-        Section += SectionELFGCC\r
-    if SectionICC != "":\r
-        SectionICC = "*_ICC_" + Arch + "_CC_FLAGS" + SectionICC\r
-        Section += SectionICC\r
-    if SectionMYTOOLS != "":\r
-        SectionMYTOOLS = "*_MYTOOLS_" + Arch + "_CC_FLAGS" + SectionMYTOOLS\r
-        Section += SectionMYTOOLS\r
-\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Build Options section - list of all Build Options supported by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    \r
-    Section = SectionHeader + SectionName + Section\r
-    Section += "\n"\r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Store Libraries section\r
-#\r
-# Write [Libraries] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Library Classes section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformLibrariesSection(DscFile,Platform):\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Libraries section - list of all Libraries needed by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    \r
-    Section = SectionHeader + '[Libraries]\n\n'\r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Return a Platform Library Class Item\r
-#\r
-# Read the input LibraryClass class object and return one line of Library Class Item.\r
-#\r
-# @param  LibraryClass         An input LibraryClass class object\r
-#\r
-# @retval LibraryClassItem     A Module Library Class Item\r
-#\r
-def GetPlatformLibraryClassItem(LibraryClass):\r
-    LibraryClassList = []\r
-    LibraryClassList.append(LibraryClass.Name)\r
-    LibraryClassList.append(LibraryClass.FilePath)\r
-\r
-    return "|$(WORKSPACE)/".join(LibraryClassList).rstrip("|")\r
-\r
-## Add item to a LibraryClass section\r
-#\r
-# Add an Item with specific Module Type to section dictionary.\r
-# The possible duplication is ensured to be removed.\r
-#\r
-# @param  Section            Section dictionary indexed by CPU architecture\r
-# @param  SupModuleList      LibraryClass SupModuleList: BASE, SEC, PEI_CORE, PEIM, etc\r
-# @param  Item               The Item to be added to section dictionary\r
-#\r
-def AddToLibraryClassSection(Section, SupModuleList, Item):\r
-    for ModuleType in SupModuleList:\r
-        SectionModule = Section.get(ModuleType, [])\r
-        if Item not in SectionModule:\r
-            SectionModule.append(Item)\r
-            Section[ModuleType] = SectionModule\r
-\r
-## Get Library Classes section contents\r
-#\r
-# Return the content of section named SectionName.\r
-# the contents is based on Methods and ObjectLists.\r
-#\r
-# @param  SectionName        The name of the section\r
-# @param  Method             A function returning a string item of an object\r
-# @param  ObjectList         The list of object\r
-#\r
-# @retval Section            The string content of a section\r
-#\r
-def GetLibraryClassesSection(SectionName, Method, ObjectList):\r
-    SupportedArches = ["COMMON", "IA32", "X64", "IPF", "EBC"]\r
-    ModuleTypes = ["BASE","SEC","PEI_CORE","PEIM","DXE_CORE","DXE_DRIVER","DXE_SMM_DRIVER","DXE_SAL_DRIVER","DXE_RUNTIME_DRIVER","UEFI_DRIVER","UEFI_APPLICATION"]\r
-    SectionCommonDict = {}\r
-    SectionIA32Dict = {}\r
-    SectionX64Dict = {}\r
-    SectionIPFDict = {}\r
-    SectionEBCDict = {}\r
-    #ObjectList = list(set(ObjectList)) # delete the same element in the list\r
-    for Object in ObjectList:\r
-        if Object == None:\r
-            continue\r
-        Item = Method(Object)\r
-        if Item == "":\r
-            continue\r
-        Item = "  %s" % Item\r
-        Arches = Object.SupArchList\r
-        if len(Arches) == 4:\r
-            ModuleType = Object.ModuleType\r
-            # [LibraryClasses.Common.ModuleType]\r
-            if ModuleType == "BASE":\r
-                SupModuleList = ["BASE"]\r
-                AddToLibraryClassSection(SectionCommonDict, SupModuleList, Item)\r
-            else:\r
-                #\r
-                SupModuleList = Object.SupModuleList\r
-                #AddToSection(SectionDict, "|".join(SupModuleList), Item)\r
-                AddToLibraryClassSection(SectionCommonDict, SupModuleList, Item)\r
-        else:\r
-            # Arch\r
-            for Arch in SupportedArches:\r
-                if Arch.upper() in Arches:\r
-                    if Arch == "IA32":\r
-                        # [LibraryClasses.IA32.ModuleType]\r
-                        ModuleType = Object.ModuleType\r
-                        if ModuleType == "BASE":\r
-                            SupModuleList = ["BASE"]\r
-                            AddToLibraryClassSection(SectionIA32Dict, SupModuleList, Item)\r
-                        else:\r
-                            SupModuleList = Object.SupModuleList\r
-                            AddToLibraryClassSection(SectionIA32Dict, SupModuleList, Item)\r
-                    elif Arch == "X64":\r
-                        # [LibraryClasses.X64.ModuleType]\r
-                        ModuleType = Object.ModuleType\r
-                        if ModuleType == "BASE":\r
-                            SupModuleList = ["BASE"]\r
-                            AddToLibraryClassSection(SectionX64Dict, SupModuleList, Item)\r
-                        else:\r
-                            SupModuleList = Object.SupModuleList\r
-                            AddToLibraryClassSection(SectionX64Dict, SupModuleList, Item)\r
-                    elif Arch == "IPF":\r
-                        # [LibraryClasses.IPF.ModuleType]\r
-                        ModuleType = Object.ModuleType\r
-                        if ModuleType == "BASE":\r
-                            SupModuleList = ["BASE"]\r
-                            AddToLibraryClassSection(SectionIPFDict, SupModuleList, Item)\r
-                        else:\r
-                            SupModuleList = Object.SupModuleList\r
-                            AddToLibraryClassSection(SectionIPFDict, SupModuleList, Item)\r
-                    elif Arch == "EBC":\r
-                        # [LibraryClasses.EBC.ModuleType]\r
-                        ModuleType = Object.ModuleType\r
-                        if ModuleType == "BASE":\r
-                            SupModuleList = ["BASE"]\r
-                            AddToLibraryClassSection(SectionEBCDict, SupModuleList, Item)\r
-                        else:\r
-                            SupModuleList = Object.SupModuleList\r
-                            AddToLibraryClassSection(SectionEBCDict, SupModuleList, Item)\r
-\r
-    Section = ""\r
-    for ModuleType in ModuleTypes:\r
-        SectionCommonModule = "\n".join(SectionCommonDict.get(ModuleType, []))\r
-        if SectionCommonModule != "":\r
-            Section += "[%s.Common.%s]\n%s\n" % (SectionName, ModuleType, SectionCommonModule)\r
-            Section += "\n"\r
-    for ModuleType in ModuleTypes:\r
-        ListIA32 = SectionIA32Dict.get(ModuleType, [])\r
-        if ListIA32 != []:\r
-            SectionIA32Module = "\n".join(SectionIA32Dict.get(ModuleType, []))\r
-            if SectionIA32Module != "":\r
-                Section += "[%s.IA32.%s]\n%s\n" % (SectionName, ModuleType, SectionIA32Module)\r
-                Section += "\n"\r
-        ListX64 = SectionX64Dict.get(ModuleType, [])\r
-        if ListX64 != []:\r
-            SectionX64Module = "\n".join(SectionX64Dict.get(ModuleType, []))\r
-            if SectionX64Module != "":\r
-                Section += "[%s.X64.%s]\n%s\n" % (SectionName, ModuleType, SectionX64Module)\r
-                Section += "\n"\r
-        ListIPF = SectionIPFDict.get(ModuleType, [])\r
-        if ListIPF != []:\r
-            SectionIPFModule = "\n".join(SectionIPFDict.get(ModuleType, []))\r
-            if SectionIPFModule != "":\r
-                Section += "[%s.IPF.%s]\n%s\n" % (SectionName, ModuleType, SectionIPFModule)\r
-                Section += "\n"\r
-        ListEBC = SectionEBCDict.get(ModuleType, [])\r
-        if ListEBC != []:\r
-            SectionEBCModule = "\n".join(SectionEBCDict.get(ModuleType, []))\r
-            if SectionEBCModule != "":\r
-                Section += "[%s.EBC.%s]\n%s\n" % (SectionName, ModuleType, SectionEBCModule)\r
-                Section += "\n"\r
-\r
-    if Section != "":\r
-        Section += "\n"\r
-    return Section\r
-\r
-## Store Library Classes section\r
-#\r
-# Write [LibraryClasses] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Library Classes section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformLibraryClassesSection(DscFile, Platform):\r
-    Section = GetLibraryClassesSection("LibraryClasses", GetPlatformLibraryClassItem, Platform.LibraryClasses.LibraryList)\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Library Class section - list of all Library Classes needed by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    Section = SectionHeader + Section\r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Store Pcd section\r
-#\r
-# Write [Pcd] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Build Options section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformPcdSection(DscFile, Platform):\r
-    # {PcdsFixedAtBuild:String1, PcdsFixedAtBuild:String2, PcdsPatchableInModule:String3}\r
-    SectionDict = {}\r
-    #\r
-    # [PcdsFixedAtBuild], [PcdsPatchableInModule] and [PcdsFeatureFlag] are from platform.modules\r
-    # [PcdsDynamic] is from platform.DynamicPcdBuildDefinitions\r
-    #\r
-    Modules = Platform.Modules.ModuleList # it's a list of modules\r
-    for Module in Modules:\r
-        PcdBuildDefinitions = Module.PcdBuildDefinitions # it's a list of PcdData\r
-        for PcdData in PcdBuildDefinitions:\r
-            if PcdData.ItemType == "FEATURE_FLAG":\r
-                List = []\r
-                List.append(PcdData.TokenSpaceGuidCName + "." + PcdData.C_NAME)\r
-                List.append(PcdData.Value)\r
-                String = "|".join(List)\r
-                ItemType = PcdData.ItemType\r
-                SectionPcdsFeatureFlag = SectionDict.get(ItemType, [])\r
-                if String not in SectionPcdsFeatureFlag:\r
-                    SectionPcdsFeatureFlag.append(String)\r
-                    SectionDict[ItemType] = SectionPcdsFeatureFlag\r
-            else:\r
-                List = []\r
-                List.append(PcdData.TokenSpaceGuidCName + "." + PcdData.C_NAME)\r
-                List.append(PcdData.Value)\r
-                List.append(PcdData.Token)\r
-                List.append(PcdData.DatumType)\r
-                List.append(PcdData.MaxDatumSize)\r
-                String = "|".join(List)\r
-                ItemType = PcdData.ItemType\r
-                if PcdData.ItemType == "FIXED_AT_BUILD":\r
-                    SectionPcdsFixedAtBuild = SectionDict.get(ItemType, [])\r
-                    if String not in SectionPcdsFixedAtBuild:\r
-                        SectionPcdsFixedAtBuild.append(String)\r
-                        SectionDict[ItemType] = SectionPcdsFixedAtBuild\r
-                #elif PcdData.ItemType == "FEATURE_FLAG":\r
-                    #SectionPcdsFeatureFlag = SectionDict.get(ItemType, [])\r
-                    #if String not in SectionPcdsFeatureFlag:\r
-                        #SectionPcdsFeatureFlag.append(String)\r
-                        #SectionDict[ItemType] = SectionPcdsFeatureFlag\r
-                elif PcdData.ItemType == "PATCHABLE_IN_MODULE":\r
-                    SectionPcdsPatchableInModule = SectionDict.get(ItemType, [])\r
-                    if String not in SectionPcdsPatchableInModule:\r
-                        SectionPcdsPatchableInModule.append(String)\r
-                        SectionDict[ItemType] = SectionPcdsPatchableInModule\r
-                elif PcdData.ItemType == "DYNAMIC":\r
-                    SectionPcdsDynamic = SectionDict.get(ItemType, [])\r
-                    if String not in SectionPcdsDynamic:\r
-                        SectionPcdsDynamic.append(String)\r
-                        SectionDict[ItemType] = SectionPcdsDynamic\r
-\r
-    DynamicPcdBuildDefinitions = Platform.DynamicPcdBuildDefinitions # It's a list\r
-    for PcdBuildData in DynamicPcdBuildDefinitions:\r
-        List = []\r
-        List.append(PcdData.TokenSpaceGuidCName + "." + PcdData.C_NAME)\r
-        List.append(PcdData.Token)\r
-        List.append(PcdData.DatumType)\r
-        List.append(PcdData.MaxDatumSize)\r
-        String = "|".join(List)\r
-        if PcdBuildData.ItemType == "DYNAMIC":\r
-            ItemType = PcdBuildData.ItemType\r
-            SectionPcdsDynamic = SectionDict.get(ItemType, [])\r
-            if String not in SectionPcdsDynamic:\r
-                SectionPcdsDynamic.append(String)\r
-                SectionDict[ItemType] = SectionPcdsDynamic\r
-    ItemType = "FIXED_AT_BUILD"\r
-    Section = "[PcdsFixedAtBuild]\n  " + "\n  ".join(SectionDict.get(ItemType, []))\r
-    ItemType = "FEATURE_FLAG"\r
-    Section += "\n\n[PcdsFeatureFlag]\n  " + "\n  ".join(SectionDict.get(ItemType, []))\r
-    ItemType = "PATCHABLE_IN_MODULE"\r
-    Section += "\n\n[PcdsPatchableInModule]\n  " + "\n  ".join(SectionDict.get(ItemType, []))\r
-    Section += "\n\n"\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Pcd Dynamic Section - list of all EDK II PCD Entries defined by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    String = "\n".join(List)\r
-    Section += String\r
-    ItemType = "DYNAMIC"\r
-    Section += "\n\n[PcdsDynamic]\n  " + "\n  ".join(SectionDict.get(ItemType, []))\r
-    Section += "\n\n"\r
-    \r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Pcd Section - list of all EDK II PCD Entries defined by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    Section = SectionHeader + Section\r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Add item to a section\r
-#\r
-# Add an Item with specific CPU architecture to section dictionary.\r
-# The possible duplication is ensured to be removed.\r
-#\r
-# @param  Section            Section dictionary indexed by CPU architecture\r
-# @param  Arch               CPU architecture: Ia32, X64, Ipf, Ebc or Common\r
-# @param  Item               The Item to be added to section dictionary\r
-#\r
-def AddToSection(Section, Arch, Item):\r
-    SectionArch = Section.get(Arch, [])\r
-    if Item not in SectionArch:\r
-        SectionArch.append(Item)\r
-        Section[Arch] = SectionArch\r
-\r
-## Get section contents\r
-#\r
-# Return the content of section named SectionName.\r
-# the contents is based on Methods and ObjectLists.\r
-#\r
-# @param  SectionName        The name of the section\r
-# @param  Method             A function returning a string item of an object\r
-# @param  ObjectList         The list of object\r
-#\r
-# @retval Section            The string content of a section\r
-#\r
-def GetSection(SectionName, Method, ObjectList):\r
-    SupportedArches = ["COMMON", "IA32", "X64", "IPF", "EBC"]\r
-    SectionDict = {}\r
-    for Object in ObjectList:\r
-        if Object.FilePath == "":\r
-            continue\r
-        Item = Method(Object)\r
-        if Item == "":\r
-            continue\r
-        Item = "  %s" % Item\r
-        Arches = Object.SupArchList\r
-        if len(Arches) == 4:\r
-            AddToSection(SectionDict, "common", Item)\r
-        else:\r
-            for Arch in SupportedArches:\r
-                if Arch.upper() in Arches:\r
-                    AddToSection(SectionDict, Arch, Item)\r
-\r
-    Section = ""\r
-    for Arch in SupportedArches:\r
-        SectionArch = "\n".join(SectionDict.get(Arch, []))\r
-        if SectionArch != "":\r
-            Section += "[%s.%s]\n%s\n" % (SectionName, Arch, SectionArch)\r
-            Section += "\n"\r
-    if Section != "":\r
-        Section += "\n"\r
-    return Section\r
-\r
-## Return a Platform Component Item\r
-#\r
-# Read the input Platform Component object and return one line of Platform Component Item.\r
-#\r
-# @param  Component         An input Platform Component class object\r
-#\r
-# @retval ComponentItem     A Platform Component Item\r
-#\r
-def GetPlatformComponentItem(Component):\r
-    List = []\r
-    Section = {}\r
-\r
-    List.append("$(WORKSPACE)/" + Component.FilePath)\r
-\r
-    LibraryClasses = Component.LibraryClasses\r
-    if LibraryClasses != []:\r
-        List = []\r
-        List.append("$(WORKSPACE)/" + Component.FilePath + " {")\r
-        List.append("<LibraryClasses>")\r
-        for LibraryClass in LibraryClasses:\r
-            if LibraryClass == ["", ""]:\r
-                continue\r
-            List.append("  " + LibraryClass[0] + "|$(WORKSPACE)/" + LibraryClass[1])\r
-            \r
-    PcdBuildDefinitions = Component.PcdBuildDefinitions\r
-    for PcdData in PcdBuildDefinitions:\r
-        if PcdData.ItemType == "FEATURE_FLAG":\r
-            List1 = []\r
-            List1.append(PcdData.TokenSpaceGuidCName + "." + PcdData.C_NAME)\r
-            List1.append(PcdData.Value)\r
-            String = "|".join(List1)\r
-            ItemType = PcdData.ItemType\r
-            SectionPcd = Section.get(ItemType, [])\r
-            if String not in SectionPcd:\r
-                SectionPcd.append(String)\r
-            Section[ItemType] = SectionPcd\r
-        else:\r
-            List1 = []\r
-            List1.append(PcdData.TokenSpaceGuidCName + "." + PcdData.C_NAME)\r
-            List1.append(PcdData.Value)\r
-            List1.append(PcdData.Token)\r
-            List1.append(PcdData.DatumType)\r
-            List1.append(PcdData.MaxDatumSize)\r
-            String = "|".join(List1)\r
-            ItemType = PcdData.ItemType\r
-            if ItemType == "FIXED_AT_BUILD":\r
-                SectionPcd = Section.get(ItemType, [])\r
-                if String not in SectionPcd:\r
-                    SectionPcd.append(String)\r
-                Section[ItemType] = SectionPcd\r
-            #elif ItemType == "FEATURE_FLAG":\r
-                #SectionPcd = Section.get(ItemType, [])\r
-                #if String not in SectionPcd:\r
-                    #SectionPcd.append(String)\r
-                #Section[ItemType] = SectionPcd\r
-            elif ItemType == "PATCHABLE_IN_MODULE":\r
-                SectionPcd = Section.get(ItemType, [])\r
-                if String not in SectionPcd:\r
-                    SectionPcd.append(String)\r
-                Section[ItemType] = SectionPcd\r
-            elif ItemType == "DYNAMIC":\r
-                SectionPcd = Section.get(ItemType, [])\r
-                if String not in SectionPcd:\r
-                    SectionPcd.append(String)\r
-                Section[ItemType] = SectionPcd\r
-\r
-    ItemType = "FIXED_AT_BUILD"\r
-    if Section.get(ItemType, []) != []:\r
-        List.append("<PcdsFixedAtBuild>")\r
-        List.append("  " + "\n    ".join(Section.get(ItemType,[])))\r
-    ItemType = "FEATURE_FLAG"\r
-    if Section.get(ItemType, []) != []:\r
-        List.append("<PcdsFeatureFlag>")\r
-        List.append("  " + "\n    ".join(Section.get(ItemType,[])))\r
-    ItemType = "PATCHABLE_IN_MODULE"\r
-    if Section.get(ItemType, []) != []:\r
-        List.append("<PcdsPatchableInModule>")\r
-        List.append("  " + "\n    ".join(Section.get(ItemType,[])))\r
-    ItemType = "DYNAMIC"\r
-    if Section.get(ItemType, []) != []:\r
-        List.append("<PcdsDynamic>")\r
-        List.append("  " + "\n    ".join(Section.get(ItemType,[])))\r
-\r
-    ListOption = []\r
-    SectionOption = ""\r
-    ListBuildOptions = Component.BuildOptions # a list\r
-    if ListBuildOptions != []:\r
-        SectionOption += "\n  <BuildOptions>\n"\r
-        for BuildOptions in ListBuildOptions:\r
-            Options = BuildOptions.Options\r
-            for Option in Options:\r
-                for Item in Option.BuildTargetList:\r
-                    ListOption.append(Item)\r
-                List.append(Option.ToolChainFamily)\r
-                for Item in Option.SupArchList:\r
-                    ListOption.append(Item)\r
-                ListOption.append(Option.ToolCode)\r
-                ListOption.append("FLAGS")\r
-                #print ListOption\r
-                SectionOption += "  " + "_".join(List) + "    =  " + Option.Option + "\n"\r
-                ListOption = []\r
-    if SectionOption != "":\r
-        List.append(SectionOption)\r
-    if List != ["$(WORKSPACE)/" + Component.FilePath]:\r
-        List.append("}\n")\r
-\r
-    return "\n  ".join(List)\r
-\r
-## Store Components section.\r
-#\r
-# Write [Components] section to the DscFile based on Platform class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the Components section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformComponentsSection(DscFile, Platform):\r
-    Section = GetSection("Components", GetPlatformComponentItem, Platform.Modules.ModuleList)\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# Components Section - list of all EDK II Modules needed by this Platform.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    Section = SectionHeader + Section\r
-    StoreTextFile(DscFile, Section)\r
-\r
-## Store User Extensions section.\r
-#\r
-# Write [UserExtensions] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DscFile                The output DSC file to store the User Extensions section\r
-# @param  Platform               An input Platform class object\r
-#\r
-def StorePlatformUserExtensionsSection(DscFile, Platform):\r
-    Section = "".join(map(GetUserExtensions, Platform.UserExtensions))\r
-    List = []\r
-    List.append("################################################################################")\r
-    List.append("#")\r
-    List.append("# User Extensions Section - list of all User Extensions specified by user.")\r
-    List.append("#")\r
-    List.append("################################################################################")\r
-    SectionHeader = "\n".join(List)\r
-    SectionHeader += "\n"\r
-    Section = SectionHeader + Section\r
-    StoreTextFile(DscFile, Section)\r
-    \r
-## Store a Platform class object to a new DSC file.\r
-#\r
-# Read an input Platform class object and save the contents to a new DSC file.\r
-#\r
-# @param  DSCFileName             The output DSC file\r
-# @param  Platform                An input Platform class object\r
-#\r
-def StoreDsc(DscFileName, Platform):\r
-    DscFile = open(DscFileName, "w+")\r
-    EdkLogger.info("Save file to %s" % DscFileName)\r
-\r
-    StoreHeader(DscFile, Platform.Header)\r
-    StorePlatformDefinesSection(DscFile, Platform)\r
-    StorePlatformBuildOptionsSection(DscFile,Platform)\r
-    StorePlatformSkuIdsSection(DscFile,Platform)\r
-    StorePlatformLibrariesSection(DscFile,Platform) # new in dsc, Edk I components, list of INF files\r
-    StorePlatformLibraryClassesSection(DscFile, Platform) # LibraryClasses are from Modules\r
-    StorePlatformPcdSection(DscFile, Platform)\r
-    #StorePlatformPcdDynamicSection(DscFile, Platform)\r
-    StorePlatformComponentsSection(DscFile,Platform)\r
-    StorePlatformUserExtensionsSection(DscFile,Platform)\r
-    DscFile.close()\r
-    \r
-if __name__ == '__main__':\r
-    pass\r
diff --git a/BaseTools/Source/Python/fpd2dsc/__init__.py b/BaseTools/Source/Python/fpd2dsc/__init__.py
deleted file mode 100644 (file)
index f9d3a21..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'fpd2dsc' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
diff --git a/BaseTools/Source/Python/fpd2dsc/fpd2dsc.py b/BaseTools/Source/Python/fpd2dsc/fpd2dsc.py
deleted file mode 100644 (file)
index 4a65e61..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-## @file\r
-# Convert an XML-based FPD file to a text-based DSC file.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os, re, sys, xml.dom.minidom  #XmlRoutines, EdkIIWorkspace\r
-from LoadFpd import LoadFpd\r
-from StoreDsc import StoreDsc\r
-from optparse import OptionParser\r
-from Common.BuildVersion import gBUILD_VERSION\r
-\r
-# Version and Copyright\r
-__version_number__ = ("1.0" + " " + gBUILD_VERSION)\r
-__version__ = "%prog Version " + __version_number__\r
-__copyright__ = "Copyright (c) 2007 - 2010, Intel Corporation  All rights reserved."\r
-\r
-## Parse command line options\r
-#\r
-# Using standard Python module optparse to parse command line option of this tool.\r
-#\r
-# @retval Options   A optparse.Values object containing the parsed options\r
-# @retval Args      All the arguments got from the command line\r
-#\r
-def MyOptionParser():\r
-    """ Argument Parser """\r
-    usage = "%prog [options] input_filename"\r
-    parser = OptionParser(usage=usage,description=__copyright__,version="%prog " + str(__version_number__))\r
-    parser.add_option("-o", "--output", dest="outfile", help="Specific Name of the DSC file to create, otherwise it is the FPD filename with the extension repalced.")\r
-    parser.add_option("-a", "--auto", action="store_true", dest="autowrite", default=False, help="Automatically create output files and write the DSC file")\r
-    parser.add_option("-q", "--quiet", action="store_const", const=0, dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")\r
-    parser.add_option("-v", "--verbose", action="count", dest="verbose", help="Do not print any messages, just return either 0 for succes or 1 for failure")\r
-    parser.add_option("-d", "--debug", action="store_true", dest="debug", default=False, help="Enable printing of debug messages.")\r
-    parser.add_option("-w", "--workspace", dest="workspace", default=str(os.environ.get('WORKSPACE')), help="Specify workspace directory.")\r
-    (options, args) = parser.parse_args(sys.argv[1:])\r
-\r
-    return options,args\r
-\r
-## Entrance method\r
-#\r
-# This method mainly dispatch specific methods per the command line options.\r
-# If no error found, return zero value so the caller of this tool can know\r
-# if it's executed successfully or not.\r
-#\r
-# @retval 0     Tool was successful\r
-# @retval 1     Tool failed\r
-#\r
-def Main():\r
-    global Options\r
-    global Args\r
-    global WorkSpace\r
-    Options,Args = MyOptionParser()\r
-\r
-    WorkSpace = ""\r
-    #print Options.workspace\r
-    if (Options.workspace == None):\r
-        print "ERROR: E0000: WORKSPACE not defined.\n  Please set the WORKSPACE environment variable to the location of the EDK II install directory."\r
-        sys.exit(1)\r
-    else:\r
-        WorkSpace = Options.workspace\r
-        if (Options.debug):\r
-            print "Using Workspace:", WorkSpace\r
-    try:\r
-        Options.verbose +=1\r
-    except:\r
-        Options.verbose = 1\r
-        pass\r
-\r
-    InputFile = ""\r
-    if Args == []:\r
-        print "usage:" "%prog [options] input_filename"\r
-    else:\r
-        InputFile = Args[0]\r
-        #print InputFile\r
-    if InputFile != "":\r
-        FileName = InputFile\r
-        if ((Options.verbose > 1) | (Options.autowrite)):\r
-            print "FileName:",InputFile\r
-    else:\r
-        print "ERROR: E0001 - You must specify an input filename"\r
-        sys.exit(1)\r
-\r
-    if (Options.outfile):\r
-        OutputFile = Options.outfile\r
-    else:\r
-       OutputFile = FileName.replace('.fpd', '.dsc')\r
-\r
-    if ((Options.verbose > 2) or (Options.debug)):\r
-        print "Output Filename:", OutputFile\r
-        \r
-    try:\r
-        Platform = LoadFpd(FileName)\r
-        StoreDsc(OutputFile, Platform)\r
-        return 0\r
-    except Exception, e:\r
-        print e\r
-        return 1\r
-\r
-if __name__ == '__main__':\r
-    sys.exit(Main())\r
-    #pass\r
-    #global Options\r
-    #global Args\r
-    #Options,Args = MyOptionParser()\r
-    \r
-    #Main()\r
-    #sys.exit(0)
\ No newline at end of file
diff --git a/BaseTools/Source/Python/msa2inf/ConvertModule.py b/BaseTools/Source/Python/msa2inf/ConvertModule.py
deleted file mode 100644 (file)
index 2a118ae..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-## @file\r
-# Convert an MSA Module class object ot an INF Module class object by filling\r
-# several info required by INF file.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-from LoadMsa import LoadMsa\r
-from StoreInf import StoreInf\r
-from Common.MigrationUtilities import *\r
-from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo\r
-\r
-#The default INF version number tool generates.\r
-gInfVersion = "0x00010005"\r
-\r
-## Add required version information.\r
-#\r
-# Add the default INF version, EFI specificiation version and EDK release\r
-# version to Module class object.\r
-#\r
-# @param  Module              An input Module class object.\r
-#\r
-def AddModuleMiscVersion(Module):\r
-    Version = gInfVersion\r
-    Module.Header.InfVersion = Version\r
-\r
-    Version = Module.Header.Specification.get("EFI_SPECIFICATION_VERSION", "")\r
-    Module.Header.UefiSpecificationVersion = Version\r
-    \r
-    Version = Module.Header.Specification.get("EDK_RELEASE_VERSION", "")\r
-    Module.Header.EdkReleaseVersion = Version\r
-\r
-\r
-## Add Module produced library class.\r
-#\r
-# Add the produced library class from library class list whose usage type is\r
-# always produced.\r
-#\r
-# @param  Module              An input Module class object.\r
-#\r
-def AddModuleProducedLibraryClass(Module):\r
-    for LibraryClass in Module.LibraryClasses:\r
-        if "ALWAYS_PRODUCED" in LibraryClass.Usage:\r
-            Module.Header.LibraryClass.append(LibraryClass)\r
-\r
-\r
-## Add Module Package Dependency path.\r
-#\r
-# Translate Package Dependency Guid to a file path relative to workspace.\r
-#\r
-# @param  Module              An input Module class object.\r
-#\r
-def AddModulePackageDependencyPath(Module):\r
-    for PackageDependency in Module.PackageDependencies:\r
-        PackageGuid = PackageDependency.PackageGuid\r
-        PackageVersion = PackageDependency.PackageVersion\r
-        \r
-        GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolvePackageFilePath\r
-        PackageFilePath = GuidToFilePath(PackageGuid, PackageVersion)\r
-        PackageDependency.FilePath = PackageFilePath\r
-\r
-\r
-## Add Module Recommended Library Instance path.\r
-#\r
-# Translate Module Recommened Library Instance Guid to a file path relative to\r
-# workspace.\r
-#\r
-# @param  Module              An input Module class object.\r
-#\r
-def AddModuleRecommonedLibraryInstancePath(Module):\r
-    for LibraryClass in Module.LibraryClasses:\r
-        if "ALWAYS_PRODUCED" in LibraryClass.Usage:\r
-            continue\r
-\r
-        if LibraryClass.RecommendedInstanceGuid == "":\r
-            continue\r
-        \r
-        LibraryGuid = LibraryClass.RecommendedInstanceGuid\r
-        LibraryVersion = LibraryClass.RecommendedIntanceVersion\r
-        \r
-        GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath\r
-        LibraryInstance = GuidToFilePath(LibraryGuid, LibraryVersion)\r
-        LibraryClass.RecommendedIntance = LibraryInstance\r
-\r
-\r
-## Convert MSA Module class object to INF Module class object.\r
-#\r
-# Convert MSA module class ojbect to INF Module class object by filling in\r
-# several information required by INF file.\r
-#\r
-# @param  Module              An input Module class object.\r
-#\r
-def ConvertMsaModuleToInfModule(Module):\r
-    AddModuleMiscVersion(Module)\r
-    AddModuleProducedLibraryClass(Module)\r
-    AddModulePackageDependencyPath(Module)\r
-    AddModuleRecommonedLibraryInstancePath(Module)\r
-\r
-\r
-if __name__ == '__main__':\r
-    pass\r
-    
\ No newline at end of file
diff --git a/BaseTools/Source/Python/msa2inf/EdkIIWorkspaceGuidsInfo.py b/BaseTools/Source/Python/msa2inf/EdkIIWorkspaceGuidsInfo.py
deleted file mode 100644 (file)
index 6d6633b..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-## @file\r
-# Collects the Guid Information in current workspace.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-import fnmatch\r
-from Common.EdkIIWorkspace import EdkIIWorkspace\r
-from Common.MigrationUtilities import *\r
-\r
-## A class for EdkII work space to resolve Guids.\r
-#\r
-# This class inherits from EdkIIWorkspace and collects the Guids information\r
-# in current workspace. The Guids information is important to translate the\r
-# package Guids and recommended library instances Guids to relative file path\r
-# (to workspace directory) in MSA files.\r
-#\r
-class EdkIIWorkspaceGuidsInfo(EdkIIWorkspace):\r
-\r
-    ## The classconstructor.\r
-    #\r
-    # The constructor initialize workspace directory. It does not collect\r
-    # pakage and module Guids info at initialization; instead, it collects them\r
-    # on the fly.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __init__(self):\r
-        # Initialize parent class.\r
-        EdkIIWorkspace.__init__(self)\r
-        # The internal map from Guid to FilePath.\r
-        self.__GuidToFilePath = {}\r
-        # The internal package directory list.\r
-        self.__PackageDirList = []\r
-        # The internal flag to indicate whether package Guids info has been\r
-        # to avoid re-collection collected.\r
-        self.__PackageGuidInitialized = False\r
-        # The internal flag to indicate whether module Guids info has been\r
-        # to avoid re-collection collected.\r
-        self.__ModuleGuidInitialized = False\r
-\r
-    ## Add Guid, Version and FilePath to Guids database.\r
-    #\r
-    # Add Guid, Version and FilePath to Guids database. It constructs a map\r
-    # table from Guid, Version to FilePath internally. If also detects possible\r
-    # Guid collision. For now, the version information is simply ignored and\r
-    # Guid value itself acts as master key.\r
-    #\r
-    # @param  self           The object pointer.\r
-    # @param  Guid           The Guid Value.\r
-    # @param  Version        The version information\r
-    #\r
-    # @retval True           The Guid value is successfully added to map table.\r
-    # @retval False          The Guid is an empty string or the map table\r
-    #                        already contains a same Guid.\r
-    #\r
-    def __AddGuidToFilePath(self, Guid, Version, FilePath):\r
-        if Guid == "":\r
-            EdkLogger.info("Cannot find Guid in file %s" % FilePath)\r
-            return False\r
-        #Add the Guid value to map table to ensure case insensitive comparison.\r
-        OldFilePath = self.__GuidToFilePath.setdefault(Guid.lower(), FilePath)\r
-        if OldFilePath == FilePath:\r
-            EdkLogger.verbose("File %s has new Guid '%s'" % (FilePath, Guid))\r
-            return True\r
-        else:\r
-            EdkLogger.info("File %s has duplicate Guid with & %s" % (FilePath, OldFilePath))\r
-            return False\r
-        \r
-\r
-    ## Gets file information from a module description file.\r
-    #\r
-    # Extracts Module Name, File Guid and Version number from INF, MSA and NMSA\r
-    # file. It supports to exact such information from text based INF file or\r
-    # XML based (N)MSA file.\r
-    #\r
-    # @param  self           The object pointer.\r
-    # @param  FileName       The input module file name.\r
-    #\r
-    # @retval True           This module file represents a new module discovered\r
-    #                        in current workspace.\r
-    # @retval False          This module file is not regarded as a valid module.\r
-    #                        The File Guid cannot be extracted or the another\r
-    #                        file with the same Guid already exists\r
-    #\r
-    def __GetModuleFileInfo(self, FileName):\r
-        if fnmatch.fnmatch(FileName, "*.inf"):\r
-            TagTuple = ("BASE_NAME", "FILE_GUID", "VERSION_STRING")\r
-            (Name, Guid, Version) = GetTextFileInfo(FileName, TagTuple)\r
-        else :\r
-            XmlTag1 = "ModuleSurfaceArea/MsaHeader/ModuleName"\r
-            XmlTag2 = "ModuleSurfaceArea/MsaHeader/GuidValue"\r
-            XmlTag3 = "ModuleSurfaceArea/MsaHeader/Version"\r
-            TagTuple = (XmlTag1, XmlTag2, XmlTag3)\r
-            (Name, Guid, Version) = GetXmlFileInfo(FileName, TagTuple)\r
-\r
-        return self.__AddGuidToFilePath(Guid, Version, FileName)\r
-    \r
-    \r
-    ## Gets file information from a package description file.\r
-    #\r
-    # Extracts Package Name, File Guid and Version number from INF, SPD and NSPD\r
-    # file. It supports to exact such information from text based DEC file or\r
-    # XML based (N)SPD file. EDK Compatibility Package is hardcoded to be\r
-    # ignored since no EDKII INF file depends on that package.\r
-    #\r
-    # @param  self           The object pointer.\r
-    # @param  FileName       The input package file name.\r
-    #\r
-    # @retval True           This package file represents a new package\r
-    #                        discovered in current workspace.\r
-    # @retval False          This package is not regarded as a valid package.\r
-    #                        The File Guid cannot be extracted or the another\r
-    #                        file with the same Guid already exists\r
-    #\r
-    def __GetPackageFileInfo(self, FileName):\r
-        if fnmatch.fnmatch(FileName, "*.dec"):\r
-            TagTuple = ("PACKAGE_NAME", "PACKAGE_GUID", "PACKAGE_VERSION")\r
-            (Name, Guid, Version) = GetTextFileInfo(FileName, TagTuple)\r
-        else:\r
-            XmlTag1 = "PackageSurfaceArea/SpdHeader/PackageName"\r
-            XmlTag2 = "PackageSurfaceArea/SpdHeader/GuidValue"\r
-            XmlTag3 = "PackageSurfaceArea/SpdHeader/Version"\r
-            TagTuple = (XmlTag1, XmlTag2, XmlTag3)\r
-            (Name, Guid, Version) = GetXmlFileInfo(FileName, TagTuple)\r
-                \r
-        if Name == "EdkCompatibilityPkg":\r
-            # Do not scan EDK compatibitilty package to avoid Guid collision\r
-            # with those in EDK Glue Library.\r
-            EdkLogger.verbose("Bypass EDK Compatibility Pkg")\r
-            return False\r
-        \r
-        return self.__AddGuidToFilePath(Guid, Version, FileName)\r
-\r
-    ## Iterate on all package files listed in framework database file.\r
-    #\r
-    # Yields all package description files listed in framework database files.\r
-    # The framework database file describes the packages current workspace\r
-    # includes.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __FrameworkDatabasePackageFiles(self):\r
-        XmlFrameworkDb = XmlParseFile(self.WorkspaceFile)\r
-        XmlTag = "FrameworkDatabase/PackageList/Filename"\r
-        for PackageFile in XmlElementList(XmlFrameworkDb, XmlTag):\r
-            yield os.path.join(self.WorkspaceDir, PackageFile)\r
-    \r
-    \r
-    ## Iterate on all package files in current workspace directory.\r
-    #\r
-    # Yields all package description files listed in current workspace\r
-    # directory. This happens when no framework database file exists.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __TraverseAllPackageFiles(self):\r
-        for Path, Dirs, Files in os.walk(self.WorkspaceDir):\r
-            # Ignore svn version control directory.\r
-            if ".svn" in Dirs:\r
-                Dirs.remove(".svn")\r
-            if "Build" in Dirs:\r
-                Dirs.remove("Build")\r
-            # Assume priority from high to low: DEC, NSPD, SPD.\r
-            PackageFiles = fnmatch.filter(Files, "*.dec")\r
-            if len(PackageFiles) == 0:\r
-                PackageFiles = fnmatch.filter(Files, "*.nspd")\r
-                if len(PackageFiles) == 0:\r
-                    PackageFiles = fnmatch.filter(Files, "*.spd")\r
-\r
-            for File in PackageFiles:\r
-                # Assume no more package decription file in sub-directory.\r
-                del Dirs[:]\r
-                yield os.path.join(Path, File)\r
-\r
-    ## Iterate on all module files in current package directory.\r
-    #\r
-    # Yields all module description files listed in current package\r
-    # directory.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __TraverseAllModuleFiles(self):\r
-        for PackageDir in self.__PackageDirList:\r
-            for Path, Dirs, Files in os.walk(PackageDir):\r
-                # Ignore svn version control directory.\r
-                if ".svn" in Dirs:\r
-                    Dirs.remove(".svn")\r
-                # Assume priority from high to low: INF, NMSA, MSA.\r
-                ModuleFiles = fnmatch.filter(Files, "*.inf")\r
-                if len(ModuleFiles) == 0:\r
-                    ModuleFiles = fnmatch.filter(Files, "*.nmsa")\r
-                    if len(ModuleFiles) == 0:\r
-                        ModuleFiles = fnmatch.filter(Files, "*.msa")\r
-\r
-                for File in ModuleFiles:\r
-                    yield os.path.join(Path, File)\r
-\r
-    ## Initialize package Guids info mapping table.\r
-    #\r
-    # Collects all package guids map to package decription file path. This\r
-    # function is invokes on demand to avoid unnecessary directory scan.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __InitializePackageGuidInfo(self):\r
-        if self.__PackageGuidInitialized:\r
-            return\r
-\r
-        EdkLogger.verbose("Start to collect Package Guids Info.")\r
-   \r
-        WorkspaceFile = os.path.join("Conf", "FrameworkDatabase.db")\r
-        self.WorkspaceFile = os.path.join(self.WorkspaceDir, WorkspaceFile)\r
-        \r
-        # Try to find the frameworkdatabase file to discover package lists\r
-        if os.path.exists(self.WorkspaceFile):\r
-            TraversePackage = self.__FrameworkDatabasePackageFiles\r
-            EdkLogger.verbose("Package list bases on: %s" % self.WorkspaceFile)\r
-        else:\r
-            TraversePackage = self.__TraverseAllPackageFiles\r
-            EdkLogger.verbose("Package list in: %s" % self.WorkspaceDir)\r
-\r
-        for FileName in TraversePackage():\r
-            if self.__GetPackageFileInfo(FileName):\r
-                PackageDir = os.path.dirname(FileName)\r
-                EdkLogger.verbose("Find new package directory %s" % PackageDir)\r
-                self.__PackageDirList.append(PackageDir)\r
-                \r
-        self.__PackageGuidInitialized = True\r
-\r
-    ## Initialize module Guids info mapping table.\r
-    #\r
-    # Collects all module guids map to module decription file path. This\r
-    # function is invokes on demand to avoid unnecessary directory scan.\r
-    #\r
-    # @param  self           The object pointer.\r
-    #\r
-    def __InitializeModuleGuidInfo(self):\r
-        if self.__ModuleGuidInitialized:\r
-            return\r
-        EdkLogger.verbose("Start to collect Module Guids Info")\r
-        \r
-        self.__InitializePackageGuidInfo()\r
-        for FileName in self.__TraverseAllModuleFiles():\r
-            if self.__GetModuleFileInfo(FileName):\r
-                EdkLogger.verbose("Find new module %s" % FileName)\r
-                \r
-        self.__ModuleGuidInitialized = True\r
-\r
-    ## Get Package file path by Package guid and Version.\r
-    #\r
-    # Translates the Package Guid and Version to a file path relative\r
-    # to workspace directory. If no package in current workspace match the\r
-    # input Guid, an empty file path is returned. For now, the version\r
-    # value is simply ignored.\r
-    #\r
-    # @param  self           The object pointer.\r
-    # @param  Guid           The Package Guid value to look for.\r
-    # @param  Version        The Package Version value to look for.\r
-    #\r
-    def ResolvePackageFilePath(self, Guid, Version = ""):\r
-        self.__InitializePackageGuidInfo()\r
-        \r
-        EdkLogger.verbose("Resolve Package Guid '%s'" % Guid)\r
-        FileName = self.__GuidToFilePath.get(Guid.lower(), "")\r
-        if FileName == "":\r
-            EdkLogger.info("Cannot resolve Package Guid '%s'" % Guid)\r
-        else:\r
-            FileName = self.WorkspaceRelativePath(FileName)\r
-            FileName = os.path.splitext(FileName)[0] + ".dec"\r
-            FileName = FileName.replace("\\", "/")\r
-        return FileName\r
-\r
-    ## Get Module file path by Package guid and Version.\r
-    #\r
-    # Translates the Module Guid and Version to a file path relative\r
-    # to workspace directory. If no module in current workspace match the\r
-    # input Guid, an empty file path is returned. For now, the version\r
-    # value is simply ignored.\r
-    #\r
-    # @param  self           The object pointer.\r
-    # @param  Guid           The Module Guid value to look for.\r
-    # @param  Version        The Module Version value to look for.\r
-    #\r
-    def ResolveModuleFilePath(self, Guid, Version = ""):\r
-        self.__InitializeModuleGuidInfo()\r
-        \r
-        EdkLogger.verbose("Resolve Module Guid '%s'" % Guid)\r
-        FileName = self.__GuidToFilePath.get(Guid.lower(), "")\r
-        if FileName == "":\r
-            EdkLogger.info("Cannot resolve Module Guid '%s'" % Guid)\r
-        else:\r
-            FileName = self.WorkspaceRelativePath(FileName)\r
-            FileName = os.path.splitext(FileName)[0] + ".inf"\r
-            FileName = FileName.replace("\\", "/")\r
-        return FileName\r
-\r
-# A global class object of EdkIIWorkspaceGuidsInfo for external reference.\r
-gEdkIIWorkspaceGuidsInfo = EdkIIWorkspaceGuidsInfo()\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    # Test the translation of package Guid.\r
-    MdePkgGuid = "1E73767F-8F52-4603-AEB4-F29B510B6766"\r
-    OldMdePkgGuid = "5e0e9358-46b6-4ae2-8218-4ab8b9bbdcec"\r
-    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(MdePkgGuid)\r
-    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(OldMdePkgGuid)\r
-    \r
-    # Test the translation of module Guid.\r
-    UefiLibGuid = "3a004ba5-efe0-4a61-9f1a-267a46ae5ba9"\r
-    UefiDriverModelLibGuid = "52af22ae-9901-4484-8cdc-622dd5838b09"\r
-    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(UefiLibGuid)\r
-    print gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath(UefiDriverModelLibGuid)\r
diff --git a/BaseTools/Source/Python/msa2inf/LoadMsa.py b/BaseTools/Source/Python/msa2inf/LoadMsa.py
deleted file mode 100644 (file)
index 52f4b2d..0000000
+++ /dev/null
@@ -1,747 +0,0 @@
-## @file\r
-# Open an MSA file and load all its contents to a ModuleClass object.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-from CommonDataClass.ModuleClass import *\r
-from Common.XmlRoutines import *\r
-from Common.MigrationUtilities import *\r
-\r
-\r
-## Load a list of Module Cloned Records.\r
-#\r
-# Read an input Module XML DOM object and return a list of Cloned Records\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel ClonedRecords        A list of Cloned Records loaded from XmlMsa.\r
-#\r
-def LoadModuleClonedRecords(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/ModuleDefinitions/ClonedFrom/Cloned"\r
-    return map(LoadClonedRecord, XmlList(XmlMsa, XmlTag))\r
-\r
-## Load Module Header.\r
-#\r
-# Read an input Module XML DOM object and return Module Header class object\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-# @param  MsaFileName          The file path of MSA File.\r
-#\r
-# @retvel ModuleHeader         A new Module Header object loaded from XmlMsa.\r
-#\r
-def LoadModuleHeader(XmlMsa, MsaFileName):\r
-    ModuleHeader = ModuleHeaderClass()\r
-    \r
-    XmlTag = "ModuleSurfaceArea/MsaHeader"\r
-    MsaHeader = XmlNode(XmlMsa, XmlTag)\r
-    \r
-    SetIdentification(ModuleHeader, MsaHeader, "ModuleName", MsaFileName)\r
-    SetCommonHeader(ModuleHeader, MsaHeader)\r
-\r
-    XmlTag = "ModuleSurfaceArea/ModuleDefinitions/SupportedArchitectures"\r
-    ModuleHeader.SupArchList = XmlElement(XmlMsa, XmlTag).split()\r
-\r
-    XmlTag = "ModuleSurfaceArea/ModuleDefinitions/BinaryModule"\r
-    if XmlElement(XmlMsa, XmlTag).lower() == "true":\r
-        ModuleHeader.BinaryModule = True\r
-\r
-    XmlTag = "ModuleSurfaceArea/ModuleDefinitions/OutputFileBasename"\r
-    ModuleHeader.OutputFileBasename = XmlElement(XmlMsa, XmlTag)\r
-    \r
-    XmlTag = "ModuleSurfaceArea/ModuleDefinitions/ClonedForm"\r
-    ModuleHeader.ClonedFrom = LoadModuleClonedRecords(XmlMsa)\r
-\r
-    XmlTag = "ModuleSurfaceArea/Externs/PcdDriverTypes"\r
-    ModuleHeader.PcdIsDriver = XmlElement(XmlMsa, XmlTag)\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Externs/TianoEdkFlashMap_h"\r
-    if XmlElement(XmlMsa, XmlTag).lower() == "true":\r
-        ModuleHeader.TianoEdkFlashMap_h = True\r
-\r
-    XmlTag = "ModuleSurfaceArea/Externs/Specification"\r
-    for Specification in XmlElementList(XmlMsa, XmlTag):\r
-        AddToSpecificationDict(ModuleHeader.Specification, Specification)\r
-        \r
-    return ModuleHeader\r
-\r
-\r
-## Load a list of Module Library Classes.\r
-#\r
-# Read an input Module XML DOM object and return a list of Library Classes\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel LibraryClasses       A list of Library Classes loaded from XmlMsa.\r
-#\r
-def LoadModuleLibraryClasses(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/LibraryClassDefinitions/LibraryClass"\r
-    return map(LoadLibraryClass, XmlList(XmlMsa, XmlTag))\r
-    \r
-\r
-## Load a new Module Source class object.\r
-#\r
-# Read an input XML Source DOM object and return an object of Source\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFilename          A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleSource         A new Source object created by XmlFilename.\r
-#\r
-def LoadModuleSource(XmlFilename):\r
-    ModuleSource = ModuleSourceFileClass()\r
-    \r
-    ModuleSource.SourceFile = XmlElementData(XmlFilename)\r
-\r
-    XmlTag = "TagName"\r
-    ModuleSource.TagName = XmlAttribute(XmlFilename, XmlTag)\r
-    \r
-    XmlTag = "ToolCode"\r
-    ModuleSource.ToolCode = XmlAttribute(XmlFilename, XmlTag)\r
-    \r
-    XmlTag = "ToolChainFamily"\r
-    ModuleSource.ToolChainFamily = XmlAttribute(XmlFilename, XmlTag)\r
-    \r
-    SetCommon(ModuleSource, XmlFilename)\r
-    \r
-    return ModuleSource\r
-\r
-\r
-## Load a list of Module Sources.\r
-#\r
-# Read an input Module XML DOM object and return a list of Sources\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Sources              A list of Sources loaded from XmlMsa.\r
-#\r
-def LoadModuleSources(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/SourceFiles/Filename"\r
-    return map(LoadModuleSource, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module Binary class object.\r
-#\r
-# Read an input XML Binary DOM object and return an object of Binary\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlFilename          A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleBinary         A new Binary object created by XmlFilename.\r
-#\r
-def LoadModuleBinary(XmlFilename):\r
-    ModuleBinary = ModuleBinaryFileClass()\r
-    \r
-    ModuleBinary.BinaryFile = XmlElementData(XmlFilename)\r
-    \r
-    XmlTag = "FileType"\r
-    ModuleBinary.FileType = XmlElementAttribute(XmlFilename, XmlTag)\r
-    \r
-    SetCommon(ModuleBinary, XmlFilename)\r
-    \r
-\r
-## Load a list of Module Binaries.\r
-#\r
-# Read an input Module XML DOM object and return a list of Binaries\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Binaries             A list of Binaries loaded from XmlMsa.\r
-#\r
-def LoadModuleBinaries(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/BinaryFiles/Filename"\r
-    return map(LoadModuleBinary, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module Non Processed Files.\r
-#\r
-# Read an input Module XML DOM object and return a list of Non Processed Files\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel NonProcessedFiles    A list of Non Processed Files loaded from XmlMsa.\r
-#\r
-def LoadModuleNonProcessedFiles(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/NonProcessedFiles/Filename"\r
-    return XmlElementList(XmlMsa, XmlTag)\r
-\r
-\r
-## Load a new Module Package Dependency class object.\r
-#\r
-# Read an input XML PackageDependency DOM object and return an object of Package Dependency\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlPackage              A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModulePackageDependency A new Package Dependency object created by XmlPackage.\r
-#\r
-def LoadModulePackageDependency(XmlPackage):\r
-    ModulePackageDependency = ModulePackageDependencyClass()\r
-\r
-    XmlTag = "PackageGuid"\r
-    PackageKey = XmlAttribute(XmlPackage, XmlTag)\r
-    \r
-    #\r
-    #TODO: Add resolution for Package name, package Version\r
-    #\r
-    ModulePackageDependency.PackageGuid = PackageKey\r
-    SetCommon(ModulePackageDependency, XmlPackage)\r
-\r
-    return ModulePackageDependency\r
-    \r
-\r
-## Load a list of Module Package Dependencies.\r
-#\r
-# Read an input Module XML DOM object and return a list of Package Dependencies\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel PackageDependencies  A list of Package Dependencies loaded from XmlMsa.\r
-#\r
-def LoadModulePackageDependencies(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/PackageDependencies/Package"\r
-    return map(LoadModulePackageDependency, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module Protocols.\r
-#\r
-# Read an input Module XML DOM object and return a list of Protocols\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Protocols            A list of Protocols loaded from XmlMsa.\r
-#\r
-def LoadModuleProtocols(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/Protocols/Protocol"\r
-    XmlProtocolList = XmlList(XmlMsa, XmlTag)\r
-\r
-    XmlTag = "ModuleSurfaceArea/Protocols/ProtocolNotify"\r
-    XmlProtocolList += XmlList(XmlMsa, XmlTag)\r
-\r
-    return map(LoadGuidProtocolPpiCommon, XmlProtocolList)\r
-\r
-\r
-## Load a list of Module Ppis.\r
-#\r
-# Read an input Module XML DOM object and return a list of Ppis\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Ppis                 A list of Ppis loaded from XmlMsa.\r
-#\r
-def LoadModulePpis(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/PPIs/Ppi"\r
-    XmlPpiList = XmlList(XmlMsa, XmlTag)\r
-    \r
-    XmlTag = "ModuleSurfaceArea/PPIs/PpiNotify"\r
-    XmlPpiList += XmlList(XmlMsa, XmlTag)\r
-    \r
-    return map(LoadGuidProtocolPpiCommon, XmlPpiList)\r
-\r
-\r
-## Load a new Module Event class object.\r
-#\r
-# Read an input XML Event DOM object and return an object of Event\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlEvent             A child XML DOM object in Module XML DOM.\r
-# @param  Type                 Specify the event type: SIGNAL_EVENT or CREATE_EVENT.\r
-#\r
-# @retvel ModuleEvent          A new Event object created by XmlEvent.\r
-#\r
-def LoadModuleEvent(XmlEvent, Type):\r
-    ModuleEvent = ModuleEventClass()\r
-    \r
-    XmlTag = "EventTypes/EventType"\r
-    ModuleEvent.CName = XmlElement(XmlEvent, XmlTag)\r
-    \r
-    XmlTag = "EventGuidCName"\r
-    ModuleEvent.GuidCName = XmlAttribute(XmlEvent, XmlTag)\r
-    \r
-    ModuleEvent.Type = Type\r
-    \r
-    SetCommon(ModuleEvent, XmlEvent)\r
-    \r
-    return ModuleEvent\r
-    \r
-\r
-## Load a list of Module Events.\r
-#\r
-# Read an input Module XML DOM object and return a list of Events\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Events               A list of Events loaded from XmlMsa.\r
-#\r
-def LoadModuleEvents(XmlMsa):\r
-    ModuleEvents = []\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Events/CreateEvents/EventTypes"\r
-    for XmlCreateEvent in XmlList(XmlMsa, XmlTag):\r
-        ModuleEvent = LoadModuleEvent(XmlCreateEvent, "CREATE_EVENT")\r
-        ModuleEvents.append(ModuleEvent)\r
-\r
-    XmlTag = "ModuleSurfaceArea/Events/SignalEvents/EventTypes"\r
-    for XmlCreateEvent in XmlList(XmlMsa, XmlTag):\r
-        ModuleEvent = LoadModuleEvent(XmlCreateEvent, "SIGNAL_EVENT")\r
-        ModuleEvents.append(ModuleEvent)\r
-\r
-    return ModuleEvents\r
-\r
-\r
-## Load a new Module Hob class object.\r
-#\r
-# Read an input XML Hob DOM object and return an object of Hob\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlHob               A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleHob            A new Hob object created by XmlHob.\r
-#\r
-def LoadModuleHob(XmlHob):\r
-    ModuleHob = ModuleHobClass()\r
-    \r
-    XmlTag = "HobTypes/HobType"\r
-    ModuleHob.Type = XmlElement(XmlHob, XmlTag)\r
-    \r
-    XmlTag = "HobGuidCName"\r
-    ModuleHob.GuidCName = XmlAttribute(XmlHob, XmlTag)\r
-    \r
-    SetCommon(ModuleHob, XmlHob)\r
-    \r
-    return ModuleHob\r
-\r
-\r
-## Load a list of Module Hobs.\r
-#\r
-# Read an input Module XML DOM object and return a list of Hobs\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Hobs                 A list of Hobs loaded from XmlMsa.\r
-#\r
-def LoadModuleHobs(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/Hobs/HobTypes"\r
-    return map(LoadModuleHob, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module Variable class object.\r
-#\r
-# Read an input XML Variable DOM object and return an object of Variable\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlVariable          A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleVariable       A new Variable object created by XmlVariable.\r
-#\r
-def LoadModuleVariable(XmlVariable):\r
-    ModuleVariable = ModuleVariableClass()\r
-    \r
-    XmlTag = "Variable/VariableName"\r
-    HexWordArray = XmlElement(XmlVariable, XmlTag).split()\r
-    try:\r
-        ModuleVariable.Name = "".join([unichr(int(a, 16)) for a in HexWordArray])\r
-    except:\r
-        ModuleVariable.Name = ""\r
-        \r
-    XmlTag = "Variable/GuidC_Name"\r
-    ModuleVariable.GuidCName = XmlElement(XmlVariable, XmlTag)\r
-    \r
-    SetCommon(ModuleVariable, XmlVariable)\r
-    \r
-    return ModuleVariable\r
-\r
-\r
-## Load a list of Module Variables.\r
-#\r
-# Read an input Module XML DOM object and return a list of Variables\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Variables            A list of Variables loaded from XmlMsa.\r
-#\r
-def LoadModuleVariables(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/Variables/Variable"\r
-    return map(LoadModuleVariable, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module Boot Mode class object.\r
-#\r
-# Read an input XML BootMode DOM object and return an object of Boot Mode\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlBootMode          A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleBootMode       A new Boot Mode object created by XmlBootMode.\r
-#\r
-def LoadModuleBootMode(XmlBootMode):\r
-    ModuleBootMode = ModuleBootModeClass()\r
-    \r
-    XmlTag = "BootModeName"\r
-    ModuleBootMode.Name = XmlAttribute(XmlBootMode, XmlTag)\r
-    \r
-    SetCommon(ModuleBootMode, XmlBootMode)\r
-    \r
-    return ModuleBootMode\r
-\r
-\r
-## Load a list of Module Boot Modes.\r
-#\r
-# Read an input Module XML DOM object and return a list of Boot Modes\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel BootModes            A list of Boot Modes loaded from XmlMsa.\r
-#\r
-def LoadModuleBootModes(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/BootModes/BootMode"\r
-    return map(LoadModuleBootMode, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module System Table class object.\r
-#\r
-# Read an input XML SystemTable DOM object and return an object of System Table\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSystemTable       A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleSystemTable    A new System Table object created by XmlSystemTable.\r
-#\r
-def LoadModuleSystemTable(XmlSystemTable):\r
-    ModuleSystemTable = ModuleSystemTableClass()\r
-    \r
-    XmlTag = "SystemTable/SystemTableCName"\r
-    ModuleSystemTable.CName = XmlElement(XmlSystemTable, XmlTag)\r
-    \r
-    SetCommon(ModuleSystemTable, XmlSystemTable)\r
-    \r
-    return ModuleSystemTable\r
-    \r
-\r
-## Load a list of Module System Tables.\r
-#\r
-# Read an input Module XML DOM object and return a list of System Tables\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel SystemTables         A list of System Tables loaded from XmlMsa.\r
-#\r
-def LoadModuleSystemTables(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/SystemTables/SystemTableCNames"\r
-    return map(LoadModuleSystemTable, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module Data Hub class object.\r
-#\r
-# Read an input XML DataHub DOM object and return an object of Data Hub\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlDataHub           A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleDataHub        A new Data Hub object created by XmlDataHub.\r
-#\r
-def LoadModuleDataHub(XmlDataHub):\r
-    ModuleDataHub = ModuleDataHubClass()\r
-    \r
-    XmlTag = "DataHub/DataHubCName"\r
-    ModuleDataHub.CName = XmlElement(XmlDataHub, "DataHubCName")\r
-    \r
-    SetCommon(ModuleDataHub, XmlDataHub)\r
-\r
-    return ModuleDataHub\r
-\r
-\r
-## Load a list of Module Data Hubs.\r
-#\r
-# Read an input Module XML DOM object and return a list of Data Hubs\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel DataHubs             A list of Data Hubs loaded from XmlMsa.\r
-#\r
-def LoadModuleDataHubs(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/DataHubs/DataHubRecord"\r
-    return map(LoadModuleDataHub, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a new Module Hii Package class object.\r
-#\r
-# Read an input XML HiiPackage DOM object and return an object of Hii Package\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlHiiPackage        A child XML DOM object in Module XML DOM.\r
-#\r
-# @retvel ModuleHiiPackage     A new Hii Package object created by XmlHiiPackage.\r
-#\r
-def LoadModuleHiiPackage(XmlHiiPackage):\r
-    ModuleHiiPackage = ModuleHiiPackageClass()\r
-\r
-    XmlTag = "HiiPackage/HiiPackageCName"\r
-    ModuleHiiPackage.CName = XmlElement(XmlHiiPackage, "HiiCName")\r
-\r
-    SetCommon(ModuleHiiPackage, XmlHiiPackage)\r
-\r
-    return ModuleHiiPackage\r
-\r
-\r
-## Load a list of Module Hii Packages.\r
-#\r
-# Read an input Module XML DOM object and return a list of Hii Packages\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel HiiPackages          A list of Hii Packages loaded from XmlMsa.\r
-#\r
-def LoadModuleHiiPackages(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/HiiPackages/HiiPackage"\r
-    return map(LoadModuleHiiPackage, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module Guids.\r
-#\r
-# Read an input Module XML DOM object and return a list of Guids\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel Guids                A list of Guids loaded from XmlMsa.\r
-#\r
-def LoadModuleGuids(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/Guids/GuidCNames"\r
-    return map(LoadGuidProtocolPpiCommon, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module Pcd Codes.\r
-#\r
-# Read an input Module XML DOM object and return a list of Pcd Codes\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel PcdCodes             A list of Pcd Codes loaded from XmlMsa.\r
-#\r
-def LoadModulePcdCodes(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/PcdCoded/PcdEntry"\r
-    return map(LoadPcd, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module Extern Images.\r
-#\r
-# Read an input Module XML DOM object and return a list of Extern Images\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel ExternImages         A list of Extern Images loaded from XmlMsa.\r
-#\r
-def LoadModuleExternImages(XmlMsa):\r
-    ModuleExternImages = []\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Externs/Extern"\r
-    for XmlExtern in XmlList(XmlMsa, XmlTag):\r
-        XmlTag = "Extern/ModuleEntryPoint"\r
-        ModuleEntryPoint = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/ModuleUnloadImage"\r
-        ModuleUnloadImage = XmlElement(XmlExtern, XmlTag)\r
-        if ModuleEntryPoint == "" and ModuleUnloadImage == "":\r
-            continue\r
-\r
-        ModuleExtern = ModuleExternImageClass()\r
-        ModuleExtern.ModuleEntryPoint = ModuleEntryPoint\r
-        ModuleExtern.ModuleUnloadImage = ModuleUnloadImage\r
-        ModuleExternImages.append(ModuleExtern)\r
-\r
-    return ModuleExternImages\r
-\r
-\r
-## Load a list of Module Extern Libraries.\r
-#\r
-# Read an input Module XML DOM object and return a list of Extern Libraries\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel ExternLibraries      A list of Extern Libraries loaded from XmlMsa.\r
-#\r
-def LoadModuleExternLibraries(XmlMsa):\r
-    ModuleExternLibraries = []\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Externs/Extern"\r
-    for XmlExtern in XmlList(XmlMsa, XmlTag):\r
-        XmlTag = "Extern/Constructor"\r
-        Constructor = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/Destructor"\r
-        Destructor = XmlElement(XmlExtern, XmlTag)\r
-        if Constructor == "" and Destructor == "":\r
-            continue\r
-        \r
-        ModuleExtern = ModuleExternLibraryClass()\r
-        ModuleExtern.Constructor = Constructor\r
-        ModuleExtern.Destructor = Destructor\r
-        ModuleExternLibraries.append(ModuleExtern)\r
-\r
-    return ModuleExternLibraries\r
-\r
-\r
-## Load a list of Module Extern Drivers.\r
-#\r
-# Read an input Module XML DOM object and return a list of Extern Drivers\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel ExternDrivers        A list of Extern Drivers loaded from XmlMsa.\r
-#\r
-def LoadModuleExternDrivers(XmlMsa):\r
-    ModuleExternDrivers = []\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Externs/Extern"\r
-    for XmlExtern in XmlList(XmlMsa, XmlTag):\r
-        XmlTag = "Extern/DriverBinding"\r
-        DriverBinding = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/ComponentName"\r
-        ComponentName = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/DriverConfig"\r
-        DriverConfig = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/DriverDiag"\r
-        DriverDiag = XmlElement(XmlExtern, XmlTag)\r
-        if DriverBinding == "":\r
-            continue\r
-        \r
-        ModuleExtern = ModuleExternDriverClass()\r
-        ModuleExtern.DriverBinding = DriverBinding\r
-        ModuleExtern.ComponentName = ComponentName\r
-        ModuleExtern.DriverConfig = DriverConfig\r
-        ModuleExtern.DriverDiag = DriverDiag\r
-        ModuleExternDrivers.append(ModuleExtern)\r
-\r
-    return ModuleExternDrivers\r
-\r
-\r
-## Load a list of Module Extern Call Backs.\r
-#\r
-# Read an input Module XML DOM object and return a list of Extern Call Backs\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel ExternCallBacks      A list of Extern Call Backs loaded from XmlMsa.\r
-#\r
-def LoadModuleExternCallBacks(XmlMsa):\r
-    ModuleExternCallBacks = []\r
-    \r
-    XmlTag = "ModuleSurfaceArea/Externs/Extern"\r
-    for XmlExtern in XmlList(XmlMsa, XmlTag):\r
-        XmlTag = "Extern/SetVirtualAddressMapCallBack"\r
-        SetVirtualAddressMap = XmlElement(XmlExtern, XmlTag)\r
-        XmlTag = "Extern/ExitBootServicesCallBack"\r
-        ExitBootServices = XmlElement(XmlExtern, XmlTag)\r
-        if SetVirtualAddressMap == "" and ExitBootServices == "":\r
-            continue\r
-        \r
-        ModuleExtern = ModuleExternCallBackClass()\r
-        ModuleExtern.ExitBootServicesCallBack = ExitBootServices\r
-        ModuleExtern.SetVirtualAddressMapCallBack = SetVirtualAddressMap\r
-        ModuleExternCallBacks.append(ModuleExtern)\r
-\r
-    return ModuleExternCallBacks\r
-\r
-\r
-## Load a list of Module Build Options.\r
-#\r
-# Read an input Module XML DOM object and return a list of Build Options\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel BuildOptions         A list of Build Options loaded from XmlMsa.\r
-#\r
-def LoadModuleBuildOptions(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/ModuleBuildOptions/Options/Option"\r
-    return map(LoadBuildOption, XmlList(XmlMsa, XmlTag))\r
-\r
-\r
-## Load a list of Module User Extensions.\r
-#\r
-# Read an input Module XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlMsa               An XML DOM object read from MSA file.\r
-#\r
-# @retvel UserExtensions       A list of User Extensions loaded from XmlMsa.\r
-#\r
-def LoadModuleUserExtensions(XmlMsa):\r
-    XmlTag = "ModuleSurfaceArea/UserExtensions"\r
-    return map(LoadUserExtensions, XmlList(XmlMsa, XmlTag))\r
-\r
-## Load a new Module class object.\r
-#\r
-# Read an input MSA File and return a new Module class Object.\r
-#\r
-# @param  MsaFileName          An XML DOM object read from MSA file.\r
-#\r
-# @retvel Module               A new Module class object loaded from MSA File.\r
-#\r
-def LoadMsa(MsaFileName):\r
-    XmlMsa = XmlParseFile(MsaFileName)\r
-    EdkLogger.verbose("Load MSA File: %s" % MsaFileName)\r
-    \r
-    Module = ModuleClass()\r
-    Module.Header = LoadModuleHeader(XmlMsa, MsaFileName)\r
-    Module.LibraryClasses = LoadModuleLibraryClasses(XmlMsa)\r
-    Module.Sources = LoadModuleSources(XmlMsa)\r
-    Module.BinaryFiles = LoadModuleBinaries(XmlMsa)\r
-    Module.NonProcessedFiles = LoadModuleNonProcessedFiles(XmlMsa)\r
-    Module.PackageDependencies = LoadModulePackageDependencies(XmlMsa)\r
-    Module.Protocols = LoadModuleProtocols(XmlMsa)\r
-    Module.Ppis = LoadModulePpis(XmlMsa)\r
-    Module.Events = LoadModuleEvents(XmlMsa)\r
-    Module.Hobs = LoadModuleHobs(XmlMsa)\r
-    Module.Variables = LoadModuleVariables(XmlMsa)\r
-    Module.BootModes = LoadModuleBootModes(XmlMsa)\r
-    Module.SystemTables = LoadModuleSystemTables(XmlMsa)\r
-    Module.DataHubs = LoadModuleDataHubs(XmlMsa)\r
-    Module.HiiPackages = LoadModuleHiiPackages(XmlMsa)\r
-    Module.Guids = LoadModuleGuids(XmlMsa)\r
-    Module.PcdCodes = LoadModulePcdCodes(XmlMsa)\r
-    Module.ExternImages = LoadModuleExternImages(XmlMsa)\r
-    Module.ExternLibraries = LoadModuleExternLibraries(XmlMsa)\r
-    Module.ExternDrivers = LoadModuleExternDrivers(XmlMsa)\r
-    Module.ExternCallBacks = LoadModuleExternCallBacks(XmlMsa)\r
-    Module.BuildOptions = LoadModuleBuildOptions(XmlMsa)\r
-    Module.UserExtensions = LoadModuleUserExtensions(XmlMsa)\r
-    \r
-    return Module\r
-\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass
\ No newline at end of file
diff --git a/BaseTools/Source/Python/msa2inf/Msa2Inf.py b/BaseTools/Source/Python/msa2inf/Msa2Inf.py
deleted file mode 100644 (file)
index 04c8602..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-## @file\r
-# Convert an XML-based MSA file to a text-based INF file.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import sys\r
-from Common.MigrationUtilities import *\r
-from LoadMsa import LoadMsa\r
-from StoreInf import StoreInf\r
-from ConvertModule import ConvertMsaModuleToInfModule\r
-\r
-## Entrance method\r
-#\r
-# This method mainly dispatch specific methods per the command line options.\r
-# If no error found, return zero value so the caller of this tool can know\r
-# if it's executed successfully or not.\r
-#\r
-# @retval 0     Tool was successful.\r
-# @retval 1     Tool failed.\r
-#\r
-def Main():\r
-    try:\r
-        Options, InputFile = MigrationOptionParser("MSA", "INF", "%prog")\r
-        Module = LoadMsa(InputFile)\r
-        ConvertMsaModuleToInfModule(Module)\r
-        StoreInf(Options.OutputFile, Module)\r
-        return 0\r
-    except Exception, e:\r
-        print e\r
-        return 1\r
-\r
-if __name__ == '__main__':\r
-    sys.exit(Main())\r
diff --git a/BaseTools/Source/Python/msa2inf/StoreInf.py b/BaseTools/Source/Python/msa2inf/StoreInf.py
deleted file mode 100644 (file)
index d7f6869..0000000
+++ /dev/null
@@ -1,442 +0,0 @@
-## @file\r
-# Store a Module class object to an INF file.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-from LoadMsa import LoadMsa\r
-from CommonDataClass.ModuleClass import *\r
-from Common.MigrationUtilities import *\r
-\r
-## Get the produced library class.\r
-#\r
-# Return the item of Library Class based on Library .\r
-#\r
-# @param  LibraryClasses     A list of library classes the module produces.\r
-#\r
-# @retval LibraryClassItem   A text format library class item.\r
-#\r
-def GetModuleLibraryClass(LibraryClasses):\r
-    ProducedLibraryClasses = []\r
-    for LibraryClass in LibraryClasses:\r
-        ProducedLibraryClass = LibraryClass.LibraryClass\r
-        SupportedModueTypes = " ".join(LibraryClass.SupModuleList)\r
-        if SupportedModueTypes != "":\r
-            ProducedLibraryClass += "|" + SupportedModueTypes\r
-        ProducedLibraryClasses.append(ProducedLibraryClass)\r
-\r
-    return "|".join(ProducedLibraryClasses)\r
-\r
-\r
-## Store Defines section.\r
-#\r
-# Write [Defines] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Defines section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleDefinesSection(InfFile, Module):\r
-    ModuleHeader = Module.Header\r
-    \r
-    DefinesTupleList = []\r
-    DefinesTupleList.append(("INF_VERSION", ModuleHeader.InfVersion))\r
-    \r
-    if ModuleHeader.Name != "":\r
-        DefinesTupleList.append(("BASE_NAME", ModuleHeader.Name))\r
-\r
-    if ModuleHeader.Guid != "":\r
-        DefinesTupleList.append(("FILE_GUID", ModuleHeader.Guid))\r
-\r
-    if ModuleHeader.Version != "":\r
-        DefinesTupleList.append(("VERSION_STRING", ModuleHeader.Version))\r
-        \r
-    if ModuleHeader.ModuleType != "":\r
-        DefinesTupleList.append(("MODULE_TYPE", ModuleHeader.ModuleType))\r
-\r
-    if ModuleHeader.UefiSpecificationVersion != "":\r
-        DefinesTupleList.append(("UEFI_SPECIFICATION_VERSION", ModuleHeader.UefiSpecificationVersion))\r
-    \r
-    if ModuleHeader.EdkReleaseVersion != "":\r
-        DefinesTupleList.append(("EDK_RELEASE_VERSION", ModuleHeader.EdkReleaseVersion))\r
-    \r
-    ProducedLibraryClass = GetModuleLibraryClass(ModuleHeader.LibraryClass)\r
-    if ProducedLibraryClass != "":\r
-        DefinesTupleList.append(("LIBRARY_CLASS", ProducedLibraryClass))\r
-\r
-    if ModuleHeader.MakefileName != "":\r
-        DefinesTupleList.append(("MAKEFILE_NAME", ModuleHeader.MakeFileName))\r
-\r
-    if ModuleHeader.PcdIsDriver != "":\r
-        DefinesTupleList.append(("PCD_DRIVER", "TRUE"))\r
-\r
-    if len(Module.ExternImages) > 0:\r
-        ModuleEntryPoint = Module.ExternImages[0].ModuleEntryPoint\r
-        ModuleUnloadImage = Module.ExternImages[0].ModuleUnloadImage\r
-        if ModuleEntryPoint != "":\r
-            DefinesTupleList.append(("ENTRY_POINT", ModuleEntryPoint))\r
-        if ModuleUnloadImage != "":\r
-            DefinesTupleList.append(("UNLOAD_IMAGE", ModuleUnloadImage))\r
-\r
-    if len(Module.ExternLibraries) > 0:\r
-        Constructor = Module.ExternLibraries[0].Constructor\r
-        Destructor = Module.ExternLibraries[0].Destructor\r
-        if Constructor != "":\r
-            DefinesTupleList.append(("CONSTRUCTOR", Constructor))\r
-        if Destructor != "":\r
-            DefinesTupleList.append(("DESTRUCTOR", Destructor))\r
-\r
-    StoreDefinesSection(InfFile, DefinesTupleList)\r
-    \r
-\r
-## Return a Module Source Item.\r
-#\r
-# Read the input ModuleSourceFile class object and return one line of Source Item.\r
-#\r
-# @param  ModuleSourceFile     An input ModuleSourceFile class object.\r
-#\r
-# @retval SourceItem           A Module Source Item.\r
-#\r
-def GetModuleSourceItem(ModuleSourceFile):\r
-    Source = []\r
-    Source.append(ModuleSourceFile.SourceFile)\r
-    Source.append(ModuleSourceFile.ToolChainFamily)\r
-    Source.append(ModuleSourceFile.TagName)\r
-    Source.append(ModuleSourceFile.ToolCode)\r
-    Source.append(ModuleSourceFile.FeatureFlag)\r
-    return "|".join(Source).rstrip("|")\r
-    \r
-\r
-## Store Sources section.\r
-#\r
-# Write [Sources] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Sources section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleSourcesSection(InfFile, Module):\r
-    Section = GetSection("Sources", GetModuleSourceItem, Module.Sources)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Return a Module Binary Item.\r
-#\r
-# Read the input ModuleBinaryFile class object and return one line of Binary Item.\r
-#\r
-# @param  ModuleBinaryFile     An input ModuleBinaryFile class object.\r
-#\r
-# @retval BinaryItem           A Module Binary Item.\r
-#\r
-def GetModuleBinaryItem(ModuleBinaryFile):\r
-    Binary = []\r
-    Binary.append(ModuleBinaryFile.FileType)\r
-    Binary.append(ModuleBinaryFile.BinaryFile)\r
-    Binary.append(ModuleBinaryFile.Target)\r
-    Binary.append(ModuleBinaryFile.FeatureFlag)\r
-    return "|".join(Binary).rstrip("|")\r
-\r
-\r
-## Store Binaries section.\r
-#\r
-# Write [Binaries] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Binaries section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleBinariesSection(InfFile, Module):\r
-    Section = GetSection("Binaries", GetModuleBinaryItem, Module.Binaries)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Return a Module Library Class Item.\r
-#\r
-# Read the input LibraryClass class object and return one line of Library Class Item.\r
-#\r
-# @param  LibraryClass         An input LibraryClass class object.\r
-#\r
-# @retval LibraryClassItem     A Module Library Class Item.\r
-#\r
-def GetModuleLibraryClassItem(LibraryClass):\r
-    if "ALWAYS_PRODUCED" in LibraryClass.Usage:\r
-        return ""\r
-\r
-    LibraryClassList = []\r
-    LibraryClassList.append(LibraryClass.LibraryClass)\r
-    LibraryClassList.append(LibraryClass.RecommendedInstance)\r
-    LibraryClassList.append(LibraryClass.FeatureFlag)\r
-    \r
-    return "|".join(LibraryClassList).rstrip("|")\r
-\r
-\r
-## Store Library Classes section.\r
-#\r
-# Write [LibraryClasses] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Library Classes section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleLibraryClassesSection(InfFile, Module):\r
-    Section = GetSection("LibraryClasses", GetModuleLibraryClassItem, Module.LibraryClasses)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Return a Module Package Item.\r
-#\r
-# Read the input PackageDependency class object and return one line of Package Item.\r
-#\r
-# @param  PackageDependency    An input PackageDependency class object.\r
-#\r
-# @retval PackageItem          A Module Package Item.\r
-#\r
-def GetModulePackageItem(PackageDependency):\r
-    return PackageDependency.FilePath\r
-\r
-\r
-## Store Packages section.\r
-#\r
-# Write [Packages] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Packages section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModulePackagesSection(InfFile, Module):\r
-    Section = GetSection("Packages", GetModulePackageItem, Module.PackageDependencies)\r
-    StoreTextFile(InfFile, Section)\r
-    \r
-\r
-## Return a Module Guid C Name Item.\r
-#\r
-# Read the input Guid class object and return one line of Guid C Name Item.\r
-#\r
-# @param  Guid                 An input Guid class object.\r
-#\r
-# @retval GuidCNameItem        A Module Guid C Name Item.\r
-#\r
-def GetModuleGuidCNameItem(Guid):\r
-    try:\r
-        return Guid.GuidCName\r
-    except:\r
-        return Guid.CName\r
-\r
-\r
-## Store Protocols section.\r
-#\r
-# Write [Protocols] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Protocols section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleProtocolsSection(InfFile, Module):\r
-    Section = GetSection("Protocols", GetModuleGuidCNameItem, Module.Protocols)\r
-    StoreTextFile(InfFile, Section)\r
-    \r
-\r
-## Store Ppis section.\r
-#\r
-# Write [Ppis] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Ppis section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModulePpisSection(InfFile, Module):\r
-    Section = GetSection("Ppis", GetModuleGuidCNameItem, Module.Ppis)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Store Guids section.\r
-#\r
-# Write [Guids] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Guids section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleGuidsSection(InfFile, Module):\r
-    Guids = []\r
-    Guids += Module.Guids\r
-    Guids += Module.Events\r
-    Guids += Module.Hobs\r
-    Guids += Module.Variables\r
-    Guids += Module.SystemTables\r
-    Guids += Module.DataHubs\r
-    Guids += Module.HiiPackages\r
-    Section = GetSection("Guids", GetModuleGuidCNameItem, Guids)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Return a Module Pcd Item.\r
-#\r
-# Read the input Pcd class object and return one line of Pcd Item.\r
-#\r
-# @param  Pcd                  An input Pcd class object.\r
-#\r
-# @retval PcdItem              A Module Pcd Item.\r
-#\r
-def GetModulePcdItem(Pcd):\r
-    PcdItem = "%s.%s" % (Pcd.TokenSpaceGuidCName, Pcd.CName)\r
-    if Pcd.DefaultValue != "":\r
-        PcdItem = "%s|%s" % (PcdItem, Pcd.DefaultValue)\r
-\r
-    return PcdItem\r
-\r
-\r
-## DEC Pcd Section Name dictionary indexed by PCD Item Type.\r
-mInfPcdSectionNameDict = {\r
-    "FEATURE_FLAG" : "FeaturePcd",\r
-    "FIXED_AT_BUILD" : "FixedPcd",\r
-    "PATCHABLE_IN_MODULE" : "PatchPcd",\r
-    "DYNAMIC" : "Pcd",\r
-    "DYNAMIC_EX" : "PcdEx"\r
-    }\r
-    \r
-## Store Pcds section.\r
-#\r
-# Write [(PcdType)] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Pcds section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModulePcdsSection(InfFile, Module):\r
-    PcdsDict = {}\r
-    for Pcd in Module.PcdCodes:\r
-        PcdSectionName = mInfPcdSectionNameDict.get(Pcd.ItemType)\r
-        if PcdSectionName:\r
-            PcdsDict.setdefault(PcdSectionName, []).append(Pcd)\r
-        else:\r
-            EdkLogger.info("Unknown Pcd Item Type: %s" % Pcd.ItemType)\r
-\r
-    Section = ""\r
-    for PcdSectionName in PcdsDict:\r
-        Pcds = PcdsDict[PcdSectionName]\r
-        Section += GetSection(PcdSectionName, GetModulePcdItem, Pcds)\r
-        Section += "\n"\r
-\r
-    StoreTextFile(InfFile, Section)\r
-    \r
-\r
-## Return a Module Depex Item.\r
-#\r
-# Read the input Depex class object and return one line of Depex Item.\r
-#\r
-# @param  Depex                An input Depex class object.\r
-#\r
-# @retval DepexItem            A Module Depex Item.\r
-#\r
-def GetModuleDepexItem(Depex):\r
-    return Depex.Depex\r
-\r
-\r
-## Store Depex section.\r
-#\r
-# Write [Depex] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Depex section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleDepexSection(InfFile, Module):\r
-    Section = GetSection("Depex", GetModuleDepexItem, Module.Depex)\r
-    StoreTextFile(InfFile, Section)\r
-    \r
-\r
-## Return a Module Build Option Item.\r
-#\r
-# Read the input BuildOption class object and return one line of Build Option Item.\r
-#\r
-# @param  BuildOption          An input BuildOption class object.\r
-#\r
-# @retval BuildOptionItem      A Module Build Option Item.\r
-#\r
-def GetModuleBuildOptionItem(BuildOption):\r
-    BuildTarget = BuildOption.BuildTarget\r
-    if BuildTarget == "":\r
-        BuildTarget = "*"\r
-\r
-    TagName = BuildOption.TagName\r
-    if TagName == "":\r
-        TagName = "*"\r
-        \r
-    ToolCode = BuildOption.ToolCode\r
-    if ToolCode == "":\r
-        ToolCode = "*"\r
-\r
-    Item = "_".join((BuildTarget, TagName, "*", ToolCode, "Flag"))\r
-\r
-    ToolChainFamily = BuildOption.ToolChainFamily\r
-    if ToolChainFamily != "":\r
-        Item = "%s:%s" % (ToolChainFamily, Item)\r
-\r
-    return "%-30s = %s" % (Item, BuildOption.Option)\r
-\r
-\r
-## Store Build Options section.\r
-#\r
-# Write [BuildOptions] section to the InfFile based on Module class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  InfFile              The output INF file to store the Build Options section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleBuildOptionsSection(InfFile, Module):\r
-    Section = GetSection("BuildOption", GetModuleBuildOptionItem, Module.BuildOptions)\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Store User Extensions section.\r
-#\r
-# Write [UserExtensions] section to the InfFile based on Module class object.\r
-#\r
-# @param  InfFile              The output INF file to store the User Extensions section.\r
-# @param  Module               An input Module class object.\r
-#\r
-def StoreModuleUserExtensionsSection(InfFile, Module):\r
-    Section = "".join(map(GetUserExtensions, Module.UserExtensions))\r
-    StoreTextFile(InfFile, Section)\r
-\r
-\r
-## Store a Module class object to a new INF file.\r
-#\r
-# Read an input Module class object and save the contents to a new INF file.\r
-#\r
-# @param  INFFileName          The output INF file.\r
-# @param  Module               An input Package class object.\r
-#\r
-def StoreInf(InfFileName, Module):\r
-    InfFile = open(InfFileName, "w+")\r
-    EdkLogger.info("Save file to %s" % InfFileName)\r
-\r
-    StoreHeader(InfFile, Module.Header)\r
-    StoreModuleDefinesSection(InfFile, Module)\r
-    StoreModuleSourcesSection(InfFile, Module)\r
-    StoreModuleBinariesSection(InfFile, Module)\r
-    StoreModulePackagesSection(InfFile, Module)\r
-    StoreModuleLibraryClassesSection(InfFile, Module)\r
-    StoreModuleProtocolsSection(InfFile, Module)\r
-    StoreModulePpisSection(InfFile, Module)\r
-    StoreModuleGuidsSection(InfFile, Module)\r
-    StoreModulePcdsSection(InfFile, Module)\r
-    StoreModuleDepexSection(InfFile, Module)\r
-    StoreModuleBuildOptionsSection(InfFile, Module)\r
-    StoreModuleUserExtensionsSection(InfFile, Module)\r
-\r
-    InfFile.close()\r
-    \r
-if __name__ == '__main__':\r
-    pass\r
diff --git a/BaseTools/Source/Python/msa2inf/__init__.py b/BaseTools/Source/Python/msa2inf/__init__.py
deleted file mode 100644 (file)
index ed1749b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'msa2inf' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
diff --git a/BaseTools/Source/Python/spd2dec/ConvertPackage.py b/BaseTools/Source/Python/spd2dec/ConvertPackage.py
deleted file mode 100644 (file)
index f074225..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-## @file\r
-# Convert an SPD Package class object ot a DEC Package class object by filling\r
-# some fields required by DEC file.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-from Common.MigrationUtilities import *\r
-from LoadSpd import LoadSpd\r
-from StoreDec import StoreDec\r
-\r
-#The default DEC version number tool generates.\r
-gDecVersion = "0x00010005"\r
-\r
-\r
-## Add required version information.\r
-#\r
-# Add the default DEC specification version to Package class object.\r
-#\r
-# @param  Package              An input Package class object.\r
-#\r
-def AddPackageMiscVersion(Package):\r
-    PackageHeader = Package.Header\r
-    PackageHeader.DecSpecification = gDecVersion\r
-\r
-## Add package include information.\r
-#\r
-# Adds the default "Include" folder to if that directory exists.\r
-#\r
-# @param  Package              An input Package class object.\r
-#\r
-def AddPackageInclude(Package):\r
-    PackageDir = os.path.dirname(Package.Header.FullPath)\r
-    DefaultIncludeDir = os.path.join(PackageDir, "Include")\r
-    if os.path.exists(DefaultIncludeDir):\r
-        Include = IncludeClass()\r
-        Include.FilePath = "Include"\r
-        Package.Includes.insert(0, Include)\r
-\r
-## Convert SPD Package class object to DEC Package class object.\r
-#\r
-# Convert SPD Package class ojbect to DEC Package class object by filling in\r
-# several information required by DEC file.\r
-#\r
-# @param  Package              An input Package class object.\r
-#\r
-def ConvertSpdPackageToDecPackage(Package):\r
-    AddPackageMiscVersion(Package)\r
-    AddPackageInclude(Package)\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass\r
-    
\ No newline at end of file
diff --git a/BaseTools/Source/Python/spd2dec/LoadSpd.py b/BaseTools/Source/Python/spd2dec/LoadSpd.py
deleted file mode 100644 (file)
index e82a9bf..0000000
+++ /dev/null
@@ -1,273 +0,0 @@
-## @file\r
-# Open an SPD file and load all its contents to a PackageClass object.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-from Common.XmlRoutines import *\r
-from Common.MigrationUtilities import *\r
-from CommonDataClass.PackageClass import *\r
-\r
-\r
-## Load a list of Package Cloned Records.\r
-#\r
-# Read an input Package XML DOM object and return a list of Cloned Records\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel ClonedRecords        A list of Cloned Records loaded from XmlSpd.\r
-#\r
-def LoadPackageClonedRecords(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/PackageDefinitions/ClonedFrom/Cloned"\r
-    return map(LoadClonedRecord, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load Package Header.\r
-#\r
-# Read an input Package XML DOM object and return Package Header class object\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-# @param  SpdFileName          The file path of SPD File.\r
-#\r
-# @retvel PackageHeader        A new Package Header object loaded from XmlSpd.\r
-#\r
-def LoadPackageHeader(XmlSpd, SpdFileName):\r
-    PackageHeader = PackageHeaderClass()\r
-    \r
-    XmlTag = "PackageSurfaceArea/SpdHeader"\r
-    SpdHeader = XmlNode(XmlSpd, XmlTag)\r
-    \r
-    SetIdentification(PackageHeader, SpdHeader, "PackageName", SpdFileName)\r
-    SetCommonHeader(PackageHeader, SpdHeader)\r
-    \r
-    XmlTag = "PackageSurfaceArea/PackageDefinitions/ReadOnly"\r
-    if XmlElement(XmlSpd, XmlTag).lower() == "true":\r
-        PackageHeader.ReadOnly = True\r
-\r
-    XmlTag = "PackageSurfaceArea/PackageDefinitions/RePackage"\r
-    if XmlElement(XmlSpd, XmlTag).lower() == "true":\r
-        PackageHeader.RePackage = True\r
-\r
-    PackageHeader.ClonedFrom = LoadPackageClonedRecords(XmlSpd)\r
-    \r
-    return PackageHeader\r
-\r
-\r
-## Load a list of Package Library Classes.\r
-#\r
-# Read an input Package XML DOM object and return a list of Library Classes\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel LibraryClasses       A list of Library Classes loaded from XmlSpd.\r
-#\r
-def LoadPackageLibraryClasses(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/LibraryClassDeclarations/LibraryClass"\r
-    return map(LoadLibraryClass, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a new Package Industry Std Header class object.\r
-#\r
-# Read an input XML IndustryStdHeader DOM object and return an object of\r
-# Industry Std Header contained in the DOM object.\r
-#\r
-# @param  XmlIndustryStdHeader     A child XML DOM object in Package XML DOM.\r
-#\r
-# @retvel PackageIndustryStdHeader A new Industry Std Header object created by XmlIndustryStdHeader.\r
-#\r
-def LoadPackageIndustryStdHeader(XmlIndustryStdHeader):\r
-    PackageIndustryStdHeader = PackageIndustryStdHeaderClass()\r
-    \r
-    XmlTag = "Name"\r
-    Name = XmlAttribute(XmlIndustryStdHeader, XmlTag)\r
-    PackageIndustryStdHeader.Name = Name\r
-    \r
-    XmlTag = "IndustryStdHeader/IncludeHeader"\r
-    IncludeHeader = XmlElement(XmlIndustryStdHeader, XmlTag)\r
-    PackageIndustryStdHeader.IncludeHeader = IncludeHeader\r
-    \r
-    SetCommon(PackageIndustryStdHeader, XmlIndustryStdHeader)\r
-    \r
-    return PackageIndustryStdHeader\r
-\r
-\r
-## Load a list of Package Industry Std Headers.\r
-#\r
-# Read an input Package XML DOM object and return a list of Industry Std Headers\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd             An XML DOM object read from SPD file.\r
-#\r
-# @retvel IndustryStdHeaders A list of Industry Std Headers loaded from XmlSpd.\r
-#\r
-def LoadPackageIndustryStdHeaders(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/IndustryStdIncludes/IndustryStdHeader"\r
-    return map(LoadPackageIndustryStdHeader, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package Module Files.\r
-#\r
-# Read an input Package XML DOM object and return a list of Module Files\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd             An XML DOM object read from SPD file.\r
-#\r
-# @retvel ModuleFiles        A list of Module Files loaded from XmlSpd.\r
-#\r
-def LoadPackageModuleFiles(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/MsaFiles/Filename"\r
-    return XmlElementList(XmlSpd, XmlTag)\r
-\r
-\r
-## Load a new Package Include Pkg Header class object.\r
-#\r
-# Read an input XML IncludePkgHeader DOM object and return an object of Include\r
-# Package Header contained in the DOM object.\r
-#\r
-# @param  XmlPackageIncludeHeader A child XML DOM object in Package XML DOM.\r
-#\r
-# @retvel PackageIncludePkgHeader A new Include Pkg Header object created by\r
-#                                 XmlPackageIncludeHeader.\r
-#\r
-def LoadPackageIncludePkgHeader(XmlPackageIncludeHeader):\r
-    PackageIncludeHeader = PackageIncludePkgHeaderClass()\r
-    \r
-    IncludeHeader = XmlElementData(XmlPackageIncludeHeader)\r
-    PackageIncludeHeader.IncludeHeader = IncludeHeader\r
-    \r
-    XmlTag = "ModuleType"\r
-    ModuleTypes = XmlAttribute(XmlPackageIncludeHeader, XmlTag)\r
-    PackageIncludeHeader.ModuleType = ModuleTypes.split()\r
-    \r
-    return PackageIncludeHeader\r
-\r
-\r
-## Load a list of Package Include Pkg Headers.\r
-#\r
-# Read an input Package XML DOM object and return a list of Include Pkg Headers\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel IncludePkgHeaders    A list of Include Pkg Headers loaded from XmlSpd.\r
-#\r
-def LoadPackageIncludePkgHeaders(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/PackageHeaders/IncludePkgHeader"\r
-    return map(LoadPackageIncludePkgHeader, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package Guid Declarations.\r
-#\r
-# Read an input Package XML DOM object and return a list of Guid Declarations\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel GuidDeclarations     A list of Guid Declarations loaded from XmlSpd.\r
-#\r
-def LoadPackageGuidDeclarations(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/GuidDeclarations/Entry"\r
-    return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package Protocol Declarations.\r
-#\r
-# Read an input Package XML DOM object and return a list of Protocol Declarations\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel ProtocolDeclarations A list of Protocol Declarations loaded from XmlSpd.\r
-#\r
-def LoadPackageProtocolDeclarations(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/ProtocolDeclarations/Entry"\r
-    return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package Ppi Declarations.\r
-#\r
-# Read an input Package XML DOM object and return a list of Ppi Declarations\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel PpiDeclarations      A list of Ppi Declarations loaded from XmlSpd.\r
-#\r
-def LoadPackagePpiDeclarations(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/PpiDeclarations/Entry"\r
-    return map(LoadGuidProtocolPpiCommon, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package Pcd Declarations.\r
-#\r
-# Read an input Package XML DOM object and return a list of Pcd Declarations\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel PcdDeclarations      A list of Pcd Declarations loaded from XmlSpd.\r
-#\r
-def LoadPackagePcdDeclarations(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/PcdDeclarations/PcdEntry"\r
-    return map(LoadPcd, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a list of Package User Extensions.\r
-#\r
-# Read an input Package XML DOM object and return a list of User Extensions\r
-# contained in the DOM object.\r
-#\r
-# @param  XmlSpd               An XML DOM object read from SPD file.\r
-#\r
-# @retvel UserExtensions       A list of User Extensions loaded from XmlSpd.\r
-#\r
-def LoadPackageUserExtensions(XmlSpd):\r
-    XmlTag = "PackageSurfaceArea/UserExtensions"\r
-    return map(LoadUserExtensions, XmlList(XmlSpd, XmlTag))\r
-\r
-\r
-## Load a new Package class object.\r
-#\r
-# Read an input SPD File and return a new Package class Object.\r
-#\r
-# @param  SpdFileName          An XML DOM object read from SPD file.\r
-#\r
-# @retvel Package              A new Module class object loaded from SPD File.\r
-#\r
-def LoadSpd(SpdFileName):\r
-    XmlSpd = XmlParseFile(SpdFileName)\r
-    EdkLogger.verbose("Xml Object loaded for file %s" % SpdFileName)\r
-\r
-    Package = PackageClass()\r
-    Package.Header = LoadPackageHeader(XmlSpd, SpdFileName)\r
-    Package.LibraryClassDeclarations = LoadPackageLibraryClasses(XmlSpd)\r
-    Package.IndustryStdHeaders = LoadPackageIndustryStdHeaders(XmlSpd)\r
-    Package.ModuleFiles = LoadPackageModuleFiles(XmlSpd)\r
-    Package.PackageIncludePkgHeaders = LoadPackageIncludePkgHeaders(XmlSpd)\r
-    Package.GuidDeclarations = LoadPackageGuidDeclarations(XmlSpd)\r
-    Package.ProtocolDeclarations = LoadPackageProtocolDeclarations(XmlSpd)\r
-    Package.PpiDeclarations = LoadPackagePpiDeclarations(XmlSpd)\r
-    Package.PcdDeclarations = LoadPackagePcdDeclarations(XmlSpd)\r
-    Package.UserExtensions = LoadPackageUserExtensions(XmlSpd)\r
-    \r
-    return Package\r
-\r
-\r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass\r
diff --git a/BaseTools/Source/Python/spd2dec/Spd2Dec.py b/BaseTools/Source/Python/spd2dec/Spd2Dec.py
deleted file mode 100644 (file)
index 2d2814a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-## @file\r
-# Convert an XML-based SPD file to a text-based DEC file.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import sys\r
-from Common.MigrationUtilities import *\r
-from LoadSpd import LoadSpd\r
-from StoreDec import StoreDec\r
-from ConvertPackage import ConvertSpdPackageToDecPackage\r
-\r
-## Entrance method\r
-#\r
-# This method mainly dispatch specific methods per the command line options.\r
-# If no error found, return zero value so the caller of this tool can know\r
-# if it's executed successfully or not.\r
-#\r
-# @retval 0     Tool was successful.\r
-# @retval 1     Tool failed.\r
-#\r
-def Main():\r
-    try:\r
-        Options, InputFile = MigrationOptionParser("SPD", "DEC", "%prog")\r
-        Package = LoadSpd(InputFile)\r
-        ConvertSpdPackageToDecPackage(Package)\r
-        StoreDec(Options.OutputFile, Package)\r
-        return 0\r
-    except Exception, e:\r
-        print e\r
-        return 1\r
-\r
-if __name__ == '__main__':\r
-    sys.exit(Main())\r
-\r
-\r
diff --git a/BaseTools/Source/Python/spd2dec/StoreDec.py b/BaseTools/Source/Python/spd2dec/StoreDec.py
deleted file mode 100644 (file)
index f3805f6..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-## @file\r
-# Store a Package class object to a DEC file.\r
-#\r
-# Copyright (c) 2007, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
-\r
-##\r
-# Import Modules\r
-#\r
-import os\r
-from Common.MigrationUtilities import *\r
-from LoadSpd import LoadSpd\r
-from CommonDataClass.PackageClass import *\r
-\r
-\r
-## Store Defines section.\r
-#\r
-# Write [Defines] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Defines section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackageDefinesSection(DecFile, Package):\r
-    DefinesTupleList = []\r
-    DefinesTupleList.append(("DEC_VERSION", Package.Header.DecSpecification))\r
-    DefinesTupleList.append(("PACKAGE_NAME", Package.Header.Name))\r
-    DefinesTupleList.append(("PACKAGE_GUID", Package.Header.Guid))\r
-    \r
-    StoreDefinesSection(DecFile, DefinesTupleList)\r
-\r
-\r
-## Return a Package Include Class Item.\r
-#\r
-# Read the input Include class object and return one Include Class Item.\r
-#\r
-# @param  Include            An input Include class object.\r
-#\r
-# @retval IncludeClassItem   A Package Include Class Item.\r
-#\r
-def GetPackageIncludeClassItem(Include):\r
-    return Include.FilePath\r
-\r
-\r
-## Store Includes section.\r
-#\r
-# Write [Includes] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Includes section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackageIncludesSection(DecFile, Package):\r
-    Includes = Package.Includes\r
-    Section = GetSection("Includes", GetPackageIncludeClassItem, Includes)\r
-    StoreTextFile(DecFile, Section)\r
-    \r
-\r
-## Return a Package Library Class Item.\r
-#\r
-# Read the input LibraryClass class object and return one Library Class Item.\r
-#\r
-# @param  LibraryClass       An input LibraryClass class object.\r
-#\r
-# @retval LibraryClassItem   A Package Library Class Item.\r
-#\r
-def GetPackageLibraryClassItem(LibraryClass):\r
-    return "|".join((LibraryClass.LibraryClass, LibraryClass.IncludeHeader))\r
-\r
-\r
-## Store Library Classes section.\r
-#\r
-# Write [LibraryClasses] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Library Classes\r
-#                            section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackageLibraryClassesSection(DecFile, Package):\r
-    LibraryClasses = Package.LibraryClassDeclarations\r
-    Section = GetSection("LibraryClasses", GetPackageLibraryClassItem, LibraryClasses)\r
-    StoreTextFile(DecFile, Section)\r
-\r
-\r
-## Return a Package Guid Declaration Item.\r
-#\r
-# Read the input Guid class object and return one line of Guid Declaration Item.\r
-#\r
-# @param  Guid                An input Guid class object.\r
-#\r
-# @retval GuidDeclarationItem A Package Guid Declaration Item.\r
-#\r
-def GetPackageGuidDeclarationItem(Guid):\r
-    GuidCName = Guid.CName\r
-    GuidValue = Guid.Guid.replace("-", "")\r
-    GuidValueList = [GuidValue[0:8]]\r
-    GuidValueList += [GuidValue[i : i + 4] for i in range(8, 16, 4)]\r
-    GuidValueList += [GuidValue[i : i + 2] for i in range(16, 32, 2)]\r
-\r
-    GuidCFormat = "{0x%s" + ", 0x%s" * 2 + ", {0x%s" + ", 0x%s" * 7 + "}}"\r
-    GuidCValue = GuidCFormat % tuple(GuidValueList)\r
-    return "%-30s = %s" % (GuidCName, GuidCValue)\r
-\r
-\r
-## Store Protocols section.\r
-#\r
-# Write [Protocols] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Protocols section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackageProtocolsSection(DecFile, Package):\r
-    Protocols = Package.ProtocolDeclarations\r
-    Section = GetSection("Protocols", GetPackageGuidDeclarationItem, Protocols)\r
-    StoreTextFile(DecFile, Section)\r
-    \r
-\r
-## Store Ppis section.\r
-#\r
-# Write [Ppis] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Ppis section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackagePpisSection(DecFile, Package):\r
-    Ppis = Package.PpiDeclarations\r
-    Section = GetSection("Ppis", GetPackageGuidDeclarationItem, Ppis)\r
-    StoreTextFile(DecFile, Section)\r
-\r
-\r
-## Store Guids section.\r
-#\r
-# Write [Guids] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile            The output DEC file to store the Guids section.\r
-# @param  Package            An input Package class object.\r
-#\r
-def StorePackageGuidsSection(DecFile, Package):\r
-    Guids = Package.GuidDeclarations\r
-    Section = GetSection("Guids", GetPackageGuidDeclarationItem, Guids)\r
-    StoreTextFile(DecFile, Section)\r
-\r
-\r
-## Return a Package Pcd Item.\r
-#\r
-# Read the input Pcd class object and return one line of Pcd Item.\r
-#\r
-# @param  Pcd                An input Pcd class object.\r
-#\r
-# @retval PcdItem            A Package Pcd Item.\r
-#\r
-def GetPackagePcdItem(Pcd):\r
-    PcdPair = "%s.%s" % (Pcd.TokenSpaceGuidCName, Pcd.CName)\r
-    DatumType = Pcd.DatumType\r
-    DefaultValue = Pcd.DefaultValue\r
-    Token = Pcd.Token\r
-    PcdList = [PcdPair, DefaultValue, DatumType, Token]\r
-    return "|".join(PcdList)\r
-\r
-\r
-## DEC Pcd Section Name dictionary indexed by PCD Item Type.\r
-mDecPcdSectionNameDict = {\r
-    "FEATURE_FLAG" : "PcdsFeatureFlag",\r
-    "FIXED_AT_BUILD" : "PcdsFixedAtBuild",\r
-    "PATCHABLE_IN_MODULE" : "PcdsPatchableInModule",\r
-    "DYNAMIC" : "PcdsDynamic",\r
-    "DYNAMIC_EX" : "PcdsDynamicEx"\r
-    }\r
-\r
-## Store Pcds section.\r
-#\r
-# Write [Pcds*] section to the DecFile based on Package class object.\r
-# Different CPU architectures are specified in the subsection if possible.\r
-#\r
-# @param  DecFile              The output DEC file to store the Pcds section.\r
-# @param  Package              An input Package class object.\r
-#\r
-def StorePackagePcdsSection(DecFile, Package):\r
-    PcdsDict = {}\r
-    for Pcd in Package.PcdDeclarations:\r
-        for PcdItemType in Pcd.ValidUsage:\r
-            PcdSectionName = mDecPcdSectionNameDict.get(PcdItemType)\r
-            if PcdSectionName:\r
-                PcdsDict.setdefault(PcdSectionName, []).append(Pcd)\r
-            else:\r
-                EdkLogger.info("Unknown Pcd Item Type: %s" % PcdItemType)\r
-\r
-    Section = ""\r
-    for PcdSectionName in PcdsDict:\r
-        Pcds = PcdsDict[PcdSectionName]\r
-        Section += GetSection(PcdSectionName, GetPackagePcdItem, Pcds)\r
-\r
-    StoreTextFile(DecFile, Section)\r
-\r
-\r
-## Store User Extensions section.\r
-#\r
-# Write [UserExtensions] section to the DecFile based on Package class object.\r
-#\r
-# @param  DecFile              The output DEC file to store the User Extensions section.\r
-# @param  Package              An input Package class object.\r
-#\r
-def StorePackageUserExtensionsSection(DecFile, Package):\r
-    Section = "".join(map(GetUserExtensions, Package.UserExtensions))\r
-    StoreTextFile(DecFile, Section)\r
-\r
-\r
-## Store a Package class object to a new DEC file.\r
-#\r
-# Read an input Package class object and ave the contents to a new DEC file.\r
-#\r
-# @param  DecFileName          The output DEC file.\r
-# @param  Package              An input Package class object.\r
-#\r
-def StoreDec(DecFileName, Package):\r
-    DecFile = open(DecFileName, "w+")\r
-    EdkLogger.info("Save file to %s" % DecFileName)\r
-    \r
-    StoreHeader(DecFile, Package.Header)\r
-    StorePackageDefinesSection(DecFile, Package)\r
-    StorePackageIncludesSection(DecFile, Package)\r
-    StorePackageLibraryClassesSection(DecFile, Package)\r
-    StorePackageProtocolsSection(DecFile, Package)\r
-    StorePackagePpisSection(DecFile, Package)\r
-    StorePackageGuidsSection(DecFile, Package)\r
-    StorePackagePcdsSection(DecFile, Package)\r
-    StorePackageUserExtensionsSection(DecFile, Package)\r
-    \r
-    DecFile.close()\r
-\r
-    \r
-# This acts like the main() function for the script, unless it is 'import'ed\r
-# into another script.\r
-if __name__ == '__main__':\r
-    pass\r
-    
\ No newline at end of file
diff --git a/BaseTools/Source/Python/spd2dec/__init__.py b/BaseTools/Source/Python/spd2dec/__init__.py
deleted file mode 100644 (file)
index 41e5b26..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-## @file\r
-# Python 'spd2dec' package initialization file.\r
-#\r
-# This file is required to make Python interpreter treat the directory\r
-# as containing package.\r
-#\r
-# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
-# This program and the accompanying materials\r
-# are licensed and made available under the terms and conditions of the BSD License\r
-# which accompanies this distribution.  The full text of the license may be found at\r
-# http://opensource.org/licenses/bsd-license.php\r
-#\r
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-#\r
index 4a70e92bcdd03d874a451edfb84405576052824e..e838ae4294797a1be9f6edf7739858fed127086b 100644 (file)
@@ -1,7 +1,7 @@
 ## @file
 # Utility functions and classes for BaseTools unit tests
 #
-#  Copyright (c) 2008, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2008 - 2012, Intel Corporation. All rights reserved.<BR>
 #
 #  This program and the accompanying materials
 #  are licensed and made available under the terms and conditions of the BSD License
@@ -41,21 +41,20 @@ def MakeTheTestSuite(localItems):
                 tests.append(item())
     return lambda: unittest.TestSuite(tests)
 
-def GetBaseToolsPath():
+def GetBaseToolsPaths():
     if sys.platform in ('win32', 'win64'):
-        return os.path.join(BaseToolsDir, 'Bin', sys.platform.title())
-    elif sys.platform in ('cygwin'):
-        uname = os.popen('uname -sm').read().strip()
-        for char in (' ', '/'):
-            uname = uname.replace(char, '-')
-        return os.path.join(BaseToolsDir, 'Bin', uname)
+        return [ os.path.join(BaseToolsDir, 'Bin', sys.platform.title()) ]
     else:
         uname = os.popen('uname -sm').read().strip()
         for char in (' ', '/'):
             uname = uname.replace(char, '-')
-        return os.path.join(BaseToolsDir, 'BinWrappers', uname)
+        return [
+                os.path.join(BaseToolsDir, 'Bin', uname),
+                os.path.join(BaseToolsDir, 'BinWrappers', uname),
+                os.path.join(BaseToolsDir, 'BinWrappers', 'PosixLike')
+            ]
 
-BaseToolsBinPath = GetBaseToolsPath()
+BaseToolsBinPaths = GetBaseToolsPaths()
 
 class BaseToolsTest(unittest.TestCase):
 
@@ -93,6 +92,14 @@ class BaseToolsTest(unittest.TestCase):
         sys.stdout.write(self.ReadTmpFile(fileName))
         sys.stdout.flush()
 
+    def FindToolBin(self, toolName):
+        for binPath in BaseToolsBinPaths:
+            bin = os.path.join(binPath, toolName)
+            if os.path.exists(bin):
+                break
+        assert os.path.exists(bin)
+        return bin
+
     def RunTool(self, *args, **kwd):
         if 'toolName' in kwd: toolName = kwd['toolName']
         else: toolName = None
@@ -100,7 +107,7 @@ class BaseToolsTest(unittest.TestCase):
         else: logFile = None
 
         if toolName is None: toolName = self.toolName
-        bin = os.path.join(self.baseToolsBins, toolName)
+        bin = self.FindToolBin(toolName)
         if logFile is not None:
             logFile = open(os.path.join(self.testDir, logFile), 'w')
             popenOut = logFile
@@ -154,9 +161,9 @@ class BaseToolsTest(unittest.TestCase):
         self.savedEnvPath = os.environ['PATH']
         self.savedSysPath = sys.path[:]
 
-        self.baseToolsBins = BaseToolsBinPath
-        os.environ['PATH'] = \
-            os.path.pathsep.join((os.environ['PATH'], self.baseToolsBins))
+        for binPath in BaseToolsBinPaths:
+            os.environ['PATH'] = \
+                os.path.pathsep.join((os.environ['PATH'], binPath))
 
         self.testDir = TestTempDir
         if not os.path.exists(self.testDir):
index b7935af694f7633d71fec9b596fd560f8ca0402e..8906913171b0d87fce9b531b5a6b9ec067609db8 100644 (file)
@@ -1,27 +1,27 @@
 {\rtf1\adeflang1025\ansi\ansicpg936\uc2\adeff0\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi0\deflang1033\deflangfe2052\themelang1033\themelangfe2052\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}\r
 {\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f13\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}\r
 {\f34\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria Math;}{\f37\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\f38\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}\r
-{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Verdana{\*\falt Verdana};}{\f40\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}\r
-{\f42\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609020204030204}Consolas;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}\r
+{\f39\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Verdana{\*\falt Verdana};}{\f40\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}@\'cb\'ce\'cc\'e5;}\r
+{\f41\fbidi \fmodern\fcharset0\fprq1{\*\panose 020b0609020204030204}Consolas;}{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}\r
 {\fdbmajor\f31501\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}{\fhimajor\f31502\fbidi \froman\fcharset0\fprq2{\*\panose 02040503050406030204}Cambria;}\r
 {\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}\r
 {\fdbminor\f31505\fbidi \fnil\fcharset134\fprq2{\*\panose 02010600030101010101}\'cb\'ce\'cc\'e5{\*\falt SimSun};}{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}\r
-{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f45\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f46\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}\r
-{\f48\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f49\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f50\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f51\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}\r
-{\f52\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f53\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f55\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f56\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}\r
-{\f58\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f59\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f60\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f61\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}\r
-{\f62\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f63\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f65\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f66\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}\r
-{\f68\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f69\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f70\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f71\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}\r
-{\f72\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f73\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f177\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f385\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}\r
-{\f386\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f388\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f389\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f392\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}\r
-{\f393\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f415\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f416\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f418\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}\r
-{\f419\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f422\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f423\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f425\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}\r
-{\f426\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f428\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f429\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f430\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}\r
-{\f431\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f432\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f433\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f434\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}\r
-{\f435\fbidi \fswiss\fcharset238\fprq2 Verdana CE{\*\falt Verdana};}{\f436\fbidi \fswiss\fcharset204\fprq2 Verdana Cyr{\*\falt Verdana};}{\f438\fbidi \fswiss\fcharset161\fprq2 Verdana Greek{\*\falt Verdana};}\r
-{\f439\fbidi \fswiss\fcharset162\fprq2 Verdana Tur{\*\falt Verdana};}{\f442\fbidi \fswiss\fcharset186\fprq2 Verdana Baltic{\*\falt Verdana};}{\f443\fbidi \fswiss\fcharset163\fprq2 Verdana (Vietnamese){\*\falt Verdana};}\r
-{\f447\fbidi \fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}{\f465\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f466\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;}{\f468\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}\r
-{\f469\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;}{\f472\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f473\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}\r
+{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f245\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\f246\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}\r
+{\f248\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f249\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f250\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f251\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}\r
+{\f252\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f253\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f255\fbidi \fswiss\fcharset238\fprq2 Arial CE;}{\f256\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}\r
+{\f258\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f259\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f260\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f261\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}\r
+{\f262\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f263\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f265\fbidi \fmodern\fcharset238\fprq1 Courier New CE;}{\f266\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}\r
+{\f268\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f269\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f270\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}{\f271\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}\r
+{\f272\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f273\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\f377\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\f585\fbidi \froman\fcharset238\fprq2 Cambria Math CE;}\r
+{\f586\fbidi \froman\fcharset204\fprq2 Cambria Math Cyr;}{\f588\fbidi \froman\fcharset161\fprq2 Cambria Math Greek;}{\f589\fbidi \froman\fcharset162\fprq2 Cambria Math Tur;}{\f592\fbidi \froman\fcharset186\fprq2 Cambria Math Baltic;}\r
+{\f593\fbidi \froman\fcharset163\fprq2 Cambria Math (Vietnamese);}{\f615\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\f616\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\f618\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}\r
+{\f619\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;}{\f622\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\f623\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\f625\fbidi \fswiss\fcharset238\fprq2 Tahoma CE;}\r
+{\f626\fbidi \fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f628\fbidi \fswiss\fcharset161\fprq2 Tahoma Greek;}{\f629\fbidi \fswiss\fcharset162\fprq2 Tahoma Tur;}{\f630\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);}\r
+{\f631\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f632\fbidi \fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f633\fbidi \fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f634\fbidi \fswiss\fcharset222\fprq2 Tahoma (Thai);}\r
+{\f635\fbidi \fswiss\fcharset238\fprq2 Verdana CE{\*\falt Verdana};}{\f636\fbidi \fswiss\fcharset204\fprq2 Verdana Cyr{\*\falt Verdana};}{\f638\fbidi \fswiss\fcharset161\fprq2 Verdana Greek{\*\falt Verdana};}\r
+{\f639\fbidi \fswiss\fcharset162\fprq2 Verdana Tur{\*\falt Verdana};}{\f642\fbidi \fswiss\fcharset186\fprq2 Verdana Baltic{\*\falt Verdana};}{\f643\fbidi \fswiss\fcharset163\fprq2 Verdana (Vietnamese){\*\falt Verdana};}\r
+{\f647\fbidi \fnil\fcharset0\fprq2 @\'cb\'ce\'cc\'e5 Western;}{\f655\fbidi \fmodern\fcharset238\fprq1 Consolas CE;}{\f656\fbidi \fmodern\fcharset204\fprq1 Consolas Cyr;}{\f658\fbidi \fmodern\fcharset161\fprq1 Consolas Greek;}\r
+{\f659\fbidi \fmodern\fcharset162\fprq1 Consolas Tur;}{\f662\fbidi \fmodern\fcharset186\fprq1 Consolas Baltic;}{\f663\fbidi \fmodern\fcharset163\fprq1 Consolas (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}\r
 {\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}\r
 {\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}\r
 {\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31520\fbidi \fnil\fcharset0\fprq2 SimSun Western{\*\falt SimSun};}{\fhimajor\f31528\fbidi \froman\fcharset238\fprq2 Cambria CE;}\r
 \fs24\lang1033\langfe1033\loch\f39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;}{\s1\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel0\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\f39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink15 \sqformat heading 1;}{\s2\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \r
 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\f39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \slink16 \sqformat heading 2;}{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\*\r
-\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1\r
-\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \snext11 \ssemihidden \sunhideused \r
-Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\kerning32\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \r
-\b\i\fs28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \slocked Heading 2 Char;}{\s17\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \r
+\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa200\sl276\slmult1\r
+\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \r
+\snext11 \ssemihidden \sunhideused \sqformat Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\kerning32\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink1 \slocked \spriority9 Heading 1 Char;}{\*\cs16 \additive \r
+\rtlch\fcs1 \ab\ai\af0\afs28 \ltrch\fcs0 \b\i\fs28\loch\f31502\hich\af31502\dbch\af31501 \sbasedon10 \slink2 \slocked Heading 2 Char;}{\s17\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af38\afs16\alang1025 \ltrch\fcs0 \r
 \fs16\lang1033\langfe1033\loch\f38\hich\af38\dbch\af31505\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 \slink18 \ssemihidden \sunhideused \styrsid1535607 Balloon Text;}{\*\cs18 \additive \rtlch\fcs1 \af38\afs16 \ltrch\fcs0 \f38\fs16 \r
 \sbasedon10 \slink17 \slocked \ssemihidden \styrsid1535607 Balloon Text Char;}{\s19\ql \li0\ri20\sb60\sa60\sl-200\slmult0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin20\lin0\itap0 \rtlch\fcs1 \af0\afs16\alang1025 \ltrch\fcs0 \r
 \fs16\cf1\lang1033\langfe1033\loch\f39\hich\af39\dbch\af13\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 \spriority0 \styrsid13255892 CellBodyLeft;}{\*\cs20 \additive \b\f2\cf13 \spriority0 \styrsid13255892 CodeCharacter;}{\*\ts21\tsrowd\trbrdrt\r
 \brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \r
-\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \r
+\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \r
 \ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe2052\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp2052 \r
-\sbasedon11 \snext21 \spriority59 \styrsid13255892 Table Grid;}}{\*\rsidtbl \rsid200707\rsid1535607\rsid3478841\rsid4999604\rsid5140827\rsid5788588\rsid5911148\rsid8600807\rsid9728962\rsid10095135\rsid11874792\rsid12198464\rsid13255892}{\mmathPr\r
-\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator ydliu}{\creatim\yr2010\mo10\dy6\hr16\min2}{\revtim\yr2011\mo8\dy10\hr9\min52}{\version10}{\edmins20}{\nofpages3}\r
-{\nofwords429}{\nofchars2446}{\nofcharsws2870}{\vern49255}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \r
+\sbasedon11 \snext21 \spriority59 \styrsid13255892 Table Grid;}}{\*\revtbl {Unknown;}{lgao4;}}{\*\rsidtbl \rsid200707\rsid1530076\rsid1535607\rsid1840106\rsid2567646\rsid3478841\rsid4929157\rsid4999604\rsid5140827\rsid5788588\rsid5911148\rsid8600807\rsid9728962\rsid10095135\r
+\rsid10558486\rsid11685714\rsid11874792\rsid12003746\rsid12126252\rsid12198464\rsid13058712\rsid13255892\rsid13715311}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info\r
+{\operator lgao4}{\creatim\yr2010\mo10\dy6\hr16\min2}{\revtim\yr2012\mo3\dy13\hr10\min34}{\version19}{\edmins44}{\nofpages3}{\nofwords536}{\nofchars2849}{\nofcharsws3379}{\vern32773}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/word\r
+ml}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect \r
 \deftab360\ftnbj\aenddoc\revisions\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\r
-\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale135\rsidroot5140827 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang \r
+\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale100\rsidroot5140827 \fet0{\*\wgrffmtfilter 2450}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang \r
 {\pntxta \dbch .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta \dbch .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta \dbch )}}{\*\pnseclvl5\r
 \pndec\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl8\r
 \pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb \dbch (}{\pntxta \dbch )}}\pard\plain \ltrpar\s2\ql \fi-2830\li1390\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\r
@@ -68,14 +69,15 @@ Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\k
 \par }\pard\plain \ltrpar\s2\ql \fi-1300\li-90\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx0\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin-90\itap0\pararsid9728962 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Synopsis\r
 \par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs18 \r
-\ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39  [-v | -q | -}{\rtlch\fcs1 \r
-\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5788588 -}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 d}{\rtlch\fcs1 \ab\af39\afs18 \r
-\ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5788588 \hich\af39\dbch\af31505\loch\f39 ebug <\hich\af39\dbch\af31505\loch\f39 Level\hich\af39\dbch\af31505\loch\f39 >}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
-\b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 ]}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39  -e|-d}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
-\b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39  [-o }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid10095135 \hich\af39\dbch\af31505\loch\f39 <}{\rtlch\fcs1 \r
-\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 OutputFile}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid10095135 \r
-\hich\af39\dbch\af31505\loch\f39 >}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 ]}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \r
-\hich\af39\dbch\af31505\loch\f39  <inputFile>}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5140827 \r
+\ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39  [-v | -q | }{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm654533262\langfenp2052\insrsid4929157 \hich\af39\dbch\af31505\loch\f39 --f86 | }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 -}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5788588 -}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 d}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5788588 \hich\af39\dbch\af31505\loch\f39 ebug <Level>}{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 ]}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39  -e|-d}{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39  [-o }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid10095135 \r
+\hich\af39\dbch\af31505\loch\f39 <}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 OutputFile}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid10095135 \hich\af39\dbch\af31505\loch\f39 >}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 ]}{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39  <inputFile>}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid5140827 \r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 LzmaCompress}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39  \r
 \hich\f39 \endash \loch\f39 h\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 LzmaCompress}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid9728962 \hich\af39\dbch\af31505\loch\f39 \r
@@ -83,14 +85,24 @@ Normal Table;}{\*\cs15 \additive \rtlch\fcs1 \ab\af0\afs32 \ltrch\fcs0 \b\fs32\k
 \par }\pard\plain \ltrpar\s2\ql \fi-2740\li1300\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx720\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin1300\itap0\pararsid9728962 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Description\r
 \par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs18 \r
-\ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \hich\f39 The LzmaCompress tool is used to encode or decode files with LZMA encode or decode algorithm. When \'93\loch\f39 \hich\f39 -e\'94\loch\f39 \hich\f39 \r
- option is specified in the command line the tool will encode the input file with LZMA encode algorithm; when \'93\loch\f39 \hich\f39 -d\'94\loch\f39  opt\hich\af39\dbch\af31505\loch\f39 \r
-ion is specified in the command line the tool will decode the input file with LZMA decode algorithm.  When decoding file, this tool performs some rudimentary checking on the input files to verify they are compressed by LZMA algorithm. These checks include\r
-\hich\af39\dbch\af31505\loch\f39 :\hich\af39\dbch\af31505\loch\f39  \r
+\ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \hich\f39 The LzmaCompress tool is used to encode or decode files with LZMA encode or decode algorithm. When \'93\loch\f39 \hich\f39 -e\'94\loch\f39 \r
+ option is specified in the command line the tool will encode the input file with LZMA encode algorith\hich\af39\dbch\af31505\loch\f39 \hich\f39 m; when \'93\loch\f39 \hich\f39 -d\'94\loch\f39 \r
+ option is specified in the command line the tool will decode the input file with LZMA decode algorithm.  }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392165\langfenp2052\insrsid4929157 \r
+\loch\af39\dbch\af31505\hich\f39 \'93}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm654533262\langfenp2052\insrsid4929157 \loch\af39\dbch\af31505\hich\f39 \emdash \loch\f39 f86}{\rtlch\fcs1 \af39\afs18 \r
+\ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392165\langfenp2052\insrsid11685714 \hich\af39\dbch\af31505\loch\f39 " option }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392166\langfenp2052\insrsid11685714 \hich\af39\dbch\af31505\loch\f39 is specified to enable }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392180\langfenp2052\insrsid13058712 \hich\af39\dbch\af31505\loch\f39 converter for x}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392166\langfenp2052\insrsid11685714 \hich\af39\dbch\af31505\loch\f39 86 code that can improve the compress ratio }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392167\langfenp2052\insrsid1840106 \hich\af39\dbch\af31505\loch\f39 for }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392171\langfenp2052\insrsid1840106 \hich\af39\dbch\af31505\loch\f39 IA32 or X64 }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392167\langfenp2052\insrsid1840106 \hich\af39\dbch\af31505\loch\f39 PE image}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392171\langfenp2052\insrsid1840106 .}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392167\langfenp2052\insrsid1840106 \r
+\hich\af39\dbch\af31505\loch\f39  }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \r
+When decoding file, this tool performs some rudimentary checking on the input files to verify they are compressed by LZMA algorithm. These checks include: \r
 \par \hich\af39\dbch\af31505\loch\f39     The input file header (5 + 8 bytes header); \r
-\par \hich\af39\dbch\af31505\loch\f39     The first 5 bytes is the attribute of compression.  \r
+\par \hich\af39\dbch\af31505\loch\f39     The first 5 bytes is the attribute of compressi\hich\af39\dbch\af31505\loch\f39 on.  \r
 \par \hich\af39\dbch\af31505\loch\f39     The following 8 bytes is original size which is the input file size and it is the decompressed file size. \r
-\par \hich\af39\dbch\af31505\loch\f39 While encoding file, this tool does n\hich\af39\dbch\af31505\loch\f39 ot perform any checking.\r
+\par \hich\af39\dbch\af31505\loch\f39 While encoding file, this tool does not perform any checking.\r
 \par }\pard\plain \ltrpar\s2\ql \fi-4810\li3460\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx0\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin3460\itap0\pararsid9728962 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Options\r
 \par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs18 \r
@@ -102,20 +114,29 @@ ion is specified in the command line the tool will decode the input file with LZ
    Decode the input file, which means to decompress the input file\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 -o, --output Filename}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\cf1\insrsid5140827 \r
 \par }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39       The file containing encoded or decoded content of input file\r
-\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 --version\r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13715311 {\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191392161\insrsid13715311 -}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm654533263\langfenp2052\insrsid4929157 -}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm654533262\langfenp2052\insrsid4929157 \r
+\hich\af39\dbch\af31505\loch\f39 f}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392161\langfenp2052\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 86}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \r
+\f0\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392161\langfenp2052\insrsid13715311 \r
+\par }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191392161\insrsid13715311 \hich\af39\dbch\af31505\loch\f39       }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191392161\insrsid10558486 \r
+\hich\af39\dbch\af31505\loch\f39 enable conver}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392179\langfenp2052\insrsid10558486 \hich\af39\dbch\af31505\loch\f39 ter}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\revauth1\revdttm1191392161\insrsid13715311\charrsid13715311 \hich\af39\dbch\af31505\loch\f39  }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392179\langfenp2052\insrsid10558486 \r
+\hich\af39\dbch\af31505\loch\f39 for }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191392161\insrsid13715311\charrsid13715311 \hich\af39\dbch\af31505\loch\f39 x86 code}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\revauth1\revdttm1191392161\insrsid13715311 \r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 --version\r
 \par }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\cf1\insrsid5140827 \tab }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Print version and copyright of this program and exit\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 -v, --verbose\r
 \par \hich\af39\dbch\af31505\loch\f39       }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3478841 \hich\af39\dbch\af31505\loch\f39 Enable}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \r
- verbose output with informational messages printed. This is a count value, so specifying \hich\f39 \endash \loch\f39 v can be\hich\af39\dbch\af31505\loch\f39  used to increase the verbosity level.\r
+ verbose output with informational messages printed. This is a count value, so specifying \hich\f39 \endash \loch\f39 v can be used to increase the verbosity level.\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 -q, --quiet}{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\cf1\insrsid5140827 \r
-\par \tab }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Disable all messages except FATAL ERRORS\r
+\par \tab }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Disabl\hich\af39\dbch\af31505\loch\f39 e all messages except FATAL ERRORS\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 --debug [0-9]\r
 \par }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\cf1\insrsid5140827 \tab }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Enable debug messages. Only 0-9 Level is supported.\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 -h, --help\r
 \par }{\rtlch\fcs1 \af0\afs18 \ltrch\fcs0 \f0\fs18\cf1\insrsid5140827 \tab }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Print copyright, version and usage of this program and exit\r
 \par }\pard\plain \ltrpar\s2\ql \li-1440\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin-1440\itap0\pararsid13255892 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf18\lang1033\langfe2052\langfenp2052\insrsid13255892 {\*\bkmkstart OLE_LINK10}{\*\bkmkstart OLE_LINK11}\r
-{\*\bkmkstart OLE_LINK3}{\*\bkmkstart OLE_LINK4}{\*\bkmkstart OLE_LINK5}{\*\bkmkstart OLE_LINK6}{\*\bkmkstart OLE_LINK9}\hich\af39\dbch\af31505\loch\f39 Status codes returned}{\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \r
+{\*\bkmkstart OLE_LINK3}{\*\bkmkstart OLE_LINK4}{\*\bkmkstart OLE_LINK5}{\*\bkmkstart OLE_LINK6}{\*\bkmkstart OLE_LINK9}\hich\af39\dbch\af31505\loch\f39 Status codes retu\hich\af39\dbch\af31505\loch\f39 rned}{\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \r
 \b\fs28\cf18\lang1033\langfe2052\langfenp2052\insrsid13255892\charrsid4999604 \r
 \par \ltrrow}\trowd \irow0\irowband0\ltrrow\ts21\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \r
 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid5911148\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\r
@@ -129,9 +150,9 @@ ion is specified in the command line the tool will decode the input file with LZ
 \brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth3\clwWidth2970\clshdrawnil\clhidemark \cellx2862\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \r
 \cltxlrtb\clftsWidth3\clwWidth5850\clshdrawnil\clhidemark \cellx8712\row \ltrrow}\pard\plain \ltrpar\s19\ql \li0\ri20\sb60\sa60\sl-200\slmult0\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin20\lin0\pararsid5911148\yts21 \rtlch\fcs1 \r
 \af0\afs16\alang1025 \ltrch\fcs0 \fs16\cf1\lang1033\langfe1033\loch\af39\hich\af39\dbch\af13\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af2\afs18 \ltrch\fcs0 \cs20\b\f2\fs18\cf13\lang1033\langfe2052\kerning2\langfenp2052\insrsid13255892 \r
-\hich\af2\dbch\af13\loch\f2 Nonzero}{\rtlch\fcs1 \af42\afs19 \ltrch\fcs0 \cs20\f42\fs19\cf0\lang1033\langfe2052\langfenp2052\insrsid13255892\charrsid8600807 \cell }\pard \ltrpar\s19\ql \li0\ri20\sb60\sa60\sl-200\slmult0\r
-\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin20\lin0\pararsid200707\yts21 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe2052\kerning2\langfenp2052\insrsid13255892 \hich\af39\dbch\af13\loch\f39 The action \r
-\hich\af39\dbch\af13\loch\f39 failed.\cell }\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
+\hich\af2\dbch\af13\loch\f2 Nonzero}{\rtlch\fcs1 \af41\afs19 \ltrch\fcs0 \cs20\f41\fs19\cf0\lang1033\langfe2052\langfenp2052\insrsid13255892\charrsid8600807 \cell }\pard \ltrpar\s19\ql \li0\ri20\sb60\sa60\sl-200\slmult0\r
+\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin20\lin0\pararsid200707\yts21 {\rtlch\fcs1 \af0 \ltrch\fcs0 \lang1033\langfe2052\kerning2\langfenp2052\insrsid13255892 \hich\af39\dbch\af13\loch\f39 The action failed.\cell \r
+}\pard\plain \ltrpar\ql \li0\ri0\sa200\sl276\slmult1\widctlpar\intbl\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af37\afs20 \ltrch\fcs0 \fs20\insrsid13255892 \trowd \irow1\irowband1\lastrow \ltrrow\ts21\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \r
 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \r
 \trftsWidth3\trwWidth8820\trftsWidthB3\trftsWidthA3\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\tblrsid5911148\tbllkhdrrows\tbllkhdrcols\tbllknocolband\tblind0\tblindtype3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\r
@@ -140,14 +161,44 @@ ion is specified in the command line the tool will decode the input file with LZ
 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid5140827 {\*\bkmkend OLE_LINK3}{\*\bkmkend OLE_LINK4}{\*\bkmkend OLE_LINK5\r
 }{\*\bkmkend OLE_LINK6}{\*\bkmkend OLE_LINK9}\hich\af39\dbch\af31505\loch\f39 Example\r
 \par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs18 \r
-\ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \hich\f39 1. Encode the input file \'93\loch\f39 \hich\f39 file.efi\'94\hich\af39\dbch\af31505\loch\f39 \hich\f39  and specify the output file name with \'93\loch\f39 \hich\f39 \r
-file.lzma\'94\r
-\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \loch\f39 e \hich\f39 \endash \loch\f39 o file.lzma file.efi\r
+\ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \hich\f39 1. Encode the input file \'93\loch\f39 \hich\f39 file.efi\'94\loch\f39 \hich\f39  and specify the output file name with \'93\loch\f39 \hich\f39 file.lzma\'94\r
+\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \loch\f39 e \hich\f39 \endash \hich\af39\dbch\af31505\loch\f39 o file.lzma file.efi\r
 \par }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \hich\f39 2. Decode the input file \'93\loch\f39 \hich\f39 file.lzma\'94\loch\f39 \hich\f39  and specify the output file name with \'93\loch\f39 \hich\f39 \r
 file.orig\'94\r
 \par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \loch\f39 d \hich\f39 \endash \loch\f39 o file.orig file.lzma\r
-\par }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 3. Decode the input file "file.lzma" in t\hich\af39\dbch\af31505\loch\f39 he quiet mode and specify the output file name with "file.orig"\r
-\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \loch\f39 d -q \hich\f39 \endash \loch\f39 o file.orig file.lzma\r
+\par }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 3. Decode the input file "file.lzma" in the quiet mode and specify the output file name with "file.orig"\r
+\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Lzma\hich\af39\dbch\af31505\loch\f39 Compress \hich\f39 \endash \loch\f39 d -q \hich\f39 \endash \loch\f39 o file.orig file.lzma}{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid5140827 \r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid13715311 {\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid13715311 \r
+\hich\af39\dbch\af31505\loch\f39 4}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 \hich\f39 . Encode the input file \'93\loch\f39 \hich\f39 file.efi\'94\loch\f39  }{\r
+\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 with }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392180\langfenp2052\insrsid12126252 \hich\af39\dbch\af31505\loch\f39 converter for }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392180\langfenp2052\insrsid13058712 \hich\af39\dbch\af31505\loch\f39 x}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 86 code }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \r
+\hich\af39\dbch\af31505\loch\f39 \hich\f39 and specify the output file name with \'93\loch\f39 \hich\f39 file.lzma\'94\r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \r
+\loch\f39 e }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid4929157 \loch\af39\dbch\af31505\hich\f39 \endash }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm654533263\langfenp2052\insrsid4929157 \hich\af39\dbch\af31505\loch\f39 -f86}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392162\langfenp2052\insrsid13715311 \hich\af39\dbch\af31505\loch\f39  }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \r
+\loch\af39\dbch\af31505\hich\f39 \endash \loch\f39 o file}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \r
+\ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \hich\af39\dbch\af31505\loch\f39 .lzma file}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191392162\insrsid13715311 \r
+\hich\af39\dbch\af31505\loch\f39 .efi}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid13715311 \r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0\pararsid2567646 {\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \r
+\hich\af39\dbch\af31505\loch\f39 5}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 \hich\f39 . Decode the input file \'93\loch\f39 file}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \r
+\hich\af39\dbch\af31505\loch\f39 \hich\f39 .lzma\'94\loch\f39  }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406242\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 with \r
+\hich\af39\dbch\af31505\loch\f39 converter for \hich\af39\dbch\af31505\loch\f39 x\hich\af39\dbch\af31505\loch\f39 86 code}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191406242\insrsid2567646 \hich\af39\dbch\af31505\loch\f39  }{\r
+\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 \hich\f39 and specify the output file name with \'93\loch\f39 file}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \r
+\hich\af39\dbch\af31505\loch\f39 \hich\f39 .orig\'94\r
+\par }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 LzmaCompress \hich\f39 \endash \loch\f39 d }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406242\langfenp2052\insrsid2567646 --\hich\af39\dbch\af31505\loch\f39 f8\hich\af39\dbch\af31505\loch\f39 6 }{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \loch\af39\dbch\af31505\hich\f39 \endash \loch\f39 o file}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \r
+\hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 .orig file}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \r
+\b\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191406241\langfenp2052\insrsid2567646 \hich\af39\dbch\af31505\loch\f39 x86}{\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\revised\revauth1\revdttm1191406241\insrsid2567646 \r
+\hich\af39\dbch\af31505\loch\f39 .lzma\r
+\par }\pard \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af39\afs18 \ltrch\fcs0 \b\fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid2567646\charrsid2567646 \r
 \par }\pard\plain \ltrpar\s2\ql \fi-1300\li0\ri0\sb400\sa60\sl-340\slmult0\keep\keepn\nowidctlpar\tx0\tx1440\wrapdefault\faauto\outlinelevel1\rin0\lin0\itap0\pararsid9728962 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \r
 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af39\afs28 \ltrch\fcs0 \b\fs28\cf17\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Bugs\r
 \par }\pard\plain \ltrpar\ql \li0\ri0\sb200\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs18 \r
@@ -166,64 +217,66 @@ file.orig\'94
 \par }\pard\plain \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang1033\langfe1033\loch\af39\hich\af39\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 Based on LZMA Utility 4.65 : Igor Pavlov : Public domain : 2009-02-03\r
 \par \r
-\par \hich\af39\dbch\af31505\loch\f39 Copyright (c) 2006 - }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3478841 \hich\af39\dbch\af31505\loch\f39 201}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\lang1033\langfe2052\langfenp2052\insrsid11874792 \r
-\hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 , Intel Corporation. All rights reserved.\r
+\par \hich\af39\dbch\af31505\loch\f39 Copyright (c) 2006 - }{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid3478841 \hich\af39\dbch\af31505\loch\f39 201}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\fs18\cf1\revised\lang1033\langfe2052\revauth1\revdttm1191392171\langfenp2052\insrsid12003746 \hich\af39\dbch\af31505\loch\f39 2}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \r
+\deleted\fs18\cf1\lang1033\langfe2052\revauthdel1\revdttmdel1191392171\langfenp2052\insrsid11874792\delrsid12003746 \hich\af39\dbch\af31505\loch\f39 1}{\rtlch\fcs1 \af39\afs18 \ltrch\fcs0 \fs18\cf1\insrsid5140827 \hich\af39\dbch\af31505\loch\f39 \r
+, Intel Corporation. All rights reserved.\r
 \par \hich\af39\dbch\af31505\loch\f39 This program and the accompanying materials\r
-\par \hich\af39\dbch\af31505\loch\f39 are licensed and made available under the terms and conditions of the BSD\hich\af39\dbch\af31505\loch\f39  License\r
+\par \hich\af39\dbch\af31505\loch\f39 are licensed and made available under the terms and conditions of the BSD License\r
 \par \hich\af39\dbch\af31505\loch\f39 which accompanies this distribution.  The full text of the license may be found at\r
-\par \hich\af39\dbch\af31505\loch\f39 http://opensource.org/licenses/bsd-license.php\r
+\par \hich\af39\dbch\af31505\loch\f39 http:\hich\af39\dbch\af31505\loch\f39 //opensource.org/licenses/bsd-license.php\r
 \par \r
 \par \hich\af39\dbch\af31505\loch\f39 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-\par \hich\af39\dbch\af31505\loch\f39 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY K\hich\af39\dbch\af31505\loch\f39 IND, EITHER EXPRESS OR IMPLIED.\r
+\par \hich\af39\dbch\af31505\loch\f39 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \par }{\rtlch\fcs1 \af1\afs20 \ltrch\fcs0 \f1\fs20\insrsid5140827 \r
-\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a\r
-9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad\r
-5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6\r
-b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0\r
-0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6\r
-a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f\r
-c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512\r
-0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462\r
-a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865\r
-6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b\r
-4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b\r
-4757e8d3f729e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f\r
-7468656d65312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87\r
-615b8116d8a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad\r
-79482a9c0498f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b\r
-5d8a314d3c94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab\r
-999fb7b4717509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9\r
-699640f6719e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd586\r
-8b37a088d1e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d6\r
-0cf03ac1a5193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f\r
-9e7ef3f2d117d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be\r
-15c308d3f28acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a9979\r
-3849c26ae66252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d\r
-32a423279a668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2a\r
-f074481847bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86\r
-e877f0034e16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb\r
-44f95d843b5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a\r
-6409fb44d08741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c\r
-3d9058edf2c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db0256\r
-5e85f3b9660d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276\r
-b9f7dec44b7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8\r
-c33585b5fb9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e\r
-51440ca2e0088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95\r
-b21be5ceaf8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff\r
-6dce591a26ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec6\r
-9ffb9e65d028d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239\r
-b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a449\r
-59d366ad93b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e8\r
-2db8df9f30254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468\r
-656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4\r
-350d363f2451eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d2624\r
-52282e3198720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe5141\r
-73d9850528a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c020000130000000000000000\r
-0000000000000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000\r
-000000000000300100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c0000000000000000000000000019\r
-0200007468656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b00001600000000\r
-000000000000000000d60200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b01000027\r
-00000000000000000000000000a00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d0100009b0a00000000}\r
+\par }{\*\themedata 504b030414000600080000002100828abc13fa0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb6ac3301045f785fe83d0b6d8\r
+72ba28a5d8cea249777d2cd20f18e4b12d6a8f843409c9df77ecb850ba082d74231062ce997b55ae8fe3a00e1893f354e9555e6885647de3a8abf4fbee29bbd7\r
+2a3150038327acf409935ed7d757e5ee14302999a654e99e393c18936c8f23a4dc072479697d1c81e51a3b13c07e4087e6b628ee8cf5c4489cf1c4d075f92a0b\r
+44d7a07a83c82f308ac7b0a0f0fbf90c2480980b58abc733615aa2d210c2e02cb04430076a7ee833dfb6ce62e3ed7e14693e8317d8cd0433bf5c60f53fea2fe7\r
+065bd80facb647e9e25c7fc421fd2ddb526b2e9373fed4bb902e182e97b7b461e6bfad3f010000ffff0300504b030414000600080000002100a5d6a7e7c00000\r
+00360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4fc7060abb08\r
+84a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b63095120f88d94fbc\r
+52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462a1a82fe353\r
+bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f7468656d652f7468\r
+656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b4b0d592c9c\r
+070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b4757e8d3f7\r
+29e245eb2b260a0238fd010000ffff0300504b03041400060008000000210096b5ade296060000501b0000160000007468656d652f7468656d652f7468656d65\r
+312e786d6cec594f6fdb3614bf0fd87720746f6327761a07758ad8b19b2d4d1bc46e871e698996d850a240d2497d1bdae38001c3ba618715d86d87615b8116d8\r
+a5fb34d93a6c1dd0afb0475292c5585e9236d88aad3e2412f9e3fbff1e1fa9abd7eec70c1d1221294fda5efd72cd4324f1794093b0eddd1ef62fad79482a9c04\r
+98f184b4bd2991deb58df7dfbb8ad755446282607d22d771db8b944ad79796a40fc3585ee62949606ecc458c15bc8a702910f808e8c66c69b9565b5d8a314d3c\r
+94e018c8de1a8fa94fd05093f43672e23d06af89927ac06762a049136785c10607758d9053d965021d62d6f6804fc08f86e4bef210c352c144dbab999fb7b471\r
+7509af678b985ab0b6b4ae6f7ed9ba6c4170b06c788a705430adf71bad2b5b057d03606a1ed7ebf5babd7a41cf00b0ef83a6569632cd467faddec9699640f671\r
+9e76b7d6ac355c7c89feca9cccad4ea7d36c65b258a206641f1b73f8b5da6a6373d9c11b90c537e7f08dce66b7bbeae00dc8e257e7f0fd2badd5868b37a088d1\r
+e4600ead1ddaef67d40bc898b3ed4af81ac0d76a197c86826828a24bb318f3442d8ab518dfe3a20f000d6458d104a9694ac6d88728eee2782428d60cf03ac1a5\r
+193be4cbb921cd0b495fd054b5bd0f530c1931a3f7eaf9f7af9e3f45c70f9e1d3ff8e9f8e1c3e3073f5a42ceaa6d9c84e5552fbffdeccfc71fa33f9e7ef3f2d1\r
+17d57859c6fffac327bffcfc793510d26726ce8b2f9ffcf6ecc98baf3efdfdbb4715f04d814765f890c644a29be408edf3181433567125272371be15c308d3f2\r
+8acd249438c19a4b05fd9e8a1cf4cd296699771c393ac4b5e01d01e5a30a787d72cf1178108989a2159c77a2d801ee72ce3a5c545a6147f32a99793849c26ae6\r
+6252c6ed637c58c5bb8b13c7bfbd490a75330f4b47f16e441c31f7184e140e494214d273fc80900aedee52ead87597fa824b3e56e82e451d4c2b4d32a423279a\r
+668bb6690c7e9956e90cfe766cb37b077538abd27a8b1cba48c80acc2a841f12e698f13a9e281c57911ce298950d7e03aba84ac8c154f8655c4f2af074481847\r
+bd804859b5e696007d4b4edfc150b12addbecba6b18b148a1e54d1bc81392f23b7f84137c2715a851dd0242a633f900710a218ed715505dfe56e86e877f0034e\r
+16bafb0e258ebb4faf06b769e888340b103d3311da9750aa9d0a1cd3e4efca31a3508f6d0c5c5c398602f8e2ebc71591f5b616e24dd893aa3261fb44f95d843b\r
+5974bb5c04f4edafb95b7892ec1108f3f98de75dc97d5772bdff7cc95d94cf672db4b3da0a6557f70db629362d72bcb0431e53c6066acac80d699a6409fb44d0\r
+8741bdce9c0e4971624a2378cceaba830b05366b90e0ea23aaa241845368b0eb9e2612ca8c742851ca251ceccc70256d8d87265dd96361531f186c3d9058edf2\r
+c00eafe8e1fc5c509031bb4d680e9f39a3154de0accc56ae644441edd76156d7429d995bdd88664a9dc3ad50197c38af1a0c16d684060441db02565e85f3b966\r
+0d0713cc48a0ed6ef7dedc2dc60b17e92219e180643ed27acffba86e9c94c78ab90980d8a9f0913ee49d62b512b79626fb06dccee2a432bbc60276b9f7dec44b\r
+7904cfbca4f3f6443ab2a49c9c2c41476dafd55c6e7ac8c769db1bc399161ee314bc2e75cf8759081743be1236ec4f4d6693e5336fb672c5dc24a8c33585b5fb\r
+9cc24e1d4885545b58463634cc5416022cd19cacfccb4d30eb45296023fd35a458598360f8d7a4003bbaae25e331f155d9d9a5116d3bfb9a95523e51440ca2e0\r
+088dd844ec6370bf0e55d027a012ae264c45d02f708fa6ad6da6dce29c255df9f6cae0ec38666984b372ab5334cf640b37795cc860de4ae2816e95b21be5ceaf\r
+8a49f90b52a51cc6ff3355f47e0237052b81f6800fd7b802239daf6d8f0b1571a8426944fdbe80c6c1d40e8816b88b8569082ab84c36ff0539d4ff6dce591a26\r
+ade1c0a7f669880485fd484582903d284b26fa4e2156cff62e4b9265844c4495c495a9157b440e091bea1ab8aaf7760f4510eaa69a6465c0e04ec69ffb9e65d0\r
+28d44d4e39df9c1a52ecbd3607fee9cec7263328e5d661d3d0e4f62f44acd855ed7ab33cdf7bcb8ae889599bd5c8b3029895b6825696f6af29c239b75a5bb1e6\r
+345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c187064d0cc206a2fa926d3c902e907670048d931db4c1a44959d366ad93\r
+b65abe595f70a75bf03d616c2dd959fc7d4e6317cd99cbcec9c58b34766661c7d6766ca1a9c1b327531486c6f941c638c67cd22a7f75e2a37be0e82db8df9f30\r
+254d30c1372581a1f51c983c80e4b71ccdd28dbf000000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f74\r
+68656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f24\r
+51eced0dae2c082e8761be9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198\r
+720e274a939cd08a54f980ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528\r
+a2c6cce0239baa4c04ca5bbabac4df000000ffff0300504b01022d0014000600080000002100828abc13fa0000001c0200001300000000000000000000000000\r
+000000005b436f6e74656e745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b000000000000000000000000\r
+002b0100005f72656c732f2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000140200007468\r
+656d652f7468656d652f7468656d654d616e616765722e786d6c504b01022d001400060008000000210096b5ade296060000501b000016000000000000000000\r
+00000000d10200007468656d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b010000270000000000\r
+00000000000000009b0900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000960a00000000}\r
 {\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d\r
 617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169\r
 6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363\r
@@ -272,17 +325,33 @@ b75a5bb1e6345e6ee6c28117e73586c1a2214ae1be07e93fb0ff51e133fb65426fa843be0fb515c1
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis;\r
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\r
 \lsdsemihidden0 \lsdunhideused0 \lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdpriority37 \lsdlocked0 Bibliography;\lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;}}{\*\datastore 010500000200000018000000\r
-4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000\r
-d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+4d73786d6c322e534158584d4c5265616465722e352e30000000000000000000000e0000\r
+d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff0900060000000000000000000000010000000100000000000000001000000200000001000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
-fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+fffffffffffffffffdffffff04000000feffffff05000000fefffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
 ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
-ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e50000000000000000000000006059\r
-f6250057cc01feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000\r
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000\r
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000\r
-0000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
+ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffff01000000ec69d9888b8b3d4c859eaf6cd158be0f000000000000000000000000d049\r
+4bd2c100cd010300000080020000000000004d0073006f004400610074006100530074006f0072006500000000000000000000000000000000000000000000000000000000000000000000000000000000001a000101ffffffffffffffff020000000000000000000000000000000000000000000000d0494bd2c100cd01\r
+d0494bd2c100cd01000000000000000000000000ce00c600c400d9003500c800c700520055004500430042003300c6004b004c003400d3005000d6005000c0003d003d000000000000000000000000000000000032000101ffffffffffffffff030000000000000000000000000000000000000000000000d0494bd2c100\r
+cd01d0494bd2c100cd010000000000000000000000004900740065006d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000201ffffffff04000000ffffffff000000000000000000000000000000000000000000000000\r
+00000000000000000000000000000000dd00000000000000010000000200000003000000feffffff0500000006000000070000000800000009000000feffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\r
+ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3c623a536f757263657320786d6c6e733a623d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f6772617068792220786d6c6e733d\r
+22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222053656c65637465645374796c653d225c4150412e58534c22205374796c654e616d653d224150412046696674682045646974696f6e222f3e0d\r
+0a00000000000000000000000000000000000000000000000000000000000000000000003c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d226e6f223f3e0d0a3c64733a6461746173746f72654974656d2064733a6974656d49443d227b37453339\r
+363942412d443138392d343035302d383137362d3632384237423333463633457d2220786d6c6e733a64733d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f637573746f6d586d6c223e3c64733a736368656d61526566733e3c\r
+64733a736368656d615265662064733a7572693d22687474703a2f2f736368656d61732e6f70656e500072006f007000650072007400690065007300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000200ffffffffffffffffffffffff000000000000\r
+0000000000000000000000000000000000000000000000000000000000000400000055010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000\r
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000\r
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff\r
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000786d6c666f726d6174732e6f72672f6f6666696365446f63756d656e742f323030362f6269626c696f677261706879222f3e3c2f64733a736368656d61526566733e3c2f64733a6461746173746f\r
+72654974656d3e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\r
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\r
+000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\r
+00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000105000000000000}}
\ No newline at end of file
index 5a081430dbaca49cce4b21ad108bb3e34bd526bf..561cc408cb7f30cbb0e0db517304f9c605be55e4 100755 (executable)
@@ -3,7 +3,7 @@
 @REM   however it may be executed directly from the BaseTools project folder\r
 @REM   if the file is not executed within a WORKSPACE\BaseTools folder.\r
 @REM\r
-@REM Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>\r
+@REM Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
 @REM\r
 @REM This program and the accompanying materials are licensed and made available\r
 @REM under the terms and conditions of the BSD Licensewhich accompanies this \r
@@ -158,14 +158,6 @@ if NOT exist %WORKSPACE%\Conf (
   )\r
 )\r
 \r
-if NOT exist %WORKSPACE%\Conf\FrameworkDatabase.db (\r
-  echo copying ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db\r
-  copy %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul\r
-) else (\r
-  if defined RECONFIG echo over-write ... FrameworkDatabase.template to %WORKSPACE%\Conf\FrameworkDatabase.db\r
-  if defined RECONFIG copy /Y %EDK_TOOLS_PATH%\Conf\FrameworkDatabase.template %WORKSPACE%\Conf\FrameworkDatabase.db > nul\r
-)\r
-\r
 if NOT exist %WORKSPACE%\Conf\target.txt (\r
   echo copying ... target.template to %WORKSPACE%\Conf\target.txt\r
   if NOT exist %EDK_TOOLS_PATH%\Conf\target.template (\r
@@ -299,16 +291,24 @@ goto end
   echo.\r
 \r
   if defined VCINSTALLDIR goto VisualStudioAvailable\r
-  if defined VS71COMNTOOLS (\r
-    call "%VS71COMNTOOLS%\vsvars32.bat"\r
+  if defined VS100COMNTOOLS (\r
+    call "%VS100COMNTOOLS%\vsvars32.bat"\r
   ) else (\r
-    if defined VS80COMNTOOLS (\r
-      call "%VS80COMNTOOLS%\vsvars32.bat"\r
+    if defined VS90COMNTOOLS (\r
+      call "%VS90COMNTOOLS%\vsvars32.bat"\r
     ) else (\r
-      echo.\r
-      echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
-      echo.\r
-      goto end\r
+      if defined VS80COMNTOOLS (\r
+        call "%VS80COMNTOOLS%\vsvars32.bat"\r
+      ) else (\r
+        if defined VS71COMNTOOLS (\r
+          call "%VS71COMNTOOLS%\vsvars32.bat"\r
+        ) else (\r
+          echo.\r
+          echo !!! ERROR !!!! Cannot find Visual Studio, required to build C tools !!!\r
+          echo.\r
+          goto end\r
+        )\r
+      )\r
     )\r
   )\r
 \r