Reviewed-by: Liming Gao <liming....@intel.com>

>-----Original Message-----
>From: Feng, Bob C
>Sent: Wednesday, January 09, 2019 3:15 PM
>To: edk2-devel@lists.01.org
>Cc: Feng, Bob C <bob.c.f...@intel.com>; Gao, Liming
><liming....@intel.com>; Carsey, Jaben <jaben.car...@intel.com>
>Subject: [Patch 1/3 V2] BaseTools: Remove unused logic for EDKI
>
>From: "Feng, Bob C" <bob.c.f...@intel.com>
>
>BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=1350
>Remove EDK module type support from BaseTools python code.
>
>Contributed-under: TianoCore Contribution Agreement 1.1
>Signed-off-by: Bob Feng <bob.c.f...@intel.com>
>Cc: Liming Gao <liming....@intel.com>
>Cc: Jaben Carsey <jaben.car...@intel.com>
>---
> BaseTools/Source/Python/AutoGen/AutoGen.py    |  93 ++-------
> BaseTools/Source/Python/AutoGen/GenC.py       |  90 ++++-----
> BaseTools/Source/Python/AutoGen/GenMake.py    |  18 +-
> BaseTools/Source/Python/Common/DataType.py    |   2 -
> BaseTools/Source/Python/Common/GlobalData.py  |   6 -
> .../Source/Python/Workspace/DecBuildData.py   |   1 -
> .../Source/Python/Workspace/DscBuildData.py   |   3 -
> .../Source/Python/Workspace/InfBuildData.py   | 191 +++++-------------
> .../Source/Python/Workspace/MetaFileParser.py |  22 --
> .../Python/Workspace/WorkspaceCommon.py       |  29 +--
> BaseTools/Source/Python/build/BuildReport.py  |  54 ++---
> BaseTools/Source/Python/build/build.py        |  65 ------
> edksetup.bat                                  |   3 -
> 13 files changed, 116 insertions(+), 461 deletions(-)
>
>diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py
>b/BaseTools/Source/Python/AutoGen/AutoGen.py
>index d646cd50ce..d3d0d96e71 100644
>--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
>+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
>@@ -2174,46 +2174,11 @@ class PlatformAutoGen(AutoGen):
>                     Pcd.MaxDatumSize = str(len(Value.split(',')))
>                 else:
>                     Pcd.MaxDatumSize = str(len(Value) - 1)
>         return Pcds.values()
>
>-    ## Resolve library names to library modules
>-    #
>-    # (for Edk.x modules)
>-    #
>-    #   @param  Module  The module from which the library names will be
>resolved
>-    #
>-    #   @retval library_list    The list of library modules
>-    #
>-    def ResolveLibraryReference(self, Module):
>-        EdkLogger.verbose("")
>-        EdkLogger.verbose("Library instances of module [%s] [%s]:" %
>(str(Module), self.Arch))
>-        LibraryConsumerList = [Module]
>-
>-        # "CompilerStub" is a must for Edk modules
>-        if Module.Libraries:
>-            Module.Libraries.append("CompilerStub")
>-        LibraryList = []
>-        while len(LibraryConsumerList) > 0:
>-            M = LibraryConsumerList.pop()
>-            for LibraryName in M.Libraries:
>-                Library = self.Platform.LibraryClasses[LibraryName, ':dummy:']
>-                if Library is None:
>-                    for Key in self.Platform.LibraryClasses.data:
>-                        if LibraryName.upper() == Key.upper():
>-                            Library = self.Platform.LibraryClasses[Key, 
>':dummy:']
>-                            break
>-                    if Library is None:
>-                        EdkLogger.warn("build", "Library [%s] is not found" %
>LibraryName, File=str(M),
>-                            ExtraData="\t%s [%s]" % (str(Module), self.Arch))
>-                        continue
>
>-                if Library not in LibraryList:
>-                    LibraryList.append(Library)
>-                    LibraryConsumerList.append(Library)
>-                    EdkLogger.verbose("\t" + LibraryName + " : " + 
>str(Library) + ' ' +
>str(type(Library)))
>-        return LibraryList
>
>     ## Calculate the priority value of the build option
>     #
>     # @param    Key    Build option definition contain:
>TARGET_TOOLCHAIN_ARCH_COMMANDTYPE_ATTRIBUTE
>     #
>@@ -2377,16 +2342,12 @@ class PlatformAutoGen(AutoGen):
>     #
>     #   @retval options     The options appended with build options in 
> platform
>     #
>     def ApplyBuildOption(self, Module):
>         # Get the different options for the different style module
>-        if Module.AutoGenVersion < 0x00010005:
>-            PlatformOptions = self.EdkBuildOption
>-            ModuleTypeOptions =
>self.Platform.GetBuildOptionsByModuleType(EDK_NAME,
>Module.ModuleType)
>-        else:
>-            PlatformOptions = self.EdkIIBuildOption
>-            ModuleTypeOptions =
>self.Platform.GetBuildOptionsByModuleType(EDKII_NAME,
>Module.ModuleType)
>+        PlatformOptions = self.EdkIIBuildOption
>+        ModuleTypeOptions =
>self.Platform.GetBuildOptionsByModuleType(EDKII_NAME,
>Module.ModuleType)
>         ModuleTypeOptions = self._ExpandBuildOption(ModuleTypeOptions)
>         ModuleOptions = self._ExpandBuildOption(Module.BuildOptions)
>         if Module in self.Platform.Modules:
>             PlatformModule = self.Platform.Modules[str(Module)]
>             PlatformModuleOptions =
>self._ExpandBuildOption(PlatformModule.BuildOptions)
>@@ -2422,15 +2383,10 @@ class PlatformAutoGen(AutoGen):
>                         if Attr != 'PATH':
>                             BuildOptions[Tool][Attr] += " " + 
> mws.handleWsMacro(Value)
>                         else:
>                             BuildOptions[Tool][Attr] = 
> mws.handleWsMacro(Value)
>
>-        if Module.AutoGenVersion < 0x00010005 and self.Workspace.UniFlag is
>not None:
>-            #
>-            # Override UNI flag only for EDK module.
>-            #
>-            BuildOptions['BUILD']['FLAGS'] = self.Workspace.UniFlag
>         return BuildOptions, BuildRuleOrder
>
> #
> # extend lists contained in a dictionary with lists stored in another 
> dictionary
> # if CopyToDict is not derived from DefaultDict(list) then this may raise
>exception
>@@ -2962,18 +2918,17 @@ class ModuleAutoGen(AutoGen):
>
>             #
>             # EDK II modules must not reference header files outside of the
>packages they depend on or
>             # within the module's directory tree. Report error if violation.
>             #
>-            if self.AutoGenVersion >= 0x00010005:
>-                for Path in IncPathList:
>-                    if (Path not in self.IncludePathList) and 
>(CommonPath([Path,
>self.MetaFile.Dir]) != self.MetaFile.Dir):
>-                        ErrMsg = "The include directory for the EDK II module 
>in this line
>is invalid %s specified in %s FLAGS '%s'" % (Path, Tool, FlagOption)
>-                        EdkLogger.error("build",
>-                                        PARAMETER_INVALID,
>-                                        ExtraData=ErrMsg,
>-                                        File=str(self.MetaFile))
>+            for Path in IncPathList:
>+                if (Path not in self.IncludePathList) and (CommonPath([Path,
>self.MetaFile.Dir]) != self.MetaFile.Dir):
>+                    ErrMsg = "The include directory for the EDK II module in 
>this line is
>invalid %s specified in %s FLAGS '%s'" % (Path, Tool, FlagOption)
>+                    EdkLogger.error("build",
>+                                    PARAMETER_INVALID,
>+                                    ExtraData=ErrMsg,
>+                                    File=str(self.MetaFile))
>             RetVal += IncPathList
>         return RetVal
>
>     ## Return a list of files which can be built from source
>     #
>@@ -2999,11 +2954,11 @@ class ModuleAutoGen(AutoGen):
>                             "but current toolchain family is [%s], buildrule 
> family is [%s]" \
>                                 % (str(F), F.ToolChainFamily, 
> self.ToolChainFamily,
>self.BuildRuleFamily))
>                 continue
>
>             # add the file path into search path list for file including
>-            if F.Dir not in self.IncludePathList and self.AutoGenVersion >=
>0x00010005:
>+            if F.Dir not in self.IncludePathList:
>                 self.IncludePathList.insert(0, F.Dir)
>             RetVal.append(F)
>
>         self._MatchBuildRuleOrder(RetVal)
>
>@@ -3261,12 +3216,10 @@ class ModuleAutoGen(AutoGen):
>     @cached_property
>     def DependentLibraryList(self):
>         # only merge library classes and PCD for non-library module
>         if self.IsLibrary:
>             return []
>-        if self.AutoGenVersion < 0x00010005:
>-            return self.PlatformInfo.ResolveLibraryReference(self.Module)
>         return self.PlatformInfo.ApplyLibraryInstance(self.Module)
>
>     ## Get the list of PCDs from current module
>     #
>     #   @retval     list                    The list of PCD
>@@ -3351,23 +3304,12 @@ class ModuleAutoGen(AutoGen):
>     #   @retval     list                    The list path
>     #
>     @cached_property
>     def IncludePathList(self):
>         RetVal = []
>-        if self.AutoGenVersion < 0x00010005:
>-            for Inc in self.Module.Includes:
>-                if Inc not in RetVal:
>-                    RetVal.append(Inc)
>-                # for Edk modules
>-                Inc = path.join(Inc, self.Arch.capitalize())
>-                if os.path.exists(Inc) and Inc not in RetVal:
>-                    RetVal.append(Inc)
>-            # Edk module needs to put DEBUG_DIR at the end of search path and
>not to use SOURCE_DIR all the time
>-            RetVal.append(self.DebugDir)
>-        else:
>-            RetVal.append(self.MetaFile.Dir)
>-            RetVal.append(self.DebugDir)
>+        RetVal.append(self.MetaFile.Dir)
>+        RetVal.append(self.DebugDir)
>
>         for Package in self.Module.Packages:
>             PackageDir = mws.join(self.WorkspaceDir, Package.MetaFile.Dir)
>             if PackageDir not in RetVal:
>                 RetVal.append(PackageDir)
>@@ -3526,14 +3468,10 @@ class ModuleAutoGen(AutoGen):
>             return
>
>         if self.IsAsBuiltInfCreated:
>             return
>
>-        # Skip the following code for EDK I inf
>-        if self.AutoGenVersion < 0x00010005:
>-            return
>-
>         # Skip the following code for libraries
>         if self.IsLibrary:
>             return
>
>         # Skip the following code for modules with no source files
>@@ -3986,21 +3924,14 @@ class ModuleAutoGen(AutoGen):
>         AutoGenList = []
>         IgoredAutoGenList = []
>
>         for File in self.AutoGenFileList:
>             if GenC.Generate(File.Path, self.AutoGenFileList[File], 
> File.IsBinary):
>-                #Ignore Edk AutoGen.c
>-                if self.AutoGenVersion < 0x00010005 and File.Name == 
>'AutoGen.c':
>-                        continue
>-
>                 AutoGenList.append(str(File))
>             else:
>                 IgoredAutoGenList.append(str(File))
>
>-        # Skip the following code for EDK I inf
>-        if self.AutoGenVersion < 0x00010005:
>-            return
>
>         for ModuleType in self.DepexList:
>             # Ignore empty [depex] section or [depex] section for
>SUP_MODULE_USER_DEFINED module
>             if len(self.DepexList[ModuleType]) == 0 or ModuleType ==
>SUP_MODULE_USER_DEFINED:
>                 continue
>diff --git a/BaseTools/Source/Python/AutoGen/GenC.py
>b/BaseTools/Source/Python/AutoGen/GenC.py
>index 09626d0b96..ffc900fd81 100644
>--- a/BaseTools/Source/Python/AutoGen/GenC.py
>+++ b/BaseTools/Source/Python/AutoGen/GenC.py
>@@ -1679,26 +1679,10 @@ def CreateUnicodeStringCode(Info, AutoGenC,
>AutoGenH, UniGenCFlag, UniGenBinBuff
>
>     IncList = [Info.MetaFile.Dir]
>     # Get all files under [Sources] section in inf file for EDK-II module
>     EDK2Module = True
>     SrcList = [F for F in Info.SourceFileList]
>-    if Info.AutoGenVersion < 0x00010005:
>-        EDK2Module = False
>-        # Get all files under the module directory for EDK-I module
>-        Cwd = os.getcwd()
>-        os.chdir(Info.MetaFile.Dir)
>-        for Root, Dirs, Files in os.walk("."):
>-            if 'CVS' in Dirs:
>-                Dirs.remove('CVS')
>-            if '.svn' in Dirs:
>-                Dirs.remove('.svn')
>-            for File in Files:
>-                File = PathClass(os.path.join(Root, File), Info.MetaFile.Dir)
>-                if File in SrcList:
>-                    continue
>-                SrcList.append(File)
>-        os.chdir(Cwd)
>
>     if 'BUILD' in Info.BuildOption and 
> Info.BuildOption['BUILD']['FLAGS'].find('-
>c') > -1:
>         CompatibleMode = True
>     else:
>         CompatibleMode = False
>@@ -1982,46 +1966,45 @@ def CreateHeaderCode(Info, AutoGenC,
>AutoGenH):
>     # file header
>
>AutoGenH.Append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.h'}
>))
>     # header file Prologue
>
>AutoGenH.Append(gAutoGenHPrologueString.Replace({'File':'AUTOGENH','G
>uid':Info.Guid.replace('-', '_')}))
>     AutoGenH.Append(gAutoGenHCppPrologueString)
>-    if Info.AutoGenVersion >= 0x00010005:
>-        # header files includes
>-        if Info.ModuleType in gModuleTypeHeaderFile:
>-            AutoGenH.Append("#include <%s>\n" %
>gModuleTypeHeaderFile[Info.ModuleType][0])
>-        #
>-        # if either PcdLib in [LibraryClasses] sections or there exist Pcd 
>section,
>add PcdLib.h
>-        # As if modules only uses FixedPcd, then PcdLib is not needed in
>[LibraryClasses] section.
>-        #
>-        if 'PcdLib' in Info.Module.LibraryClasses or Info.Module.Pcds:
>-            AutoGenH.Append("#include <Library/PcdLib.h>\n")
>
>-        AutoGenH.Append('\nextern GUID  gEfiCallerIdGuid;')
>-        AutoGenH.Append('\nextern CHAR8 *gEfiCallerBaseName;\n\n')
>+    # header files includes
>+    if Info.ModuleType in gModuleTypeHeaderFile:
>+        AutoGenH.Append("#include <%s>\n" %
>gModuleTypeHeaderFile[Info.ModuleType][0])
>+    #
>+    # if either PcdLib in [LibraryClasses] sections or there exist Pcd 
>section, add
>PcdLib.h
>+    # As if modules only uses FixedPcd, then PcdLib is not needed in
>[LibraryClasses] section.
>+    #
>+    if 'PcdLib' in Info.Module.LibraryClasses or Info.Module.Pcds:
>+        AutoGenH.Append("#include <Library/PcdLib.h>\n")
>+
>+    AutoGenH.Append('\nextern GUID  gEfiCallerIdGuid;')
>+    AutoGenH.Append('\nextern CHAR8 *gEfiCallerBaseName;\n\n')
>
>-        if Info.IsLibrary:
>-            return
>+    if Info.IsLibrary:
>+        return
>
>-        AutoGenH.Append("#define EFI_CALLER_ID_GUID \\\n  %s\n" %
>GuidStringToGuidStructureString(Info.Guid))
>+    AutoGenH.Append("#define EFI_CALLER_ID_GUID \\\n  %s\n" %
>GuidStringToGuidStructureString(Info.Guid))
>
>     if Info.IsLibrary:
>         return
>     # C file header
>
>AutoGenC.Append(gAutoGenHeaderString.Replace({'FileName':'AutoGen.c'}
>))
>-    if Info.AutoGenVersion >= 0x00010005:
>-        # C file header files includes
>-        if Info.ModuleType in gModuleTypeHeaderFile:
>-            for Inc in gModuleTypeHeaderFile[Info.ModuleType]:
>-                AutoGenC.Append("#include <%s>\n" % Inc)
>-        else:
>-            AutoGenC.Append("#include <%s>\n" % gBasicHeaderFile)
>+    # C file header files includes
>+    if Info.ModuleType in gModuleTypeHeaderFile:
>+        for Inc in gModuleTypeHeaderFile[Info.ModuleType]:
>+            AutoGenC.Append("#include <%s>\n" % Inc)
>+    else:
>+        AutoGenC.Append("#include <%s>\n" % gBasicHeaderFile)
>
>-        #
>-        # Publish the CallerId Guid
>-        #
>-        AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED GUID
>gEfiCallerIdGuid = %s;\n' % GuidStringToGuidStructureString(Info.Guid))
>-        AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED CHAR8
>*gEfiCallerBaseName = "%s";\n' % Info.Name)
>+    #
>+    # Publish the CallerId Guid
>+    #
>+    AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED GUID
>gEfiCallerIdGuid = %s;\n' % GuidStringToGuidStructureString(Info.Guid))
>+    AutoGenC.Append('\nGLOBAL_REMOVE_IF_UNREFERENCED CHAR8
>*gEfiCallerBaseName = "%s";\n' % Info.Name)
>
> ## Create common code for header file
> #
> #   @param      Info        The ModuleAutoGen object
> #   @param      AutoGenC    The TemplateString object for C code
>@@ -2043,19 +2026,18 @@ def CreateFooterCode(Info, AutoGenC,
>AutoGenH):
> #   @param      IdfGenBinBuffer Buffer to store Idf string package data
> #
> def CreateCode(Info, AutoGenC, AutoGenH, StringH, UniGenCFlag,
>UniGenBinBuffer, StringIdf, IdfGenCFlag, IdfGenBinBuffer):
>     CreateHeaderCode(Info, AutoGenC, AutoGenH)
>
>-    if Info.AutoGenVersion >= 0x00010005:
>-        CreateGuidDefinitionCode(Info, AutoGenC, AutoGenH)
>-        CreateProtocolDefinitionCode(Info, AutoGenC, AutoGenH)
>-        CreatePpiDefinitionCode(Info, AutoGenC, AutoGenH)
>-        CreatePcdCode(Info, AutoGenC, AutoGenH)
>-        CreateLibraryConstructorCode(Info, AutoGenC, AutoGenH)
>-        CreateLibraryDestructorCode(Info, AutoGenC, AutoGenH)
>-        CreateModuleEntryPointCode(Info, AutoGenC, AutoGenH)
>-        CreateModuleUnloadImageCode(Info, AutoGenC, AutoGenH)
>+    CreateGuidDefinitionCode(Info, AutoGenC, AutoGenH)
>+    CreateProtocolDefinitionCode(Info, AutoGenC, AutoGenH)
>+    CreatePpiDefinitionCode(Info, AutoGenC, AutoGenH)
>+    CreatePcdCode(Info, AutoGenC, AutoGenH)
>+    CreateLibraryConstructorCode(Info, AutoGenC, AutoGenH)
>+    CreateLibraryDestructorCode(Info, AutoGenC, AutoGenH)
>+    CreateModuleEntryPointCode(Info, AutoGenC, AutoGenH)
>+    CreateModuleUnloadImageCode(Info, AutoGenC, AutoGenH)
>
>     if Info.UnicodeFileList:
>         FileName = "%sStrDefs.h" % Info.Name
>         StringH.Append(gAutoGenHeaderString.Replace({'FileName':FileName}))
>         StringH.Append(gAutoGenHPrologueString.Replace({'File':'STRDEFS',
>'Guid':Info.Guid.replace('-', '_')}))
>@@ -2110,14 +2092,10 @@ def CreateCode(Info, AutoGenC, AutoGenH,
>StringH, UniGenCFlag, UniGenBinBuffer,
>         StringIdf.Append("\n#endif\n")
>         AutoGenH.Append('#include "%s"\n' % FileName)
>
>     CreateFooterCode(Info, AutoGenC, AutoGenH)
>
>-    # no generation of AutoGen.c for Edk modules without unicode file
>-    if Info.AutoGenVersion < 0x00010005 and len(Info.UnicodeFileList) == 0:
>-        AutoGenC.String = ''
>-
> ## Create the code file
> #
> #   @param      FilePath     The path of code file
> #   @param      Content      The content of code file
> #   @param      IsBinaryFile The flag indicating if the file is binary file 
> or not
>diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py
>b/BaseTools/Source/Python/AutoGen/GenMake.py
>index ef7bc845d0..4da10e3950 100644
>--- a/BaseTools/Source/Python/AutoGen/GenMake.py
>+++ b/BaseTools/Source/Python/AutoGen/GenMake.py
>@@ -474,22 +474,15 @@ cleanlib:
>         if len(MyAgo.Module.ModuleEntryPointList) > 0:
>             ModuleEntryPoint = MyAgo.Module.ModuleEntryPointList[0]
>         else:
>             ModuleEntryPoint = "_ModuleEntryPoint"
>
>-        # Intel EBC compiler enforces EfiMain
>-        if MyAgo.AutoGenVersion < 0x00010005 and MyAgo.Arch == "EBC":
>-            ArchEntryPoint = "EfiMain"
>-        else:
>-            ArchEntryPoint = ModuleEntryPoint
>+        ArchEntryPoint = ModuleEntryPoint
>
>         if MyAgo.Arch == "EBC":
>             # EBC compiler always use "EfiStart" as entry point. Only applies 
> to EdkII
>modules
>             ImageEntryPoint = "EfiStart"
>-        elif MyAgo.AutoGenVersion < 0x00010005:
>-            # Edk modules use entry point specified in INF file
>-            ImageEntryPoint = ModuleEntryPoint
>         else:
>             # EdkII modules always use "_ModuleEntryPoint" as entry point
>             ImageEntryPoint = "_ModuleEntryPoint"
>
>         for k, v in MyAgo.Module.Defines.iteritems():
>@@ -623,15 +616,10 @@ cleanlib:
>                 ListFileName,
>                 "\n".join(self.ListFileMacros[ListFileMacro]),
>                 False
>                 )
>
>-        # Edk modules need <BaseName>StrDefs.h for string ID
>-        #if MyAgo.AutoGenVersion < 0x00010005 and
>len(MyAgo.UnicodeFileList) > 0:
>-        #    BcTargetList = ['strdefs']
>-        #else:
>-        #    BcTargetList = []
>         BcTargetList = []
>
>         MakefileName = self._FILE_NAME_[self._FileType]
>         LibraryMakeCommandList = []
>         for D in self.LibraryBuildDirectoryList:
>@@ -1535,17 +1523,13 @@ class TopLevelMakefile(BuildFile):
>         # TRICK: for not generating GenFds call in makefile if no FDF file
>         MacroList = []
>         if MyAgo.FdfFile is not None and MyAgo.FdfFile != "":
>             FdfFileList = [MyAgo.FdfFile]
>             # macros passed to GenFds
>-            MacroList.append('"%s=%s"' % ("EFI_SOURCE",
>GlobalData.gEfiSource.replace('\\', '\\\\')))
>-            MacroList.append('"%s=%s"' % ("EDK_SOURCE",
>GlobalData.gEdkSource.replace('\\', '\\\\')))
>             MacroDict = {}
>             MacroDict.update(GlobalData.gGlobalDefines)
>             MacroDict.update(GlobalData.gCommandLineDefines)
>-            MacroDict.pop("EFI_SOURCE", "dummy")
>-            MacroDict.pop("EDK_SOURCE", "dummy")
>             for MacroName in MacroDict:
>                 if MacroDict[MacroName] != "":
>                     MacroList.append('"%s=%s"' % (MacroName,
>MacroDict[MacroName].replace('\\', '\\\\')))
>                 else:
>                     MacroList.append('"%s"' % MacroName)
>diff --git a/BaseTools/Source/Python/Common/DataType.py
>b/BaseTools/Source/Python/Common/DataType.py
>index 6b375712b6..ec0a4f3d59 100644
>--- a/BaseTools/Source/Python/Common/DataType.py
>+++ b/BaseTools/Source/Python/Common/DataType.py
>@@ -45,12 +45,10 @@ TAB_GUID = 'GUID'
>
> TAB_PCD_CLEAN_NUMERIC_TYPES = {TAB_UINT8, TAB_UINT16,
>TAB_UINT32, TAB_UINT64}
> TAB_PCD_NUMERIC_TYPES = {TAB_UINT8, TAB_UINT16, TAB_UINT32,
>TAB_UINT64, 'BOOLEAN'}
> TAB_PCD_NUMERIC_TYPES_VOID = {TAB_UINT8, TAB_UINT16, TAB_UINT32,
>TAB_UINT64, 'BOOLEAN', TAB_VOID}
>
>-TAB_EDK_SOURCE = '$(EDK_SOURCE)'
>-TAB_EFI_SOURCE = '$(EFI_SOURCE)'
> TAB_WORKSPACE = '$(WORKSPACE)'
> TAB_FV_DIRECTORY = 'FV'
>
> TAB_ARCH_NULL = ''
> TAB_ARCH_COMMON = 'COMMON'
>diff --git a/BaseTools/Source/Python/Common/GlobalData.py
>b/BaseTools/Source/Python/Common/GlobalData.py
>index 57048bcae6..5eaee06694 100644
>--- a/BaseTools/Source/Python/Common/GlobalData.py
>+++ b/BaseTools/Source/Python/Common/GlobalData.py
>@@ -11,17 +11,11 @@
> # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER
>EXPRESS OR IMPLIED.
>
> import re
>
> gIsWindows = None
>-
>-gEdkCompatibilityPkg = "EdkCompatibilityPkg"
> gWorkspace = "."
>-gEdkSource = "EdkCompatibilityPkg"
>-gEfiSource = "."
>-gEcpSource = "EdkCompatibilityPkg"
>-
> gOptions = None
> gCaseInsensitive = False
> gAllFiles = None
> gCommand = None
> gSKUID_CMD = None
>diff --git a/BaseTools/Source/Python/Workspace/DecBuildData.py
>b/BaseTools/Source/Python/Workspace/DecBuildData.py
>index cc00409fee..b64cbb6b50 100644
>--- a/BaseTools/Source/Python/Workspace/DecBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DecBuildData.py
>@@ -296,11 +296,10 @@ class DecBuildData(PackageBuildClassObject):
>             self._Includes = []
>             self._PrivateIncludes = []
>             PublicInclues = []
>             RecordList = self._RawData[MODEL_EFI_INCLUDE, self._Arch]
>             Macros = self._Macros
>-            Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>             for Record in RecordList:
>                 File = PathClass(NormPath(Record[0], Macros), 
> self._PackageDir,
>Arch=self._Arch)
>                 LineNo = Record[-1]
>                 # validate the path
>                 ErrorCode, ErrorInfo = File.Validate()
>diff --git a/BaseTools/Source/Python/Workspace/DscBuildData.py
>b/BaseTools/Source/Python/Workspace/DscBuildData.py
>index 7e82e8e934..baca4e9e6b 100644
>--- a/BaseTools/Source/Python/Workspace/DscBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/DscBuildData.py
>@@ -713,11 +713,10 @@ class DscBuildData(PlatformBuildClassObject):
>             return self._Modules
>
>         self._Modules = OrderedDict()
>         RecordList = self._RawData[MODEL_META_DATA_COMPONENT,
>self._Arch]
>         Macros = self._Macros
>-        Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>         for Record in RecordList:
>             DuplicatedFile = False
>
>             ModuleFile = PathClass(NormPath(Record[0], Macros),
>GlobalData.gWorkspace, Arch=self._Arch)
>             ModuleId = Record[6]
>@@ -856,12 +855,10 @@ class DscBuildData(PlatformBuildClassObject):
>                     LibraryInstance = LibraryClassDict[self._Arch, ModuleType,
>LibraryClass]
>                     if LibraryInstance is None:
>                         continue
>                     self._LibraryClasses[LibraryClass, ModuleType] = 
> LibraryInstance
>
>-            # for Edk style library instances, which are listed in different 
>section
>-            Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>             RecordList = self._RawData[MODEL_EFI_LIBRARY_INSTANCE,
>self._Arch]
>             for Record in RecordList:
>                 File = PathClass(NormPath(Record[0], Macros),
>GlobalData.gWorkspace, Arch=self._Arch)
>                 LineNo = Record[-1]
>                 # check the file validation
>diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py
>b/BaseTools/Source/Python/Workspace/InfBuildData.py
>index 99bbecfd1f..02d6c1c756 100644
>--- a/BaseTools/Source/Python/Workspace/InfBuildData.py
>+++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
>@@ -143,14 +143,10 @@ class InfBuildData(ModuleBuildClassObject):
>
>     ## Get current effective macros
>     @cached_property
>     def _Macros(self):
>         RetVal = {}
>-        # EDK_GLOBAL defined macros can be applied to EDK module
>-        if self.AutoGenVersion < 0x00010005:
>-            RetVal.update(GlobalData.gEdkGlobal)
>-            RetVal.update(GlobalData.gGlobalDefines)
>         return RetVal
>
>     ## Get architecture
>     @cached_property
>     def Arch(self):
>@@ -244,110 +240,54 @@ class InfBuildData(ModuleBuildClassObject):
>                 self._Macros[Name] = Value
>
>         #
>         # Retrieve information in sections specific to Edk.x modules
>         #
>-        if self.AutoGenVersion >= 0x00010005:
>-            if not self._ModuleType:
>-                EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,
>-                                "MODULE_TYPE is not given", 
>File=self.MetaFile)
>-            if self._ModuleType not in SUP_MODULE_LIST:
>-                RecordList = self._RawData[MODEL_META_DATA_HEADER,
>self._Arch, self._Platform]
>-                for Record in RecordList:
>-                    Name = Record[1]
>-                    if Name == "MODULE_TYPE":
>-                        LineNo = Record[6]
>-                        break
>-                EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>-                                "MODULE_TYPE %s is not supported for EDK II, 
>valid values
>are:\n %s" % (self._ModuleType, ' '.join(l for l in SUP_MODULE_LIST)),
>-                                File=self.MetaFile, Line=LineNo)
>-            if (self._Specification is None) or (not 
>'PI_SPECIFICATION_VERSION' in
>self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'],
>16) < 0x0001000A):
>-                if self._ModuleType == SUP_MODULE_SMM_CORE:
>-                    EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "SMM_CORE
>module type can't be used in the module with PI_SPECIFICATION_VERSION
>less than 0x0001000A", File=self.MetaFile)
>-            if (self._Specification is None) or (not 
>'PI_SPECIFICATION_VERSION' in
>self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'],
>16) < 0x00010032):
>-                if self._ModuleType == SUP_MODULE_MM_CORE_STANDALONE:
>-                    EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>"MM_CORE_STANDALONE module type can't be used in the module with
>PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)
>-                if self._ModuleType == SUP_MODULE_MM_STANDALONE:
>-                    EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>"MM_STANDALONE module type can't be used in the module with
>PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)
>-            if 'PCI_DEVICE_ID' in self._Defs and 'PCI_VENDOR_ID' in 
>self._Defs \
>-               and 'PCI_CLASS_CODE' in self._Defs and 'PCI_REVISION' in 
>self._Defs:
>-                self._BuildType = 'UEFI_OPTIONROM'
>-                if 'PCI_COMPRESS' in self._Defs:
>-                    if self._Defs['PCI_COMPRESS'] not in ('TRUE', 'FALSE'):
>-                        EdkLogger.error("build", FORMAT_INVALID, "Expected
>TRUE/FALSE for PCI_COMPRESS: %s" % self.MetaFile)
>-
>-            elif 'UEFI_HII_RESOURCE_SECTION' in self._Defs \
>-               and self._Defs['UEFI_HII_RESOURCE_SECTION'] == 'TRUE':
>-                self._BuildType = 'UEFI_HII'
>-            else:
>-                self._BuildType = self._ModuleType.upper()
>-
>-            if self._DxsFile:
>-                File = PathClass(NormPath(self._DxsFile), self._ModuleDir,
>Arch=self._Arch)
>-                # check the file validation
>-                ErrorCode, ErrorInfo = File.Validate(".dxs", 
>CaseSensitive=False)
>-                if ErrorCode != 0:
>-                    EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,
>-                                    File=self.MetaFile, Line=LineNo)
>-                if not self._DependencyFileList:
>-                    self._DependencyFileList = []
>-                self._DependencyFileList.append(File)
>+        if not self._ModuleType:
>+            EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,
>+                            "MODULE_TYPE is not given", File=self.MetaFile)
>+        if self._ModuleType not in SUP_MODULE_LIST:
>+            RecordList = self._RawData[MODEL_META_DATA_HEADER, self._Arch,
>self._Platform]
>+            for Record in RecordList:
>+                Name = Record[1]
>+                if Name == "MODULE_TYPE":
>+                    LineNo = Record[6]
>+                    break
>+            EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>+                            "MODULE_TYPE %s is not supported for EDK II, 
>valid values
>are:\n %s" % (self._ModuleType, ' '.join(l for l in SUP_MODULE_LIST)),
>+                            File=self.MetaFile, Line=LineNo)
>+        if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in
>self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'],
>16) < 0x0001000A):
>+            if self._ModuleType == SUP_MODULE_SMM_CORE:
>+                EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "SMM_CORE
>module type can't be used in the module with PI_SPECIFICATION_VERSION
>less than 0x0001000A", File=self.MetaFile)
>+        if (self._Specification is None) or (not 'PI_SPECIFICATION_VERSION' in
>self._Specification) or (int(self._Specification['PI_SPECIFICATION_VERSION'],
>16) < 0x00010032):
>+            if self._ModuleType == SUP_MODULE_MM_CORE_STANDALONE:
>+                EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>"MM_CORE_STANDALONE module type can't be used in the module with
>PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)
>+            if self._ModuleType == SUP_MODULE_MM_STANDALONE:
>+                EdkLogger.error("build", FORMAT_NOT_SUPPORTED,
>"MM_STANDALONE module type can't be used in the module with
>PI_SPECIFICATION_VERSION less than 0x00010032", File=self.MetaFile)
>+        if 'PCI_DEVICE_ID' in self._Defs and 'PCI_VENDOR_ID' in self._Defs \
>+           and 'PCI_CLASS_CODE' in self._Defs and 'PCI_REVISION' in 
>self._Defs:
>+            self._BuildType = 'UEFI_OPTIONROM'
>+            if 'PCI_COMPRESS' in self._Defs:
>+                if self._Defs['PCI_COMPRESS'] not in ('TRUE', 'FALSE'):
>+                    EdkLogger.error("build", FORMAT_INVALID, "Expected
>TRUE/FALSE for PCI_COMPRESS: %s" % self.MetaFile)
>+
>+        elif 'UEFI_HII_RESOURCE_SECTION' in self._Defs \
>+           and self._Defs['UEFI_HII_RESOURCE_SECTION'] == 'TRUE':
>+            self._BuildType = 'UEFI_HII'
>         else:
>-            if not self._ComponentType:
>-                EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,
>-                                "COMPONENT_TYPE is not given", 
>File=self.MetaFile)
>-            self._BuildType = self._ComponentType.upper()
>-            if self._ComponentType in COMPONENT_TO_MODULE_MAP_DICT:
>-                self._ModuleType =
>COMPONENT_TO_MODULE_MAP_DICT[self._ComponentType]
>-            if self._ComponentType == EDK_COMPONENT_TYPE_LIBRARY:
>-                self._LibraryClass = [LibraryClassObject(self._BaseName,
>SUP_MODULE_LIST)]
>-            # make use some [nmake] section macros
>-            Macros = self._Macros
>-            Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>-            Macros['PROCESSOR'] = self._Arch
>-            RecordList = self._RawData[MODEL_META_DATA_NMAKE, self._Arch,
>self._Platform]
>-            for Name, Value, Dummy, Arch, Platform, ID, LineNo in RecordList:
>-                Value = ReplaceMacro(Value, Macros, True)
>-                if Name == "IMAGE_ENTRY_POINT":
>-                    if self._ModuleEntryPointList is None:
>-                        self._ModuleEntryPointList = []
>-                    self._ModuleEntryPointList.append(Value)
>-                elif Name == "DPX_SOURCE":
>-                    File = PathClass(NormPath(Value), self._ModuleDir,
>Arch=self._Arch)
>-                    # check the file validation
>-                    ErrorCode, ErrorInfo = File.Validate(".dxs", 
>CaseSensitive=False)
>-                    if ErrorCode != 0:
>-                        EdkLogger.error('build', ErrorCode, 
>ExtraData=ErrorInfo,
>-                                        File=self.MetaFile, Line=LineNo)
>-                    if not self._DependencyFileList:
>-                        self._DependencyFileList = []
>-                    self._DependencyFileList.append(File)
>-                else:
>-                    ToolList = self._NMAKE_FLAG_PATTERN_.findall(Name)
>-                    if len(ToolList) == 1:
>-                        if self._BuildOptions is None:
>-                            self._BuildOptions = OrderedDict()
>+            self._BuildType = self._ModuleType.upper()
>
>-                        if ToolList[0] in self._TOOL_CODE_:
>-                            Tool = self._TOOL_CODE_[ToolList[0]]
>-                        else:
>-                            Tool = ToolList[0]
>-                        ToolChain = "*_*_*_%s_FLAGS" % Tool
>-                        # Edk.x only support MSFT tool chain
>-                        # ignore not replaced macros in value
>-                        ValueList = GetSplitList(' ' + Value, '/D')
>-                        Dummy = ValueList[0]
>-                        for Index in range(1, len(ValueList)):
>-                            if ValueList[Index][-1] == '=' or 
>ValueList[Index] == '':
>-                                continue
>-                            Dummy = Dummy + ' /D ' + ValueList[Index]
>-                        Value = Dummy.strip()
>-                        if (TAB_COMPILER_MSFT, ToolChain) not in 
>self._BuildOptions:
>-                            self._BuildOptions[TAB_COMPILER_MSFT, ToolChain] 
>= Value
>-                        else:
>-                            OptionString = 
>self._BuildOptions[TAB_COMPILER_MSFT,
>ToolChain]
>-                            self._BuildOptions[TAB_COMPILER_MSFT, ToolChain] =
>OptionString + " " + Value
>+        if self._DxsFile:
>+            File = PathClass(NormPath(self._DxsFile), self._ModuleDir,
>Arch=self._Arch)
>+            # check the file validation
>+            ErrorCode, ErrorInfo = File.Validate(".dxs", CaseSensitive=False)
>+            if ErrorCode != 0:
>+                EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,
>+                                File=self.MetaFile, Line=LineNo)
>+            if not self._DependencyFileList:
>+                self._DependencyFileList = []
>+            self._DependencyFileList.append(File)
>
>     ## Retrieve file version
>     @cached_property
>     def AutoGenVersion(self):
>         RetVal = 0x00010000
>@@ -522,11 +462,10 @@ class InfBuildData(ModuleBuildClassObject):
>     @cached_class_function
>     def _GetBinaries(self):
>         RetVal = []
>         RecordList = self._RawData[MODEL_EFI_BINARY_FILE, self._Arch,
>self._Platform]
>         Macros = self._Macros
>-        Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>         Macros['PROCESSOR'] = self._Arch
>         for Record in RecordList:
>             FileType = Record[0]
>             LineNo = Record[-1]
>             Target = TAB_COMMON
>@@ -570,35 +509,17 @@ class InfBuildData(ModuleBuildClassObject):
>         for Record in RecordList:
>             LineNo = Record[-1]
>             ToolChainFamily = Record[1]
>             TagName = Record[2]
>             ToolCode = Record[3]
>-            if self.AutoGenVersion < 0x00010005:
>-                Macros["EDK_SOURCE"] = GlobalData.gEcpSource
>-                Macros['PROCESSOR'] = self._Arch
>-                SourceFile = NormPath(Record[0], Macros)
>-                if SourceFile[0] == os.path.sep:
>-                    SourceFile = mws.join(GlobalData.gWorkspace, 
>SourceFile[1:])
>-                # old module source files (Edk)
>-                File = PathClass(SourceFile, self._ModuleDir,
>self._SourceOverridePath,
>-                                 '', False, self._Arch, ToolChainFamily, '', 
>TagName, ToolCode)
>-                # check the file validation
>-                ErrorCode, ErrorInfo = File.Validate(CaseSensitive=False)
>-                if ErrorCode != 0:
>-                    if File.Ext.lower() == '.h':
>-                        EdkLogger.warn('build', 'Include file not found',
>ExtraData=ErrorInfo,
>-                                       File=self.MetaFile, Line=LineNo)
>-                        continue
>-                    else:
>-                        EdkLogger.error('build', ErrorCode, ExtraData=File,
>File=self.MetaFile, Line=LineNo)
>-            else:
>-                File = PathClass(NormPath(Record[0], Macros), 
>self._ModuleDir, '',
>-                                 '', False, self._Arch, ToolChainFamily, '', 
>TagName, ToolCode)
>-                # check the file validation
>-                ErrorCode, ErrorInfo = File.Validate()
>-                if ErrorCode != 0:
>-                    EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,
>File=self.MetaFile, Line=LineNo)
>+
>+            File = PathClass(NormPath(Record[0], Macros), self._ModuleDir, '',
>+                             '', False, self._Arch, ToolChainFamily, '', 
>TagName, ToolCode)
>+            # check the file validation
>+            ErrorCode, ErrorInfo = File.Validate()
>+            if ErrorCode != 0:
>+                EdkLogger.error('build', ErrorCode, ExtraData=ErrorInfo,
>File=self.MetaFile, Line=LineNo)
>
>             RetVal.append(File)
>         # add any previously found dependency files to the source list
>         if self._DependencyFileList:
>             RetVal.extend(self._DependencyFileList)
>@@ -714,22 +635,20 @@ class InfBuildData(ModuleBuildClassObject):
>         Macros = self._Macros
>         Macros['PROCESSOR'] = GlobalData.gEdkGlobal.get('PROCESSOR',
>self._Arch)
>         RecordList = self._RawData[MODEL_EFI_INCLUDE, self._Arch,
>self._Platform]
>         for Record in RecordList:
>             if Record[0].find('EDK_SOURCE') > -1:
>-                Macros['EDK_SOURCE'] = GlobalData.gEcpSource
>                 File = NormPath(Record[0], self._Macros)
>                 if File[0] == '.':
>                     File = os.path.join(self._ModuleDir, File)
>                 else:
>                     File = os.path.join(GlobalData.gWorkspace, File)
>                 File = RealPath(os.path.normpath(File))
>                 if File:
>                     RetVal.append(File)
>
>                 # TRICK: let compiler to choose correct header file
>-                Macros['EDK_SOURCE'] = GlobalData.gEdkSource
>                 File = NormPath(Record[0], self._Macros)
>                 if File[0] == '.':
>                     File = os.path.join(self._ModuleDir, File)
>                 else:
>                     File = os.path.join(GlobalData.gWorkspace, File)
>@@ -743,30 +662,18 @@ class InfBuildData(ModuleBuildClassObject):
>                 else:
>                     File = mws.join(GlobalData.gWorkspace, File)
>                 File = RealPath(os.path.normpath(File))
>                 if File:
>                     RetVal.append(File)
>-                if not File and Record[0].find('EFI_SOURCE') > -1:
>-                    # tricky to regard WorkSpace as EFI_SOURCE
>-                    Macros['EFI_SOURCE'] = GlobalData.gWorkspace
>-                    File = NormPath(Record[0], Macros)
>-                    if File[0] == '.':
>-                        File = os.path.join(self._ModuleDir, File)
>-                    else:
>-                        File = os.path.join(GlobalData.gWorkspace, File)
>-                    File = RealPath(os.path.normpath(File))
>-                    if File:
>-                        RetVal.append(File)
>         return RetVal
>
>     ## Retrieve packages this module depends on
>     @cached_property
>     def Packages(self):
>         RetVal = []
>         RecordList = self._RawData[MODEL_META_DATA_PACKAGE, self._Arch,
>self._Platform]
>         Macros = self._Macros
>-        Macros['EDK_SOURCE'] = GlobalData.gEcpSource
>         for Record in RecordList:
>             File = PathClass(NormPath(Record[0], Macros), 
> GlobalData.gWorkspace,
>Arch=self._Arch)
>             # check the file validation
>             ErrorCode, ErrorInfo = File.Validate('.dec')
>             if ErrorCode != 0:
>diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py
>b/BaseTools/Source/Python/Workspace/MetaFileParser.py
>index 032220813b..9b35cffcd2 100644
>--- a/BaseTools/Source/Python/Workspace/MetaFileParser.py
>+++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py
>@@ -683,22 +683,10 @@ class InfParser(MetaFileParser):
>         if Macros:
>             for Index in range(0, len(self._ValueList)):
>                 Value = self._ValueList[Index]
>                 if not Value:
>                     continue
>-
>-                if Value.upper().find('$(EFI_SOURCE)\Edk'.upper()) > -1 or
>Value.upper().find('$(EFI_SOURCE)/Edk'.upper()) > -1:
>-                    Value = '$(EDK_SOURCE)' + Value[17:]
>-                if Value.find('$(EFI_SOURCE)') > -1 or 
>Value.find('$(EDK_SOURCE)') >
>-1:
>-                    pass
>-                elif Value.startswith('.'):
>-                    pass
>-                elif Value.startswith('$('):
>-                    pass
>-                else:
>-                    Value = '$(EFI_SOURCE)/' + Value
>-
>                 self._ValueList[Index] = ReplaceMacro(Value, Macros)
>
>     ## Parse [Sources] section
>     #
>     #   Only path can have macro used. So we need to replace them before use.
>@@ -1592,20 +1580,10 @@ class DscParser(MetaFileParser):
>             __IncludeMacros = {}
>             #
>             # Allow using system environment variables  in path after !include
>             #
>             __IncludeMacros['WORKSPACE'] =
>GlobalData.gGlobalDefines['WORKSPACE']
>-            if "ECP_SOURCE" in GlobalData.gGlobalDefines:
>-                __IncludeMacros['ECP_SOURCE'] =
>GlobalData.gGlobalDefines['ECP_SOURCE']
>-            #
>-            # During GenFds phase call DSC parser, will go into this branch.
>-            #
>-            elif "ECP_SOURCE" in GlobalData.gCommandLineDefines:
>-                __IncludeMacros['ECP_SOURCE'] =
>GlobalData.gCommandLineDefines['ECP_SOURCE']
>-
>-            __IncludeMacros['EFI_SOURCE'] =
>GlobalData.gGlobalDefines['EFI_SOURCE']
>-            __IncludeMacros['EDK_SOURCE'] =
>GlobalData.gGlobalDefines['EDK_SOURCE']
>             #
>             # Allow using MACROs comes from [Defines] section to keep
>compatible.
>             #
>             __IncludeMacros.update(self._Macros)
>
>diff --git a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
>b/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
>index 55d01fa4b2..ee238e5143 100644
>--- a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
>+++ b/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
>@@ -88,14 +88,11 @@ def GetDeclaredPcd(Platform, BuildDatabase, Arch,
>Target, Toolchain, additionalP
> #  @param Target: Current target
> #  @param Toolchain: Current toolchain
> #  @retval: List of dependent libraries which are InfBuildData instances
> #
> def GetLiabraryInstances(Module, Platform, BuildDatabase, Arch, Target,
>Toolchain):
>-    if Module.AutoGenVersion >= 0x00010005:
>-        return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch,
>Target, Toolchain)
>-    else:
>-        return _ResolveLibraryReference(Module, Platform)
>+    return GetModuleLibInstances(Module, Platform, BuildDatabase, Arch,
>Target, Toolchain)
>
> def GetModuleLibInstances(Module, Platform, BuildDatabase, Arch, Target,
>Toolchain, FileName = '', EdkLogger = None):
>     ModuleType = Module.ModuleType
>
>     # add forced library instances (specified under LibraryClasses sections)
>@@ -253,29 +250,5 @@ def GetModuleLibInstances(Module, Platform,
>BuildDatabase, Arch, Target, Toolcha
>     # Build the list of constructor and destructir names
>     # The DAG Topo sort produces the destructor order, so the list of
>constructors must generated in the reverse order
>     #
>     SortedLibraryList.reverse()
>     return SortedLibraryList
>-
>-def _ResolveLibraryReference(Module, Platform):
>-    LibraryConsumerList = [Module]
>-
>-    # "CompilerStub" is a must for Edk modules
>-    if Module.Libraries:
>-        Module.Libraries.append("CompilerStub")
>-    LibraryList = []
>-    while len(LibraryConsumerList) > 0:
>-        M = LibraryConsumerList.pop()
>-        for LibraryName in M.Libraries:
>-            Library = Platform.LibraryClasses[LibraryName, ':dummy:']
>-            if Library is None:
>-                for Key in Platform.LibraryClasses.data:
>-                    if LibraryName.upper() == Key.upper():
>-                        Library = Platform.LibraryClasses[Key, ':dummy:']
>-                        break
>-                if Library is None:
>-                    continue
>-
>-            if Library not in LibraryList:
>-                LibraryList.append(Library)
>-                LibraryConsumerList.append(Library)
>-    return LibraryList
>diff --git a/BaseTools/Source/Python/build/BuildReport.py
>b/BaseTools/Source/Python/build/BuildReport.py
>index 3f3c1a12f1..654a69e05c 100644
>--- a/BaseTools/Source/Python/build/BuildReport.py
>+++ b/BaseTools/Source/Python/build/BuildReport.py
>@@ -330,14 +330,10 @@ class LibraryReport(object):
>     # @param self            The object pointer
>     # @param M               Module context information
>     #
>     def __init__(self, M):
>         self.LibraryList = []
>-        if int(str(M.AutoGenVersion), 0) >= 0x00010005:
>-            self._EdkIIModule = True
>-        else:
>-            self._EdkIIModule = False
>
>         for Lib in M.DependentLibraryList:
>             LibInfPath = str(Lib)
>             LibClassList = Lib.LibraryClass[0].LibraryClass
>             LibConstructorList = Lib.ConstructorList
>@@ -366,32 +362,27 @@ class LibraryReport(object):
>             FileWrite(File, gSubSectionSep)
>             for LibraryItem in self.LibraryList:
>                 LibInfPath = LibraryItem[0]
>                 FileWrite(File, LibInfPath)
>
>-                #
>-                # Report library class, library constructor and destructor for
>-                # EDKII style module.
>-                #
>-                if self._EdkIIModule:
>-                    LibClass = LibraryItem[1]
>-                    EdkIILibInfo = ""
>-                    LibConstructor = " ".join(LibraryItem[2])
>-                    if LibConstructor:
>-                        EdkIILibInfo += " C = " + LibConstructor
>-                    LibDestructor = " ".join(LibraryItem[3])
>-                    if LibDestructor:
>-                        EdkIILibInfo += " D = " + LibDestructor
>-                    LibDepex = " ".join(LibraryItem[4])
>-                    if LibDepex:
>-                        EdkIILibInfo += " Depex = " + LibDepex
>-                    if LibraryItem[5]:
>-                        EdkIILibInfo += " Time = " + LibraryItem[5]
>-                    if EdkIILibInfo:
>-                        FileWrite(File, "{%s: %s}" % (LibClass, EdkIILibInfo))
>-                    else:
>-                        FileWrite(File, "{%s}" % LibClass)
>+                LibClass = LibraryItem[1]
>+                EdkIILibInfo = ""
>+                LibConstructor = " ".join(LibraryItem[2])
>+                if LibConstructor:
>+                    EdkIILibInfo += " C = " + LibConstructor
>+                LibDestructor = " ".join(LibraryItem[3])
>+                if LibDestructor:
>+                    EdkIILibInfo += " D = " + LibDestructor
>+                LibDepex = " ".join(LibraryItem[4])
>+                if LibDepex:
>+                    EdkIILibInfo += " Depex = " + LibDepex
>+                if LibraryItem[5]:
>+                    EdkIILibInfo += " Time = " + LibraryItem[5]
>+                if EdkIILibInfo:
>+                    FileWrite(File, "{%s: %s}" % (LibClass, EdkIILibInfo))
>+                else:
>+                    FileWrite(File, "{%s}" % LibClass)
>
>             FileWrite(File, gSubSectionEnd)
>
> ##
> # Reports dependency expression information
>@@ -1544,19 +1535,12 @@ class PredictionReport(object):
>                 for Guid in Module.GuidList:
>                     self._GuidMap[Guid] =
>GuidStructureStringToGuidString(Module.GuidList[Guid])
>
>                 if Module.Guid and not Module.IsLibrary:
>                     EntryPoint = " ".join(Module.Module.ModuleEntryPointList)
>-                    if int(str(Module.AutoGenVersion), 0) >= 0x00010005:
>-                        RealEntryPoint = "_ModuleEntryPoint"
>-                    else:
>-                        RealEntryPoint = EntryPoint
>-                        if EntryPoint == "_ModuleEntryPoint":
>-                            CCFlags = Module.BuildOption.get("CC", 
>{}).get("FLAGS", "")
>-                            Match = gGlueLibEntryPoint.search(CCFlags)
>-                            if Match:
>-                                EntryPoint = Match.group(1)
>+
>+                    RealEntryPoint = "_ModuleEntryPoint"
>
>                     self._FfsEntryPoint[Module.Guid.upper()] = (EntryPoint,
>RealEntryPoint)
>
>
>         #
>diff --git a/BaseTools/Source/Python/build/build.py
>b/BaseTools/Source/Python/build/build.py
>index 97271e634e..b550bbc3b2 100644
>--- a/BaseTools/Source/Python/build/build.py
>+++ b/BaseTools/Source/Python/build/build.py
>@@ -120,69 +120,13 @@ def CheckEnvVariable():
>             if not os.path.exists(Path):
>                 EdkLogger.error("build", FILE_NOT_FOUND, "One Path in
>PACKAGES_PATH doesn't exist", ExtraData=Path)
>             elif ' ' in Path:
>                 EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "No space is
>allowed in PACKAGES_PATH", ExtraData=Path)
>
>-    #
>-    # Check EFI_SOURCE (Edk build convention). EDK_SOURCE will always point
>to ECP
>-    #
>-    if "ECP_SOURCE" not in os.environ:
>-        os.environ["ECP_SOURCE"] = mws.join(WorkspaceDir,
>GlobalData.gEdkCompatibilityPkg)
>-    if "EFI_SOURCE" not in os.environ:
>-        os.environ["EFI_SOURCE"] = os.environ["ECP_SOURCE"]
>-    if "EDK_SOURCE" not in os.environ:
>-        os.environ["EDK_SOURCE"] = os.environ["ECP_SOURCE"]
>-
>-    #
>-    # Unify case of characters on case-insensitive systems
>-    #
>-    EfiSourceDir =
>os.path.normcase(os.path.normpath(os.environ["EFI_SOURCE"]))
>-    EdkSourceDir =
>os.path.normcase(os.path.normpath(os.environ["EDK_SOURCE"]))
>-    EcpSourceDir =
>os.path.normcase(os.path.normpath(os.environ["ECP_SOURCE"]))
>
>-    os.environ["EFI_SOURCE"] = EfiSourceDir
>-    os.environ["EDK_SOURCE"] = EdkSourceDir
>-    os.environ["ECP_SOURCE"] = EcpSourceDir
>     os.environ["EDK_TOOLS_PATH"] =
>os.path.normcase(os.environ["EDK_TOOLS_PATH"])
>
>-    if not os.path.exists(EcpSourceDir):
>-        EdkLogger.verbose("ECP_SOURCE = %s doesn't exist. Edk modules could
>not be built." % EcpSourceDir)
>-    elif ' ' in EcpSourceDir:
>-        EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "No space is
>allowed in ECP_SOURCE path",
>-                        ExtraData=EcpSourceDir)
>-    if not os.path.exists(EdkSourceDir):
>-        if EdkSourceDir == EcpSourceDir:
>-            EdkLogger.verbose("EDK_SOURCE = %s doesn't exist. Edk modules
>could not be built." % EdkSourceDir)
>-        else:
>-            EdkLogger.error("build", PARAMETER_INVALID, "EDK_SOURCE does
>not exist",
>-                            ExtraData=EdkSourceDir)
>-    elif ' ' in EdkSourceDir:
>-        EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "No space is
>allowed in EDK_SOURCE path",
>-                        ExtraData=EdkSourceDir)
>-    if not os.path.exists(EfiSourceDir):
>-        if EfiSourceDir == EcpSourceDir:
>-            EdkLogger.verbose("EFI_SOURCE = %s doesn't exist. Edk modules
>could not be built." % EfiSourceDir)
>-        else:
>-            EdkLogger.error("build", PARAMETER_INVALID, "EFI_SOURCE does not
>exist",
>-                            ExtraData=EfiSourceDir)
>-    elif ' ' in EfiSourceDir:
>-        EdkLogger.error("build", FORMAT_NOT_SUPPORTED, "No space is
>allowed in EFI_SOURCE path",
>-                        ExtraData=EfiSourceDir)
>-
>-    # check those variables on single workspace case
>-    if not PackagesPath:
>-        # change absolute path to relative path to WORKSPACE
>-        if EfiSourceDir.upper().find(WorkspaceDir.upper()) != 0:
>-            EdkLogger.error("build", PARAMETER_INVALID, "EFI_SOURCE is not
>under WORKSPACE",
>-                            ExtraData="WORKSPACE = %s\n    EFI_SOURCE = %s" %
>(WorkspaceDir, EfiSourceDir))
>-        if EdkSourceDir.upper().find(WorkspaceDir.upper()) != 0:
>-            EdkLogger.error("build", PARAMETER_INVALID, "EDK_SOURCE is not
>under WORKSPACE",
>-                            ExtraData="WORKSPACE = %s\n    EDK_SOURCE = %s" %
>(WorkspaceDir, EdkSourceDir))
>-        if EcpSourceDir.upper().find(WorkspaceDir.upper()) != 0:
>-            EdkLogger.error("build", PARAMETER_INVALID, "ECP_SOURCE is not
>under WORKSPACE",
>-                            ExtraData="WORKSPACE = %s\n    ECP_SOURCE = %s" %
>(WorkspaceDir, EcpSourceDir))
>-
>     # check EDK_TOOLS_PATH
>     if "EDK_TOOLS_PATH" not in os.environ:
>         EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, "Environment
>variable not found",
>                         ExtraData="EDK_TOOLS_PATH")
>
>@@ -190,18 +134,12 @@ def CheckEnvVariable():
>     if "PATH" not in os.environ:
>         EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, "Environment
>variable not found",
>                         ExtraData="PATH")
>
>     GlobalData.gWorkspace = WorkspaceDir
>-    GlobalData.gEfiSource = EfiSourceDir
>-    GlobalData.gEdkSource = EdkSourceDir
>-    GlobalData.gEcpSource = EcpSourceDir
>
>     GlobalData.gGlobalDefines["WORKSPACE"]  = WorkspaceDir
>-    GlobalData.gGlobalDefines["EFI_SOURCE"] = EfiSourceDir
>-    GlobalData.gGlobalDefines["EDK_SOURCE"] = EdkSourceDir
>-    GlobalData.gGlobalDefines["ECP_SOURCE"] = EcpSourceDir
>     GlobalData.gGlobalDefines["EDK_TOOLS_PATH"] =
>os.environ["EDK_TOOLS_PATH"]
>
> ## Get normalized file path
> #
> # Convert the path to be local format, and remove the WORKSPACE path at
>the
>@@ -846,13 +784,10 @@ class Build():
>         # print current build environment and configuration
>         EdkLogger.quiet("%-16s = %s" % ("WORKSPACE",
>os.environ["WORKSPACE"]))
>         if "PACKAGES_PATH" in os.environ:
>             # WORKSPACE env has been converted before. Print the same path
>style with WORKSPACE env.
>             EdkLogger.quiet("%-16s = %s" % ("PACKAGES_PATH",
>os.path.normcase(os.path.normpath(os.environ["PACKAGES_PATH"]))))
>-        EdkLogger.quiet("%-16s = %s" % ("ECP_SOURCE",
>os.environ["ECP_SOURCE"]))
>-        EdkLogger.quiet("%-16s = %s" % ("EDK_SOURCE",
>os.environ["EDK_SOURCE"]))
>-        EdkLogger.quiet("%-16s = %s" % ("EFI_SOURCE",
>os.environ["EFI_SOURCE"]))
>         EdkLogger.quiet("%-16s = %s" % ("EDK_TOOLS_PATH",
>os.environ["EDK_TOOLS_PATH"]))
>         if "EDK_TOOLS_BIN" in os.environ:
>             # Print the same path style with WORKSPACE env.
>             EdkLogger.quiet("%-16s = %s" % ("EDK_TOOLS_BIN",
>os.path.normcase(os.path.normpath(os.environ["EDK_TOOLS_BIN"]))))
>         EdkLogger.quiet("%-16s = %s" % ("CONF_PATH",
>GlobalData.gConfDirectory))
>diff --git a/edksetup.bat b/edksetup.bat
>index c32755a471..57b5a8c868 100755
>--- a/edksetup.bat
>+++ b/edksetup.bat
>@@ -40,15 +40,12 @@ if %WORKSPACE% == %CD% (
>   goto ParseArgs
> )
>
> :SetWorkSpace
> @REM set new workspace
>-@REM clear EFI_SOURCE and EDK_SOURCE for the new workspace
> if not defined WORKSPACE (
>   set WORKSPACE=%CD%
>-  set EFI_SOURCE=
>-  set EDK_SOURCE=
> )
>
> :ParseArgs
> if /I "%1"=="-h" goto Usage
> if /I "%1"=="-help" goto Usage
>--
>2.19.1.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to