From 061cfbd3520279624d45d19378693d2bc9fffe6e Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Tue, 29 Jul 2025 16:00:12 +0100 Subject: [PATCH 1/2] [cmake] Don't generate per-file "__SHORT_FILE__" defines on MSVC builds As reported on #150677 - this prevents build parallelisation as cmake is repeatedly updating the cache --- llvm/cmake/modules/LLVMProcessSources.cmake | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/llvm/cmake/modules/LLVMProcessSources.cmake b/llvm/cmake/modules/LLVMProcessSources.cmake index 6282b26bddded..e3c53aea8d9a4 100644 --- a/llvm/cmake/modules/LLVMProcessSources.cmake +++ b/llvm/cmake/modules/LLVMProcessSources.cmake @@ -58,16 +58,19 @@ function(llvm_process_sources OUT_VAR) set(sources ${ARG_UNPARSED_ARGUMENTS}) llvm_check_source_file_list(${sources}) - foreach(fn ${sources}) - get_filename_component(suf ${fn} EXT) - if("${suf}" STREQUAL ".cpp" OR "${suf}" STREQUAL ".c") - get_filename_component(short_name ${fn} NAME) - set_property( - SOURCE ${fn} - APPEND - PROPERTY COMPILE_DEFINITIONS __SHORT_FILE__="${short_name}") - endif() - endforeach() + # Don't generate __SHORT_FILE__ on MSVC builds as it can force repeated cache regeneration. + if(NOT MSVC) + foreach(fn ${sources}) + get_filename_component(suf ${fn} EXT) + if("${suf}" STREQUAL ".cpp" OR "${suf}" STREQUAL ".c") + get_filename_component(short_name ${fn} NAME) + set_property( + SOURCE ${fn} + APPEND + PROPERTY COMPILE_DEFINITIONS __SHORT_FILE__="${short_name}") + endif() + endforeach() + endif() # This adds .td and .h files to the Visual Studio solution: From a7c24e3f25da95ac2268af70e339a4035c982249 Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Tue, 29 Jul 2025 16:30:36 +0100 Subject: [PATCH 2/2] Limit to VS builds so other MSVC builds can still use "__SHORT_FILE__" define --- llvm/cmake/modules/LLVMProcessSources.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/llvm/cmake/modules/LLVMProcessSources.cmake b/llvm/cmake/modules/LLVMProcessSources.cmake index e3c53aea8d9a4..cf358a88f5fb6 100644 --- a/llvm/cmake/modules/LLVMProcessSources.cmake +++ b/llvm/cmake/modules/LLVMProcessSources.cmake @@ -58,8 +58,8 @@ function(llvm_process_sources OUT_VAR) set(sources ${ARG_UNPARSED_ARGUMENTS}) llvm_check_source_file_list(${sources}) - # Don't generate __SHORT_FILE__ on MSVC builds as it can force repeated cache regeneration. - if(NOT MSVC) + # Don't generate __SHORT_FILE__ on VS builds as it can prevent build parallelisation. + if(NOT CMAKE_GENERATOR MATCHES "Visual Studio") foreach(fn ${sources}) get_filename_component(suf ${fn} EXT) if("${suf}" STREQUAL ".cpp" OR "${suf}" STREQUAL ".c")