https://github.com/wenju-he created https://github.com/llvm/llvm-project/pull/154084
Commit 0c21d6b4c8ad fixed sequential build of libclc on Windows by adding a target for each compile command. This PR conditionally enables DEPENDS_EXPLICIT_ONLY and requires at least cmake version 3.27. DEPENDS_EXPLICIT_ONLY avoids adding too many targets. >From a9a2b0a6f8271e125722858080c8a8c29309b997 Mon Sep 17 00:00:00 2001 From: Wenju He <wenju...@intel.com> Date: Mon, 18 Aug 2025 11:18:37 +0200 Subject: [PATCH] [libclc] Enable DEPENDS_EXPLICIT_ONLY if cmake version >= 3.27 Commit 0c21d6b4c8ad fixed sequential build of libclc on Windows by adding a target for each compile command. This PR conditionally enables DEPENDS_EXPLICIT_ONLY and requires at least cmake version 3.27. DEPENDS_EXPLICIT_ONLY avoids adding too many targets. --- libclc/cmake/modules/AddLibclc.cmake | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/libclc/cmake/modules/AddLibclc.cmake b/libclc/cmake/modules/AddLibclc.cmake index 89d5e1dd6f164..373452c623883 100644 --- a/libclc/cmake/modules/AddLibclc.cmake +++ b/libclc/cmake/modules/AddLibclc.cmake @@ -45,6 +45,11 @@ function(compile_to_bc) get_filename_component( ARG_OUTPUT_DIR ${ARG_OUTPUT} DIRECTORY ) file( MAKE_DIRECTORY ${ARG_OUTPUT_DIR} ) + set( COMMAND_ADDITIONAL_OPTIONS ) + if( CMAKE_VERSION VERSION_GREATER_EQUAL "3.27" ) + list( APPEND COMMAND_ADDITIONAL_OPTIONS DEPENDS_EXPLICIT_ONLY ) + endif() + add_custom_command( OUTPUT ${ARG_OUTPUT}${TMP_SUFFIX} COMMAND ${clang_exe} @@ -64,13 +69,13 @@ function(compile_to_bc) ${ARG_INPUT} ${ARG_DEPENDENCIES} DEPFILE ${ARG_OUTPUT}.d + ${COMMAND_ADDITIONAL_OPTIONS} ) - # FIXME: The target is added to ensure the parallel build of source files. - # However, this may result in a large number of targets. - # Starting with CMake 3.27, DEPENDS_EXPLICIT_ONLY can be used with - # add_custom_command to enable parallel build. - # Refer to https://gitlab.kitware.com/cmake/cmake/-/issues/17097 for details. - add_custom_target( ${ARG_TARGET} DEPENDS ${ARG_OUTPUT}${TMP_SUFFIX} ) + # If DEPENDS_EXPLICIT_ONLY isn't available, add target to ensure the parallel + # build of source files on Windows. + if( CMAKE_VERSION VERSION_LESS "3.27" ) + add_custom_target( ${ARG_TARGET} DEPENDS ${ARG_OUTPUT}${TMP_SUFFIX} ) + endif() if( ${FILE_EXT} STREQUAL ".ll" ) add_custom_command( @@ -324,7 +329,9 @@ function(add_libclc_builtin_set) -I${CMAKE_CURRENT_SOURCE_DIR}/${file_dir} DEPENDENCIES ${input_file_dep} ) - list( APPEND compile_tgts ${tgt} ) + if( CMAKE_VERSION VERSION_LESS "3.27" ) + list( APPEND compile_tgts ${tgt} ) + endif() # Collect all files originating in LLVM IR separately get_filename_component( file_ext ${file} EXT ) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits