a. Added doxygen comments
[people/mcb30/basetools.git] / Source / Python / AutoGen / AutoGen.py
index 28de2ce..61ef3c7 100755 (executable)
@@ -81,16 +81,33 @@ gAutoGenCodeFileName = "AutoGen.c"
 gAutoGenHeaderFileName = "AutoGen.h"\r
 gAutoGenDepexFileName = "%(module_name)s.depex"\r
 \r
+## Base class for AutoGen\r
+#\r
+#   This class just implements the cache mechanism of AutoGen objects.\r
+# \r
 class AutoGen(object):\r
-    # database to maintain the objects of PlatformAutoGen\r
-    _CACHE_ = {}    # (platform file, BuildTarget, ToolChain) : {ARCH : AutoGen object}\r
-\r
+    # database to maintain the objects of xxxAutoGen\r
+    _CACHE_ = {}    # (BuildTarget, ToolChain) : {ARCH : {platform file: AutoGen object}}}\r
+\r
+    ## Factory method\r
+    #\r
+    #   @param  Class           class object of real AutoGen class\r
+    #                           (WorkspaceAutoGen, ModuleAutoGen or PlatformAutoGen)\r
+    #   @param  Workspace       Workspace directory or WorkspaceAutoGen object\r
+    #   @param  MetaFile        The path of meta file\r
+    #   @param  Target          Build target\r
+    #   @param  Toolchain       Tool chain name\r
+    #   @param  Arch            Target arch\r
+    #   @param  *args           The specific class related parameters\r
+    #   @param  **kwargs        The specific class related dict parameters\r
+    # \r
     def __new__(Class, Workspace, MetaFile, Target, Toolchain, Arch, *args, **kwargs):\r
         # check if the object has been created\r
         Key = (Target, Toolchain)\r
         if Key not in Class._CACHE_ or Arch not in Class._CACHE_[Key] \\r
            or MetaFile not in Class._CACHE_[Key][Arch]:\r
             AutoGenObject = super(AutoGen, Class).__new__(Class)\r
+            # call real constructor\r
             if not AutoGenObject._Init(Workspace, MetaFile, Target, Toolchain, Arch, *args, **kwargs):\r
                 return None\r
             if Key not in Class._CACHE_:\r
@@ -125,7 +142,30 @@ class AutoGen(object):
     def __eq__(self, Other):\r
         return Other != None and self._MetaFile == str(Other)\r
 \r
+## Workspace AutoGen class\r
+#\r
+#   This class is used mainly to control the whole platform build for different\r
+# architecture. This class will generate top level makefile.\r
+# \r
 class WorkspaceAutoGen(AutoGen):\r
+    ## Real constructor of WorkspaceAutoGen\r
+    # \r
+    # This method behaves the same as __init__ except that it needs explict invoke\r
+    # (in super class's __new__ method)\r
+    #\r
+    #   @param  WorkspaceDir            Root directory of workspace\r
+    #   @param  ActivePlatform          Meta-file of active platform\r
+    #   @param  Target                  Build target\r
+    #   @param  Toolchain               Tool chain name\r
+    #   @param  ArchList                List of architecture of current build\r
+    #   @param  MetaFileDb              Database containing meta-files\r
+    #   @param  BuildConfig             Configuration of build\r
+    #   @param  ToolDefinition          Tool chain definitions\r
+    #   @param  FlashDefinitionFile     File of flash definition\r
+    #   @param  Fds                     FD list to be generated\r
+    #   @param  Fvs                     FV list to be generated\r
+    #   @param  SkuId                   SKU id from command line\r
+    # \r
     def _Init(self, WorkspaceDir, ActivePlatform, Target, Toolchain, ArchList, MetaFileDb,\r
               BuildConfig, ToolDefinition, FlashDefinitionFile='', Fds=[], Fvs=[], SkuId=''):\r
         self._MetaFile      = str(ActivePlatform)\r
@@ -144,7 +184,7 @@ class WorkspaceAutoGen(AutoGen):
         self.FvTargetList   = Fvs\r
         self.AutoGenObjectList = []\r
 \r
-        # there's many relative directory operation, so ...\r
+        # there's many relative directory operations, so ...\r
         os.chdir(self.WorkspaceDir)\r
 \r
         # parse FDF file to get PCDs in it, if any\r
