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 <jiewen....@intel.com>; Lu, XiaoyuX > <xiaoyux...@intel.com>; devel@edk2.groups.io > Cc: Feng, Bob C <bob.c.f...@intel.com> > 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_APPLICATION] > <InputFile> > *.lib > > <ExtraDependency> > $(MAKE_FILE) > > <OutputFile> > $(DEBUG_DIR)(+)$(MODULE_NAME) > > <Command.MSFT, Command.INTEL> > "$(DLINK)" $(DLINK_FLAGS) $(DLINK_SPATH) > @$(STATIC_LIBRARY_FILES_LIST) > > <Command.GCC> > "$(DLINK)" $(DLINK_FLAGS) > -Wl,--start-group,@$(STATIC_LIBRARY_FILES_LIST),--end-group > $(DLINK2_FLAGS) > > <Command.RVCT> > "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) --via > $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) > > <Command.RVCTCYGWIN> > #$(STATIC_LIBRARY_FILES_LIST) has the wrong paths for cygwin > "$(DLINK)" $(DLINK_FLAGS) -o ${dst} $(DLINK_SPATH) > $(STATIC_LIBRARY_FILES) $(DLINK2_FLAGS) > > <Command.XCODE> > "$(DLINK)" -o ${dst} $(DLINK_FLAGS) $(DLINK_SPATH) -filelist > $(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) > > > Thanks > Liming > >-----Original Message----- > >From: Yao, Jiewen > >Sent: Monday, July 08, 2019 8:53 AM > >To: Gao, Liming <liming....@intel.com>; Lu, XiaoyuX > <xiaoyux...@intel.com>; > >devel@edk2.groups.io > >Cc: Feng, Bob C <bob.c.f...@intel.com> > >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 <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: > >> 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 <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_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'].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_MO > D > >UL > >> E > >> >_BASE].Replace(Dict)) > >> > > >> >DestructorCallingString.Append(gLibraryStructorCall[SUP_MODULE_BAS > 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'].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.Ac > ti > >v > >> 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(LibraryClassNam > e, > >> >[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 (#43392): https://edk2.groups.io/g/devel/message/43392 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] -=-=-=-=-=-=-=-=-=-=-=-