public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* [Patch 1/3] BaseTools: Remove unused logic for EDKI
@ 2019-01-09  6:44 BobCF
  2019-01-09  7:01 ` Gao, Liming
  0 siblings, 1 reply; 3+ messages in thread
From: BobCF @ 2019-01-09  6:44 UTC (permalink / raw)
  To: edk2-devel; +Cc: Feng, Bob C, Liming Gao, Jaben Carsey

From: "Feng, Bob C" <bob.c.feng@intel.com>

Remove EDK module type support from BaseTools C code.

Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jaben Carsey <jaben.carsey@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','Guid':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



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Patch 1/3] BaseTools: Remove unused logic for EDKI
  2019-01-09  6:44 [Patch 1/3] BaseTools: Remove unused logic for EDKI BobCF
@ 2019-01-09  7:01 ` Gao, Liming
  2019-01-09  7:13   ` Feng, Bob C
  0 siblings, 1 reply; 3+ messages in thread
From: Gao, Liming @ 2019-01-09  7:01 UTC (permalink / raw)
  To: Feng, Bob C, edk2-devel@lists.01.org; +Cc: Carsey, Jaben

This patch removes the logic from BaseTools python code, not C code. And, please also include BZ link in the commit message. 

Thanks
Liming
> -----Original Message-----
> From: Feng, Bob C
> Sent: Wednesday, January 9, 2019 2:44 PM
> To: edk2-devel@lists.01.org
> Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
> Subject: [Patch 1/3] BaseTools: Remove unused logic for EDKI
> 
> From: "Feng, Bob C" <bob.c.feng@intel.com>
> 
> Remove EDK module type support from BaseTools C code.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Jaben Carsey <jaben.carsey@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','Guid':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



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Patch 1/3] BaseTools: Remove unused logic for EDKI
  2019-01-09  7:01 ` Gao, Liming
@ 2019-01-09  7:13   ` Feng, Bob C
  0 siblings, 0 replies; 3+ messages in thread
From: Feng, Bob C @ 2019-01-09  7:13 UTC (permalink / raw)
  To: Gao, Liming, edk2-devel@lists.01.org; +Cc: Carsey, Jaben

Sorry for the typo. I'll resent the patch.

-----Original Message-----
From: Gao, Liming 
Sent: Wednesday, January 9, 2019 3:01 PM
To: Feng, Bob C <bob.c.feng@intel.com>; edk2-devel@lists.01.org
Cc: Carsey, Jaben <jaben.carsey@intel.com>
Subject: RE: [Patch 1/3] BaseTools: Remove unused logic for EDKI

This patch removes the logic from BaseTools python code, not C code. And, please also include BZ link in the commit message. 

Thanks
Liming
> -----Original Message-----
> From: Feng, Bob C
> Sent: Wednesday, January 9, 2019 2:44 PM
> To: edk2-devel@lists.01.org
> Cc: Feng, Bob C <bob.c.feng@intel.com>; Gao, Liming <liming.gao@intel.com>; Carsey, Jaben <jaben.carsey@intel.com>
> Subject: [Patch 1/3] BaseTools: Remove unused logic for EDKI
> 
> From: "Feng, Bob C" <bob.c.feng@intel.com>
> 
> Remove EDK module type support from BaseTools C code.
> 
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Cc: Jaben Carsey <jaben.carsey@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','Guid':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



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-01-09  7:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-09  6:44 [Patch 1/3] BaseTools: Remove unused logic for EDKI BobCF
2019-01-09  7:01 ` Gao, Liming
2019-01-09  7:13   ` Feng, Bob C

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox