]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/Python/msa2inf/ConvertModule.py
Sync EDKII BaseTools to BaseTools project r1971
[mirror_edk2.git] / BaseTools / Source / Python / msa2inf / ConvertModule.py
CommitLineData
30fdf114
LG
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
40d841f6
LG
5# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>\r
6# This program and the accompanying materials\r
30fdf114
LG
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
18from LoadMsa import LoadMsa\r
19from StoreInf import StoreInf\r
20from Common.MigrationUtilities import *\r
21from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo\r
22\r
23#The default INF version number tool generates.\r
24gInfVersion = "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
33def 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
52302d4d 38 Module.Header.UefiSpecificationVersion = Version\r
30fdf114
LG
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
51def 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
63def 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
80def 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
103def ConvertMsaModuleToInfModule(Module):\r
104 AddModuleMiscVersion(Module)\r
105 AddModuleProducedLibraryClass(Module)\r
106 AddModulePackageDependencyPath(Module)\r
107 AddModuleRecommonedLibraryInstancePath(Module)\r
108\r
109\r
110if __name__ == '__main__':\r
111 pass\r
112