| ## @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 | |