Skip to content

Commit e024afe

Browse files
committed
Add CA_LLVM_LIBDIR_SUFFIX.
When building against an LLVM that was built with LLVM_LIBDIR_SUFFIX set, we would fail to locate that LLVM's CMake files due to hardcoded paths. Allow CA_LLVM_LIBDIR_SUFFIX to be set to the same value to work around that.
1 parent c64a6b1 commit e024afe

File tree

5 files changed

+15
-12
lines changed

5 files changed

+15
-12
lines changed

cmake/ImportLLVM.cmake

+7-7
Original file line numberDiff line numberDiff line change
@@ -47,20 +47,20 @@ endif()
4747
# Add our cmake modules directory to the cmake include path including
4848
# LLVM/Clang.
4949
string(REPLACE "\\" "/" CA_LLVM_INSTALL_DIR "${CA_LLVM_INSTALL_DIR}")
50-
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib/cmake/llvm/LLVMConfig.cmake")
50+
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/llvm/LLVMConfig.cmake")
5151
message(FATAL_ERROR
52-
"'${CA_LLVM_INSTALL_DIR}/lib/cmake/llvm/LLVMConfig.cmake' does not exist"
52+
"'${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/llvm/LLVMConfig.cmake' does not exist"
5353
" (search path set with CA_LLVM_INSTALL_DIR)")
5454
endif()
55-
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib/cmake/clang/ClangTargets.cmake")
55+
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/clang/ClangTargets.cmake")
5656
message(FATAL_ERROR
57-
"'${CA_LLVM_INSTALL_DIR}/lib/cmake/clang/ClangTargets.cmake' does not exist"
57+
"'${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/clang/ClangTargets.cmake' does not exist"
5858
" (search path set with CA_LLVM_INSTALL_DIR)")
5959
endif()
6060
list(APPEND CMAKE_MODULE_PATH
61-
${CA_LLVM_INSTALL_DIR}/lib/cmake/llvm
62-
${CA_LLVM_INSTALL_DIR}/lib/cmake/clang)
63-
set(LLVM_DIR ${CA_LLVM_INSTALL_DIR}/lib/cmake/llvm)
61+
${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/llvm
62+
${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/clang)
63+
set(LLVM_DIR ${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/llvm)
6464

6565
# Include LLVM.
6666
include(LLVMConfig)

doc/developer-guide.md

+3
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@ The builtin CMake options used when invoking CMake on the command line.
253253
relevant llvm headers and support tools, and their version must match
254254
a supported LLVM version.
255255

256+
* `CA_LLVM_LIBDIR_SUFFIX`: Tells the oneAPI Construction Kit what value of
257+
`LLVM_LIBDIR_SUFFIX` was used for building LLVM.
258+
256259
* `CA_ENABLE_API`: Semi-colon separated list of APIs to enable. Valid values
257260
are `cl` for OpenCL, and `vk` for Vulkan. Enabling an API when an optional
258261
component is not present dependent on license agreement will result in a CMake

modules/compiler/riscv/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ if (LLVMRISCVCODEGEN)
4848

4949
if(NOT TARGET compiler-linker-utils)
5050
set(error "compiler-riscv-utils requires compiler-linker-utils")
51-
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib/cmake/lld/LLDConfig.cmake")
51+
if(NOT EXISTS "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/lld/LLDConfig.cmake")
5252
string(APPEND error " which requires liblld")
5353
endif()
5454
message(FATAL_ERROR "${error}")

modules/compiler/source/base/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ set(LLVM_LIBS "LLVMCodeGen" "LLVMCoroutines" "LLVMCoverage"
105105
# Otherwise, we have to provide the full path to them.
106106
if(NOT OCK_IN_LLVM_TREE)
107107
list(TRANSFORM CLANG_LIBS
108-
PREPEND "${CA_LLVM_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}")
108+
PREPEND "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/${CMAKE_STATIC_LIBRARY_PREFIX}")
109109
list(TRANSFORM CLANG_LIBS
110110
APPEND "${CMAKE_STATIC_LIBRARY_SUFFIX}")
111111
endif()

modules/compiler/utils/CMakeLists.txt

+3-3
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ endif()
4040

4141
# Determine whether LLVM was built with LLD, in which case add a support
4242
# library that exposes lld to ComputeMux compiler targets.
43-
if(EXISTS "${CA_LLVM_INSTALL_DIR}/lib/cmake/lld/LLDConfig.cmake")
44-
list(APPEND CMAKE_MODULE_PATH ${CA_LLVM_INSTALL_DIR}/lib/cmake/lld)
43+
if(EXISTS "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/lld/LLDConfig.cmake")
44+
list(APPEND CMAKE_MODULE_PATH ${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/cmake/lld)
4545
include(LLDConfig)
4646

4747
add_ca_library(compiler-linker-utils STATIC
@@ -71,7 +71,7 @@ if(EXISTS "${CA_LLVM_INSTALL_DIR}/lib/cmake/lld/LLDConfig.cmake")
7171

7272
if(NOT OCK_IN_LLVM_TREE)
7373
list(TRANSFORM LLD_LIBS
74-
PREPEND "${CA_LLVM_INSTALL_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}")
74+
PREPEND "${CA_LLVM_INSTALL_DIR}/lib${CA_LLVM_LIBDIR_SUFFIX}/${CMAKE_STATIC_LIBRARY_PREFIX}")
7575
list(TRANSFORM LLD_LIBS
7676
APPEND "${CMAKE_STATIC_LIBRARY_SUFFIX}")
7777
endif()

0 commit comments

Comments
 (0)