Skip to content

Commit 259dfbe

Browse files
authored
Only build libspirv for selected targets (#18663)
In practice we only build (and thus test) three libclc targets: 'nvptx64--nvidiacl', 'amdgcn--amdhsa' and 'native_cpu'. All other upstream libclc targets are never built in our CI and would in fail to build. This commit rectifies this by selectively building libspirv only for those three supported targets. More can be added in time if required. There are still certain OpenCL libclc targets that can't be built with this commit. The r600 target, for example, can't build because we unconditionally enable the fp64 OpenCL extension across the board, but the r600 target doesn't support that. The clspv and clspv64 targets also fail to build due to SOURCES files referencing missing files. This will be resolved in the next pulldown.
1 parent c63a3bf commit 259dfbe

File tree

1 file changed

+43
-37
lines changed

1 file changed

+43
-37
lines changed

libclc/CMakeLists.txt

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -413,23 +413,27 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
413413
DIRS ${opencl_dirs}
414414
)
415415

416-
set( libspirv_lib_files )
417-
set( libspirv_gen_files )
418-
419-
if( NOT ARCH STREQUAL spirv AND NOT ARCH STREQUAL spirv64 )
420-
if( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
421-
list( APPEND libspirv_gen_files clspv-convert.cl )
422-
elseif ( NOT ENABLE_RUNTIME_SUBNORMAL )
423-
list( APPEND libspirv_gen_files spirv-convert.cl )
424-
list( APPEND libspirv_lib_files libspirv/lib/generic/subnormal_use_default.ll )
416+
set( BUILD_LIBSPIRV_${t} FALSE )
417+
if ( t STREQUAL amdgcn--amdhsa OR t STREQUAL nvptx64--nvidiacl OR t STREQUAL native_cpu )
418+
set( libspirv_lib_files )
419+
set( libspirv_gen_files )
420+
set( BUILD_LIBSPIRV_${t} TRUE )
421+
422+
if( NOT ARCH STREQUAL spirv AND NOT ARCH STREQUAL spirv64 )
423+
if( ARCH STREQUAL clspv OR ARCH STREQUAL clspv64 )
424+
list( APPEND libspirv_gen_files clspv-convert.cl )
425+
elseif ( NOT ENABLE_RUNTIME_SUBNORMAL )
426+
list( APPEND libspirv_gen_files spirv-convert.cl )
427+
list( APPEND libspirv_lib_files libspirv/lib/generic/subnormal_use_default.ll )
428+
endif()
425429
endif()
426-
endif()
427430

428-
libclc_configure_lib_source(
429-
libspirv_lib_files
430-
LIB_ROOT_DIR libspirv
431-
DIRS ${libspirv_dirs} ${DARCH} ${DARCH}-${OS} ${DARCH}-${VENDOR}-${OS}
432-
)
431+
libclc_configure_lib_source(
432+
libspirv_lib_files
433+
LIB_ROOT_DIR libspirv
434+
DIRS ${libspirv_dirs} ${DARCH} ${DARCH}-${OS} ${DARCH}-${VENDOR}-${OS}
435+
)
436+
endif()
433437

434438
foreach( d ${${t}_devices} )
435439
get_libclc_device_info(
@@ -568,28 +572,30 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
568572
GEN_FILES ${clc_gen_files}
569573
)
570574

571-
set( spirv_build_flags ${build_flags} )
572-
list( APPEND spirv_build_flags
573-
-I${CMAKE_CURRENT_SOURCE_DIR}/generic/include
574-
-I${CMAKE_CURRENT_SOURCE_DIR}/libspirv/include/
575-
# FIXME: Fix libspirv to not require disabling this noisy warning
576-
-Wno-bitwise-conditional-parentheses
577-
)
578-
579-
add_libclc_builtin_set(
580-
ARCH ${ARCH}
581-
ARCH_SUFFIX libspirv-${arch_suffix}
582-
TRIPLE ${clang_triple}
583-
TARGET_ENV libspirv-
584-
COMPILE_FLAGS ${spirv_build_flags}
585-
OPT_FLAGS ${opt_flags}
586-
LIB_FILES ${libspirv_lib_files}
587-
GEN_FILES ${libspirv_gen_files}
588-
ALIASES ${${d}_aliases}
589-
PARENT_TARGET libspirv-builtins
590-
# Link in the CLC builtins and internalize their symbols
591-
INTERNAL_LINK_DEPENDENCIES builtins.link.clc-${arch_suffix}
592-
)
575+
if( BUILD_LIBSPIRV_${t} )
576+
set( spirv_build_flags ${build_flags} )
577+
list( APPEND spirv_build_flags
578+
-I${CMAKE_CURRENT_SOURCE_DIR}/generic/include
579+
-I${CMAKE_CURRENT_SOURCE_DIR}/libspirv/include/
580+
# FIXME: Fix libspirv to not require disabling this noisy warning
581+
-Wno-bitwise-conditional-parentheses
582+
)
583+
584+
add_libclc_builtin_set(
585+
ARCH ${ARCH}
586+
ARCH_SUFFIX libspirv-${arch_suffix}
587+
TRIPLE ${clang_triple}
588+
TARGET_ENV libspirv-
589+
COMPILE_FLAGS ${spirv_build_flags}
590+
OPT_FLAGS ${opt_flags}
591+
LIB_FILES ${libspirv_lib_files}
592+
GEN_FILES ${libspirv_gen_files}
593+
ALIASES ${${d}_aliases}
594+
PARENT_TARGET libspirv-builtins
595+
# Link in the CLC builtins and internalize their symbols
596+
INTERNAL_LINK_DEPENDENCIES builtins.link.clc-${arch_suffix}
597+
)
598+
endif()
593599

594600
set( opencl_build_flags ${build_flags} )
595601
list( APPEND opencl_build_flags

0 commit comments

Comments
 (0)