]>
git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/Python/GenFds/Section.py
4 # Copyright (c) 2007-2011, Intel Corporation. All rights reserved.<BR>
6 # This program and the accompanying materials
7 # are licensed and made available under the terms and conditions of the BSD License
8 # which accompanies this distribution. The full text of the license may be found at
9 # http://opensource.org/licenses/bsd-license.php
11 # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
18 from CommonDataClass
. FdfClass
import SectionClassObject
19 from GenFdsGlobalVariable
import GenFdsGlobalVariable
21 from Common
import EdkLogger
22 from Common
. BuildToolError
import *
27 class Section ( SectionClassObject
):
29 'RAW' : 'EFI_SECTION_RAW' ,
30 'FREEFORM' : 'EFI_SECTION_FREEFORM_SUBTYPE_GUID' ,
31 'PE32' : 'EFI_SECTION_PE32' ,
32 'PIC' : 'EFI_SECTION_PIC' ,
33 'TE' : 'EFI_SECTION_TE' ,
34 'FV_IMAGE' : 'EFI_SECTION_FIRMWARE_VOLUME_IMAGE' ,
35 'DXE_DEPEX' : 'EFI_SECTION_DXE_DEPEX' ,
36 'PEI_DEPEX' : 'EFI_SECTION_PEI_DEPEX' ,
37 'GUIDED' : 'EFI_SECTION_GUID_DEFINED' ,
38 'COMPRESS' : 'EFI_SECTION_COMPRESSION' ,
39 'UI' : 'EFI_SECTION_USER_INTERFACE' ,
40 'SMM_DEPEX' : 'EFI_SECTION_SMM_DEPEX'
51 'PEI_DEPEX' : '.depex' ,
52 'SEC_PEI_DEPEX' : '.depex' ,
60 'COMPAT16' : '.comp16' ,
71 'SEC_COMPAT16' : '.sec' ,
76 '0xa31280ad-0x481e-0x41b6-0x95e8-0x127f-0x4c984779' : 'TianoCompress' ,
77 '0xee4e5898-0x3914-0x4259-0x9d6e-0xdc7b-0xd79403cf' : 'LzmaCompress'
82 # @param self The object pointer
85 SectionClassObject
.__ init
__ ( self
)
87 ## GenSection() method
91 # @param self The object pointer
92 # @param OutputPath Where to place output file
93 # @param ModuleName Which module this section belongs to
94 # @param SecNum Index of section
95 # @param KeyStringList Filter for inputs of section generation
96 # @param FfsInf FfsInfStatement object that contains this section data
97 # @param Dict dictionary contains macro and its value
99 def GenSection ( self
, OutputPath
, GuidName
, SecNum
, keyStringList
, FfsInf
= None , Dict
= {}):
102 ## GetFileList() method
104 # Generate compressed section
106 # @param self The object pointer
107 # @param FfsInf FfsInfStatement object that contains file list
108 # @param FileType File type to get
109 # @param FileExtension File extension to get
110 # @param Dict dictionary contains macro and its value
111 # @retval tuple (File list, boolean)
113 def GetFileList ( FfsInf
, FileType
, FileExtension
, Dict
= {}):
114 if FileType
in Section
. SectFileType
. keys () :
119 if FileExtension
!= None :
120 Suffix
= FileExtension
122 Suffix
= Section
. SectionType
. get ( FileType
)
124 Suffix
= Section
. BinFileType
. get ( FileType
)
126 EdkLogger
. error ( "GenFds" , GENFDS_ERROR
, 'Inf File does not exist!' )
130 for File
in FfsInf
. BinFileList
:
131 if File
. Arch
== "COMMON" or FfsInf
. CurrentArch
== File
. Arch
:
132 if File
. Type
== FileType
or ( int ( FfsInf
. PiSpecVersion
, 16 ) >= 0x0001000A and FileType
== 'DXE_DPEX' and File
. Type
== 'SMM_DEPEX' ):
133 if '*' in FfsInf
. TargetOverrideList
or File
. Target
== '*' or File
. Target
in FfsInf
. TargetOverrideList
or FfsInf
. TargetOverrideList
== []:
134 FileList
. append ( File
. Path
)
136 GenFdsGlobalVariable
. InfLogger ( " \n Build Target \' %s \' of File %s is not in the Scope of %s specified by INF %s in FDF" %( File
. Target
, File
. File
, FfsInf
. TargetOverrideList
, FfsInf
. InfFileName
))
138 GenFdsGlobalVariable
. VerboseLogger ( " \n File Type \' %s \' of File %s in %s is not same with file type \' %s \' from Rule in FDF" %( File
. Type
, File
. File
, FfsInf
. InfFileName
, FileType
))
140 GenFdsGlobalVariable
. InfLogger ( " \n Current ARCH \' %s \' of File %s is not in the Support Arch Scope of %s specified by INF %s in FDF" %( FfsInf
. CurrentArch
, File
. File
, File
. Arch
, FfsInf
. InfFileName
))
143 SuffixMap
= FfsInf
. GetFinalTargetSuffixMap ()
144 if Suffix
in SuffixMap
:
145 FileList
. extend ( SuffixMap
[ Suffix
])
147 #Process the file lists is alphabetical for a same section type
148 if len ( FileList
) > 1 :
151 return FileList
, IsSect
152 GetFileList
= staticmethod ( GetFileList
)