From c44e0a896cacce179a3291e5080e8573c909ce2a Mon Sep 17 00:00:00 2001 From: Pierre Gondois Date: Mon, 10 Feb 2020 18:49:08 +0800 Subject: [PATCH] BaseTools: Remove caret in NASM_INC macro NASM_INC contains the list of directory to include when using the nasm assembler. In nmake makefiles, a trailing backslash escapes the newline char and replaces it with a space ' '. To have a literal trailing backslash, it must be escaped with a caret '^'. This is not necessary for GNU makefiles. On windows platforms, for the NASM_INC macro, a caret escaping a trailing a backslash was appended to the last included folder regardless of the makefile type. For instance, "/Include/" was replaced by "/Include/^\". This is causing a build failure on windows platforms using GNU makefiles since the caret '^' doesn't escape any chars in GNU makefiles and is thus conserved. "/Include^\" was replaced by "/Include\/" in nmake makefiles, but remained "/Include/^\" in GNU makefiles. This patch removes the caret '^' on the build using GNU makefiles. Signed-off-by: Pierre Gondois Reviewed-by: Bob Feng --- BaseTools/Source/Python/AutoGen/GenMake.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/BaseTools/Source/Python/AutoGen/GenMake.py b/BaseTools/Source/Python/AutoGen/GenMake.py index f5d15c40ad..bbb3c29446 100755 --- a/BaseTools/Source/Python/AutoGen/GenMake.py +++ b/BaseTools/Source/Python/AutoGen/GenMake.py @@ -612,9 +612,10 @@ cleanlib: IncludePath = self._INC_FLAG_['NASM'] + self.PlaceMacro(P, self.Macros) if IncludePath.endswith(os.sep): IncludePath = IncludePath.rstrip(os.sep) - # When compiling .nasm files, need to add a literal backslash at each path - # To specify a literal backslash at the end of the line, precede it with a caret (^) - if P == MyAgo.IncludePathList[-1] and os.sep == '\\': + # When compiling .nasm files, need to add a literal backslash at each path. + # In nmake makfiles, a trailing literal backslash must be escaped with a caret ('^'). + # It is otherwise replaced with a space (' '). This is not necessary for GNU makfefiles. + if P == MyAgo.IncludePathList[-1] and self._Platform == WIN32_PLATFORM and self._FileType == NMAKE_FILETYPE: IncludePath = ''.join([IncludePath, '^', os.sep]) else: IncludePath = os.path.join(IncludePath, '')