## @file | |
# Convert an MSA Module class object ot an INF Module class object by filling | |
# several info required by INF file. | |
# | |
# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR> | |
# This program and the accompanying materials | |
# are licensed and made available under the terms and conditions of the BSD License | |
# which accompanies this distribution. The full text of the license may be found at | |
# http://opensource.org/licenses/bsd-license.php | |
# | |
# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
# | |
## | |
# Import Modules | |
# | |
from LoadMsa import LoadMsa | |
from StoreInf import StoreInf | |
from Common.MigrationUtilities import * | |
from EdkIIWorkspaceGuidsInfo import gEdkIIWorkspaceGuidsInfo | |
#The default INF version number tool generates. | |
gInfVersion = "0x00010005" | |
## Add required version information. | |
# | |
# Add the default INF version, EFI specificiation version and EDK release | |
# version to Module class object. | |
# | |
# @param Module An input Module class object. | |
# | |
def AddModuleMiscVersion(Module): | |
Version = gInfVersion | |
Module.Header.InfVersion = Version | |
Version = Module.Header.Specification.get("EFI_SPECIFICATION_VERSION", "") | |
Module.Header.UefiSpecificationVersion = Version | |
Version = Module.Header.Specification.get("EDK_RELEASE_VERSION", "") | |
Module.Header.EdkReleaseVersion = Version | |
## Add Module produced library class. | |
# | |
# Add the produced library class from library class list whose usage type is | |
# always produced. | |
# | |
# @param Module An input Module class object. | |
# | |
def AddModuleProducedLibraryClass(Module): | |
for LibraryClass in Module.LibraryClasses: | |
if "ALWAYS_PRODUCED" in LibraryClass.Usage: | |
Module.Header.LibraryClass.append(LibraryClass) | |
## Add Module Package Dependency path. | |
# | |
# Translate Package Dependency Guid to a file path relative to workspace. | |
# | |
# @param Module An input Module class object. | |
# | |
def AddModulePackageDependencyPath(Module): | |
for PackageDependency in Module.PackageDependencies: | |
PackageGuid = PackageDependency.PackageGuid | |
PackageVersion = PackageDependency.PackageVersion | |
GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolvePackageFilePath | |
PackageFilePath = GuidToFilePath(PackageGuid, PackageVersion) | |
PackageDependency.FilePath = PackageFilePath | |
## Add Module Recommended Library Instance path. | |
# | |
# Translate Module Recommened Library Instance Guid to a file path relative to | |
# workspace. | |
# | |
# @param Module An input Module class object. | |
# | |
def AddModuleRecommonedLibraryInstancePath(Module): | |
for LibraryClass in Module.LibraryClasses: | |
if "ALWAYS_PRODUCED" in LibraryClass.Usage: | |
continue | |
if LibraryClass.RecommendedInstanceGuid == "": | |
continue | |
LibraryGuid = LibraryClass.RecommendedInstanceGuid | |
LibraryVersion = LibraryClass.RecommendedIntanceVersion | |
GuidToFilePath = gEdkIIWorkspaceGuidsInfo.ResolveModuleFilePath | |
LibraryInstance = GuidToFilePath(LibraryGuid, LibraryVersion) | |
LibraryClass.RecommendedIntance = LibraryInstance | |
## Convert MSA Module class object to INF Module class object. | |
# | |
# Convert MSA module class ojbect to INF Module class object by filling in | |
# several information required by INF file. | |
# | |
# @param Module An input Module class object. | |
# | |
def ConvertMsaModuleToInfModule(Module): | |
AddModuleMiscVersion(Module) | |
AddModuleProducedLibraryClass(Module) | |
AddModulePackageDependencyPath(Module) | |
AddModuleRecommonedLibraryInstancePath(Module) | |
if __name__ == '__main__': | |
pass | |