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

Reply via email to