Skip to content

Commit b71c980

Browse files
authored
Use llvm-config to fix link error if llvm is pre-built locally static or shared (#494)
llvm_map_components_to_libnames is empty in these cases. This fixes link error in Ubuntu 22.04 container. #484 and #454
1 parent d8699aa commit b71c980

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

CMakeLists.txt

+12-4
Original file line numberDiff line numberDiff line change
@@ -292,10 +292,18 @@ else()
292292
)
293293
endif()
294294

295-
set(EXCLUDE_LIBS_FROM_ALL "" CACHE STRING "Space-separated list of LLVM libraries to exclude from all")
296-
llvm_map_components_to_libnames(ALL_LLVM_LIBS all)
297-
if (NOT "${EXCLUDE_LIBS_FROM_ALL}" STREQUAL "")
298-
list(REMOVE_ITEM ALL_LLVM_LIBS ${EXCLUDE_LIBS_FROM_ALL})
295+
if(USE_PREBUILT_LLVM AND UNIX)
296+
# llvm_map_components_to_libnames(... all) returns empty string if llvm is
297+
# pre-built locally in either static or shared type in Ubuntu 22.04 container.
298+
execute_process(COMMAND llvm-config --libs all OUTPUT_VARIABLE ALL_LIBS)
299+
string(REGEX REPLACE "( |\r|\n|-l)+" ";" ALL_LLVM_LIBS ${ALL_LIBS})
300+
set(ALL_LLVM_LIBS "LLVMSPIRVLib${ALL_LLVM_LIBS}")
301+
else()
302+
llvm_map_components_to_libnames(ALL_LLVM_LIBS all)
303+
endif()
304+
set(OPENCL_CLANG_EXCLUDE_LIBS_FROM_ALL "" CACHE STRING "Space-separated list of LLVM libraries to exclude from all")
305+
if (NOT "${OPENCL_CLANG_EXCLUDE_LIBS_FROM_ALL}" STREQUAL "")
306+
list(REMOVE_ITEM ALL_LLVM_LIBS ${OPENCL_CLANG_EXCLUDE_LIBS_FROM_ALL})
299307
endif()
300308
list(APPEND OPENCL_CLANG_LINK_LIBS ${ALL_LLVM_LIBS})
301309

0 commit comments

Comments
 (0)