public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Liming Gao" <liming.gao@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"Gao, Liming" <liming.gao@intel.com>,
	"Yao, Jiewen" <jiewen.yao@intel.com>,
	"Lu, XiaoyuX" <xiaoyux.lu@intel.com>
Cc: "Feng, Bob C" <bob.c.feng@intel.com>
Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
Date: Fri, 12 Jul 2019 13:13:59 +0000	[thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E4A7511@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <15AFA92770BB0C26.21445@groups.io>

Push @a79841a0244ab2afd1efc3b9d4cc91e27fa90d71

> -----Original Message-----
> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On Behalf Of Liming Gao
> Sent: Tuesday, July 9, 2019 2:26 PM
> To: Yao, Jiewen <jiewen.yao@intel.com>; Lu, XiaoyuX <xiaoyux.lu@intel.com>; devel@edk2.groups.io
> Cc: Feng, Bob C <bob.c.feng@intel.com>
> Subject: Re: [edk2-devel] [PATCH v1 1/1] BaseTools: Add HOST_APPLICATION module type.
> 
> OK. I have no other comments. Reviewed-by: Liming Gao <liming.gao@intel.com>
> 
> Thanks
> Liming
> > -----Original Message-----
> > From: Yao, Jiewen
> > Sent: Monday, July 8, 2019 10:10 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.
> >
> > 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.yao@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.
> > >
> > > 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_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
> 
> 
> 


      parent reply	other threads:[~2019-07-12 13: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
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           ` Liming Gao [this message]

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=4A89E2EF3DFEDB4C8BFDE51014F606A14E4A7511@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