From 8c8a6de9a11a83e479bc52dd1ba33bfd085b5cc3 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 1 Jun 2024 20:38:00 -0500 Subject: [PATCH] The .CC.FILTER can be empty. --- src/tools/msvc.jam | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/tools/msvc.jam b/src/tools/msvc.jam index f4530e2b81..92912165c6 100644 --- a/src/tools/msvc.jam +++ b/src/tools/msvc.jam @@ -685,11 +685,18 @@ rule compile.c ( targets + : sources * : properties * ) get-rspline $(targets) : -TC CFLAGS ; compile-c-c++ $(<) : $(>) ; - local config_command = [ regex.escape [ on $(targets[1]) return $(.CC) ] - : "|()[]\\+.*^$\" " : "\\" ] ; - local cc_filter = [ regex.escape [ on $(targets[1]) return $(.CC.FILTER) ] - : "|()[]\\+.*^$\" " : "\\" ] ; - COMMAND_DATABASE on $(targets) = "($(config_command).*)$(cc_filter)" ; + local cc = [ on $(targets[1]) return $(.CC) ] ; + cc = [ regex.escape "$(cc:J= )" : "|()[]\\+.*^$\" " : "\\" ] ; + local eol = [ on $(targets[1]) return $(.CC.FILTER) ] ; + if $(eol) + { + eol = ".*" [ regex.escape "$(eol:J= )" : "|()[]\\+.*^$\" " : "\\" ] ; + } + else + { + eol = "[^\n]*" "" ; + } + COMMAND_DATABASE on $(targets) = "($(cc)$(eol[1]))$(eol[2])" ; } @@ -759,11 +766,18 @@ rule compile-c-c++ ( targets + : sources * ) local pch-header = [ on $(<[1]) return $(PCH_HEADER) ] ; PCH_HEADER_AS_SPELLED on $(<[1]) = $(pch-header:G=) ; - local config_command = [ regex.escape [ on $(targets[1]) return $(.CC) ] - : "|()[]\\+.*^$\" " : "\\" ] ; - local cc_filter = [ regex.escape [ on $(targets[1]) return $(.CC.FILTER) ] - : "|()[]\\+.*^$\" " : "\\" ] ; - COMMAND_DATABASE on $(targets) = "($(config_command).*)$(cc_filter)" ; + local cc = [ on $(targets[1]) return $(.CC) ] ; + cc = [ regex.escape "$(cc:J= )" : "|()[]\\+.*^$\" " : "\\" ] ; + local eol = [ on $(targets[1]) return $(.CC.FILTER) ] ; + if $(eol) + { + eol = ".*" [ regex.escape "$(eol:J= )" : "|()[]\\+.*^$\" " : "\\" ] ; + } + else + { + eol = "[^\n]*" "" ; + } + COMMAND_DATABASE on $(targets) = "($(cc)$(eol[1]))$(eol[2])" ; } rule preprocess-c-c++ ( targets + : sources * )