xref: /llvm-project/mlir/cmake/modules/FindSyclRuntime.cmake (revision 8197ea2a08d5e6d72c7579d8cc7c228ae2dbe579)
17fa19e6fSNishant Patel# CMake find_package() module for SYCL Runtime
27fa19e6fSNishant Patel#
37fa19e6fSNishant Patel# Example usage:
47fa19e6fSNishant Patel#
57fa19e6fSNishant Patel# find_package(SyclRuntime)
67fa19e6fSNishant Patel#
77fa19e6fSNishant Patel# If successful, the following variables will be defined:
87fa19e6fSNishant Patel# SyclRuntime_FOUND
97fa19e6fSNishant Patel# SyclRuntime_INCLUDE_DIRS
107fa19e6fSNishant Patel# SyclRuntime_LIBRARY
117fa19e6fSNishant Patel# SyclRuntime_LIBRARIES_DIR
127fa19e6fSNishant Patel#
137fa19e6fSNishant Patel
147fa19e6fSNishant Patelinclude(FindPackageHandleStandardArgs)
157fa19e6fSNishant Patel
167fa19e6fSNishant Patelif(NOT DEFINED ENV{CMPLR_ROOT})
177fa19e6fSNishant Patel    message(WARNING "Please make sure to install Intel DPC++ Compiler and run setvars.(sh/bat)")
187fa19e6fSNishant Patel    message(WARNING "You can download standalone Intel DPC++ Compiler from https://www.intel.com/content/www/us/en/developer/articles/tool/oneapi-standalone-components.html#compilers")
197fa19e6fSNishant Patelelse()
20*8197ea2aSSang Ik Lee    get_filename_component(ONEAPI_VER "$ENV{CMPLR_ROOT}" NAME)
21*8197ea2aSSang Ik Lee    if(ONEAPI_VER VERSION_LESS 2024.0)
227fa19e6fSNishant Patel        if(LINUX OR (${CMAKE_SYSTEM_NAME} MATCHES "Linux"))
237fa19e6fSNishant Patel            set(SyclRuntime_ROOT "$ENV{CMPLR_ROOT}/linux")
247fa19e6fSNishant Patel        elseif(WIN32)
257fa19e6fSNishant Patel            set(SyclRuntime_ROOT "$ENV{CMPLR_ROOT}/windows")
267fa19e6fSNishant Patel        endif()
27*8197ea2aSSang Ik Lee    else()
28*8197ea2aSSang Ik Lee        set(SyclRuntime_ROOT "$ENV{CMPLR_ROOT}")
29*8197ea2aSSang Ik Lee    endif()
307fa19e6fSNishant Patel    list(APPEND SyclRuntime_INCLUDE_DIRS "${SyclRuntime_ROOT}/include")
317fa19e6fSNishant Patel    list(APPEND SyclRuntime_INCLUDE_DIRS "${SyclRuntime_ROOT}/include/sycl")
327fa19e6fSNishant Patel
337fa19e6fSNishant Patel    set(SyclRuntime_LIBRARY_DIR "${SyclRuntime_ROOT}/lib")
347fa19e6fSNishant Patel
357fa19e6fSNishant Patel    message(STATUS "SyclRuntime_LIBRARY_DIR: ${SyclRuntime_LIBRARY_DIR}")
367fa19e6fSNishant Patel    find_library(SyclRuntime_LIBRARY
377fa19e6fSNishant Patel        NAMES sycl
387fa19e6fSNishant Patel        PATHS ${SyclRuntime_LIBRARY_DIR}
397fa19e6fSNishant Patel        NO_DEFAULT_PATH
407fa19e6fSNishant Patel        )
417fa19e6fSNishant Patelendif()
427fa19e6fSNishant Patel
437fa19e6fSNishant Patelif(SyclRuntime_LIBRARY)
447fa19e6fSNishant Patel    set(SyclRuntime_FOUND TRUE)
457fa19e6fSNishant Patel    if(NOT TARGET SyclRuntime::SyclRuntime)
467fa19e6fSNishant Patel        add_library(SyclRuntime::SyclRuntime INTERFACE IMPORTED)
477fa19e6fSNishant Patel        set_target_properties(SyclRuntime::SyclRuntime
487fa19e6fSNishant Patel            PROPERTIES INTERFACE_LINK_LIBRARIES "${SyclRuntime_LIBRARY}"
497fa19e6fSNishant Patel      )
507fa19e6fSNishant Patel      set_target_properties(SyclRuntime::SyclRuntime
517fa19e6fSNishant Patel          PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${SyclRuntime_INCLUDE_DIRS}"
527fa19e6fSNishant Patel      )
537fa19e6fSNishant Patel    endif()
547fa19e6fSNishant Patelelse()
557fa19e6fSNishant Patel    set(SyclRuntime_FOUND FALSE)
567fa19e6fSNishant Patelendif()
577fa19e6fSNishant Patel
587fa19e6fSNishant Patelfind_package_handle_standard_args(SyclRuntime
597fa19e6fSNishant Patel    REQUIRED_VARS
607fa19e6fSNishant Patel        SyclRuntime_FOUND
617fa19e6fSNishant Patel        SyclRuntime_INCLUDE_DIRS
627fa19e6fSNishant Patel        SyclRuntime_LIBRARY
637fa19e6fSNishant Patel        SyclRuntime_LIBRARY_DIR
647fa19e6fSNishant Patel    HANDLE_COMPONENTS
657fa19e6fSNishant Patel)
667fa19e6fSNishant Patel
677fa19e6fSNishant Patelmark_as_advanced(SyclRuntime_LIBRARY SyclRuntime_INCLUDE_DIRS)
687fa19e6fSNishant Patel
697fa19e6fSNishant Patelif(SyclRuntime_FOUND)
707fa19e6fSNishant Patel    find_package_message(SyclRuntime "Found SyclRuntime: ${SyclRuntime_LIBRARY}" "")
717fa19e6fSNishant Patelelse()
727fa19e6fSNishant Patel    find_package_message(SyclRuntime "Could not find SyclRuntime" "")
737fa19e6fSNishant Patelendif()
74