Added -x to pass SKU ID from command line
authorjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 9 Apr 2008 13:29:09 +0000 (13:29 +0000)
committerjwang36 <jwang36@7335b38e-4728-0410-8992-fb3ffe349368>
Wed, 9 Apr 2008 13:29:09 +0000 (13:29 +0000)
git-svn-id: https://buildtools.tianocore.org/svn/buildtools/trunk/BaseTools@1134 7335b38e-4728-0410-8992-fb3ffe349368

Source/Python/Workspace/WorkspaceBuild.py
Source/Python/Workspace/WorkspaceDatabase.py
Source/Python/build/build.py

index 6ec16eb..799b209 100644 (file)
@@ -56,11 +56,11 @@ class ItemBuild(object):
         self.ModuleDatabase          = {}\r
 \r
 class WorkspaceBuild(object):\r
-    def __init__(self, ActivePlatform, WorkspaceDir, Reparse=False):\r
+    def __init__(self, ActivePlatform, WorkspaceDir, Reparse=False, SkuId=''):\r
         self.WorkspaceDir            = NormPath(WorkspaceDir)\r
         self.SupArchList             = []\r
         self.BuildTarget             = []\r
-        self.SkuId                   = ''\r
+        self.SkuId                   = SkuId\r
         self.Fdf                     = ''\r
         self.FdTargetList            = []\r
         self.FvTargetList            = []\r
@@ -101,10 +101,13 @@ class WorkspaceBuild(object):
         Platform = self.Db.BuildObject[self.DscFileName, MODEL_FILE_DSC, 'COMMON']\r
         self.SupArchList = Platform.SupArchList\r
         self.BuildTarget = Platform.BuildTargets\r
-        self.SkuId = Platform.SkuName\r
         self.Fdf = Platform.FlashDefinition\r
+        if self.SkuId == '':\r
+            self.SkuId = Platform.SkuName\r
         for Arch in self.SupArchList:\r
-            self.Build[Arch].PlatformDatabase[self.DscFileName] = self.Db.BuildObject[self.DscFileName, MODEL_FILE_DSC, Arch]\r
+            Platform = self.Db.BuildObject[self.DscFileName, MODEL_FILE_DSC, Arch]\r
+            Platform.SkuName = self.SkuId\r
+            self.Build[Arch].PlatformDatabase[self.DscFileName] = Platform\r
     \r
     ## GenBuildDatabase\r
     #\r
index ea77d91..b016af7 100644 (file)
@@ -252,6 +252,10 @@ class DscBuildData(PlatformBuildClassObject):
                 self._SkuName = 'DEFAULT'\r
         return self._SkuName\r
 \r
+    def _SetSkuName(self, Value):\r
+        if Value in self.SkuIds:\r
+            self._SkuName = Value\r
+\r
     def _GetFdfFile(self):\r
         if self._FlashDefinition == None:\r
             RecordList = self._Table.Query(MODEL_META_DATA_HEADER, TAB_DSC_DEFINES_FLASH_DEFINITION, self.Arch)\r
@@ -863,7 +867,7 @@ class DscBuildData(PlatformBuildClassObject):
     OutputDirectory     = property(_GetOutpuDir)\r
     SupArchList         = property(_GetSupArch)\r
     BuildTargets        = property(_GetBuildTarget)\r
-    SkuName             = property(_GetSkuName)\r
+    SkuName             = property(_GetSkuName, _SetSkuName)\r
     FlashDefinition     = property(_GetFdfFile)\r
     BuildNumber         = property(_GetBuildNumber)\r
     MakefileName        = property(_GetMakefileName)\r
index 4af638f..1d920cb 100644 (file)
@@ -631,7 +631,7 @@ class Build():
     def __init__(self, Target, WorkspaceDir, Platform, Module, Arch, ToolChain, \r
                  BuildTarget, FlashDefinition, FdList=[], FvList=[], \r
                  MakefileType="nmake", SpawnMode=False, ThreadNumber=2,\r
-                 SkipAutoGen=False, Reparse=False):\r
+                 SkipAutoGen=False, Reparse=False, SkuId=None):\r
 \r
         self.WorkspaceDir = WorkspaceDir\r
 \r
@@ -649,6 +649,7 @@ class Build():
         self.ThreadNumber   = ThreadNumber\r
         self.SkipAutoGen    = SkipAutoGen\r
         self.Reparse        = Reparse\r
+        self.SkuId          = SkuId\r
 \r
         self.TargetTxt    = TargetTxtClassObject()\r
         self.ToolDef      = ToolDefClassObject()\r
