if(DPCPP_EXECUTABLE) get_filename_component( _dpcpp_path ${DPCPP_EXECUTABLE} PATH ) else(DPCPP_EXECUTABLE) set(_dpcpp_path "") endif(DPCPP_EXECUTABLE) find_program( DPCPP_EXECUTABLE NAMES dpcpp HINTS ${_dpcpp_path} ENV PATH ) mark_as_advanced( DPCPP_EXECUTABLE ) if( DPCPP_EXECUTABLE ) execute_process(COMMAND ${DPCPP_EXECUTABLE} --version RESULT_VARIABLE _res OUTPUT_VARIABLE _out ERROR_VARIABLE _err) if( _res EQUAL 0 ) string(REGEX MATCH "([^\n]+)" _ ${_out}) message(STATUS "Found dpcpp: ${DPCPP_EXECUTABLE} version ${CMAKE_MATCH_1}") get_filename_component( _dpcpp_dir ${DPCPP_EXECUTABLE} DIRECTORY ) get_filename_component( _dpcpp_lib_dir "${_dpcpp_dir}/../lib" ABSOLUTE ) find_library(SYCL_LIBRARY sycl HINTS "${_dpcpp_lib_dir}" "${SYCL_LIBRARY_DIR}" ENV "SYCL_LIBRARY_DIR") if( SYCL_LIBRARY ) message(STATUS "SYCL library: ${SYCL_LIBRARY}") get_filename_component( _dpcpp_inc_dir "${_dpcpp_dir}/../include" ABSOLUTE ) find_file(_sycl_include_file "sycl.hpp" HINTS "${_dpcpp_inc_dir}" "${_dpcpp_inc_dir}/sycl/CL" "${SYCL_INCLUDE_DIR}" ENV "SYCL_INCLUDE_DIR") if(_sycl_include_file) get_filename_component(SYCL_INCLUDE_DIR "${_sycl_include_file}" DIRECTORY) message(STATUS "SYCL include dir: ${SYCL_INCLUDE_DIR}") set(PARSEC_HAVE_DPCPP "TRUE" CACHE BOOL "True if PaRSEC provide support for dpc++") else(_sycl_include_file) message(WARNING "Found DPC++, and SYCL library, but could not find SYCL include directory. Define SYCL_INCLUDE_DIR to enable DPC++ support") set(PARSEC_HAVE_DPCPP "FALSE" CACHE BOOL "True if PaRSEC provide support for dpc++") endif(_sycl_include_file) else( SYCL_LIBRARY ) message(WARNING "Found DPC++, but did not find SYCL library. Define SYCL_LIBRARY_DIR to enable DPC++ support") set(PARSEC_HAVE_DPCPP "FALSE" CACHE BOOL "True if PaRSEC provide support for dpc++") endif( SYCL_LIBRARY ) else( _res EQUAL 0 ) set(PARSEC_HAVE_DPCPP "FALSE" CACHE BOOL "True if PaRSEC provide support for dpc++") message(WARNING "${DPCPP_EXECUTABLE} does not work: 'dpcpp -v' returned ${_res}, with error ${_err}") message(WARNING "dpc++ support is disabled, set DPCPP_EXECUTABLE to the path of dpcpp to enable DPC++ support, and/or fix your environment to run dpcpp") endif( _res EQUAL 0 ) endif( DPCPP_EXECUTABLE )