From: "Liming Gao" <liming.gao@intel.com>
To: "Yao, Jiewen" <jiewen.yao@intel.com>,
"Lu, XiaoyuX" <xiaoyux.lu@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Feng, Bob C" <bob.c.feng@intel.com>
Subject: Re: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
Date: Mon, 8 Jul 2019 01:14:52 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A3634@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F6F8165@shsmsx102.ccr.corp.intel.com>
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.gao@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>;
>devel@edk2.groups.io
>Cc: Feng, Bob C <bob.c.feng@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.lu@intel.com>; devel@edk2.groups.io
>> Cc: Feng, Bob C <bob.c.feng@intel.com>; Yao, Jiewen
>> <jiewen.yao@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.lu@intel.com>; Feng, Bob C
>> <bob.c.feng@intel.com>;
>> >Gao, Liming <liming.gao@intel.com>; Yao, Jiewen
>> <jiewen.yao@intel.com>
>> >Subject: [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
>> >
>> >From: Jiewen Yao <jiewen.yao@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.feng@intel.com>
>> >Cc: Liming Gao <liming.gao@intel.com>
>> >Cc: Jiewen Yao <jiewen.yao@intel.com>
>> >Signed-off-by: Xiaoyu Lu <xiaoyux.lu@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
>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(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_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 = 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.Acti
>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(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
next prev parent reply other threads:[~2019-07-08 1:14 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-01 10:13 [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type Xiaoyu Lu
2019-07-01 10:17 ` Liming Gao
2019-07-03 8:41 ` Xiaoyu Lu
2019-07-08 0:43 ` Liming Gao
2019-07-08 0:53 ` Yao, Jiewen
2019-07-08 1:14 ` Liming Gao [this message]
2019-07-08 2:09 ` Yao, Jiewen
2019-07-09 6:26 ` Liming Gao
[not found] ` <15AFA92770BB0C26.21445@groups.io>
2019-07-12 13:13 ` [edk2-devel] " Liming Gao
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4A89E2EF3DFEDB4C8BFDE51014F606A14E4A3634@SHSMSX104.ccr.corp.intel.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox