https://github.com/frasercrmck updated https://github.com/llvm/llvm-project/pull/150972
>From d08c5dea1b8ee797c27869e436b24b85a2d285bc Mon Sep 17 00:00:00 2001 From: Fraser Cormack <fra...@codeplay.com> Date: Mon, 28 Jul 2025 15:57:11 +0100 Subject: [PATCH 1/2] [libclc] Fix building top-level 'libclc' target With libclc being a 'runtime', the top-level build assumes that there is a corresopnding 'libclc' target. We previously weren't providing this, leading to a build failure if the user tried to build it. This commit remedies this by adding support for building the 'libclc' target. It does so by adding dependencies from the OpenCL builtins to this target. It uses a configurable in-between target - libclc-opencl-builtins - to ease the possibility of adding non-OpenCL builtin libraries in the future. --- libclc/CMakeLists.txt | 7 +++++++ libclc/cmake/modules/AddLibclc.cmake | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt index e4e9a74639b17..c98e6880b52ce 100644 --- a/libclc/CMakeLists.txt +++ b/libclc/CMakeLists.txt @@ -5,6 +5,9 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) endif() set(LLVM_SUBPROJECT_TITLE "libclc") +# Top level target used to build all Libclc libraries. +add_custom_target( libclc ALL ) + set(CMAKE_CXX_STANDARD 17) # Add path for custom modules @@ -42,6 +45,9 @@ set( LIBCLC_TARGETS_TO_BUILD "all" option( ENABLE_RUNTIME_SUBNORMAL "Enable runtime linking of subnormal support." OFF ) +add_custom_target( libclc-opencl-builtins COMMENT "Build libclc OpenCL builtins" ) +add_dependencies( libclc libclc-opencl-builtins ) + if( LIBCLC_STANDALONE_BUILD OR CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR ) # Out-of-tree configuration set( LIBCLC_STANDALONE_BUILD TRUE ) @@ -463,6 +469,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} ) LIB_FILES ${opencl_lib_files} GEN_FILES ${opencl_gen_files} ALIASES ${${d}_aliases} + PARENT_TARGET libclc-opencl-builtins # Link in the CLC builtins and internalize their symbols INTERNAL_LINK_DEPENDENCIES builtins.link.clc-${arch_suffix} ) diff --git a/libclc/cmake/modules/AddLibclc.cmake b/libclc/cmake/modules/AddLibclc.cmake index dc4b1e8286ec0..9b0e5d99b5826 100644 --- a/libclc/cmake/modules/AddLibclc.cmake +++ b/libclc/cmake/modules/AddLibclc.cmake @@ -207,6 +207,8 @@ endfunction() # libclc architecture/triple suffix # * TRIPLE <string> # Triple used to compile +# * PARENT_TARGET <string> +# Target into which to group the target builtins # # Optional Arguments: # * CLC_INTERNAL @@ -229,7 +231,7 @@ endfunction() function(add_libclc_builtin_set) cmake_parse_arguments(ARG "CLC_INTERNAL" - "ARCH;TRIPLE;ARCH_SUFFIX" + "ARCH;TRIPLE;ARCH_SUFFIX;PARENT_TARGET" "LIB_FILES;GEN_FILES;COMPILE_FLAGS;OPT_FLAGS;ALIASES;INTERNAL_LINK_DEPENDENCIES" ${ARGN} ) @@ -403,6 +405,9 @@ function(add_libclc_builtin_set) add_custom_target( prepare-${ARG_TRIPLE} ALL ) endif() add_dependencies( prepare-${ARG_TRIPLE} prepare-${obj_suffix} ) + # Add dependency to top-level pseudo target to ease making other + # targets dependent on libclc. + add_dependencies( ${ARG_PARENT_TARGET} prepare-${ARG_TRIPLE} ) install( FILES ${libclc_builtins_lib} @@ -445,6 +450,7 @@ function(add_libclc_builtin_set) add_custom_target( alias-${alias_suffix} ALL DEPENDS ${LIBCLC_OUTPUT_LIBRARY_DIR}/${alias_suffix} ) + add_dependencies( ${ARG_PARENT_TARGET} alias-${alias_suffix} ) set_target_properties( alias-${alias_suffix} PROPERTIES FOLDER "libclc/Device IR/Aliases" ) >From 1470ad85ce03de9cfc8f4d2128f20a196c35f702 Mon Sep 17 00:00:00 2001 From: Fraser Cormack <fra...@codeplay.com> Date: Tue, 29 Jul 2025 10:41:31 +0100 Subject: [PATCH 2/2] move top-level target def --- libclc/CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libclc/CMakeLists.txt b/libclc/CMakeLists.txt index c98e6880b52ce..328dfcf81631a 100644 --- a/libclc/CMakeLists.txt +++ b/libclc/CMakeLists.txt @@ -5,9 +5,6 @@ if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) endif() set(LLVM_SUBPROJECT_TITLE "libclc") -# Top level target used to build all Libclc libraries. -add_custom_target( libclc ALL ) - set(CMAKE_CXX_STANDARD 17) # Add path for custom modules @@ -45,6 +42,9 @@ set( LIBCLC_TARGETS_TO_BUILD "all" option( ENABLE_RUNTIME_SUBNORMAL "Enable runtime linking of subnormal support." OFF ) +# Top level target used to build all Libclc libraries. +add_custom_target( libclc ALL ) + add_custom_target( libclc-opencl-builtins COMMENT "Build libclc OpenCL builtins" ) add_dependencies( libclc libclc-opencl-builtins ) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits