summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--BaseTools/Source/Python/Common/MultipleWorkspace.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/BaseTools/Source/Python/Common/MultipleWorkspace.py b/BaseTools/Source/Python/Common/MultipleWorkspace.py
index 4e4c37ae13..2a76d49cc6 100644
--- a/BaseTools/Source/Python/Common/MultipleWorkspace.py
+++ b/BaseTools/Source/Python/Common/MultipleWorkspace.py
@@ -131,13 +131,16 @@ class MultipleWorkspace(object):
PathList = PathStr.split()
if PathList:
for i, str in enumerate(PathList):
- if str.find(TAB_WORKSPACE) != -1:
- MacroStartPos = str.find(TAB_WORKSPACE)
- MacroEndPos = str.find(')', MacroStartPos)
- Substr = str[MacroEndPos+1:]
- if Substr.startswith('/') or Substr.startswith('\\'):
- Substr = Substr[1:]
- PathList[i] = str[0:MacroStartPos] + os.path.normpath(cls.join(cls.WORKSPACE, Substr))
+ MacroStartPos = str.find(TAB_WORKSPACE)
+ if MacroStartPos != -1:
+ Substr = str[MacroStartPos:]
+ Path = Substr.replace(TAB_WORKSPACE, cls.WORKSPACE).strip()
+ if not os.path.exists(Path):
+ for Pkg in cls.PACKAGES_PATH:
+ Path = Substr.replace(TAB_WORKSPACE, Pkg).strip()
+ if os.path.exists(Path):
+ break
+ PathList[i] = str[0:MacroStartPos] + Path
PathStr = ' '.join(PathList)
return PathStr