11#
22# Find the packages required by this module
33#
4- set (VKFFT_BACKEND 3 CACHE STRING "1 - CUDA, 3 - OpenCL, 4 - Level Zero, 5 - Metal" )
4+ if (NOT DEFINED VKFFT_BACKEND)
5+ include (CheckLanguage )
6+ check_language (CUDA )
7+ set (_vkfft_have_metal FALSE )
8+ if (APPLE )
9+ find_library (_vkfft_metal_probe Metal )
10+ find_library (_vkfft_foundation_probe Foundation )
11+ find_library (_vkfft_quartzcore_probe QuartzCore )
12+ if (_vkfft_metal_probe AND _vkfft_foundation_probe AND _vkfft_quartzcore_probe)
13+ set (_vkfft_have_metal TRUE )
14+ endif ()
15+ endif ()
16+ if (CMAKE_CUDA_COMPILER)
17+ set (_vkfft_backend_default 1)
18+ elseif (_vkfft_have_metal)
19+ set (_vkfft_backend_default 5)
20+ else ()
21+ set (_vkfft_backend_default 3)
22+ endif ()
23+ else ()
24+ set (_vkfft_backend_default ${VKFFT_BACKEND} )
25+ endif ()
26+ set (VKFFT_BACKEND ${_vkfft_backend_default} CACHE STRING "1 - CUDA, 3 - OpenCL, 4 - Level Zero, 5 - Metal" )
527if (${VKFFT_BACKEND} EQUAL 1)
6- find_package (CUDA 9.0 REQUIRED )
7- find_library (CUDA_NVRTC_LIB libnvrtc nvrtc HINTS "${CUDA_TOOLKIT_ROOT_DIR} /lib64" "${CUDA_TOOLKIT_ROOT_DIR} /lib/x64" "/usr/lib64" "/usr/local/cuda/lib64" )
28+ enable_language (CUDA )
29+ find_package (CUDAToolkit REQUIRED )
30+ set (CUDA_LIBRARIES CUDA::cudart)
31+ find_library (CUDA_NVRTC_LIB libnvrtc nvrtc HINTS "${CUDAToolkit_LIBRARY_DIR} " "/usr/lib64" "/usr/local/cuda/lib64" )
832elseif (${VKFFT_BACKEND} EQUAL 3)
933 find_package (OpenCL REQUIRED )
1034elseif (${VKFFT_BACKEND} EQUAL 4)
@@ -19,4 +43,11 @@ elseif(${VKFFT_BACKEND} EQUAL 4)
1943 if (NOT LevelZero_INCLUDE_DIR OR NOT LevelZero_LIBRARY)
2044 message (FATAL_ERROR "VKFFT_BACKEND=4 (Level Zero) requires the oneAPI Level Zero loader (ze_loader) and headers (level_zero/ze_api.h)." )
2145 endif ()
46+ elseif (${VKFFT_BACKEND} EQUAL 5)
47+ if (NOT APPLE )
48+ message (FATAL_ERROR "VKFFT_BACKEND=5 (Metal) requires Apple platforms (macOS/iOS, including Apple Silicon)." )
49+ endif ()
50+ find_library (METAL_FRAMEWORK Metal REQUIRED )
51+ find_library (FOUNDATION_FRAMEWORK Foundation REQUIRED )
52+ find_library (QUARTZCORE_FRAMEWORK QuartzCore REQUIRED )
2253endif ()
0 commit comments