@@ -79,16 +79,48 @@ endif()
7979set (TARGET_NAME ${COMMON_CLANG_LIBRARY_NAME}${BUILD_PLATFORM} )
8080
8181if (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
155187if (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
162193endif (NOT USE_PREBUILT_LLVM)
163194
164195if (USE_PREBUILT_LLVM AND NOT LLVMSPIRV_INCLUDED_IN_LLVM)
0 commit comments