diff options
author | Yonghong Zhu <yonghong.zhu@intel.com> | 2016-09-21 10:39:11 +0800 |
---|---|---|
committer | Liming Gao <liming.gao@intel.com> | 2016-09-27 09:43:28 +0800 |
commit | 333ba578fef4dff8921051410c5b56f63e7eeadb (patch) | |
tree | 004d6532069ebe11d388ae3453a287976b671d12 /BaseTools/Source/Python/AutoGen/AutoGen.py | |
parent | 4f0ae88cde9caf65cbb9f534ce2b28d14add1e0d (diff) | |
download | edk2-platforms-333ba578fef4dff8921051410c5b56f63e7eeadb.tar.xz |
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 <liming.gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Yonghong Zhu <yonghong.zhu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/AutoGen/AutoGen.py')
-rw-r--r-- | BaseTools/Source/Python/AutoGen/AutoGen.py | 31 |
1 files changed, 29 insertions, 2 deletions
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)
|