mirror of
https://github.com/intel/llvm.git
synced 2026-01-13 19:08:21 +08:00
[libclc] Fix building top-level 'libclc' target (#150972)
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.
This commit is contained in:
@@ -42,6 +42,12 @@ 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 )
|
||||
|
||||
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}
|
||||
)
|
||||
|
||||
@@ -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"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user