@@ -166,8 +206,6 @@ class WorkspaceAutoGen(AutoGen):
 \r
             Pa = PlatformAutoGen(self, self._MetaFile, Target, Toolchain, Arch)\r
             self.AutoGenObjectList.append(Pa)\r
-            #for M in ModuleList:\r
-            #    Platform.AddModule(M)\r
 \r
         self._BuildDir = None\r
         self._FvDir = None\r
@@ -176,29 +214,37 @@ class WorkspaceAutoGen(AutoGen):
 \r
         return True\r
 \r
+    ## Return the directory to store FV files\r
     def _GetFvDir(self):\r
         if self._FvDir == None:\r
             self._FvDir = path.join(self.BuildDir, 'FV')\r
         return self._FvDir\r
             \r
+    ## Return the directory to store all intermediate and final files built\r
     def _GetBuildDir(self):\r
         return self.AutoGenObjectList[0].BuildDir\r
 \r
+    ## Return the build output directory platform specifies\r
     def _GetOutputDir(self):\r
         return self.Platform.OutputDirectory\r
 \r
+    ## Return platform name\r
     def _GetName(self):\r
         return self.Platform.PlatformName\r
 \r
+    ## Return meta-file GUID\r
     def _GetGuid(self):\r
         return self.Platform.Guid\r
 \r
+    ## Return platform version\r
     def _GetVersion(self):\r
         return self.Platform.Version\r
 \r
+    ## Return paths of tools\r
     def _GetToolPaths(self):\r
         return self.AutoGenObjectList[0].ToolPath\r
 \r
+    ## Return options of tools\r
     def _GetToolOptions(self):\r
         return self.AutoGenObjectList[0].ToolOption\r
 \r
@@ -223,7 +269,7 @@ class WorkspaceAutoGen(AutoGen):
 \r
     ## Create makefile for the platform and mdoules in it\r
     #\r
-    #   @param      CreateLibraryCodeFile   Flag indicating if the makefile for\r
+    #   @param      CreateDepsMakeFile      Flag indicating if the makefile for\r
     #                                       modules will be created as well\r
     #\r
     def CreateMakeFile(self, CreateDepsMakeFile=False):\r
@@ -245,7 +291,7 @@ class WorkspaceAutoGen(AutoGen):
     #  Since there's no autogen code for platform, this method will do nothing\r
     #  if CreateModuleCodeFile is set to False.\r
     #\r
-    #   @param      CreateModuleCodeFile    Flag indicating if creating module's\r
+    #   @param      CreateDepsCodeFile      Flag indicating if creating module's\r
     #                                       autogen code file or not\r
     #\r
     def CreateCodeFile(self, CreateDepsCodeFile=False):\r
@@ -259,8 +305,8 @@ class WorkspaceAutoGen(AutoGen):
     Version             = property(_GetVersion)                       \r
     OutputDir           = property(_GetOutputDir)\r
 \r
-    ToolPath            = property(_GetToolPaths)    # toolcode : tool path\r
-    ToolOption          = property(_GetToolOptions)    # toolcode : tool option string\r
+    ToolPath            = property(_GetToolPaths)       # toolcode : tool path\r
+    ToolOption          = property(_GetToolOptions)     # toolcode : tool option string\r
 \r
     BuildDir            = property(_GetBuildDir)\r
     FvDir               = property(_GetFvDir)\r
@@ -269,21 +315,21 @@ class WorkspaceAutoGen(AutoGen):
 \r
 ## AutoGen class for platform\r
 #\r
-#  PlatformAutoGen class will re-organize the original information in platform\r
+#  PlatformAutoGen class will process the original information in platform\r
 #  file in order to generate makefile for platform.\r
 #\r
 class PlatformAutoGen(AutoGen):\r
     ## The real constructor of PlatformAutoGen\r
     #\r
     #  This method is not supposed to be called by users of PlatformAutoGen. It's\r
-    #  only used by factory method New() to do real initialization work for an\r
+    #  only used by factory method __new__() to do real initialization work for an\r
     #  object of PlatformAutoGen\r
     #\r
     #   @param      Workspace       EdkIIWorkspaceBuild object\r
     #   @param      PlatformFile    Platform file (DSC file)\r
     #   @param      Target          Build target (DEBUG, RELEASE)\r
     #   @param      Toolchain       Name of tool chain\r
