# @retval list Arch list\r
#\r
def __GetPlatformArchList__(self):\r
- TargetArchList = GenFdsGlobalVariable.ArchList\r
- if len(TargetArchList) == 0:\r
- TargetArchList = GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'COMMON'].SupArchList\r
- else:\r
- TargetArchList = set(GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'COMMON'].SupArchList) & set(TargetArchList)\r
-\r
+ \r
InfFileKey = os.path.normpath(self.InfFileName)\r
DscArchList = []\r
PlatformDataBase = GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'IA32']\r
if InfFileKey in (PlatformDataBase.Modules):\r
DscArchList.append ('IPF')\r
\r
- CurArchList = TargetArchList\r
- if DscArchList != []:\r
- CurArchList = set (TargetArchList) & set (DscArchList)\r
- GenFdsGlobalVariable.VerboseLogger ("Valid target architecture(s) is : " + " ".join(CurArchList))\r
- return list(CurArchList)\r
+ return DscArchList\r
\r
## GetCurrentArch() method\r
#\r
# @retval list Arch list\r
#\r
def GetCurrentArch(self) :\r
- CurArchList = self.__GetPlatformArchList__()\r
+ \r
+ TargetArchList = GenFdsGlobalVariable.ArchList\r
+ \r
+ PlatformArchList = self.__GetPlatformArchList__()\r
+ \r
+ CurArchList = TargetArchList\r
+ if PlatformArchList != []:\r
+ CurArchList = list(set (TargetArchList) & set (PlatformArchList))\r
+ GenFdsGlobalVariable.VerboseLogger ("Valid target architecture(s) is : " + " ".join(CurArchList))\r
+ \r
ArchList = []\r
if self.KeyStringList != []:\r
for Key in self.KeyStringList:\r
Arch = ArchList[0]\r
return Arch\r
elif len(ArchList) > 1:\r
- EdkLogger.error("GenFds", GENFDS_ERROR, "Not able to determine ARCH for Module %s !" % self.InfFileName)\r
+ EdkLogger.error("GenFds", GENFDS_ERROR, "Module built under multiple ARCHs %s. Not able to determine which output to put into flash for Module %s !" % (str(ArchList), self.InfFileName))\r
else:\r
- EdkLogger.error("GenFds", GENFDS_ERROR, "Don't find legal ARCH in Module %s !" % self.InfFileName)\r
+ EdkLogger.error("GenFds", GENFDS_ERROR, "Module %s appears under ARCH %s in platform %s, but current target ARCH is %s, so NO build output could be put into flash." % (self.InfFileName, str(PlatformArchList), GenFdsGlobalVariable.ActivePlatform, str(TargetArchList)))\r
\r
## __GetEFIOutPutPath__() method\r
#\r
GenFdsGlobalVariable.ActivePlatform = NormPath(ActivePlatform)
- if (Options.archList) :
- ArchList = Options.archList.split(',')
- else:
- EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing build ARCH")
-
BuildConfigurationFile = os.path.normpath(os.path.join(GenFdsGlobalVariable.WorkSpaceDir, "Conf/target.txt"))
if os.path.isfile(BuildConfigurationFile) == True:
TargetTxtClassObject.TargetTxtClassObject(BuildConfigurationFile)
BuildWorkSpace = WorkspaceDatabase(':memory:', GlobalData.gGlobalDefines)
BuildWorkSpace.InitDatabase()
+ if (Options.archList) :
+ ArchList = Options.archList.split(',')
+ else:
+# EdkLogger.error("GenFds", BuildToolError.OPTION_MISSING, "Missing build ARCH")
+ ArchList = BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'COMMON'].SupArchList
+
+ TargetArchList = set(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'COMMON'].SupArchList) & set(ArchList)
+ if len(TargetArchList) == 0:
+ EdkLogger.error("GenFds", GENFDS_ERROR, "Target ARCH %s not in platform supported ARCH %s" % (str(ArchList), str(BuildWorkSpace.BuildObject[GenFdsGlobalVariable.ActivePlatform, 'COMMON'].SupArchList)))
+
for Arch in ArchList:
GenFdsGlobalVariable.OutputDirFromDscDict[Arch] = NormPath(BuildWorkSpace.BuildObject[ActivePlatform, Arch].OutputDirectory)