From 9641a7f975ff5a18f83a8c899626342e15409c48 Mon Sep 17 00:00:00 2001 From: Mingyue Liang Date: Wed, 23 Sep 2020 18:57:32 +0800 Subject: BaseTools: Normalize case of pathname when evaluating Macros. REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2880 Currently, When doing the Incremental build, the directory macros extended to absolute path in output Makefile, which is inconsistent with the output of Clean build. When we do macro replacement, we can't replace macro due to inconsistent path case, which results in inconsistent display of incremental build and clean build in makefile.Therefore, the path is converted to achieve the correct macro replacement. Signed-off-by: Mingyue Liang Cc: Bob Feng Cc: Liming Gao Cc: Yuwei Chen Reviewed-by: Bob Feng Reviewed-by: Yuwei Chen --- BaseTools/Source/Python/AutoGen/GenMake.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'BaseTools/Source/Python/AutoGen/GenMake.py') diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index 0314d0ea34..b04d3f5436 100755 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -786,8 +786,10 @@ cleanlib: def ReplaceMacro(self, str): for Macro in self.MacroList: - if self._AutoGenObject.Macros[Macro] and self._AutoGenObject.Macros[Macro] in str: - str = str.replace(self._AutoGenObject.Macros[Macro], '$(' + Macro + ')') + if self._AutoGenObject.Macros[Macro] and os.path.normcase(self._AutoGenObject.Macros[Macro]) in os.path.normcase(str): + replace_dir = str[os.path.normcase(str).index(os.path.normcase(self._AutoGenObject.Macros[Macro])): os.path.normcase(str).index( + os.path.normcase(self._AutoGenObject.Macros[Macro])) + len(self._AutoGenObject.Macros[Macro])] + str = str.replace(replace_dir, '$(' + Macro + ')') return str def CommandExceedLimit(self): -- cgit v1.2.3