Since UEFI only support UTF-16LE strings internally, this simply allows for another unicode the source file encoding.
The strings are still converted to UTF-16LE data for use in EDK II source code. Cc: Yingke D Liu <yingke.d....@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.jus...@intel.com> --- BaseTools/Conf/build_rule.template | 2 +- BaseTools/Source/Python/AutoGen/UniClassObject.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/BaseTools/Conf/build_rule.template b/BaseTools/Conf/build_rule.template index f1edf3a..99f6abc 100644 --- a/BaseTools/Conf/build_rule.template +++ b/BaseTools/Conf/build_rule.template @@ -527,7 +527,7 @@ [Unicode-Text-File] <InputFile> - *.uni, *.Uni, *.UNI + *.uni, *.Uni, *.UNI, *.utf8, *.Utf8, *.UTF8 <OutputFile> $(DEBUG_DIR)(+)AutoGen.c diff --git a/BaseTools/Source/Python/AutoGen/UniClassObject.py b/BaseTools/Source/Python/AutoGen/UniClassObject.py index aa54f4f..df30c48 100644 --- a/BaseTools/Source/Python/AutoGen/UniClassObject.py +++ b/BaseTools/Source/Python/AutoGen/UniClassObject.py @@ -43,6 +43,11 @@ BACK_SLASH_PLACEHOLDER = u'\u0006' gIncludePattern = re.compile("^#include +[\"<]+([^\"< >]+)[>\"]+$", re.MULTILINE | re.UNICODE) +StringFileEncoding = { + '.uni': 'utf-16', + '.utf8': 'utf-8' +} + ## Convert a python unicode string to a normal string # # Convert a python unicode string to a normal string @@ -209,7 +214,8 @@ class UniFileClassObject(object): Lang = distutils.util.split_quoted((Line.split(u"//")[0])) if len(Lang) != 3: try: - FileIn = codecs.open(LongFilePath(File.Path), mode='rb', encoding='utf-16').read() + encoding = StringFileEncoding[os.path.splitext(File.Path)[1].lower()] + FileIn = codecs.open(LongFilePath(File.Path), mode='rb', encoding=encoding).read() except UnicodeError, X: EdkLogger.error("build", FILE_READ_FAILURE, "File read failure: %s" % str(X), ExtraData=File); except: @@ -305,7 +311,8 @@ class UniFileClassObject(object): EdkLogger.error("Unicode File Parser", FILE_NOT_FOUND, ExtraData=File.Path) try: - FileIn = codecs.open(LongFilePath(File.Path), mode='rb', encoding='utf-16') + encoding = StringFileEncoding[os.path.splitext(File.Path)[1].lower()] + FileIn = codecs.open(LongFilePath(File.Path), mode='rb', encoding=encoding) except UnicodeError, X: EdkLogger.error("build", FILE_READ_FAILURE, "File read failure: %s" % str(X), ExtraData=File.Path); except: -- 2.1.4 ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel