|
| 1 | +cmake_minimum_required(VERSION 3.22...3.27 FATAL_ERROR) |
| 2 | + |
| 3 | +project(example_cython_use_dpctl_sycl VERSION 0.1 LANGUAGES CXX |
| 4 | + DESCRIPTION "Example of Cython extension to use Cython API to SYCL objects.") |
| 5 | +set(DPCTL_CMAKE_MODULES_PATH "${CMAKE_SOURCE_DIR}/../../../cmake") |
| 6 | +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${DPCTL_CMAKE_MODULES_PATH}) |
| 7 | + |
| 8 | +find_package(IntelSYCL REQUIRED PATHS ${DPCTL_CMAKE_MODULES_PATH} NO_DEFAULT_PATH) |
| 9 | + |
| 10 | + |
| 11 | +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}") |
| 12 | +set(CMAKE_CXX_STANDARD 17) |
| 13 | +set(CMAKE_CXX_STANDARD_REQUIRED True) |
| 14 | + |
| 15 | +# Define CMAKE_INSTALL_xxx: LIBDIR, INCLUDEDIR |
| 16 | +include(GNUInstallDirs) |
| 17 | + |
| 18 | +find_package(Python REQUIRED COMPONENTS Development.Module NumPy) |
| 19 | +find_package(Dpctl REQUIRED) |
| 20 | + |
| 21 | +# -w is to set working directory (and correctly set __pyx_f[] array of filenames) |
| 22 | +set(CYTHON_FLAGS "-t -w \"${CMAKE_SOURCE_DIR}\"") |
| 23 | +find_package(Cython REQUIRED) |
| 24 | + |
| 25 | +set(py_module_name _cython_api) |
| 26 | + |
| 27 | +set(_cy_source use_dpctl_sycl/_cython_api.pyx) |
| 28 | +add_cython_target(${py_module_name} ${_cy_source} CXX OUTPUT_VAR _generated_cy_src) |
| 29 | +Python_add_library(${py_module_name} MODULE WITH_SOABI ${_generated_cy_src}) |
| 30 | +add_sycl_to_target(TARGET ${py_module_name} SOURCES ${_generated_cy_src}) |
| 31 | +target_include_directories(${py_module_name} PUBLIC include ${Dpctl_INCLUDE_DIRS}) |
| 32 | +target_link_libraries(${py_module_name} PRIVATE Python::NumPy) |
| 33 | + |
| 34 | +install(TARGETS ${py_module_name} DESTINATION use_dpctl_sycl) |
| 35 | + |
| 36 | +foreach(_src_fn ${_sources}) |
| 37 | + get_source_file_property(_compile_options ${_src_fn} COMPILE_OPTIONS) |
| 38 | + set(_combined_options ${_compile_options} "-O3") |
| 39 | + set_source_files_properties(${_src_fn} |
| 40 | + PROPERTIES |
| 41 | + COMPILE_OPTIONS "${_combined_options}" |
| 42 | + ) |
| 43 | +endforeach() |
| 44 | +target_link_options(${py_module_name} PRIVATE -fsycl-device-code-split=per_kernel) |
| 45 | + |
| 46 | +set(ignoreMe "${SKBUILD}") |
0 commit comments