1 ## @file 2 # This file is used to define class objects of INF file [BuildOptions] section. 3 # It will consumed by InfParser. 4 # 5 # Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR> 6 # 7 # This program and the accompanying materials are licensed and made available 8 # under the terms and conditions of the BSD License which accompanies this 9 # distribution. The full text of the license may be found at 10 # http://opensource.org/licenses/bsd-license.php 11 # 12 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 14 15 ''' 16 InfBuildOptionObject 17 ''' 18 19 from Library import GlobalData 20 21 from Object.Parser.InfCommonObject import InfSectionCommonDef 22 23 class InfBuildOptionItem(): 24 def __init__(self): 25 self.Content = '' 26 self.SupArchList = [] 27 self.AsBuildList = [] 28 29 def SetContent(self, Content): 30 self.Content = Content 31 def GetContent(self): 32 return self.Content 33 34 def SetSupArchList(self, SupArchList): 35 self.SupArchList = SupArchList 36 def GetSupArchList(self): 37 return self.SupArchList 38 39 # 40 # AsBuild Information 41 # 42 def SetAsBuildList(self, AsBuildList): 43 self.AsBuildList = AsBuildList 44 def GetAsBuildList(self): 45 return self.AsBuildList 46 47 48 ## INF BuildOption section 49 # Macro define is not permitted for this section. 50 # 51 # 52 class InfBuildOptionsObject(InfSectionCommonDef): 53 def __init__(self): 54 self.BuildOptions = [] 55 InfSectionCommonDef.__init__(self) 56 ## SetBuildOptions function 57 # 58 # For BuildOptionName, need to validate it's format 59 # For BuildOptionValue, just ignore it. 60 # 61 # @param Arch Indicated which arch of build options belong to. 62 # @param BuildOptCont A list contain BuildOption related information. 63 # The element in the list contain 3 members. 64 # BuildOptionName, BuildOptionValue and IsReplace 65 # flag. 66 # 67 # @return True Build options set/validate successfully 68 # @return False Build options set/validate failed 69 # 70 def SetBuildOptions(self, BuildOptCont, ArchList = None, SectionContent = ''): 71 72 if not GlobalData.gIS_BINARY_INF: 73 74 if SectionContent.strip() != '': 75 InfBuildOptionItemObj = InfBuildOptionItem() 76 InfBuildOptionItemObj.SetContent(SectionContent) 77 InfBuildOptionItemObj.SetSupArchList(ArchList) 78 79 self.BuildOptions.append(InfBuildOptionItemObj) 80 else: 81 # 82 # For AsBuild INF file 83 # 84 if len(BuildOptCont) >= 1: 85 InfBuildOptionItemObj = InfBuildOptionItem() 86 InfBuildOptionItemObj.SetAsBuildList(BuildOptCont) 87 InfBuildOptionItemObj.SetSupArchList(ArchList) 88 self.BuildOptions.append(InfBuildOptionItemObj) 89 90 return True 91 92 def GetBuildOptions(self): 93 return self.BuildOptions