Compile the OpenCL standard library with the same version of clang
as will compile OpenCL user code, not plain "clang" (i.e. the
system default version, which may be different).

Signed-off-by: Rebecca Palmer <rebecca_pal...@zoho.com>

diff --git a/CMake/FindLLVM.cmake b/CMake/FindLLVM.cmake
index e214437..fa13f1d 100644
--- a/CMake/FindLLVM.cmake
+++ b/CMake/FindLLVM.cmake
@@ -23,13 +23,15 @@ else (LLVM_CONFIG_EXECUTABLE)
   message(FATAL_ERROR "Could NOT find LLVM executable, please add 
-DLLVM_INSTALL_DIR=/path/to/llvm-config/ in cmake command")
 endif (LLVM_CONFIG_EXECUTABLE)
+execute_process(
+  COMMAND ${LLVM_CONFIG_EXECUTABLE} --version
+  OUTPUT_VARIABLE LLVM_VERSION
+  OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+string(REGEX REPLACE "([0-9])\\.([0-9]*).*" "\\1\\2" LLVM_VERSION_NODOT 
${LLVM_VERSION})
+string(REGEX REPLACE "([0-9])\\.([0-9]*).*" "\\1.\\2" LLVM_VERSION_NOPATCH 
${LLVM_VERSION})
 if (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR)
   SET(LLVM_FIND_VERSION_NODOT 
"${LLVM_FIND_VERSION_MAJOR}${LLVM_FIND_VERSION_MINOR}")
-  execute_process(
-    COMMAND ${LLVM_CONFIG_EXECUTABLE} --version
-    OUTPUT_VARIABLE LLVM_VERSION
-  )
-  string(REGEX REPLACE "([0-9])\\.([0-9]*).*" "\\1\\2 " LLVM_VERSION_NODOT 
${LLVM_VERSION})
   if (LLVM_VERSION_NODOT VERSION_LESS LLVM_FIND_VERSION_NODOT)
     message(FATAL_ERROR "imcompatible LLVM version ${LLVM_VERSION} required 
${LLVM_FIND_VERSION}")
   else (LLVM_VERSION_NODOT VERSION_LESS LLVM_FIND_VERSION_NODOT)
@@ -42,6 +44,25 @@ if (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR)
   endif (LLVM_VERSION_NODOT VERSION_LESS LLVM_FIND_VERSION_NODOT)
 endif (LLVM_FIND_VERSION_MAJOR AND LLVM_FIND_VERSION_MINOR)
+if (LLVM_INSTALL_DIR)
+  find_program(CLANG_EXECUTABLE
+               NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} 
clang
+               PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+  find_program(LLVM_AS_EXECUTABLE
+               NAMES llvm-as-${LLVM_VERSION_NODOT} 
llvm-as-${LLVM_VERSION_NOPATCH} llvm-as
+               PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+  find_program(LLVM_LINK_EXECUTABLE
+               NAMES llvm-link-${LLVM_VERSION_NODOT} 
llvm-link-${LLVM_VERSION_NOPATCH} llvm-link
+               PATHS ${LLVM_INSTALL_DIR} NO_DEFAULT_PATH)
+else (LLVM_INSTALL_DIR)
+  find_program(CLANG_EXECUTABLE
+               NAMES clang-${LLVM_VERSION_NODOT} clang-${LLVM_VERSION_NOPATCH} 
clang)
+  find_program(LLVM_AS_EXECUTABLE
+               NAMES llvm-as-${LLVM_VERSION_NODOT} 
llvm-as-${LLVM_VERSION_NOPATCH} llvm-as)
+  find_program(LLVM_LINK_EXECUTABLE
+               NAMES llvm-link-${LLVM_VERSION_NODOT} 
llvm-link-${LLVM_VERSION_NOPATCH} llvm-link)
+endif (LLVM_INSTALL_DIR)
+
 execute_process(
   COMMAND ${LLVM_CONFIG_EXECUTABLE} --includedir
   OUTPUT_VARIABLE LLVM_INCLUDE_DIR
diff --git a/backend/src/libocl/CMakeLists.txt 
b/backend/src/libocl/CMakeLists.txt
index 16f00ee..6b825b0 100644
--- a/backend/src/libocl/CMakeLists.txt
+++ b/backend/src/libocl/CMakeLists.txt
@@ -136,7 +136,7 @@ MACRO(ADD_CL_TO_BC_TARGET _file)
     ADD_CUSTOM_COMMAND(OUTPUT ${output_name}
        COMMAND mkdir -p ${OCL_OBJECT_DIR}/
        #COMMAND echo ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -I 
${LIBOCL_BINARY_DIR}/include/ -emit-llvm-bc -triple spir -o ${output_name} -x 
cl ${_file}
-       COMMAND ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -I 
${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -triple spir -o ${output_name} -x cl 
${_file}
+       COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -I 
${OCL_OBJECT_DIR}/include/ -emit-llvm-bc -triple spir -o ${output_name} -x cl 
${_file}
        DEPENDS ${_file} ${OCL_HEADER_FILES}
        COMMENT "Compiling ${_file}"
        )
@@ -175,7 +175,7 @@ MACRO(ADD_LL_TO_BC_TARGET M)
     ADD_CUSTOM_COMMAND(OUTPUT ${output_name}
        COMMAND mkdir -p ${OCL_OBJECT_DIR}/
        #COMMAND echo ${LLVM_INSTALL_DIR}llvm-as -o ${output_name} ${srcll_name}
-       COMMAND ${LLVM_INSTALL_DIR}llvm-as -o ${output_name} ${srcll_name}
+       COMMAND ${LLVM_AS_EXECUTABLE} -o ${output_name} ${srcll_name}
        DEPENDS ${srcll_name}
        COMMENT "Compiling ${srcll_name}"
        )
@@ -193,21 +193,21 @@ ENDFOREACH(f)
 ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.bc
     COMMAND mkdir -p ${LIBOCL_BINARY_DIR}/lib/
     #COMMAND echo llvm-link -o ${LIBOCL_BINARY_DIR}/lib/beignet.bc 
${OCL_BC_FILES}
-    COMMAND ${LLVM_INSTALL_DIR}llvm-link -o ${OCL_OBJECT_DIR}/beignet.bc 
${OCL_BC_FILES}
+    COMMAND ${LLVM_LINK_EXECUTABLE} -o ${OCL_OBJECT_DIR}/beignet.bc 
${OCL_BC_FILES}
     DEPENDS ${OCL_BC_FILES}
     COMMENT "Generate the bitcode file: ${OCL_OBJECT_DIR}/beignet.bc"
     )
ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.local.pch
     COMMAND mkdir -p ${OCL_OBJECT_DIR}
-    COMMAND ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -triple spir -I 
${OCL_OBJECT_DIR}/include/ -emit-pch -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o 
${OCL_OBJECT_DIR}/beignet.local.pch
+    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir -I 
${OCL_OBJECT_DIR}/include/ -emit-pch -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o 
${OCL_OBJECT_DIR}/beignet.local.pch
     DEPENDS ${OCL_HEADER_FILES}
     COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.local.pch"
     )
ADD_CUSTOM_COMMAND(OUTPUT ${OCL_OBJECT_DIR}/beignet.pch
     COMMAND mkdir -p ${OCL_OBJECT_DIR}
-    COMMAND ${LLVM_INSTALL_DIR}clang -cc1 ${CLANG_OCL_FLAGS} -triple spir -I 
${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot 
${LIBOCL_BINARY_DIR} -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o 
${OCL_OBJECT_DIR}/beignet.pch
+    COMMAND ${CLANG_EXECUTABLE} -cc1 ${CLANG_OCL_FLAGS} -triple spir -I 
${OCL_OBJECT_DIR}/include/ --relocatable-pch -emit-pch -isysroot 
${LIBOCL_BINARY_DIR} -x cl ${OCL_OBJECT_DIR}/include/ocl.h -o 
${OCL_OBJECT_DIR}/beignet.pch
     DEPENDS ${OCL_HEADER_FILES}
     COMMENT "Generate the pch file: ${OCL_OBJECT_DIR}/beignet.pch"
     )

_______________________________________________
Beignet mailing list
Beignet@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to