1*da0073e9SAndroid Build Coastguard Worker# This will define the following variables: 2*da0073e9SAndroid Build Coastguard Worker# SYCL_FOUND : True if the system has the SYCL library. 3*da0073e9SAndroid Build Coastguard Worker# SYCL_INCLUDE_DIR : Include directories needed to use SYCL. 4*da0073e9SAndroid Build Coastguard Worker# SYCL_LIBRARY_DIR :The path to the SYCL library. 5*da0073e9SAndroid Build Coastguard Worker# SYCL_LIBRARY : SYCL library fullname. 6*da0073e9SAndroid Build Coastguard Worker 7*da0073e9SAndroid Build Coastguard Workerinclude(FindPackageHandleStandardArgs) 8*da0073e9SAndroid Build Coastguard Worker 9*da0073e9SAndroid Build Coastguard Workerset(SYCL_ROOT "") 10*da0073e9SAndroid Build Coastguard Workerif(DEFINED ENV{SYCL_ROOT}) 11*da0073e9SAndroid Build Coastguard Worker set(SYCL_ROOT $ENV{SYCL_ROOT}) 12*da0073e9SAndroid Build Coastguard Workerelseif(DEFINED ENV{CMPLR_ROOT}) 13*da0073e9SAndroid Build Coastguard Worker set(SYCL_ROOT $ENV{CMPLR_ROOT}) 14*da0073e9SAndroid Build Coastguard Workerendif() 15*da0073e9SAndroid Build Coastguard Worker 16*da0073e9SAndroid Build Coastguard Workerstring(COMPARE EQUAL "${SYCL_ROOT}" "" nosyclfound) 17*da0073e9SAndroid Build Coastguard Workerif(nosyclfound) 18*da0073e9SAndroid Build Coastguard Worker set(SYCL_FOUND False) 19*da0073e9SAndroid Build Coastguard Worker set(SYCL_REASON_FAILURE "SYCL library not set!!") 20*da0073e9SAndroid Build Coastguard Worker set(SYCL_NOT_FOUND_MESSAGE "${SYCL_REASON_FAILURE}") 21*da0073e9SAndroid Build Coastguard Worker return() 22*da0073e9SAndroid Build Coastguard Workerendif() 23*da0073e9SAndroid Build Coastguard Worker 24*da0073e9SAndroid Build Coastguard Worker# Find include path from binary. 25*da0073e9SAndroid Build Coastguard Workerfind_file( 26*da0073e9SAndroid Build Coastguard Worker SYCL_INCLUDE_DIR 27*da0073e9SAndroid Build Coastguard Worker NAMES include 28*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_ROOT} 29*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 30*da0073e9SAndroid Build Coastguard Worker ) 31*da0073e9SAndroid Build Coastguard Worker 32*da0073e9SAndroid Build Coastguard Worker# Find include/sycl path from include path. 33*da0073e9SAndroid Build Coastguard Workerfind_file( 34*da0073e9SAndroid Build Coastguard Worker SYCL_INCLUDE_SYCL_DIR 35*da0073e9SAndroid Build Coastguard Worker NAMES sycl 36*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_ROOT}/include/ 37*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 38*da0073e9SAndroid Build Coastguard Worker ) 39*da0073e9SAndroid Build Coastguard Worker 40*da0073e9SAndroid Build Coastguard Worker# Due to the unrecognized compilation option `-fsycl` in other compiler. 41*da0073e9SAndroid Build Coastguard Workerlist(APPEND SYCL_INCLUDE_DIR ${SYCL_INCLUDE_SYCL_DIR}) 42*da0073e9SAndroid Build Coastguard Worker 43*da0073e9SAndroid Build Coastguard Worker# Find library directory from binary. 44*da0073e9SAndroid Build Coastguard Workerfind_file( 45*da0073e9SAndroid Build Coastguard Worker SYCL_LIBRARY_DIR 46*da0073e9SAndroid Build Coastguard Worker NAMES lib lib64 47*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_ROOT} 48*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 49*da0073e9SAndroid Build Coastguard Worker ) 50*da0073e9SAndroid Build Coastguard Worker 51*da0073e9SAndroid Build Coastguard Worker# Find SYCL library fullname. 52*da0073e9SAndroid Build Coastguard Workerif(LINUX) 53*da0073e9SAndroid Build Coastguard Worker find_library( 54*da0073e9SAndroid Build Coastguard Worker SYCL_LIBRARY 55*da0073e9SAndroid Build Coastguard Worker NAMES sycl-preview 56*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_LIBRARY_DIR} 57*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 58*da0073e9SAndroid Build Coastguard Worker ) 59*da0073e9SAndroid Build Coastguard Workerendif() 60*da0073e9SAndroid Build Coastguard Worker# On Windows, currently there's no sycl.lib. Only sycl7.lib with version suffix, 61*da0073e9SAndroid Build Coastguard Worker# where the current version of the SYCL runtime is 7. 62*da0073e9SAndroid Build Coastguard Worker# Until oneAPI adds support to sycl.lib without the version suffix, 63*da0073e9SAndroid Build Coastguard Worker# sycl_runtime_version needs to be hardcoded and uplifted when SYCL runtime version uplifts. 64*da0073e9SAndroid Build Coastguard Worker# TODO: remove this when sycl.lib is supported on Windows 65*da0073e9SAndroid Build Coastguard Workerif(WIN32) 66*da0073e9SAndroid Build Coastguard Worker set(sycl_runtime_version 7) 67*da0073e9SAndroid Build Coastguard Worker find_library( 68*da0073e9SAndroid Build Coastguard Worker SYCL_LIBRARY 69*da0073e9SAndroid Build Coastguard Worker NAMES "sycl${sycl_runtime_version}" 70*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_LIBRARY_DIR} 71*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 72*da0073e9SAndroid Build Coastguard Worker ) 73*da0073e9SAndroid Build Coastguard Worker if(SYCL_LIBRARY STREQUAL "SYCL_LIBRARY-NOTFOUND") 74*da0073e9SAndroid Build Coastguard Worker message(FATAL_ERROR "Cannot find a SYCL library on Windows") 75*da0073e9SAndroid Build Coastguard Worker endif() 76*da0073e9SAndroid Build Coastguard Workerendif() 77*da0073e9SAndroid Build Coastguard Worker 78*da0073e9SAndroid Build Coastguard Workerfind_library( 79*da0073e9SAndroid Build Coastguard Worker OCL_LIBRARY 80*da0073e9SAndroid Build Coastguard Worker NAMES OpenCL 81*da0073e9SAndroid Build Coastguard Worker HINTS ${SYCL_LIBRARY_DIR} 82*da0073e9SAndroid Build Coastguard Worker NO_DEFAULT_PATH 83*da0073e9SAndroid Build Coastguard Worker) 84*da0073e9SAndroid Build Coastguard Worker 85*da0073e9SAndroid Build Coastguard Workerif((NOT SYCL_INCLUDE_DIR) OR (NOT SYCL_LIBRARY_DIR) OR (NOT SYCL_LIBRARY)) 86*da0073e9SAndroid Build Coastguard Worker set(SYCL_FOUND False) 87*da0073e9SAndroid Build Coastguard Worker set(SYCL_REASON_FAILURE "SYCL library is incomplete!!") 88*da0073e9SAndroid Build Coastguard Worker set(SYCL_NOT_FOUND_MESSAGE "${SYCL_REASON_FAILURE}") 89*da0073e9SAndroid Build Coastguard Worker return() 90*da0073e9SAndroid Build Coastguard Workerendif() 91*da0073e9SAndroid Build Coastguard Worker 92*da0073e9SAndroid Build Coastguard Workerfind_package_handle_standard_args( 93*da0073e9SAndroid Build Coastguard Worker SYCL 94*da0073e9SAndroid Build Coastguard Worker FOUND_VAR SYCL_FOUND 95*da0073e9SAndroid Build Coastguard Worker REQUIRED_VARS SYCL_INCLUDE_DIR SYCL_LIBRARY_DIR SYCL_LIBRARY 96*da0073e9SAndroid Build Coastguard Worker REASON_FAILURE_MESSAGE "${SYCL_REASON_FAILURE}") 97