From a88acb0a419d184102c65ee9456950f2cea1cc71 Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 7 Feb 2024 09:29:22 -0500 Subject: Tests/RunCMake/Ninja: Rename showIncludes case for clang-cl <= 17 Make room for a new case for clang-cl 18. --- Tests/RunCMake/Ninja/RunCMakeTest.cmake | 2 +- Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake | 3 +++ Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt | 1 + Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake | 3 +++ Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake | 3 --- Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt | 1 - Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake | 3 --- Tests/RunCMake/showIncludes.c | 4 ++-- 8 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt delete mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake diff --git a/Tests/RunCMake/Ninja/RunCMakeTest.cmake b/Tests/RunCMake/Ninja/RunCMakeTest.cmake index 13d9620..7f877fb 100644 --- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake +++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake @@ -46,7 +46,7 @@ if(WIN32) if(RunCMake_MAKE_PROGRAM) set(maybe_MAKE_PROGRAM "-DRunCMake_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") endif() - run_cmake_script(ShowIncludes-437-ClangCl -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) + run_cmake_script(ShowIncludes-437-ClangCl-17 -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-English -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-French -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-German -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake new file mode 100644 index 0000000..3ebdb4f --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake @@ -0,0 +1,3 @@ +# 'clang-cl /showIncludes' prefix for clang-cl <= 17. +set(expect "Note: including file: ") +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt new file mode 100644 index 0000000..bda7eab --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt @@ -0,0 +1 @@ +-- showIncludes='Note: including file: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake new file mode 100644 index 0000000..9642f06 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake @@ -0,0 +1,3 @@ +set(CODEPAGE 437) +set(VSLANG "clang-cl-17") # Special case for test, not a real VS value. +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake deleted file mode 100644 index 6136463..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake +++ /dev/null @@ -1,3 +0,0 @@ -# 'clang-cl /showIncludes' prefix. -set(expect "Note: including file: ") -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt deleted file mode 100644 index bda7eab..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt +++ /dev/null @@ -1 +0,0 @@ --- showIncludes='Note: including file: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake deleted file mode 100644 index 7eca3d3..0000000 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake +++ /dev/null @@ -1,3 +0,0 @@ -set(CODEPAGE 437) -set(VSLANG "clang-cl") # Special case for test, not a real VS value. -include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/showIncludes.c b/Tests/RunCMake/showIncludes.c index 7d467cf..06490ca 100644 --- a/Tests/RunCMake/showIncludes.c +++ b/Tests/RunCMake/showIncludes.c @@ -28,8 +28,8 @@ int main() printf("OEM code page: %u\n", GetOEMCP()); printf("VSLANG: %s\n", vslang); - // clang-cl (special case for test, not a real VS value). - if (strcmp(vslang, "clang-cl") == 0) { + // clang-cl <= 17 (special case for test, not a real VS value). + if (strcmp(vslang, "clang-cl-17") == 0) { if (cp == 437 || cp == 65001) { printf("Note: including file: ./foo.h\n"); return 0; -- cgit v0.12 From 0d933fc0d9bb7bdaed1997c0ae06567115242f74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Storsj=C3=B6?= Date: Tue, 6 Feb 2024 23:58:44 +0200 Subject: Ninja: Update showIncludes prefix detection for clang-cl 18 Since commit LLVM/Clang commit `5523fefb01c2` ([clang][lex] Use preferred path separator in includer-relative lookup, 2023-09-08), part of the upcoming 18.x release, the output format of the showIncludes flag has changed, where it now prints paths with double backslashes: Note: including file: .\\foo.h Previously, we expected to see the path name in the form "./foo.h". Extend the regex to match a path name starting with `.\`, in addition to the existing matched patterns. --- Modules/CMakeDetermineCompilerId.cmake | 2 +- Tests/RunCMake/Ninja/RunCMakeTest.cmake | 1 + Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake | 3 +++ Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt | 1 + Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake | 3 +++ Tests/RunCMake/showIncludes.c | 8 ++++++++ 6 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt create mode 100644 Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake index 4f1eaba..dde2b28 100644 --- a/Modules/CMakeDetermineCompilerId.cmake +++ b/Modules/CMakeDetermineCompilerId.cmake @@ -1173,7 +1173,7 @@ function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang userflags) ENCODING AUTO # cl prints in console output code page ) string(REPLACE "\n" "\n " msg " ${out}") - if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n][^:\n]+:[^:\n]*[^: \n][^: \n]:?[ \t]+)([A-Za-z]:\\\\|\\./|/)") + if(res EQUAL 0 AND "${out}" MATCHES "(^|\n)([^:\n][^:\n]+:[^:\n]*[^: \n][^: \n]:?[ \t]+)([A-Za-z]:\\\\|\\./|\\.\\\\|/)") set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "${CMAKE_MATCH_2}" PARENT_SCOPE) string(APPEND msg "\nFound prefix \"${CMAKE_MATCH_2}\"") else() diff --git a/Tests/RunCMake/Ninja/RunCMakeTest.cmake b/Tests/RunCMake/Ninja/RunCMakeTest.cmake index 7f877fb..2df300c 100644 --- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake +++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake @@ -47,6 +47,7 @@ if(WIN32) set(maybe_MAKE_PROGRAM "-DRunCMake_MAKE_PROGRAM=${RunCMake_MAKE_PROGRAM}") endif() run_cmake_script(ShowIncludes-437-ClangCl-17 -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) + run_cmake_script(ShowIncludes-437-ClangCl-18 -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-English -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-French -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) run_cmake_script(ShowIncludes-437-German -DshowIncludes=${showIncludes} ${maybe_MAKE_PROGRAM}) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake new file mode 100644 index 0000000..a42af86 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake @@ -0,0 +1,3 @@ +# 'clang-cl /showIncludes' prefix for clang-cl >= 18. +set(expect "Note: including file: ") +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes-check.cmake) diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt new file mode 100644 index 0000000..bda7eab --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt @@ -0,0 +1 @@ +-- showIncludes='Note: including file: ' diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake new file mode 100644 index 0000000..997ffb9 --- /dev/null +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake @@ -0,0 +1,3 @@ +set(CODEPAGE 437) +set(VSLANG "clang-cl-18") # Special case for test, not a real VS value. +include(${CMAKE_CURRENT_LIST_DIR}/ShowIncludes.cmake) diff --git a/Tests/RunCMake/showIncludes.c b/Tests/RunCMake/showIncludes.c index 06490ca..cfc8572 100644 --- a/Tests/RunCMake/showIncludes.c +++ b/Tests/RunCMake/showIncludes.c @@ -36,6 +36,14 @@ int main() } } + // clang-cl >= 18 (special case for test, not a real VS value). + if (strcmp(vslang, "clang-cl-18") == 0) { + if (cp == 437 || cp == 65001) { + printf("Note: including file: .\\\\foo.h\n"); + return 0; + } + } + // msvc-wine (special case for test, not a real VS value). if (strcmp(vslang, "msvc-wine") == 0) { if (cp == 437 || cp == 65001) { -- cgit v0.12