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.120, mailfrom: liming.gao@intel.com) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by groups.io with SMTP; Fri, 12 Jul 2019 06:14:04 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Jul 2019 06:14:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,482,1557212400"; d="scan'208";a="177499096" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga002.jf.intel.com with ESMTP; 12 Jul 2019 06:14:02 -0700 Received: from fmsmsx120.amr.corp.intel.com (10.18.124.208) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 12 Jul 2019 06:14:02 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx120.amr.corp.intel.com (10.18.124.208) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 12 Jul 2019 06:14:02 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.174]) with mapi id 14.03.0439.000; Fri, 12 Jul 2019 21:14:00 +0800 From: "Liming Gao" To: "devel@edk2.groups.io" , "Gao, Liming" , "Yao, Jiewen" , "Lu, XiaoyuX" CC: "Feng, Bob C" Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. Thread-Topic: [edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type. Thread-Index: AQHVNh886qde3J0dT06BaofmdC3TvabG+vYA Date: Fri, 12 Jul 2019 13:13:59 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A7511@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> <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A3634@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F6F8450@shsmsx102.ccr.corp.intel.com> <15AFA92770BB0C26.21445@groups.io> In-Reply-To: <15AFA92770BB0C26.21445@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiZTA3NTE0YWMtOGY2ZS00YTVjLWJjMGYtMGIxN2MzZjYzZWQzIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiSXdqNG5ZRFNrRnRPdThMaEdFY3Uxc0E0c3VFS0JMbVNRZGxwVzdTS0FTVUpGUVhLYW9qS1ltZmdiOW51OHRNNyJ9 dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action 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 Push @a79841a0244ab2afd1efc3b9d4cc91e27fa90d71 > -----Original Message----- > From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Li= ming Gao > Sent: Tuesday, July 9, 2019 2:26 PM > To: Yao, Jiewen ; Lu, XiaoyuX ; devel@edk2.groups.io > Cc: Feng, Bob C > Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION= module type. >=20 > OK. I have no other comments. Reviewed-by: Liming Gao >=20 > Thanks > Liming > > -----Original Message----- > > From: Yao, Jiewen > > Sent: Monday, July 8, 2019 10:10 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 typ= e. > > > > Right. So far we just duplicate what USER_DEFINED does. > > > > With more and more example, we will see if and how we enhance that. > > But it is good enough now. > > > > Thank you > > Yao Jiewen > > > > > -----Original Message----- > > > From: Gao, Liming > > > Sent: Monday, July 8, 2019 9:15 AM > > > 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. > > > > > > I see the change in build_rule.txt. I understand its output file is = decided by > > > this rule. Right? > > > > > > [Static-Library-File.USER_DEFINED, Static-Library-File.HOST_APPLICAT= ION] > > > > > > *.lib > > > > > > > > > $(MAKE_FILE) > > > > > > > > > $(DEBUG_DIR)(+)$(MODULE_NAME) > > > > > > > > > "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) > > > @$(STATIC_LIBRARY_FILES_LIST) > > > > > > > > > "$(DLINK)" $(DLINK_FLAGS) > > > -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group > > > $(DLINK2_FLAGS) > > > > > > > > > "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via > > > $(STATIC_LIBRARY_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) -filelis= t > > > $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) > > > > > > > > > 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 modul= e > > > >> 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_DEFIN= ED: > > > >> >+ if self.ModuleType.upper() =3D=3D SUP_MODULE_USER_DEFIN= ED > > > 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 f= or > > > >> >SUP_MODULE_USER_DEFINED module > > > >> >- if len(self.DepexList[ModuleType]) =3D=3D 0 or Modu= leType > > > =3D=3D > > > >> >SUP_MODULE_USER_DEFINED: > > > >> >+ if len(self.DepexList[ModuleType]) =3D=3D 0 or Modu= leType > > > =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_= MO > > > D > > > >U > > > >> L > > > >> >E_BASE].Replace(Dict)) > > > >> > > > > >> >ConstructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_= BA > > > SE] > > > >> .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= '].Re > > > pl > > > >a > > > >> ce > > > >> >(Dict)) > > > >> > > > > >> >ConstructorCallingString.Append(gLibraryStructorCall['PEI'].Repl= ace(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_M= O > > > D > > > >UL > > > >> E > > > >> >_BASE].Replace(Dict)) > > > >> > > > > >> >DestructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_B= AS > > > E]. > > > >> 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'= ].Repl > > > a > > > >c > > > >> e( > > > >> >Dict)) > > > >> > > > > >> >DestructorCallingString.Append(gLibraryStructorCall['PEI'].Repla= ce(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.= Ac > > > ti > > > >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] modul= e" \ > > > >> > % 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 glob= al > > > >> [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(LibraryClas= sNam > > > e, > > > >> >[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 >=20 >=20 >=20