-    #   @param      ArchList        List of arch the platform supports\r
+    #   @param      Arch            arch of the platform supports\r
     #\r
     def _Init(self, Workspace, PlatformFile, Target, Toolchain, Arch):\r
         EdkLogger.verbose("\nAutoGen platform [%s] [%s]" % (PlatformFile, Arch))\r
@@ -357,7 +403,7 @@ class PlatformAutoGen(AutoGen):
 \r
     ## Create makefile for the platform and mdoules in it\r
     #\r
-    #   @param      CreateLibraryCodeFile   Flag indicating if the makefile for\r
+    #   @param      CreateModuleMakeFile    Flag indicating if the makefile for\r
     #                                       modules will be created as well\r
     #\r
     def CreateMakeFile(self, CreateModuleMakeFile=False):\r
@@ -382,20 +428,25 @@ class PlatformAutoGen(AutoGen):
                            (self._MetaFile, self.Arch))\r
         self.IsMakeFileCreated = True\r
 \r
+    ## Return the platform build data object\r
     def _GetPlatform(self):\r
         if self._Platform == None:\r
             self._Platform = self.BuildDatabase[self._MetaFile, self.Arch]\r
         return self._Platform\r
 \r
+    ## Return platform name\r
     def _GetName(self):\r
         return self.Platform.PlatformName\r
 \r
+    ## Return the meta file GUID\r
     def _GetGuid(self):\r
         return self.Platform.Guid\r
 \r
+    ## Return the platform version\r
     def _GetVersion(self):\r
         return self.Platform.Version\r
 \r
+    ## Return the FDF file name\r
     def _GetFdfFile(self):\r
         if self._FdfFile == None:\r
             if self.Workspace.FdfFile != "":\r
@@ -404,12 +455,11 @@ class PlatformAutoGen(AutoGen):
                 self._FdfFile = ''\r
         return self._FdfFile\r
 \r
-    def _GetDebugDir(self):\r
-        return ''\r
-\r
+    ## Return the build output directory platform specifies\r
     def _GetOutputDir(self):\r
         return self.Platform.OutputDirectory\r
 \r
+    ## Return the directory to store all intermediate and final files built\r
     def _GetBuildDir(self):\r
         if self._BuildDir == None:\r
             if os.path.isabs(self.OutputDir):\r
@@ -453,8 +503,6 @@ class PlatformAutoGen(AutoGen):
     #\r
     #  Get each tool defition for given tool chain from tools_def.txt and platform\r
     #\r
-    #   @param      Info    PlatformBuildInfo object to store the definition\r
-    #\r
     def _GetToolDefinition(self):\r
         ToolDefinition = self.Workspace.ToolDef.ToolsDefTxtDictionary\r
         ToolCodeList = self.Workspace.ToolDef.ToolsDefTxtDatabase["COMMAND_TYPE"]\r
@@ -511,41 +559,49 @@ class PlatformAutoGen(AutoGen):
             self._OutputFlag[Tool] = OutputFlag\r
             self._IncludeFlag[Tool] = InputFlag\r
 \r
+    ## Return the paths of tools\r
     def _GetToolPaths(self):\r
         if self._ToolPath == None:\r
             self._GetToolDefinition()\r
         return self._ToolPath\r
 \r
+    ## Return the dll paths of tools\r
     def _GetToolDllPaths(self):\r
         if self._ToolDllPath == None:\r
             self._GetToolDefinition()\r
         return self._ToolDllPath\r
 \r
+    ## Return the static libraries of tools\r
     def _GetToolStaticLibs(self):\r
         if self._ToolStaticLib == None:\r
             self._GetToolDefinition()\r
         return self._ToolStaticLib\r
 \r
+    ## Return the families of tools\r
     def _GetToolChainFamilies(self):\r
         if self._ToolChainFamily == None:\r
             self._GetToolDefinition()\r
         return self._ToolChainFamily\r
 \r
+    ## Return the build options specific to this platform\r
     def _GetBuildOptions(self):\r
         if self._BuildOption == None:\r
             self._BuildOption = self._ExpandBuildOption(self.Platform.BuildOptions)\r
         return self._BuildOption\r
 \r
