[edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.

Xiaoyu Lu xiaoyux.lu at intel.com
Wed Jul 3 08:41:33 UTC 2019


Liming,

I filed two BZ, One for this, and another one for INF/BUILD spec.
https://bugzilla.tianocore.org/show_bug.cgi?id=1956
https://bugzilla.tianocore.org/show_bug.cgi?id=1952

Thanks,
Xiaoyu

> -----Original Message-----
> From: Gao, Liming
> Sent: Monday, July 1, 2019 6:18 PM
> To: Lu, XiaoyuX <xiaoyux.lu at intel.com>; devel at edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng at intel.com>; Yao, Jiewen
> <jiewen.yao at intel.com>
> Subject: RE: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
> 
> Xiaoyu:
>   This is a new module type. Please submit BZ for INF spec update first.
> 
>   And, also submit BZ for code change. In BZ, please specify this type usage
> model.
> 
> Thanks
> Liming
> >-----Original Message-----
> >From: Lu, XiaoyuX
> >Sent: Monday, July 01, 2019 6:13 PM
> >To: devel at edk2.groups.io
> >Cc: Lu, XiaoyuX <xiaoyux.lu at intel.com>; Feng, Bob C
> <bob.c.feng at intel.com>;
> >Gao, Liming <liming.gao at intel.com>; Yao, Jiewen <jiewen.yao at intel.com>
> >Subject: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
> >
> >From: Jiewen Yao <jiewen.yao at intel.com>
> >
> >It can be used to indicate a module can be build to run
> >as OS application and run in OS environment.
> >
> >Cc: Bob Feng <bob.c.feng at intel.com>
> >Cc: Liming Gao <liming.gao at intel.com>
> >Cc: Jiewen Yao <jiewen.yao at intel.com>
> >Signed-off-by: Xiaoyu Lu <xiaoyux.lu at intel.com>
> >---
> > BaseTools/Conf/build_rule.template            |  2 +-
> > BaseTools/Source/Python/AutoGen/AutoGen.py    |  6 ++---
> > BaseTools/Source/Python/AutoGen/GenC.py       | 23 ++++++++++---------
> > BaseTools/Source/Python/Common/DataType.py    |  3 ++-
> > BaseTools/Source/Python/GenFds/FdfParser.py   |  2 +-
> > .../Source/Python/GenFds/FfsInfStatement.py   |  7 +++---
> > .../Source/Python/Workspace/InfBuildData.py   |  2 +-
> > .../Python/Workspace/WorkspaceCommon.py       |  5 ++--
> > 8 files changed, 27 insertions(+), 23 deletions(-)
> >
> >diff --git a/BaseTools/Conf/build_rule.template
> >b/BaseTools/Conf/build_rule.template
> >index 030e74c35a65..db06d3a6b45a 100755
> >--- a/BaseTools/Conf/build_rule.template
> >+++ b/BaseTools/Conf/build_rule.template
> >@@ -321,7 +321,7 @@
> >         "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}
> >
> >
> >-[Static-Library-File.USER_DEFINED]
> >+[Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICATION]
> >     <InputFile>
> >         *.lib
> >
> >diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py
> >b/BaseTools/Source/Python/AutoGen/AutoGen.py
> >index e8e09dc8a366..32b5a5564827 100644
> >--- a/BaseTools/Source/Python/AutoGen/AutoGen.py
> >+++ b/BaseTools/Source/Python/AutoGen/AutoGen.py
> >@@ -2831,7 +2831,7 @@ class ModuleAutoGen(AutoGen):
> >                     # the type of build module is USER_DEFINED.
> >                     # All different DEPEX section tags would be copied into the As
> Built
> >INF file
> >                     # and there would be separate DEPEX section tags
> >-                    if self.ModuleType.upper() == SUP_MODULE_USER_DEFINED:
> >+                    if self.ModuleType.upper() == SUP_MODULE_USER_DEFINED or
> >self.ModuleType.upper() == SUP_MODULE_HOST_APPLICATION:
> >                         if (Arch.upper() == self.Arch.upper()) and
> >(ModuleType.upper() != TAB_ARCH_COMMON):
> >                             DepexList.append({(Arch, ModuleType): DepexExpr})
> >                     else:
> >@@ -2841,7 +2841,7 @@ class ModuleAutoGen(AutoGen):
> >                             DepexList.append({(Arch, ModuleType): DepexExpr})
> >
> >         #the type of build module is USER_DEFINED.
> >-        if self.ModuleType.upper() == SUP_MODULE_USER_DEFINED:
> >+        if self.ModuleType.upper() == SUP_MODULE_USER_DEFINED or
> >self.ModuleType.upper() == SUP_MODULE_HOST_APPLICATION:
> >             for Depex in DepexList:
> >                 for key in Depex:
> >                     DepexStr += '[Depex.%s.%s]\n' % key
> >@@ -4082,7 +4082,7 @@ class ModuleAutoGen(AutoGen):
> >
> >         for ModuleType in self.DepexList:
> >             # Ignore empty [depex] section or [depex] section for
> >SUP_MODULE_USER_DEFINED module
> >-            if len(self.DepexList[ModuleType]) == 0 or ModuleType ==
> >SUP_MODULE_USER_DEFINED:
> >+            if len(self.DepexList[ModuleType]) == 0 or ModuleType ==
> >SUP_MODULE_USER_DEFINED or ModuleType ==
> >SUP_MODULE_HOST_APPLICATION:
> >                 continue
> >
> >             Dpx =
> GenDepex.DependencyExpression(self.DepexList[ModuleType],
> >ModuleType, True)
> >diff --git a/BaseTools/Source/Python/AutoGen/GenC.py
> >b/BaseTools/Source/Python/AutoGen/GenC.py
> >index b527295c0253..4cb776206e90 100644
> >--- a/BaseTools/Source/Python/AutoGen/GenC.py
> >+++ b/BaseTools/Source/Python/AutoGen/GenC.py
> >@@ -776,7 +776,8 @@ gModuleTypeHeaderFile = {
> >     SUP_MODULE_SMM_CORE          :   ["PiDxe.h", "Library/BaseLib.h",
> >"Library/DebugLib.h", "Library/UefiDriverEntryPoint.h"],
> >     SUP_MODULE_MM_STANDALONE     :   ["PiMm.h", "Library/BaseLib.h",
> >"Library/DebugLib.h", "Library/StandaloneMmDriverEntryPoint.h"],
> >     SUP_MODULE_MM_CORE_STANDALONE :  ["PiMm.h",
> "Library/BaseLib.h",
> >"Library/DebugLib.h", "Library/StandaloneMmCoreEntryPoint.h"],
> >-    SUP_MODULE_USER_DEFINED      :   [gBasicHeaderFile,
> >"Library/DebugLib.h"]
> >+    SUP_MODULE_USER_DEFINED      :   [gBasicHeaderFile,
> >"Library/DebugLib.h"],
> >+    SUP_MODULE_HOST_APPLICATION  :   [gBasicHeaderFile,
> >"Library/DebugLib.h"]
> > }
> >
> > ## Autogen internal worker macro to define DynamicEx PCD name includes
> >both the TokenSpaceGuidName
> >@@ -1339,7 +1340,7 @@ def CreateLibraryConstructorCode(Info,
> AutoGenC,
> >AutoGenH):
> >         if Lib.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC]:
> >
> >ConstructorPrototypeString.Append(gLibraryStructorPrototype[SUP_MOD
> UL
> >E_BASE].Replace(Dict))
> >
> >ConstructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_BASE]
> .R
> >eplace(Dict))
> >-        if Info.ModuleType not in [SUP_MODULE_BASE,
> >SUP_MODULE_USER_DEFINED]:
> >+        if Info.ModuleType not in [SUP_MODULE_BASE,
> >SUP_MODULE_USER_DEFINED, SUP_MODULE_HOST_APPLICATION]:
> >             if Lib.ModuleType in SUP_MODULE_SET_PEI:
> >
> >ConstructorPrototypeString.Append(gLibraryStructorPrototype['PEI'].Repla
> ce
> >(Dict))
> >
> >ConstructorCallingString.Append(gLibraryStructorCall['PEI'].Replace(Dict))
> >@@ -1368,7 +1369,7 @@ def CreateLibraryConstructorCode(Info,
> AutoGenC,
> >AutoGenH):
> >     if Info.IsLibrary:
> >         AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}", Dict)
> >     else:
> >-        if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC,
> >SUP_MODULE_USER_DEFINED]:
> >+        if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC,
> >SUP_MODULE_USER_DEFINED, SUP_MODULE_HOST_APPLICATION]:
> >
> AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
> >         elif Info.ModuleType in SUP_MODULE_SET_PEI:
> >             AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
> >@@ -1402,7 +1403,7 @@ def CreateLibraryDestructorCode(Info, AutoGenC,
> >AutoGenH):
> >         if Lib.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC]:
> >
> >DestructorPrototypeString.Append(gLibraryStructorPrototype[SUP_MODU
> LE
> >_BASE].Replace(Dict))
> >
> >DestructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_BASE].
> Re
> >place(Dict))
> >-        if Info.ModuleType not in [SUP_MODULE_BASE,
> >SUP_MODULE_USER_DEFINED]:
> >+        if Info.ModuleType not in [SUP_MODULE_BASE,
> >SUP_MODULE_USER_DEFINED, SUP_MODULE_HOST_APPLICATION]:
> >             if Lib.ModuleType in SUP_MODULE_SET_PEI:
> >
> >DestructorPrototypeString.Append(gLibraryStructorPrototype['PEI'].Replac
> e(
> >Dict))
> >
> >DestructorCallingString.Append(gLibraryStructorCall['PEI'].Replace(Dict))
> >@@ -1431,7 +1432,7 @@ def CreateLibraryDestructorCode(Info, AutoGenC,
> >AutoGenH):
> >     if Info.IsLibrary:
> >         AutoGenH.Append("${BEGIN}${FunctionPrototype}${END}", Dict)
> >     else:
> >-        if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC,
> >SUP_MODULE_USER_DEFINED]:
> >+        if Info.ModuleType in [SUP_MODULE_BASE, SUP_MODULE_SEC,
> >SUP_MODULE_USER_DEFINED, SUP_MODULE_HOST_APPLICATION]:
> >
> AutoGenC.Append(gLibraryString[SUP_MODULE_BASE].Replace(Dict))
> >         elif Info.ModuleType in SUP_MODULE_SET_PEI:
> >             AutoGenC.Append(gLibraryString['PEI'].Replace(Dict))
> >@@ -1449,7 +1450,7 @@ def CreateLibraryDestructorCode(Info, AutoGenC,
> >AutoGenH):
> > #   @param      AutoGenH    The TemplateString object for header file
> > #
> > def CreateModuleEntryPointCode(Info, AutoGenC, AutoGenH):
> >-    if Info.IsLibrary or Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_SEC]:
> >+    if Info.IsLibrary or Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_SEC]:
> >         return
> >     #
> >     # Module Entry Points
> >@@ -1529,7 +1530,7 @@ def CreateModuleEntryPointCode(Info,
> AutoGenC,
> >AutoGenH):
> > #   @param      AutoGenH    The TemplateString object for header file
> > #
> > def CreateModuleUnloadImageCode(Info, AutoGenC, AutoGenH):
> >-    if Info.IsLibrary or Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_BASE, SUP_MODULE_SEC]:
> >+    if Info.IsLibrary or Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_BASE,
> >SUP_MODULE_SEC]:
> >         return
> >     #
> >     # Unload Image Handlers
> >@@ -1549,7 +1550,7 @@ def CreateModuleUnloadImageCode(Info,
> >AutoGenC, AutoGenH):
> > #   @param      AutoGenH    The TemplateString object for header file
> > #
> > def CreateGuidDefinitionCode(Info, AutoGenC, AutoGenH):
> >-    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_BASE]:
> >+    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_BASE]:
> >         GuidType = TAB_GUID
> >     else:
> >         GuidType = "EFI_GUID"
> >@@ -1573,7 +1574,7 @@ def CreateGuidDefinitionCode(Info, AutoGenC,
> >AutoGenH):
> > #   @param      AutoGenH    The TemplateString object for header file
> > #
> > def CreateProtocolDefinitionCode(Info, AutoGenC, AutoGenH):
> >-    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_BASE]:
> >+    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_BASE]:
> >         GuidType = TAB_GUID
> >     else:
> >         GuidType = "EFI_GUID"
> >@@ -1597,7 +1598,7 @@ def CreateProtocolDefinitionCode(Info,
> AutoGenC,
> >AutoGenH):
> > #   @param      AutoGenH    The TemplateString object for header file
> > #
> > def CreatePpiDefinitionCode(Info, AutoGenC, AutoGenH):
> >-    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_BASE]:
> >+    if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_BASE]:
> >         GuidType = TAB_GUID
> >     else:
> >         GuidType = "EFI_GUID"
> >@@ -1634,7 +1635,7 @@ def CreatePcdCode(Info, AutoGenC, AutoGenH):
> >     # Add extern declarations to AutoGen.h if one or more Token Space
> GUIDs
> >were found
> >     if TokenSpaceList:
> >         AutoGenH.Append("\n// Definition of PCD Token Space GUIDs used in
> >this module\n\n")
> >-        if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_BASE]:
> >+        if Info.ModuleType in [SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_BASE]:
> >             GuidType = TAB_GUID
> >         else:
> >             GuidType = "EFI_GUID"
> >diff --git a/BaseTools/Source/Python/Common/DataType.py
> >b/BaseTools/Source/Python/Common/DataType.py
> >index 83ec36c2350d..8ae1bd28fabf 100644
> >--- a/BaseTools/Source/Python/Common/DataType.py
> >+++ b/BaseTools/Source/Python/Common/DataType.py
> >@@ -66,13 +66,14 @@ SUP_MODULE_DXE_SMM_DRIVER =
> >'DXE_SMM_DRIVER'
> > SUP_MODULE_UEFI_DRIVER = 'UEFI_DRIVER'
> > SUP_MODULE_UEFI_APPLICATION = 'UEFI_APPLICATION'
> > SUP_MODULE_USER_DEFINED = 'USER_DEFINED'
> >+SUP_MODULE_HOST_APPLICATION = 'HOST_APPLICATION'
> > SUP_MODULE_SMM_CORE = 'SMM_CORE'
> > SUP_MODULE_MM_STANDALONE = 'MM_STANDALONE'
> > SUP_MODULE_MM_CORE_STANDALONE = 'MM_CORE_STANDALONE'
> >
> > SUP_MODULE_LIST = [SUP_MODULE_BASE, SUP_MODULE_SEC,
> >SUP_MODULE_PEI_CORE, SUP_MODULE_PEIM, SUP_MODULE_DXE_CORE,
> >SUP_MODULE_DXE_DRIVER, \
> >                    SUP_MODULE_DXE_RUNTIME_DRIVER,
> >SUP_MODULE_DXE_SAL_DRIVER, SUP_MODULE_DXE_SMM_DRIVER,
> >SUP_MODULE_UEFI_DRIVER, \
> >-                   SUP_MODULE_UEFI_APPLICATION,
> SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_SMM_CORE, SUP_MODULE_MM_STANDALONE,
> >SUP_MODULE_MM_CORE_STANDALONE]
> >+                   SUP_MODULE_UEFI_APPLICATION,
> SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION, SUP_MODULE_SMM_CORE,
> >SUP_MODULE_MM_STANDALONE,
> SUP_MODULE_MM_CORE_STANDALONE]
> > SUP_MODULE_LIST_STRING = TAB_VALUE_SPLIT.join(SUP_MODULE_LIST)
> > SUP_MODULE_SET_PEI = {SUP_MODULE_PEIM, SUP_MODULE_PEI_CORE}
> >
> >diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py
> >b/BaseTools/Source/Python/GenFds/FdfParser.py
> >index fb5fd85e0a82..9b04a76af8c5 100644
> >--- a/BaseTools/Source/Python/GenFds/FdfParser.py
> >+++ b/BaseTools/Source/Python/GenFds/FdfParser.py
> >@@ -3543,7 +3543,7 @@ class FdfParser:
> >                 SUP_MODULE_DXE_CORE, SUP_MODULE_DXE_DRIVER,
> >                 SUP_MODULE_DXE_SAL_DRIVER,
> SUP_MODULE_DXE_SMM_DRIVER,
> >                 SUP_MODULE_DXE_RUNTIME_DRIVER,
> SUP_MODULE_UEFI_DRIVER,
> >-                SUP_MODULE_UEFI_APPLICATION,
> SUP_MODULE_USER_DEFINED,
> >+                SUP_MODULE_UEFI_APPLICATION,
> SUP_MODULE_USER_DEFINED,
> >SUP_MODULE_HOST_APPLICATION,
> >                 TAB_DEFAULT, SUP_MODULE_BASE,
> >                 EDK_COMPONENT_TYPE_SECURITY_CORE,
> >                 EDK_COMPONENT_TYPE_COMBINED_PEIM_DRIVER,
> >diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> >b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> >index cd3b0f647793..ebb93b14c4ff 100644
> >--- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> >+++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py
> >@@ -25,6 +25,7 @@ from . import RuleComplexFile
> > from CommonDataClass.FdfClass import FfsInfStatementClassObject
> > from Common.MultipleWorkspace import MultipleWorkspace as mws
> > from Common.DataType import SUP_MODULE_USER_DEFINED
> >+from Common.DataType import SUP_MODULE_HOST_APPLICATION
> > from Common.StringUtils import *
> > from Common.Misc import PathClass
> > from Common.Misc import GuidStructureByteArrayToGuidString
> >@@ -84,12 +85,12 @@ class FfsInfStatement(FfsInfStatementClassObject):
> >                 self.FinalTargetSuffixMap.setdefault(os.path.splitext(File)[1],
> >[]).append(File)
> >
> >             # Check if current INF module has DEPEX
> >-            if '.depex' not in self.FinalTargetSuffixMap and
> >self.InfModule.ModuleType != SUP_MODULE_USER_DEFINED \
> >+            if '.depex' not in self.FinalTargetSuffixMap and
> >self.InfModule.ModuleType != SUP_MODULE_USER_DEFINED and
> >self.InfModule.ModuleType != SUP_MODULE_HOST_APPLICATION \
> >                 and not self.InfModule.DxsFile and not self.InfModule.LibraryClass:
> >                 ModuleType = self.InfModule.ModuleType
> >                 PlatformDataBase =
> >GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.Activ
> eP
> >latform, self.CurrentArch, GenFdsGlobalVariable.TargetName,
> >GenFdsGlobalVariable.ToolChainTag]
> >
> >-                if ModuleType != SUP_MODULE_USER_DEFINED:
> >+                if ModuleType != SUP_MODULE_USER_DEFINED and
> ModuleType !=
> >SUP_MODULE_HOST_APPLICATION:
> >                     for LibraryClass in PlatformDataBase.LibraryClasses.GetKeys():
> >                         if LibraryClass.startswith("NULL") and
> >PlatformDataBase.LibraryClasses[LibraryClass, ModuleType]:
> >                             self.InfModule.LibraryClasses[LibraryClass] =
> >PlatformDataBase.LibraryClasses[LibraryClass, ModuleType]
> >@@ -378,7 +379,7 @@ class FfsInfStatement(FfsInfStatementClassObject):
> >         #
> >         # Only patch file if FileType is PE32 or ModuleType is USER_DEFINED
> >         #
> >-        if FileType != BINARY_FILE_TYPE_PE32 and self.ModuleType !=
> >SUP_MODULE_USER_DEFINED:
> >+        if FileType != BINARY_FILE_TYPE_PE32 and self.ModuleType !=
> >SUP_MODULE_USER_DEFINED and self.ModuleType !=
> >SUP_MODULE_HOST_APPLICATION:
> >             return EfiFile
> >
> >         #
> >diff --git a/BaseTools/Source/Python/Workspace/InfBuildData.py
> >b/BaseTools/Source/Python/Workspace/InfBuildData.py
> >index e66b7c983278..60970cd92836 100644
> >--- a/BaseTools/Source/Python/Workspace/InfBuildData.py
> >+++ b/BaseTools/Source/Python/Workspace/InfBuildData.py
> >@@ -748,7 +748,7 @@ class InfBuildData(ModuleBuildClassObject):
> >                 EdkLogger.error('build', RESOURCE_NOT_AVAILABLE, "No [Depex]
> >section or no valid expression in [Depex] section for [%s] module" \
> >                                 % self.ModuleType, File=self.MetaFile)
> >
> >-        if len(RecordList) != 0 and self.ModuleType ==
> >SUP_MODULE_USER_DEFINED:
> >+        if len(RecordList) != 0 and (self.ModuleType ==
> >SUP_MODULE_USER_DEFINED or self.ModuleType ==
> >SUP_MODULE_HOST_APPLICATION):
> >             for Record in RecordList:
> >                 if Record[4] not in [SUP_MODULE_PEIM,
> SUP_MODULE_DXE_DRIVER,
> >SUP_MODULE_DXE_SMM_DRIVER]:
> >                     EdkLogger.error('build', FORMAT_INVALID,
> >diff --git a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
> >b/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
> >index 0cc83110efd5..41ae684d3ee9 100644
> >--- a/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
> >+++ b/BaseTools/Source/Python/Workspace/WorkspaceCommon.py
> >@@ -8,6 +8,7 @@
> > from __future__ import absolute_import
> > from collections import OrderedDict, defaultdict
> > from Common.DataType import SUP_MODULE_USER_DEFINED
> >+from Common.DataType import SUP_MODULE_HOST_APPLICATION
> > from .BuildClassObject import LibraryClassObject
> > import Common.GlobalData as GlobalData
> > from Workspace.BuildClassObject import StructurePcd
> >@@ -94,7 +95,7 @@ def GetModuleLibInstances(Module, Platform,
> >BuildDatabase, Arch, Target, Toolcha
> >     # If a module has a MODULE_TYPE of USER_DEFINED,
> >     # do not link in NULL library class instances from the global
> [LibraryClasses.*]
> >sections.
> >     #
> >-    if Module.ModuleType != SUP_MODULE_USER_DEFINED:
> >+    if Module.ModuleType != SUP_MODULE_USER_DEFINED and
> >Module.ModuleType != SUP_MODULE_HOST_APPLICATION:
> >         for LibraryClass in Platform.LibraryClasses.GetKeys():
> >             if LibraryClass.startswith("NULL") and
> >Platform.LibraryClasses[LibraryClass, Module.ModuleType]:
> >                 Module.LibraryClasses[LibraryClass] =
> >Platform.LibraryClasses[LibraryClass, Module.ModuleType]
> >@@ -137,7 +138,7 @@ def GetModuleLibInstances(Module, Platform,
> >BuildDatabase, Arch, Target, Toolcha
> >
> >LibraryModule.LibraryClass.append(LibraryClassObject(LibraryClassName,
> >[ModuleType]))
> >                 elif LibraryModule.LibraryClass is None \
> >                      or len(LibraryModule.LibraryClass) == 0 \
> >-                     or (ModuleType != SUP_MODULE_USER_DEFINED
> >+                     or (ModuleType != SUP_MODULE_USER_DEFINED and
> >ModuleType != SUP_MODULE_HOST_APPLICATION
> >                          and ModuleType not in
> >LibraryModule.LibraryClass[0].SupModList):
> >                     # only USER_DEFINED can link against any library instance despite
> of
> >its SupModList
> >                     if FileName:
> >--
> >2.17.1


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43208): https://edk2.groups.io/g/devel/message/43208
Mute This Topic: https://groups.io/mt/32269882/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list