\r
\r
## Build rule configuration file\r
-gDefaultBuildRuleFile = 'Conf/build_rule.txt'\r
+gDefaultBuildRuleFile = 'build_rule.txt'\r
\r
## Tools definition configuration file\r
-gDefaultToolsDefFile = 'Conf/tools_def.txt'\r
+gDefaultToolsDefFile = 'tools_def.txt'\r
\r
## Build rule default version\r
AutoGenReqBuildRuleVerNum = "0.1"\r
if HasTokenSpace:\r
if (PcdItem.TokenCName, PcdItem.TokenSpaceGuidCName) == (TokenCName, TokenSpaceGuidCName):\r
PcdDatumType = PcdItem.DatumType\r
- NewValue = self._BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
+ NewValue = BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
FoundFlag = True\r
else:\r
if PcdItem.TokenCName == TokenCName:\r
TokenSpaceGuidCNameList.append(PcdItem.TokenSpaceGuidCName)\r
PcdDatumType = PcdItem.DatumType\r
TokenSpaceGuidCName = PcdItem.TokenSpaceGuidCName\r
- NewValue = self._BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
+ NewValue = BuildOptionPcdValueFormat(TokenSpaceGuidCName, TokenCName, PcdDatumType, pcdvalue)\r
FoundFlag = True\r
else:\r
EdkLogger.error(\r
SourcePcdDict['FixedAtBuild'].append((BuildData.Pcds[key].TokenCName, BuildData.Pcds[key].TokenSpaceGuidCName))\r
else:\r
pass\r
+ #\r
+ # A PCD can only use one type for all source modules\r
+ #\r
+ for i in SourcePcdDict_Keys:\r
+ for j in SourcePcdDict_Keys:\r
+ if i != j:\r
+ IntersectionList = list(set(SourcePcdDict[i]).intersection(set(SourcePcdDict[j])))\r
+ if len(IntersectionList) > 0:\r
+ EdkLogger.error(\r
+ 'build',\r
+ FORMAT_INVALID,\r
+ "Building modules from source INFs, following PCD use %s and %s access method. It must be corrected to use only one access method." % (i, j),\r
+ ExtraData="%s" % '\n\t'.join([str(P[1]+'.'+P[0]) for P in IntersectionList])\r
+ )\r
+ else:\r
+ pass\r
\r
#\r
# intersection the BinaryPCD for Mixed PCD\r
print >> file, f\r
return True\r
\r
- def _BuildOptionPcdValueFormat(self, TokenSpaceGuidCName, TokenCName, PcdDatumType, Value):\r
- if PcdDatumType == 'VOID*':\r
- if Value.startswith('L'):\r
- if not Value[1]:\r
- EdkLogger.error('build', OPTION_VALUE_INVALID, 'For Void* type PCD, when specify the Value in the command line, please use the following format: "string", L"string", B"{...}"')\r
- Value = Value[0] + '"' + Value[1:] + '"'\r
- elif Value.startswith('B'):\r
- if not Value[1]:\r
- EdkLogger.error('build', OPTION_VALUE_INVALID, 'For Void* type PCD, when specify the Value in the command line, please use the following format: "string", L"string", B"{...}"')\r
- Value = Value[1:]\r
- else:\r
- if not Value[0]:\r
- EdkLogger.error('build', OPTION_VALUE_INVALID, 'For Void* type PCD, when specify the Value in the command line, please use the following format: "string", L"string", B"{...}"')\r
- Value = '"' + Value + '"'\r
-\r
- IsValid, Cause = CheckPcdDatum(PcdDatumType, Value)\r
- if not IsValid:\r
- EdkLogger.error('build', FORMAT_INVALID, Cause, ExtraData="%s.%s" % (TokenSpaceGuidCName, TokenCName))\r
- if PcdDatumType == 'BOOLEAN':\r
- Value = Value.upper()\r
- if Value == 'TRUE' or Value == '1':\r
- Value = '1'\r
- elif Value == 'FALSE' or Value == '0':\r
- Value = '0'\r
- return Value\r
\r
def _GetMetaFiles(self, Target, Toolchain, Arch):\r
AllWorkSpaceMetaFiles = set()\r
#\r
# add build_rule.txt & tools_def.txt\r
#\r
- AllWorkSpaceMetaFiles.add(gDefaultBuildRuleFile)\r
- AllWorkSpaceMetaFiles.add(gDefaultToolsDefFile)\r
+ AllWorkSpaceMetaFiles.add(os.path.join(GlobalData.gConfDirectory, gDefaultBuildRuleFile))\r
+ AllWorkSpaceMetaFiles.add(os.path.join(GlobalData.gConfDirectory, gDefaultToolsDefFile))\r
\r
# add BuildOption metafile\r
#\r
if self._FixedAtBuildPcds:\r
return self._FixedAtBuildPcds\r
for Pcd in self.ModulePcdList:\r
- if self.IsLibrary:\r
- if not (Pcd.Pending == False and Pcd.Type == "FixedAtBuild"):\r
- continue\r
- elif Pcd.Type != "FixedAtBuild":\r
+ if Pcd.Type != "FixedAtBuild":\r
continue\r
if Pcd not in self._FixedAtBuildPcds:\r
self._FixedAtBuildPcds.append(Pcd)\r
else:\r
continue\r
PcdValue = ''\r
+ if Pcd.DatumType == 'BOOLEAN':\r
+ BoolValue = Pcd.DefaultValue.upper()\r
+ if BoolValue == 'TRUE':\r
+ Pcd.DefaultValue = '1'\r
+ elif BoolValue == 'FALSE':\r
+ Pcd.DefaultValue = '0'\r
+\r
if Pcd.DatumType != 'VOID*':\r
HexFormat = '0x%02x'\r
if Pcd.DatumType == 'UINT16':\r