+    ## Return the output flag of tools\r
     def _GetOuputFlags(self):\r
         if self._OutputFlag == None:\r
             self._GetToolDefinition()\r
         return self._OutputFlag\r
 \r
+    ## Return the include flags of tools\r
     def _GetIncludeFlags(self):\r
         if self._IncludeFlag == None:\r
             self._GetToolDefinition()\r
         return self._IncludeFlag\r
 \r
+    ## Return the default options of tools\r
     def _GetToolOptions(self):\r
         if self._ToolOption == None:\r
             self._GetToolDefinition()\r
@@ -563,6 +619,7 @@ class PlatformAutoGen(AutoGen):
             self._BuildRule = BuildRule(BuildRuleFile)\r
         return self._BuildRule\r
 \r
+    ## Summarize the packages used by modules in this platform\r
     def _GetPackageList(self):\r
         if self._PackageList == None:\r
             self._PackageList = set()\r
@@ -576,11 +633,6 @@ class PlatformAutoGen(AutoGen):
     #\r
     #  Gather dynamic PCDs list from each module and their settings from platform\r
     #\r
-    #   @param      Platform    The object of the platform\r
-    #   @param      Arch        One of the arch the platform supports\r
-    #\r
-    #   @retval     lsit        The list of dynamic PCD\r
-    #\r
     def _GetPcdList(self):\r
         self._NonDynamicPcdList = []\r
         self._DynamicPcdList = []\r
@@ -619,23 +671,19 @@ class PlatformAutoGen(AutoGen):
                             ExtraData="\n\tPCD(s) without MaxDatumSize:\n\t\t%s\n"\r
                                       % NoDatumTypePcdListString)\r
 \r
+    ## Get list of non-dynamic PCDs\r
     def _GetNonDynamicPcdList(self):\r
         if self._NonDynamicPcdList == None:\r
             self._GetPcdList()\r
         return self._NonDynamicPcdList\r
 \r
+    ## Get list of dynamic PCDs\r
     def _GetDynamicPcdList(self):\r
         if self._DynamicPcdList == None:\r
             self._GetPcdList()\r
         return self._DynamicPcdList\r
 \r
     ## Generate Token Number for all PCD\r
-    #\r
-    #   @param      Platform        The object of the platform\r
-    #   @param      DynamicPcdList  The list of all dynamic PCDs\r
-    #\r
-    #   @retval     dict            A dict object containing the PCD and its token number\r
-    #\r
     def _GetPcdTokenNumbers(self):\r
         if self._PcdTokenNumber == None:\r
             self._PcdTokenNumber = sdict()\r
@@ -657,6 +705,7 @@ class PlatformAutoGen(AutoGen):
                 TokenNumber += 1\r
         return self._PcdTokenNumber\r
 \r
+    ## Summarize ModuleAutoGen objects of all modules/libraries to be built for this platform\r
     def _GetAutoGenObjectList(self):\r
         self._ModuleAutoGenList = []\r
         self._LibraryAutoGenList = []\r
@@ -675,11 +724,13 @@ class PlatformAutoGen(AutoGen):
                 if La not in self._LibraryAutoGenList:\r
                     self._LibraryAutoGenList.append(La)\r
 \r
+    ## Summarize ModuleAutoGen objects of all modules to be built for this platform\r
     def _GetModuleAutoGenList(self):\r
         if self._ModuleAutoGenList == None:\r
             self._GetAutoGenObjectList()\r
         return self._ModuleAutoGenList\r
 \r
+    ## Summarize ModuleAutoGen objects of all libraries to be built for this platform\r
     def _GetLibraryAutoGenList(self):\r
         if self._LibraryAutoGenList == None:\r
             self._GetAutoGenObjectList()\r
@@ -690,19 +741,18 @@ class PlatformAutoGen(AutoGen):
     #  An error will be raised directly if the module or its arch is not supported\r
     #  by the platform or current configuration\r
     #\r
-    #   @param      Module  The module file\r
-    #   @param      Arch    The arch the module will be built for\r
-    #\r
     def ValidModule(self, Module):\r
