14234283c3acb8c35014acc1546621fbc2621b095lgao## @file 24234283c3acb8c35014acc1546621fbc2621b095lgao# This file is used to define class objects of INF file [BuildOptions] section. 34234283c3acb8c35014acc1546621fbc2621b095lgao# It will consumed by InfParser. 44234283c3acb8c35014acc1546621fbc2621b095lgao# 5421ccda3079077dd613308526e02d797f5cc356aHess Chen# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.<BR> 64234283c3acb8c35014acc1546621fbc2621b095lgao# 74234283c3acb8c35014acc1546621fbc2621b095lgao# This program and the accompanying materials are licensed and made available 84234283c3acb8c35014acc1546621fbc2621b095lgao# under the terms and conditions of the BSD License which accompanies this 94234283c3acb8c35014acc1546621fbc2621b095lgao# distribution. The full text of the license may be found at 104234283c3acb8c35014acc1546621fbc2621b095lgao# http://opensource.org/licenses/bsd-license.php 114234283c3acb8c35014acc1546621fbc2621b095lgao# 124234283c3acb8c35014acc1546621fbc2621b095lgao# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 134234283c3acb8c35014acc1546621fbc2621b095lgao# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 144234283c3acb8c35014acc1546621fbc2621b095lgao 154234283c3acb8c35014acc1546621fbc2621b095lgao''' 164234283c3acb8c35014acc1546621fbc2621b095lgaoInfBuildOptionObject 174234283c3acb8c35014acc1546621fbc2621b095lgao''' 184234283c3acb8c35014acc1546621fbc2621b095lgao 194234283c3acb8c35014acc1546621fbc2621b095lgaofrom Library import GlobalData 204234283c3acb8c35014acc1546621fbc2621b095lgao 214234283c3acb8c35014acc1546621fbc2621b095lgaofrom Object.Parser.InfCommonObject import InfSectionCommonDef 224234283c3acb8c35014acc1546621fbc2621b095lgao 234234283c3acb8c35014acc1546621fbc2621b095lgaoclass InfBuildOptionItem(): 244234283c3acb8c35014acc1546621fbc2621b095lgao def __init__(self): 254234283c3acb8c35014acc1546621fbc2621b095lgao self.Content = '' 264234283c3acb8c35014acc1546621fbc2621b095lgao self.SupArchList = [] 274234283c3acb8c35014acc1546621fbc2621b095lgao self.AsBuildList = [] 284234283c3acb8c35014acc1546621fbc2621b095lgao 294234283c3acb8c35014acc1546621fbc2621b095lgao def SetContent(self, Content): 304234283c3acb8c35014acc1546621fbc2621b095lgao self.Content = Content 314234283c3acb8c35014acc1546621fbc2621b095lgao def GetContent(self): 324234283c3acb8c35014acc1546621fbc2621b095lgao return self.Content 334234283c3acb8c35014acc1546621fbc2621b095lgao 344234283c3acb8c35014acc1546621fbc2621b095lgao def SetSupArchList(self, SupArchList): 354234283c3acb8c35014acc1546621fbc2621b095lgao self.SupArchList = SupArchList 364234283c3acb8c35014acc1546621fbc2621b095lgao def GetSupArchList(self): 374234283c3acb8c35014acc1546621fbc2621b095lgao return self.SupArchList 384234283c3acb8c35014acc1546621fbc2621b095lgao 394234283c3acb8c35014acc1546621fbc2621b095lgao # 404234283c3acb8c35014acc1546621fbc2621b095lgao # AsBuild Information 414234283c3acb8c35014acc1546621fbc2621b095lgao # 424234283c3acb8c35014acc1546621fbc2621b095lgao def SetAsBuildList(self, AsBuildList): 434234283c3acb8c35014acc1546621fbc2621b095lgao self.AsBuildList = AsBuildList 444234283c3acb8c35014acc1546621fbc2621b095lgao def GetAsBuildList(self): 454234283c3acb8c35014acc1546621fbc2621b095lgao return self.AsBuildList 464234283c3acb8c35014acc1546621fbc2621b095lgao 474234283c3acb8c35014acc1546621fbc2621b095lgao 484234283c3acb8c35014acc1546621fbc2621b095lgao## INF BuildOption section 494234283c3acb8c35014acc1546621fbc2621b095lgao# Macro define is not permitted for this section. 504234283c3acb8c35014acc1546621fbc2621b095lgao# 514234283c3acb8c35014acc1546621fbc2621b095lgao# 524234283c3acb8c35014acc1546621fbc2621b095lgaoclass InfBuildOptionsObject(InfSectionCommonDef): 534234283c3acb8c35014acc1546621fbc2621b095lgao def __init__(self): 544234283c3acb8c35014acc1546621fbc2621b095lgao self.BuildOptions = [] 554234283c3acb8c35014acc1546621fbc2621b095lgao InfSectionCommonDef.__init__(self) 564234283c3acb8c35014acc1546621fbc2621b095lgao ## SetBuildOptions function 574234283c3acb8c35014acc1546621fbc2621b095lgao # 584234283c3acb8c35014acc1546621fbc2621b095lgao # For BuildOptionName, need to validate it's format 594234283c3acb8c35014acc1546621fbc2621b095lgao # For BuildOptionValue, just ignore it. 604234283c3acb8c35014acc1546621fbc2621b095lgao # 614234283c3acb8c35014acc1546621fbc2621b095lgao # @param Arch Indicated which arch of build options belong to. 624234283c3acb8c35014acc1546621fbc2621b095lgao # @param BuildOptCont A list contain BuildOption related information. 634234283c3acb8c35014acc1546621fbc2621b095lgao # The element in the list contain 3 members. 644234283c3acb8c35014acc1546621fbc2621b095lgao # BuildOptionName, BuildOptionValue and IsReplace 654234283c3acb8c35014acc1546621fbc2621b095lgao # flag. 664234283c3acb8c35014acc1546621fbc2621b095lgao # 674234283c3acb8c35014acc1546621fbc2621b095lgao # @return True Build options set/validate successfully 684234283c3acb8c35014acc1546621fbc2621b095lgao # @return False Build options set/validate failed 694234283c3acb8c35014acc1546621fbc2621b095lgao # 704234283c3acb8c35014acc1546621fbc2621b095lgao def SetBuildOptions(self, BuildOptCont, ArchList = None, SectionContent = ''): 714234283c3acb8c35014acc1546621fbc2621b095lgao 724234283c3acb8c35014acc1546621fbc2621b095lgao if not GlobalData.gIS_BINARY_INF: 734234283c3acb8c35014acc1546621fbc2621b095lgao 744234283c3acb8c35014acc1546621fbc2621b095lgao if SectionContent.strip() != '': 754234283c3acb8c35014acc1546621fbc2621b095lgao InfBuildOptionItemObj = InfBuildOptionItem() 764234283c3acb8c35014acc1546621fbc2621b095lgao InfBuildOptionItemObj.SetContent(SectionContent) 774234283c3acb8c35014acc1546621fbc2621b095lgao InfBuildOptionItemObj.SetSupArchList(ArchList) 784234283c3acb8c35014acc1546621fbc2621b095lgao 794234283c3acb8c35014acc1546621fbc2621b095lgao self.BuildOptions.append(InfBuildOptionItemObj) 804234283c3acb8c35014acc1546621fbc2621b095lgao else: 814234283c3acb8c35014acc1546621fbc2621b095lgao # 824234283c3acb8c35014acc1546621fbc2621b095lgao # For AsBuild INF file 834234283c3acb8c35014acc1546621fbc2621b095lgao # 844234283c3acb8c35014acc1546621fbc2621b095lgao if len(BuildOptCont) >= 1: 854234283c3acb8c35014acc1546621fbc2621b095lgao InfBuildOptionItemObj = InfBuildOptionItem() 864234283c3acb8c35014acc1546621fbc2621b095lgao InfBuildOptionItemObj.SetAsBuildList(BuildOptCont) 87421ccda3079077dd613308526e02d797f5cc356aHess Chen InfBuildOptionItemObj.SetSupArchList(ArchList) 884234283c3acb8c35014acc1546621fbc2621b095lgao self.BuildOptions.append(InfBuildOptionItemObj) 894234283c3acb8c35014acc1546621fbc2621b095lgao 904234283c3acb8c35014acc1546621fbc2621b095lgao return True 914234283c3acb8c35014acc1546621fbc2621b095lgao 924234283c3acb8c35014acc1546621fbc2621b095lgao def GetBuildOptions(self): 934234283c3acb8c35014acc1546621fbc2621b095lgao return self.BuildOptions