coding style change.
[efi/basetools/.git] / Source / Python / GenFds / CompressSection.py
1 ## @file\r
2 # process compress section generation\r
3 #\r
4 #  Copyright (c) 2007, Intel Corporation\r
5 #\r
6 #  All rights reserved. This program and the accompanying materials\r
7 #  are licensed and made available under the terms and conditions of the BSD License\r
8 #  which accompanies this distribution.  The full text of the license may be found at\r
9 #  http://opensource.org/licenses/bsd-license.php\r
10 #\r
11 #  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 #  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13 #\r
14 \r
15 ##\r
16 # Import Modules\r
17 #\r
18 from Ffs import Ffs\r
19 import Section\r
20 import subprocess\r
21 import os\r
22 from GenFdsGlobalVariable import GenFdsGlobalVariable\r
23 from CommonDataClass.FdfClassObject import CompressSectionClassObject\r
24 \r
25 ## generate compress section\r
26 #\r
27 #\r
28 class CompressSection (CompressSectionClassObject) :\r
29     \r
30     ## compress types: PI standard and non PI standard    \r
31     CompTypeDict = {\r
32         'PI_STD'     : ' -c PI_STD ',\r
33         'NON_PI_STD' : ' -c NON_PI_STD '\r
34     }\r
35     \r
36     ## The constructor\r
37     #\r
38     #   @param  self        The object pointer\r
39     #\r
40     def __init__(self):\r
41         CompressSectionClassObject.__init__(self)\r
42         \r
43     ## GenSection() method\r
44     #\r
45     #   Generate compressed section\r
46     #\r
47     #   @param  self        The object pointer\r
48     #   @param  OutputPath  Where to place output file\r
49     #   @param  ModuleName  Which module this section belongs to\r
50     #   @param  SecNum      Index of section\r
51     #   @param  KeyStringList  Filter for inputs of section generation\r
52     #   @param  FfsInf      FfsInfStatement object that contains this section data\r
53     #   @param  Dict        dictionary contains macro and its value\r
54     #   @retval tuple       (Generated file name, section alignment)\r
55     #\r
56     def GenSection(self, OutputPath, ModuleName, SecNum, KeyStringList, FfsInf = None, Dict = {}):\r
57         #\r
58         # Generate all section\r
59         #\r
60         if FfsInf != None:\r
61             self.CompType = FfsInf.__ExtendMarco__(self.CompType)\r
62             self.Alignment = FfsInf.__ExtendMarco__(self.Alignment)\r
63             \r
64         SectFiles = ''\r
65         Index = 0\r
66         for Sect in self.SectionList:\r
67             Index = Index + 1\r
68             SecIndex = '%s.%d' %(SecNum, Index)\r
69             ReturnSectList, AlignValue = Sect.GenSection(OutputPath, ModuleName, SecIndex, KeyStringList, FfsInf, Dict)\r
70             if ReturnSectList != []:\r
71                 for FileData in ReturnSectList:\r
72                    SectFiles = SectFiles + \\r
73                                ' '       + \\r
74                                FileData\r
75                         \r
76 \r
77         OutputFile = OutputPath + \\r
78                      os.sep     + \\r
79                      ModuleName + \\r
80                      'SEC'      + \\r
81                      SecNum     + \\r
82                      Ffs.SectionSuffix['COMPRESS']\r
83         OutputFile = os.path.normpath(OutputFile)\r
84         \r
85         GenSectionCmd = 'GenSec -o '                                  + \\r
86                          OutputFile                                   + \\r
87                          ' -s '                                       + \\r
88                          Section.Section.SectionType['COMPRESS']      + \\r
89                          self.CompTypeDict[self.CompType]             + \\r
90                          SectFiles\r
91         #\r
92         # Call GenSection\r
93         #\r
94         GenFdsGlobalVariable.CallExternalTool(GenSectionCmd, "GenSection Failed!")\r
95         OutputFileList = []\r
96         OutputFileList.append(OutputFile)\r
97         return OutputFileList, self.Alignment\r
98 \r
99         \r