LGTM, will push latter. Thanks.
On Sat, Mar 21, 2015 at 07:34:22AM +0000, Rebecca N. Palmer wrote: > 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 <[email protected]> > > 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 > [email protected] > http://lists.freedesktop.org/mailman/listinfo/beignet _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