-        #if Arch not in self.Workspace.SupArchList:\r
-        #    return False\r
-        #    #EdkLogger.error("AutoGen", AUTOGEN_ERROR, "[%s] is not supported by active platform [%s] [%s]!"\r
-        #    #                                          % (Arch, self._MetaFile, self.Workspace.SupArchList))\r
-        #if Arch not in self.ArchList:\r
-        #    return False\r
-        #    #EdkLogger.error("AutoGen", AUTOGEN_ERROR, "[%s] is not supported by current build configuration!" % Arch)\r
         return Module in self.Platform.Modules or Module in self.Platform.LibraryInstances\r
 \r
+    ## Resolve the library classes in a module to library instances\r
+    #\r
+    # This method will not only resolve library classes but also sort the library\r
+    # instances according to the dependency-ship.\r
+    # \r
+    #   @param  Module      The module from which the library classes will be resolved\r
+    # \r
+    #   @retval library_list    List of library instances sorted\r
+    # \r
     def ApplyLibraryInstance(self, Module):\r
         ModuleType = Module.ModuleType\r
         # apply library instances from platform\r
@@ -861,6 +911,11 @@ class PlatformAutoGen(AutoGen):
         return SortedLibraryList\r
     \r
 \r
+    ## Override PCD setting (type, value, ...)\r
+    #\r
+    #   @param  ToPcd       The PCD to be overrided\r
+    #   @param  FromPcd     The PCD overrideing from\r
+    # \r
     def _OverridePcd(self, ToPcd, FromPcd):\r
         # \r
         # in case there's PCDs coming from FDF file, which have no type given.\r
@@ -905,14 +960,24 @@ class PlatformAutoGen(AutoGen):
                 SkuName : SkuInfoClass(SkuName, self.Platform.SkuIds[SkuName], '', '', '', '', '', ToPcd.DefaultValue)\r
             }\r
 \r
+    ## Apply PCD setting defined platform to a module\r
+    #\r
+    #   @param  Module  The module from which the PCD setting will be overrided\r
+    # \r
+    #   @retval PCD_list    The list PCDs with settings from platform\r
+    # \r
     def ApplyPcdSetting(self, Module):\r
+        # for each PCD in module\r
         for Name,Guid in Module.Pcds:\r
             PcdInModule = Module.Pcds[Name,Guid]\r
+            # find out the PCD setting in platform\r
             if (Name,Guid) in self.Platform.Pcds:\r
                 PcdInPlatform = self.Platform.Pcds[Name,Guid]\r
             else:\r
                 PcdInPlatform = None\r
+            # then override the settings if any\r
             self._OverridePcd(PcdInModule, PcdInPlatform)\r
+            # resolve the VariableGuid value\r
             for SkuId in PcdInModule.SkuInfoList:\r
                 Sku = PcdInModule.SkuInfoList[SkuId]\r
                 if Sku.VariableGuid == '': continue\r
@@ -936,8 +1001,13 @@ class PlatformAutoGen(AutoGen):
                     self._OverridePcd(Module.Pcds[Key], PlatformModule.Pcds[Key])\r
         return Module.Pcds.values()\r
 \r
-    ##\r
-    # for R8.x modules\r
+    ## Resolve library names to library modules\r
+    # \r
+    # (for R8.x modules)\r
+    # \r
+    #   @param  Module  The module from which the library names will be resolved\r
+    # \r
+    #   @retval library_list    The list of library modules\r
     # \r
     def ResolveLibraryReference(self, Module):\r
         EdkLogger.verbose("")\r
@@ -962,6 +1032,12 @@ class PlatformAutoGen(AutoGen):
                     EdkLogger.verbose("\t" + LibraryName + " : " + str(Library) + ' ' + str(type(Library)))\r
         return LibraryList\r
 \r
+    ## Expand * in build option key\r
+    #\r
+    #   @param  Options     Options to be expanded\r
+    # \r
+    #   @retval options     Options expanded\r
+    # \r
     def _ExpandBuildOption(self, Options):\r
         BuildOptions = {}\r
         for Key in Options:\r
@@ -984,6 +1060,12 @@ class PlatformAutoGen(AutoGen):
                             BuildOptions[Tool] += " " + Options[Key]\r
         return BuildOptions\r
 \r
