## @file\r
# This file is used to parse meta files\r
#\r
-# Copyright (c) 2008 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
# This program and the accompanying materials\r
# are licensed and made available under the terms and conditions of the BSD License\r
# which accompanies this distribution. The full text of the license may be found at\r
File=self.MetaFile,\r
Line=self._LineIndex + 1\r
)\r
-\r
+ def GetValidExpression(self, TokenSpaceGuid, PcdCName):\r
+ return self._Table.GetValidExpression(TokenSpaceGuid, PcdCName)\r
def _GetMacros(self):\r
Macros = {}\r
Macros.update(self._FileLocalMacros)\r
"PLATFORM_VERSION",\r
"SKUID_IDENTIFIER",\r
"PCD_INFO_GENERATION",\r
+ "PCD_VAR_CHECK_GENERATION",\r
"SUPPORTED_ARCHITECTURES",\r
"BUILD_TARGETS",\r
"OUTPUT_DIRECTORY",\r
File=self.MetaFile, Line=self._LineIndex + 1,\r
ExtraData=self._CurrentLine)\r
self._DirectiveStack.append((ItemType, self._LineIndex + 1, self._CurrentLine))\r
- elif self._From > 0:\r
- EdkLogger.error('Parser', FORMAT_INVALID,\r
- "No '!include' allowed in included file",\r
- ExtraData=self._CurrentLine, File=self.MetaFile,\r
- Line=self._LineIndex + 1)\r
\r
#\r
# Model, Value1, Value2, Value3, Arch, ModuleType, BelongsToItem=-1, BelongsToFile=-1,\r
self._SubsectionType = MODEL_UNKNOWN\r
\r
def __RetrievePcdValue(self):\r
- Records = self._RawTable.Query(MODEL_PCD_FEATURE_FLAG, BelongsToItem= -1.0)\r
- for TokenSpaceGuid, PcdName, Value, Dummy2, Dummy3, ID, Line in Records:\r
- Name = TokenSpaceGuid + '.' + PcdName\r
- ValList, Valid, Index = AnalyzeDscPcd(Value, MODEL_PCD_FEATURE_FLAG)\r
- self._Symbols[Name] = ValList[Index]\r
-\r
- Records = self._RawTable.Query(MODEL_PCD_FIXED_AT_BUILD, BelongsToItem= -1.0)\r
- for TokenSpaceGuid, PcdName, Value, Dummy2, Dummy3, ID, Line in Records:\r
- Name = TokenSpaceGuid + '.' + PcdName\r
- ValList, Valid, Index = AnalyzeDscPcd(Value, MODEL_PCD_FIXED_AT_BUILD)\r
- self._Symbols[Name] = ValList[Index]\r
-\r
Content = open(str(self.MetaFile), 'r').readlines()\r
GlobalData.gPlatformOtherPcds['DSCFILE'] = str(self.MetaFile)\r
for PcdType in (MODEL_PCD_PATCHABLE_IN_MODULE, MODEL_PCD_DYNAMIC_DEFAULT, MODEL_PCD_DYNAMIC_HII,\r
Parser = DscParser(IncludedFile1, self._FileType, IncludedFileTable,\r
Owner=Owner, From=Owner)\r
\r
+ # Does not allow lower level included file to include upper level included file\r
+ if Parser._From != Owner and int(Owner) > int (Parser._From):\r
+ EdkLogger.error('parser', FILE_ALREADY_EXIST, File=self._FileWithError,\r
+ Line=self._LineIndex + 1, ExtraData="{0} is already included at a higher level.".format(IncludedFile1))\r
+\r
+\r
# set the parser status with current status\r
Parser._SectionName = self._SectionName\r
Parser._SectionType = self._SectionType\r
if ValList[Index] == 'False':\r
ValList[Index] = '0'\r
\r
- GlobalData.gPlatformPcds[TAB_SPLIT.join(self._ValueList[0:2])] = PcdValue\r
+ if (not self._DirectiveEvalStack) or (False not in self._DirectiveEvalStack):\r
+ GlobalData.gPlatformPcds[TAB_SPLIT.join(self._ValueList[0:2])] = PcdValue\r
+ self._Symbols[TAB_SPLIT.join(self._ValueList[0:2])] = PcdValue\r
self._ValueList[2] = '|'.join(ValList)\r
\r
def __ProcessComponent(self):\r