From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.65, mailfrom: liming.gao@intel.com) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by groups.io with SMTP; Mon, 01 Jul 2019 03:17:52 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Jul 2019 03:17:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,439,1557212400"; d="scan'208";a="165298834" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by fmsmga007.fm.intel.com with ESMTP; 01 Jul 2019 03:17:49 -0700 Received: from fmsmsx117.amr.corp.intel.com (10.18.116.17) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 1 Jul 2019 03:17:49 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by fmsmsx117.amr.corp.intel.com (10.18.116.17) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 1 Jul 2019 03:17:48 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.232]) with mapi id 14.03.0439.000; Mon, 1 Jul 2019 18:17:47 +0800 From: "Liming Gao" To: "Lu, XiaoyuX" , "devel@edk2.groups.io" CC: "Feng, Bob C" , "Yao, Jiewen" Subject: Re: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. Thread-Topic: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. Thread-Index: AQHVL/WJIsaYc6c4PkulKmFB4Cj1MKa1jDtA Date: Mon, 1 Jul 2019 10:17:47 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E49C54D@SHSMSX104.ccr.corp.intel.com> References: <20190701101308.4994-1-xiaoyux.lu@intel.com> In-Reply-To: <20190701101308.4994-1-xiaoyux.lu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: liming.gao@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Xiaoyu: This is a new module type. Please submit BZ for INF spec update first.=20 And, also submit BZ for code change. In BZ, please specify this type usag= e model.=20 Thanks Liming >-----Original Message----- >From: Lu, XiaoyuX >Sent: Monday, July 01, 2019 6:13 PM >To: devel@edk2.groups.io >Cc: Lu, XiaoyuX ; Feng, Bob C = ; >Gao, Liming ; Yao, Jiewen >Subject: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. > >From: Jiewen Yao > >It can be used to indicate a module can be build to run >as OS application and run in OS environment. > >Cc: Bob Feng >Cc: Liming Gao >Cc: Jiewen Yao >Signed-off-by: Xiaoyu Lu >--- > 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] > > *.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 in= to the As Built >INF file > # and there would be separate DEPEX section tags >- if self.ModuleType.upper() =3D=3D SUP_MODULE_USER_DEF= INED: >+ if self.ModuleType.upper() =3D=3D SUP_MODULE_USER_DEF= INED or >self.ModuleType.upper() =3D=3D SUP_MODULE_HOST_APPLICATION: > if (Arch.upper() =3D=3D self.Arch.upper()) and >(ModuleType.upper() !=3D TAB_ARCH_COMMON): > DepexList.append({(Arch, ModuleType): DepexEx= pr}) > else: >@@ -2841,7 +2841,7 @@ class ModuleAutoGen(AutoGen): > DepexList.append({(Arch, ModuleType): DepexEx= pr}) > > #the type of build module is USER_DEFINED. >- if self.ModuleType.upper() =3D=3D SUP_MODULE_USER_DEFINED: >+ if self.ModuleType.upper() =3D=3D SUP_MODULE_USER_DEFINED or >self.ModuleType.upper() =3D=3D SUP_MODULE_HOST_APPLICATION: > for Depex in DepexList: > for key in Depex: > DepexStr +=3D '[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]) =3D=3D 0 or ModuleType =3D= =3D >SUP_MODULE_USER_DEFINED: >+ if len(self.DepexList[ModuleType]) =3D=3D 0 or ModuleType =3D= =3D >SUP_MODULE_USER_DEFINED or ModuleType =3D=3D >SUP_MODULE_HOST_APPLICATION: > continue > > Dpx =3D GenDepex.DependencyExpression(self.DepexList[ModuleTy= pe], >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 =3D { > 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_MODUL >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'].Replace >(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_MODULE >_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'].Replace( >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 =3D TAB_GUID > else: > GuidType =3D "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 =3D TAB_GUID > else: > GuidType =3D "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 =3D TAB_GUID > else: > GuidType =3D "EFI_GUID" >@@ -1634,7 +1635,7 @@ def CreatePcdCode(Info, AutoGenC, AutoGenH): > # Add extern declarations to AutoGen.h if one or more Token Space GUI= Ds >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 =3D TAB_GUID > else: > GuidType =3D "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 =3D >'DXE_SMM_DRIVER' > SUP_MODULE_UEFI_DRIVER =3D 'UEFI_DRIVER' > SUP_MODULE_UEFI_APPLICATION =3D 'UEFI_APPLICATION' > SUP_MODULE_USER_DEFINED =3D 'USER_DEFINED' >+SUP_MODULE_HOST_APPLICATION =3D 'HOST_APPLICATION' > SUP_MODULE_SMM_CORE =3D 'SMM_CORE' > SUP_MODULE_MM_STANDALONE =3D 'MM_STANDALONE' > SUP_MODULE_MM_CORE_STANDALONE =3D 'MM_CORE_STANDALONE' > > SUP_MODULE_LIST =3D [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 =3D TAB_VALUE_SPLIT.join(SUP_MODULE_LIST) > SUP_MODULE_SET_PEI =3D {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(Fil= e)[1], >[]).append(File) > > # Check if current INF module has DEPEX >- if '.depex' not in self.FinalTargetSuffixMap and >self.InfModule.ModuleType !=3D SUP_MODULE_USER_DEFINED \ >+ if '.depex' not in self.FinalTargetSuffixMap and >self.InfModule.ModuleType !=3D SUP_MODULE_USER_DEFINED and >self.InfModule.ModuleType !=3D SUP_MODULE_HOST_APPLICATION \ > and not self.InfModule.DxsFile and not self.InfModule.Lib= raryClass: > ModuleType =3D self.InfModule.ModuleType > PlatformDataBase =3D >GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.ActiveP >latform, self.CurrentArch, GenFdsGlobalVariable.TargetName, >GenFdsGlobalVariable.ToolChainTag] > >- if ModuleType !=3D SUP_MODULE_USER_DEFINED: >+ if ModuleType !=3D SUP_MODULE_USER_DEFINED and ModuleType= !=3D >SUP_MODULE_HOST_APPLICATION: > for LibraryClass in PlatformDataBase.LibraryClasses.G= etKeys(): > if LibraryClass.startswith("NULL") and >PlatformDataBase.LibraryClasses[LibraryClass, ModuleType]: > self.InfModule.LibraryClasses[LibraryClass] = =3D >PlatformDataBase.LibraryClasses[LibraryClass, ModuleType] >@@ -378,7 +379,7 @@ class FfsInfStatement(FfsInfStatementClassObject): > # > # Only patch file if FileType is PE32 or ModuleType is USER_DEFIN= ED > # >- if FileType !=3D BINARY_FILE_TYPE_PE32 and self.ModuleType !=3D >SUP_MODULE_USER_DEFINED: >+ if FileType !=3D BINARY_FILE_TYPE_PE32 and self.ModuleType !=3D >SUP_MODULE_USER_DEFINED and self.ModuleType !=3D >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 [Dep= ex] >section or no valid expression in [Depex] section for [%s] module" \ > % self.ModuleType, File=3Dself.MetaFile) > >- if len(RecordList) !=3D 0 and self.ModuleType =3D=3D >SUP_MODULE_USER_DEFINED: >+ if len(RecordList) !=3D 0 and (self.ModuleType =3D=3D >SUP_MODULE_USER_DEFINED or self.ModuleType =3D=3D >SUP_MODULE_HOST_APPLICATION): > for Record in RecordList: > if Record[4] not in [SUP_MODULE_PEIM, SUP_MODULE_DXE_DRIV= ER, >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 [Librar= yClasses.*] >sections. > # >- if Module.ModuleType !=3D SUP_MODULE_USER_DEFINED: >+ if Module.ModuleType !=3D SUP_MODULE_USER_DEFINED and >Module.ModuleType !=3D SUP_MODULE_HOST_APPLICATION: > for LibraryClass in Platform.LibraryClasses.GetKeys(): > if LibraryClass.startswith("NULL") and >Platform.LibraryClasses[LibraryClass, Module.ModuleType]: > Module.LibraryClasses[LibraryClass] =3D >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) =3D=3D 0 \ >- or (ModuleType !=3D SUP_MODULE_USER_DEFINED >+ or (ModuleType !=3D SUP_MODULE_USER_DEFINED and >ModuleType !=3D SUP_MODULE_HOST_APPLICATION > and ModuleType not in >LibraryModule.LibraryClass[0].SupModList): > # only USER_DEFINED can link against any library inst= ance despite of >its SupModList > if FileName: >-- >2.17.1