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

Reply via email to