From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: liming.gao@intel.com) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by groups.io with SMTP; Sun, 07 Jul 2019 18:14:56 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 07 Jul 2019 18:14:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,464,1557212400"; d="scan'208";a="170141420" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga006.jf.intel.com with ESMTP; 07 Jul 2019 18:14:55 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sun, 7 Jul 2019 18:14:55 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Sun, 7 Jul 2019 18:14:54 -0700 Received: from shsmsx106.ccr.corp.intel.com (10.239.4.159) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Sun, 7 Jul 2019 18:14:54 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX106.ccr.corp.intel.com ([169.254.10.240]) with mapi id 14.03.0439.000; Mon, 8 Jul 2019 09:14:53 +0800 From: "Liming Gao" To: "Yao, Jiewen" , "Lu, XiaoyuX" , "devel@edk2.groups.io" CC: "Feng, Bob C" 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/WJIsaYc6c4PkulKmFB4Cj1MKa/6/Ag//99IYCAAIsN4A== Date: Mon, 8 Jul 2019 01:14:52 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A3634@SHSMSX104.ccr.corp.intel.com> References: <20190701101308.4994-1-xiaoyux.lu@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A35CD@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F6F8165@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F6F8165@shsmsx102.ccr.corp.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 I see the change in build_rule.txt. I understand its output file is decided= by this rule. Right?=20 [Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICATION] *.lib $(MAKE_FILE) $(DEBUG_DIR)(+)$(MODULE_NAME) "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) @$(STATIC_LIBRARY_FILES_LI= ST) "$(DLINK)" $(DLINK_FLAGS) -Wl,--start-group,@$(STATIC_LIBRARY_FILES= _LIST),--end-group $(DLINK2_FLAGS) "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via $(STATIC_L= IBRARY_FILES_LIST) $(DLINK2_FLAGS) #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) $(STATIC_LIBRARY= _FILES) $(DLINK2_FLAGS) "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_SPATH) -filelist $(STA= TIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) =20 Thanks Liming >-----Original Message----- >From: Yao, Jiewen >Sent: Monday, July 08, 2019 8:53 AM >To: Gao, Liming ; Lu, XiaoyuX = ; >devel@edk2.groups.io >Cc: Feng, Bob C >Subject: RE: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. > >Currently, it is xxx.efi. > >Thank you >Yao Jiewen > >> -----Original Message----- >> From: Gao, Liming >> Sent: Monday, July 8, 2019 8:43 AM >> 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. >> >> Xiaoyu: >> I want to confirm what output for HOST_APPLICATION module will be >> used. Xxx.dll or xxx.efi? >> >> 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 into the As Built >> >INF file >> > # and there would be separate DEPEX section >> tags >> >- 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: >> > if (Arch.upper() =3D=3D self.Arch.upper()) and >> >(ModuleType.upper() !=3D 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() =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[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 =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_MOD >U >> L >> >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'].Repl >a >> ce >> >(Dict)) >> > >> >ConstructorCallingString.Append(gLibraryStructorCall['PEI'].Replace(Dic= t)) >> >@@ -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_MOD >UL >> E >> >_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'].Repla >c >> 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 =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 >> 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 =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(File)[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.LibraryClass: >> > ModuleType =3D self.InfModule.ModuleType >> > PlatformDataBase =3D >> >GenFdsGlobalVariable.WorkSpace.BuildObject[GenFdsGlobalVariable.Acti >v >> eP >> >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.GetKeys(): >> > 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_DEFINED >> > # >> >- 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 [Depex] >> >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_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 !=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 >> instance despite of >> >its SupModList >> > if FileName: >> >-- >> >2.17.1