From 333ba578fef4dff8921051410c5b56f63e7eeadb Mon Sep 17 00:00:00 2001 From: Yonghong Zhu Date: Wed, 21 Sep 2016 10:39:11 +0800 Subject: BaseTools: support generating image package from BMP/JPEG/PNG files BaseTools add support to generating image package from BMP/JPEG/PNG files. 1) New file type *.idf Image definition file to describe HII image resource. It is the ASCII text file, and includes one or more "#image IMAGE_ID [TRANSPARENT] ImageFileName". 2) New IMAGE_TOKEN macro is used to refer to IMAGE_ID. 3) New AutoGen header file $(MODULE_NAME)ImgDefs.h to include the generated ImageId definition. 4) New $(MODULE_NAME)Idf.hpk or $(MODULE_NAME)Images are generated as the output binary HII image package. Cc: Liming Gao Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Yonghong Zhu Reviewed-by: Liming Gao --- BaseTools/Source/Python/AutoGen/AutoGen.py | 31 ++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'BaseTools/Source/Python/AutoGen/AutoGen.py') diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 79bc7c6ced..f35ae252b0 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -72,7 +72,8 @@ gAutoGenHeaderFileName = "AutoGen.h" gAutoGenStringFileName = "%(module_name)sStrDefs.h" gAutoGenStringFormFileName = "%(module_name)sStrDefs.hpk" gAutoGenDepexFileName = "%(module_name)s.depex" - +gAutoGenImageDefFileName = "%(module_name)sImgDefs.h" +gAutoGenIdfFileName = "%(module_name)sIdf.hpk" gInfSpecVersion = "0x00010017" # @@ -2590,6 +2591,7 @@ class ModuleAutoGen(AutoGen): self._IncludePathLength = 0 self._AutoGenFileList = None self._UnicodeFileList = None + self._IdfFileList = None self._SourceFileList = None self._ObjectFileList = None self._BinaryFileList = None @@ -3114,6 +3116,15 @@ class ModuleAutoGen(AutoGen): self._UnicodeFileList = [] return self._UnicodeFileList + ## Return the list of Image Definition files + def _GetIdfFileList(self): + if self._IdfFileList == None: + if TAB_IMAGE_FILE in self.FileTypes: + self._IdfFileList = self.FileTypes[TAB_IMAGE_FILE] + else: + self._IdfFileList = [] + return self._IdfFileList + ## Return a list of files which can be built from binary # # "Build" binary files are just to copy them to build directory. @@ -3276,15 +3287,19 @@ class ModuleAutoGen(AutoGen): # def _GetAutoGenFileList(self): UniStringAutoGenC = True + IdfStringAutoGenC = True UniStringBinBuffer = StringIO() + IdfGenBinBuffer = StringIO() if self.BuildType == 'UEFI_HII': UniStringAutoGenC = False + IdfStringAutoGenC = False if self._AutoGenFileList == None: self._AutoGenFileList = {} AutoGenC = TemplateString() AutoGenH = TemplateString() StringH = TemplateString() - GenC.CreateCode(self, AutoGenC, AutoGenH, StringH, UniStringAutoGenC, UniStringBinBuffer) + StringIdf = TemplateString() + GenC.CreateCode(self, AutoGenC, AutoGenH, StringH, UniStringAutoGenC, UniStringBinBuffer, StringIdf, IdfStringAutoGenC, IdfGenBinBuffer) # # AutoGen.c is generated if there are library classes in inf, or there are object files # @@ -3308,6 +3323,17 @@ class ModuleAutoGen(AutoGen): self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE) if UniStringBinBuffer != None: UniStringBinBuffer.close() + if str(StringIdf) != "": + AutoFile = PathClass(gAutoGenImageDefFileName % {"module_name":self.Name}, self.DebugDir) + self._AutoGenFileList[AutoFile] = str(StringIdf) + self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE) + if IdfGenBinBuffer != None and IdfGenBinBuffer.getvalue() != "": + AutoFile = PathClass(gAutoGenIdfFileName % {"module_name":self.Name}, self.OutputDir) + self._AutoGenFileList[AutoFile] = IdfGenBinBuffer.getvalue() + AutoFile.IsBinary = True + self._ApplyBuildRule(AutoFile, TAB_UNKNOWN_FILE) + if IdfGenBinBuffer != None: + IdfGenBinBuffer.close() return self._AutoGenFileList ## Return the list of library modules explicitly or implicityly used by this module @@ -4061,6 +4087,7 @@ class ModuleAutoGen(AutoGen): CodaTargetList = property(_GetFinalTargetList) FileTypes = property(_GetFileTypes) BuildRules = property(_GetBuildRules) + IdfFileList = property(_GetIdfFileList) DependentPackageList = property(_GetDependentPackageList) DependentLibraryList = property(_GetLibraryList) -- cgit v1.2.3