+    ## Append build options in platform to a module\r
+    # \r
+    #   @param  Module  The module to which the build options will be appened\r
+    # \r
+    #   @retval options     The options appended with build options in platform\r
+    # \r
     def ApplyBuildOption(self, Module):\r
         PlatformOptions = self.BuildOption\r
         ModuleOptions = self._ExpandBuildOption(Module.BuildOptions)\r
@@ -1037,26 +1119,25 @@ class PlatformAutoGen(AutoGen):
     ModuleAutoGenList   = property(_GetModuleAutoGenList)\r
     LibraryAutoGenList  = property(_GetLibraryAutoGenList)\r
 \r
-## AutoGen class\r
+## ModuleAutoGen class\r
 #\r
 # This class encapsules the AutoGen behaviors for the build tools. In addition to\r
-# the generation of AutoGen.h and AutoGen.c, it can generate *.depex file according\r
-# to the [depex] section in module's inf file. The result of parsing unicode file\r
-# has been incorporated either.\r
+# the generation of AutoGen.h and AutoGen.c, it will generate *.depex file according\r
+# to the [depex] section in module's inf file.\r
 #\r
 class ModuleAutoGen(AutoGen):\r
     ## The real constructor of ModuleAutoGen\r
     #\r
     #  This method is not supposed to be called by users of ModuleAutoGen. It's\r
-    #  only used by factory method New() to do real initialization work for an\r
+    #  only used by factory method __new__() to do real initialization work for an\r
     #  object of ModuleAutoGen\r
     #\r
     #   @param      Workspace           EdkIIWorkspaceBuild object\r
-    #   @param      PlatformAutoGenObj  Platform file (DSC file)\r
     #   @param      ModuleFile          The path of module file\r
     #   @param      Target              Build target (DEBUG, RELEASE)\r
     #   @param      Toolchain           Name of tool chain\r
     #   @param      Arch                The arch the module supports\r
+    #   @param      PlatformFile        Platform meta-file\r
     #\r
     def _Init(self, Workspace, ModuleFile, Target, Toolchain, Arch, PlatformFile):\r
         EdkLogger.verbose("\nAutoGen module [%s] [%s]" % (ModuleFile, Arch))\r
@@ -1066,6 +1147,7 @@ class ModuleAutoGen(AutoGen):
 \r
         self._MetaFile = str(ModuleFile)\r
         self.PlatformInfo = PlatformAutoGen(Workspace, PlatformFile, Target, Toolchain, Arch)\r
+        # check if this module is employed by active platform\r
         if not self.PlatformInfo.ValidModule(self._MetaFile):\r
             EdkLogger.verbose("Module [%s] for [%s] is not employed by active platform\n" \\r
                               % (self._MetaFile, Arch))\r
@@ -1122,32 +1204,41 @@ class ModuleAutoGen(AutoGen):
         return True\r
 \r
 \r
+    ## Return the module build data object\r
     def _GetModule(self):\r
         if self._Module == None:\r
             self._Module = self.Workspace.BuildDatabase[self._MetaFile, self.Arch]\r
         return self._Module\r
 \r
+    ## Return the module name\r
     def _GetBaseName(self):\r
         return self.Module.BaseName\r
 \r
+    ## Return the module meta-file GUID\r
     def _GetGuid(self):\r
         return self.Module.Guid\r
 \r
+    ## Return the module version\r
     def _GetVersion(self):\r
         return self.Module.Version\r
 \r
+    ## Return the module type\r
     def _GetModuleType(self):\r
         return self.Module.ModuleType\r
 \r
+    ## Return the component type (for R8.x style of module)\r
     def _GetComponentType(self):\r
         return self.Module.ComponentType\r
 \r
+    ## Return the PCD_IS_DRIVER setting\r
     def _GetPcdIsDriver(self):\r
         return self.Module.PcdIsDriver\r
 \r
+    ## Return the autogen version, i.e. module meta-file version\r
     def _GetAutoGenVersion(self):\r
         return self.Module.AutoGenVersion\r
 \r
+    ## Check if the module is library or not\r
     def _IsLibrary(self):\r
         if self._LibraryFlag == None:\r
             if self.Module.LibraryClass != None and self.Module.LibraryClass != []:\r
