4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This file is used to define class objects of INF file [BuildOptions] section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# It will consumed by InfParser.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# This program and the accompanying materials are licensed and made available
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# under the terms and conditions of the BSD License which accompanies this
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncInfBuildOptionObject
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync'''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Library import GlobalData
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfrom Object.Parser.InfCommonObject import InfSectionCommonDef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass InfBuildOptionItem():
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Content = ''
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupArchList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.AsBuildList = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetContent(self, Content):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.Content = Content
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetContent(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.Content
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetSupArchList(self, SupArchList):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.SupArchList = SupArchList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetSupArchList(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.SupArchList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # AsBuild Information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetAsBuildList(self, AsBuildList):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.AsBuildList = AsBuildList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetAsBuildList(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.AsBuildList
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync## INF BuildOption section
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync# Macro define is not permitted for this section.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass InfBuildOptionsObject(InfSectionCommonDef):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def __init__(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.BuildOptions = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfSectionCommonDef.__init__(self)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ## SetBuildOptions function
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # For BuildOptionName, need to validate it's format
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # For BuildOptionValue, just ignore it.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param Arch Indicated which arch of build options belong to.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @param BuildOptCont A list contain BuildOption related information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # The element in the list contain 3 members.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # BuildOptionName, BuildOptionValue and IsReplace
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # flag.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @return True Build options set/validate successfully
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # @return False Build options set/validate failed
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def SetBuildOptions(self, BuildOptCont, ArchList = None, SectionContent = ''):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if not GlobalData.gIS_BINARY_INF:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if SectionContent.strip() != '':
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfBuildOptionItemObj = InfBuildOptionItem()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfBuildOptionItemObj.SetContent(SectionContent)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfBuildOptionItemObj.SetSupArchList(ArchList)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.BuildOptions.append(InfBuildOptionItemObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # For AsBuild INF file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if len(BuildOptCont) >= 1:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfBuildOptionItemObj = InfBuildOptionItem()
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync InfBuildOptionItemObj.SetAsBuildList(BuildOptCont)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync self.BuildOptions.append(InfBuildOptionItemObj)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return True
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def GetBuildOptions(self):
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return self.BuildOptions