Sync EDKII BaseTools to BaseTools project r1903.
[efi/edk2/.git] / edk2 / BaseTools / Source / Python / msa2inf / ConvertModule.py
1 ## @file\r
2 # Convert an MSA Module class object ot an INF Module class object by filling\r
3 # several info required by INF file.\r
4 #\r
5 # Copyright (c) 2007 - 2010, Intel Corporation\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 LoadMsa import LoadMsa\r
19 from StoreInf import StoreInf\r
20 from Common.MigrationUtilities import *\r
21 from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo\r
22 \r
23 #The default INF version number tool generates.\r
24 gInfVersion = "0x00010005"\r
25 \r
26 ## Add required version information.\r
27 #\r
28 # Add the default INF version, EFI specificiation version and EDK release\r
29 # version to Module class object.\r
30 #\r
31 # @param  Module              An input Module class object.\r
32 #\r
33 def AddModuleMiscVersion(Module):\r
34     Version = gInfVersion\r
35     Module.Header.InfVersion = Version\r
36 \r
37     Version = Module.Header.Specification.get("EFI_SPECIFICATION_VERSION", "")\r
38     Module.Header.UefiSpecificationVersion = Version\r
39     \r
40     Version = Module.Header.Specification.get("EDK_RELEASE_VERSION", "")\r
41     Module.Header.EdkReleaseVersion = Version\r
42 \r
43 \r
44 ## Add Module produced library class.\r
45 #\r
46 # Add the produced library class from library class list whose usage type is\r
47 # always produced.\r
48 #\r
49 # @param  Module              An input Module class object.\r
50 #\r
51 def AddModuleProducedLibraryClass(Module):\r
52     for LibraryClass in Module.LibraryClasses:\r
53         if "ALWAYS_PRODUCED" in LibraryClass.Usage:\r
54             Module.Header.LibraryClass.append(LibraryClass)\r
55 \r
56 \r
57 ## Add Module Package Dependency path.\r
58 #\r
59 # Translate Package Dependency Guid to a file path relative to workspace.\r
60 #\r
61 # @param  Module              An input Module class object.\r
62 #\r
63 def AddModulePackageDependencyPath(Module):\r
64     for PackageDependency in Module.PackageDependencies:\r
65         PackageGuid = PackageDependency.PackageGuid\r
66         PackageVersion = PackageDependency.PackageVersion\r
67         \r
68         GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolvePackageFilePath\r
69         PackageFilePath = GuidToFilePath(PackageGuid, PackageVersion)\r
70         PackageDependency.FilePath = PackageFilePath\r
71 \r
72 \r
73 ## Add Module Recommended Library Instance path.\r
74 #\r
75 # Translate Module Recommened Library Instance Guid to a file path relative to\r
76 # workspace.\r
77 #\r
78 # @param  Module              An input Module class object.\r
79 #\r
80 def AddModuleRecommonedLibraryInstancePath(Module):\r
81     for LibraryClass in Module.LibraryClasses:\r
82         if "ALWAYS_PRODUCED" in LibraryClass.Usage:\r
83             continue\r
84 \r
85         if LibraryClass.RecommendedInstanceGuid == "":\r
86             continue\r
87         \r
88         LibraryGuid = LibraryClass.RecommendedInstanceGuid\r
89         LibraryVersion = LibraryClass.RecommendedIntanceVersion\r
90         \r
91         GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath\r
92         LibraryInstance = GuidToFilePath(LibraryGuid, LibraryVersion)\r
93         LibraryClass.RecommendedIntance = LibraryInstance\r
94 \r
95 \r
96 ## Convert MSA Module class object to INF Module class object.\r
97 #\r
98 # Convert MSA module class ojbect to INF Module class object by filling in\r
99 # several information required by INF file.\r
100 #\r
101 # @param  Module              An input Module class object.\r
102 #\r
103 def ConvertMsaModuleToInfModule(Module):\r
104     AddModuleMiscVersion(Module)\r
105     AddModuleProducedLibraryClass(Module)\r
106     AddModulePackageDependencyPath(Module)\r
107     AddModuleRecommonedLibraryInstancePath(Module)\r
108 \r
109 \r
110 if __name__ == '__main__':\r
111     pass\r
112