@@ -801,7 +802,7 @@ class Build():
             EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE,\r
                             ExtraData="No active platform specified in target.txt or command line! Nothing can be built.\n")\r
 \r
-        Wb = WorkspaceBuild(self.PlatformFile, self.WorkspaceDir, self.Reparse)\r
+        Wb = WorkspaceBuild(self.PlatformFile, self.WorkspaceDir, self.Reparse, self.SkuId)\r
         PcdSet = {}\r
         if self.Fdf != None:\r
             self.Fdf = NormFile(self.Fdf, self.WorkspaceDir)\r
@@ -1125,23 +1126,28 @@ def MyOptionParser():
     Parser.add_option("-a", "--arch", action="append", type="choice", choices=['IA32','X64','IPF','EBC'], dest="TargetArch",\r
         help="ARCHS is one of list: IA32, X64, IPF or EBC, which overrides target.txt's TARGET_ARCH definition. To specify more archs, please repeat this option.")\r
     Parser.add_option("-p", "--platform", action="store", type="string", dest="PlatformFile",\r
-        help="Build the platform specified by the DSC file name argument, overrides target.txt's ACTIVE_PLATFORM definition.")\r
+        help="Build the platform specified by the DSC file name argument, overriding target.txt's ACTIVE_PLATFORM definition.")\r
     Parser.add_option("-m", "--module", action="store", type="string", dest="ModuleFile",\r
         help="Build the module specified by the INF file name argument.")\r
     Parser.add_option("-b", "--buildtarget", action="append", type="choice", choices=['DEBUG','RELEASE'], dest="BuildTarget",\r
         help="BuildTarget is one of list: DEBUG, RELEASE, which overrides target.txt's TARGET definition. To specify more TARGET, please repeat this option.")\r
     Parser.add_option("-t", "--tagname", action="append", type="string", dest="ToolChain",\r
-        help="Using the Tool Chain Tagname to build the platform, overrides target.txt's TOOL_CHAIN_TAG definition.")\r
+        help="Using the Tool Chain Tagname to build the platform, overriding target.txt's TOOL_CHAIN_TAG definition.")\r
+    Parser.add_option("-x", "--sku-id", action="store", type="string", dest="SkuId",\r
+        help="Using this name of SKU ID to build the platform, overriding SKUID_IDENTIFIER in DSC file.")\r
+\r
     Parser.add_option("-s", "--spawn", action="store_true", type=None, dest="SpawnMode",\r
         help="If this flag is specified, as soon as a module can be built, the build will start, without waiting for AutoGen to complete remaining modules. While this option provides feedback that looks fast, due to overhead of the AutoGen function, this option is slower than letting AutoGen complete before starting the MAKE phase.")\r
     Parser.add_option("-n", action="store", type="int", dest="ThreadNumber",\r
         help="Build the platform using multi-threaded compiler, this option must combine with spawn option. The value overrides target.txt's MULTIPLE_THREAD and MAX_CONCURRENT_THREAD_NUMBER, less than 2 will disable multi-thread builds.")\r
+\r
     Parser.add_option("-f", "--fdf", action="store", type="string", dest="FdfFile",\r
         help="The name of the FDF file to use, which overrides the setting in the DSC file.")\r
     Parser.add_option("-r", "--rom-image", action="append", type="string", dest="RomImage", default=[],\r
         help="The name of FD to be generated. The name must be from [FD] section in FDF file.")\r
     Parser.add_option("-i", "--fv-image", action="append", type="string", dest="FvImage", default=[],\r
         help="The name of FV to be generated. The name must be from [FV] section in FDF file.")\r
+\r
     Parser.add_option("-k", "--msft", action="store_const", dest="MakefileType", const="nmake", help="Make Option: Generate only NMAKE Makefiles: Makefile")\r
     Parser.add_option("-g", "--gcc", action="store_const", dest="MakefileType", const="gmake", help="Make Option: Generate only GMAKE Makefiles: GNUmakefile")\r
     Parser.add_option("-l", "--all", action="store_const", dest="MakefileType", const="all", help="Make Option: Generate both NMAKE and GMAKE makefiles.")\r
@@ -1243,7 +1249,7 @@ def Main():
                         Option.TargetArch, Option.ToolChain, Option.BuildTarget, \r
                         Option.FdfFile, Option.RomImage, Option.FvImage, \r
                         Option.MakefileType, Option.SpawnMode, Option.ThreadNumber, \r
-                        Option.SkipAutoGen, Option.Reparse)\r
+                        Option.SkipAutoGen, Option.Reparse, Option.SkuId)\r
         MyBuild.Launch()\r
         MyBuild.DumpBuildData()\r
     except BaseException, X:\r