@@ -1156,6 +1247,7 @@ class ModuleAutoGen(AutoGen):
                 self._LibraryFlag = False\r
         return self._LibraryFlag\r
 \r
+    ## Return the directory to store intermediate files of the module\r
     def _GetBuildDir(self):\r
         if self._BuildDir == None:\r
             self._BuildDir = path.join(\r
@@ -1166,19 +1258,19 @@ class ModuleAutoGen(AutoGen):
                                     )\r
         return self._BuildDir\r
 \r
+    ## Return the directory to store the intermediate object files of the mdoule\r
     def _GetOutputDir(self):\r
         if self._OutputDir == None:\r
             self._OutputDir = path.join(self.BuildDir, "OUTPUT")\r
         return self._OutputDir\r
 \r
+    ## Return the directory to store auto-gened source files of the mdoule\r
     def _GetDebugDir(self):\r
         if self._DebugDir == None:\r
             self._DebugDir = path.join(self.BuildDir, "DEBUG")\r
         return self._DebugDir\r
 \r
-    def _GetMakeFileDir(self):\r
-        return path.join(PlatformInfo.BuildDir, self.BuildDir)\r
-\r
+    ## Return the path of custom file\r
     def _GetCustomMakefile(self):\r
         if self._CustomMakefile == None:\r
             self._CustomMakefile = {}\r
@@ -1214,9 +1306,8 @@ class ModuleAutoGen(AutoGen):
                 PackageList.append(Package)\r
         return PackageList\r
 \r
-    ## Parse dependency expression\r
+    ## Merge dependency expression\r
     #\r
-    #   @param      Info    The object of ModuleBuildInfo\r
     #   @retval     list    The token list of the dependency expression after parsed\r
     #\r
     def _GetDepexTokenList(self):\r
@@ -1317,6 +1408,7 @@ class ModuleAutoGen(AutoGen):
 \r
         return self._SourceFileList\r
 \r
+    ## Return the list of unicode files\r
     def _GetUnicodeFileList(self):\r
         if self._UnicodeFileList == None:\r
             self._GetSourceFileList()\r
@@ -1326,7 +1418,6 @@ class ModuleAutoGen(AutoGen):
     #\r
     #  "Build" binary files are just to copy them to build directory.\r
     #\r
-    #   @param      PlatformInfo    The object of PlatformBuildInfo\r
     #   @retval     list            The list of files which can be built later\r
     #\r
     def _GetBinaryFiles(self):\r
@@ -1349,7 +1440,6 @@ class ModuleAutoGen(AutoGen):
 \r
     ## Return the list of auto-generated code file\r
     #\r
-    #   @param      BuildInfo   The object ModuleBuildInfo\r
     #   @retval     list        The list of auto-generated file\r
     #\r
     def _GetAutoGenFileList(self):\r
@@ -1364,6 +1454,7 @@ class ModuleAutoGen(AutoGen):
                 self._AutoGenFileList[gAutoGenHeaderFileName] = AutoGenH\r
         return self._AutoGenFileList\r
 \r
+    ## Return the list of library modules explicitly or implicityly used by this module\r
     def _GetLibraryList(self):\r
         if self._DependentLibraryList == None:\r
             # only merge library classes and PCD for non-library module\r
@@ -1378,7 +1469,6 @@ class ModuleAutoGen(AutoGen):
 \r
     ## Get the list of PCD\r
     #\r
-    #   @param      DependentLibraryList    The list of dependent library\r
     #   @retval     list                    The list of PCD\r
     #\r
     def _GetPcdList(self):\r
@@ -1429,7 +1519,6 @@ class ModuleAutoGen(AutoGen):
 \r
     ## Get the list of include search path\r
     #\r
-    #   @param      DependentPackageList    The list of package object\r
     #   @retval     list                    The list path\r
     #\r
     def _GetIncludePathList(self):\r
@@ -1534,6 +1623,7 @@ class ModuleAutoGen(AutoGen):
         self.IsCodeFileCreated = True\r
         return AutoGenList\r
 \r
+    ## Summarize the ModuleAutoGen objects of all libraries used by this module\r
     def _GetLibraryAutoGenList(self):\r
         if self._LibraryAutoGenList == None:\r
             self._LibraryAutoGenList = []\r