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...@intel.com>; devel@edk2.groups.io > Cc: Feng, Bob C <bob.c.f...@intel.com>; Yao, Jiewen > <jiewen....@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@edk2.groups.io > >Cc: Lu, XiaoyuX <xiaoyux...@intel.com>; Feng, Bob C > <bob.c.f...@intel.com>; > >Gao, Liming <liming....@intel.com>; Yao, Jiewen <jiewen....@intel.com> > >Subject: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. > > > >From: Jiewen Yao <jiewen....@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.f...@intel.com> > >Cc: Liming Gao <liming....@intel.com> > >Cc: Jiewen Yao <jiewen....@intel.com> > >Signed-off-by: Xiaoyu Lu <xiaoyux...@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/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-