diff options
author | Brad King <brad.king@kitware.com> | 2024-02-07 15:34:51 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2024-02-07 15:35:32 (GMT) |
commit | a98f3631c9682d973baf0d0021884ee6f39040d1 (patch) | |
tree | a35cd4850c3d520af1a3b21d626a1a576a640327 | |
parent | 5e984bb35232116a54de7db39788cb162ca7c263 (diff) | |
parent | 0d933fc0d9bb7bdaed1997c0ae06567115242f74 (diff) | |
download | CMake-a98f3631c9682d973baf0d0021884ee6f39040d1.zip CMake-a98f3631c9682d973baf0d0021884ee6f39040d1.tar.gz CMake-a98f3631c9682d973baf0d0021884ee6f39040d1.tar.bz2 |
Merge topic 'clang-cl-showIncludes' into release-3.28
0d933fc0d9 Ninja: Update showIncludes prefix detection for clang-cl 18
a88acb0a41 Tests/RunCMake/Ninja: Rename showIncludes case for clang-cl <= 17
Acked-by: Kitware Robot <kwrobot@kitware.com>
Merge-request: !9229
-rw-r--r-- | Modules/CMakeDetermineCompilerId.cmake | 2 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/RunCMakeTest.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake (renamed from Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake) | 2 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt (renamed from Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake (renamed from Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake) | 2 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-check.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18-stdout.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-18.cmake | 3 | ||||
-rw-r--r-- | Tests/RunCMake/showIncludes.c | 12 |
9 files changed, 22 insertions, 6 deletions
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 13d9620..2df300c 100644 --- a/Tests/RunCMake/Ninja/RunCMakeTest.cmake +++ b/Tests/RunCMake/Ninja/RunCMakeTest.cmake @@ -46,7 +46,8 @@ 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-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-check.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake index 6136463..3ebdb4f 100644 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-check.cmake +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-check.cmake @@ -1,3 +1,3 @@ -# 'clang-cl /showIncludes' prefix. +# '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-stdout.txt b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt index bda7eab..bda7eab 100644 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-stdout.txt +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17-stdout.txt diff --git a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake index 7eca3d3..9642f06 100644 --- a/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl.cmake +++ b/Tests/RunCMake/Ninja/ShowIncludes-437-ClangCl-17.cmake @@ -1,3 +1,3 @@ set(CODEPAGE 437) -set(VSLANG "clang-cl") # Special case for test, not a real VS value. +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-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 7d467cf..cfc8572 100644 --- a/Tests/RunCMake/showIncludes.c +++ b/Tests/RunCMake/showIncludes.c @@ -28,14 +28,22 @@ 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; } } + // 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) { |