Skip to content

Commit cabefb0

Browse files
committed
Adjusting CMakeLists.txt for LLVM monorepo
1 parent f8b1d2b commit cabefb0

File tree

1 file changed

+42
-11
lines changed

1 file changed

+42
-11
lines changed

CMakeLists.txt

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,16 +79,48 @@ endif()
7979
set(TARGET_NAME ${COMMON_CLANG_LIBRARY_NAME}${BUILD_PLATFORM} )
8080

8181
if(NOT USE_PREBUILT_LLVM)
82-
set(TARGET_BRANCH "ocl-open-90")
83-
set(CLANG_SOURCE_DIR ${LLVM_SOURCE_DIR}/tools/clang)
84-
set(CLANG_BASE_REVISION master)
8582

86-
if (LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR)
87-
set(SPIRV_SOURCE_DIR ${LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR})
88-
else (LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR)
83+
if(NOT LLVM_EXTERNAL_CLANG_SOURCE_DIR)
84+
set(CLANG_SOURCE_DIR ${LLVM_SOURCE_DIR}/tools/clang)
85+
elseif(EXISTS "${LLVM_EXTERNAL_CLANG_SOURCE_DIR}/CMakeLists.txt")
86+
set(CLANG_SOURCE_DIR "${LLVM_EXTERNAL_CLANG_SOURCE_DIR}")
87+
endif()
88+
if(EXISTS ${CLANG_SOURCE_DIR})
89+
message(STATUS "Using Clang source code direcotry: ${CLANG_SOURCE_DIR}")
90+
else()
91+
message(FATAL_ERROR
92+
"Can't find Clang source code directory!\n"
93+
"If you are using LLVM monorepo:\n"
94+
" 1. Clean CMake cache: `rm CMakeCache.txt`\n"
95+
" 2. Enable Clang project with `-DLLVM_ENABLE_PROJECTS=\"clang\"` option\n"
96+
"If Clang is used as a separate repository (not monorepo), it should "
97+
"be checked out at `llvm/tools/clang`."
98+
)
99+
endif()
100+
101+
if(NOT LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR)
89102
set(SPIRV_SOURCE_DIR ${LLVM_SOURCE_DIR}/projects/llvm-spirv)
90-
endif (LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR)
103+
elseif(EXISTS "${LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR}/CMakeLists.txt")
104+
set(SPIRV_SOURCE_DIR ${LLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR})
105+
endif()
106+
if(EXISTS ${SPIRV_SOURCE_DIR})
107+
message(STATUS "Using SPIRV-LLVM-Translator source code directory: ${SPIRV_SOURCE_DIR}")
108+
else()
109+
message(FATAL_ERROR
110+
"Can't find SPIRV-LLVM-Translator source code dir!\n"
111+
"If you are using LLVM monorepo, SPIRV-LLVM-Translator should be checked out "
112+
"at '<monorepo_root_dir>/llvm-spirv' and it should be enabled as an external LLVM "
113+
"project using the following 2 options:\n"
114+
" -DLLVM_EXTERNAL_PROJECTS=\"opencl-clang;llvm-spirv\"\n"
115+
" -DLLVM_EXTERNAL_LLVM_SPIRV_SOURCE_DIR=\"<monorepo_root_dir>/llvm-spirv\"\n"
116+
"If you are not using LLVM monorepo, SPIRV-LLVM-Translator should be checked "
117+
"out at `llvm/projects/llvm-spirv`"
118+
)
119+
endif()
120+
121+
set(CLANG_BASE_REVISION master)
91122
set(SPIRV_BASE_REVISION master)
123+
set(TARGET_BRANCH "ocl-open-90")
92124

93125
apply_patches(${CLANG_SOURCE_DIR}
94126
${CMAKE_CURRENT_SOURCE_DIR}/patches/clang
@@ -154,11 +186,10 @@ add_definitions( -DCOMMON_CLANG_EXPORTS )
154186

155187
if(NOT USE_PREBUILT_LLVM)
156188
set(CLANG_BINARY_DIR ${LLVM_BINARY_DIR}/tools/clang/)
157-
set(CLANG_SOURCE_DIR ${LLVM_MAIN_SRC_DIR}/tools/clang/)
158189
include_directories(
159-
${CLANG_BINARY_DIR}/include # for tablegened includes
160-
${CLANG_SOURCE_DIR}/include # for basic headers
161-
${SPIRV_SOURCE_DIR}/include)
190+
${CLANG_BINARY_DIR}/include # for tablegened includes
191+
${CLANG_SOURCE_DIR}/include # for basic headers
192+
${SPIRV_SOURCE_DIR}/include) # for SPIRV headers
162193
endif(NOT USE_PREBUILT_LLVM)
163194

164195
if(USE_PREBUILT_LLVM AND NOT LLVMSPIRV_INCLUDED_IN_LLVM)

0 commit comments

Comments
 (0)