]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/Source/Python/Common/ToolDefClassObject.py
BaseTools: use set instead of list for a variable to be used with in
[mirror_edk2.git] / BaseTools / Source / Python / Common / ToolDefClassObject.py
index 5dd505c9b9fa992423bef78664b5028663554f6e..73ebdaf6b1793646fffcfc3fe06e1835c510fe99 100644 (file)
@@ -1,7 +1,7 @@
 ## @file\r
 # This file is used to define each component of tools_def.txt file\r
 #\r
-# Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>\r
+# Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>\r
 # This program and the accompanying materials\r
 # are licensed and made available under the terms and conditions of the BSD License\r
 # which accompanies this distribution.  The full text of the license may be found at\r
@@ -18,7 +18,6 @@ import Common.LongFilePathOs as os
 import re\r
 import EdkLogger\r
 \r
-from Dictionary import *\r
 from BuildToolError import *\r
 from TargetTxtClassObject import *\r
 from Common.LongFilePathSupport import OpenLongFilePath as open\r
@@ -27,6 +26,10 @@ from Common.String import NormPath
 import Common.GlobalData as GlobalData\r
 from Common import GlobalData\r
 from Common.MultipleWorkspace import MultipleWorkspace as mws\r
+from DataType import TAB_TOD_DEFINES_TARGET,TAB_TOD_DEFINES_TOOL_CHAIN_TAG,\\r
+                     TAB_TOD_DEFINES_TARGET_ARCH,TAB_TOD_DEFINES_COMMAND_TYPE\\r
+                     ,TAB_TOD_DEFINES_FAMILY,TAB_TOD_DEFINES_BUILDRULEFAMILY\r
+\r
 \r
 ##\r
 # Static variables used for pattern\r
@@ -53,7 +56,7 @@ class ToolDefClassObject(object):
         for Env in os.environ:\r
             self.MacroDictionary["ENV(%s)" % Env] = os.environ[Env]\r
 \r
-        if FileName != None:\r
+        if FileName is not None:\r
             self.LoadToolDefFile(FileName)\r
 \r
     ## LoadToolDefFile\r
@@ -236,14 +239,16 @@ class ToolDefClassObject(object):
     # @retval Value:  The string which has been replaced with real value\r
     #\r
     def ExpandMacros(self, Value):\r
+        # os.environ contains all environment variables uppercase on Windows which cause the key in the self.MacroDictionary is uppercase, but Ref may not\r
         EnvReference = gEnvRefPattern.findall(Value)\r
         for Ref in EnvReference:\r
-            if Ref not in self.MacroDictionary:\r
+            if Ref not in self.MacroDictionary and Ref.upper() not in self.MacroDictionary:\r
                 Value = Value.replace(Ref, "")\r
             else:\r
-                Value = Value.replace(Ref, self.MacroDictionary[Ref])\r
\r
-\r
+                if Ref in self.MacroDictionary:\r
+                    Value = Value.replace(Ref, self.MacroDictionary[Ref])\r
+                else:\r
+                    Value = Value.replace(Ref, self.MacroDictionary[Ref.upper()])\r
         MacroReference = gMacroRefPattern.findall(Value)\r
         for Ref in MacroReference:\r
             if Ref not in self.MacroDictionary:\r