Группа :: Система/Библиотеки
Пакет: itk
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: itk-5.3.0-VkFFTBackend.patch
Скачать
Скачать
From 555c8da00fbc32fc4d0aa33fcd58b0016a1dd9d9 Mon Sep 17 00:00:00 2001
From: Elizaveta Morozova <morozovaes@altlinux.org>
Date: Wed, 19 Jul 2023 18:12:34 +0300
Subject: [PATCH] itk-5.3.0-VkFFTBackend
Use VkFFT as a header-only library.
Avoid using FetchContent for library dependency, use system Cleaver instead.
---
CMakeLists.txt | 71 +++++++++++++++++++++++++-------------------------
1 file changed, 35 insertions(+), 36 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30713f3..32e50a9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,59 +10,58 @@ if(NOT ITK_SOURCE_DIR)
endif()
set(VKFFT_BACKEND 3 CACHE STRING "0 - Vulkan, 1 - CUDA, 2 - HIP, 3 - OpenCL")
-if(${VKFFT_BACKEND} EQUAL 1)
-# pass
-elseif(${VKFFT_BACKEND} EQUAL 3)
-## When this module is loaded by an app, load OpenCL too.
-set(VkFFTBackend_EXPORT_CODE_INSTALL "
-set(OpenCL_DIR \"${OpenCL_DIR}\")
-find_package(OpenCL REQUIRED)
-")
-set(VkFFTBackend_EXPORT_CODE_BUILD "
-if(NOT ITK_BINARY_DIR)
+add_compile_definitions(VKFFT_BACKEND=${VKFFT_BACKEND})
+
+if(VKFFT_BACKEND EQUAL 1)
+ # pass
+elseif(VKFFT_BACKEND EQUAL 3)
+ add_compile_definitions(CL_TARGET_OPENCL_VERSION=120)
+
+ ## When this module is loaded by an app, load OpenCL too.
+ set(VkFFTBackend_EXPORT_CODE_INSTALL "
set(OpenCL_DIR \"${OpenCL_DIR}\")
find_package(OpenCL REQUIRED)
-endif()
-")
-set(VkFFTBackend_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS})
-get_filename_component(OpenCL_LIB_DIR ${OpenCL_LIBRARY} DIRECTORY)
-set(VkFFTBackend_SYSTEM_LIBRARY_DIRS ${OpenCL_LIB_DIR})
+ ")
+ set(VkFFTBackend_EXPORT_CODE_BUILD "
+ if(NOT ITK_BINARY_DIR)
+ set(OpenCL_DIR \"${OpenCL_DIR}\")
+ find_package(OpenCL REQUIRED)
+ endif()
+ ")
+ list(APPEND VkFFTBackend_SYSTEM_INCLUDE_DIRS ${OpenCL_INCLUDE_DIRS})
+ get_filename_component(OpenCL_LIB_DIR ${OpenCL_LIBRARY} DIRECTORY)
+ set(VkFFTBackend_SYSTEM_LIBRARY_DIRS ${OpenCL_LIB_DIR})
+else()
+ message(WARNING "ITKVkFFTBackend currently supports only CUDA or OpenCL backends.")
endif()
-## VkFFT dependency
-include(FetchContent)
-add_definitions(-DVKFFT_BACKEND=${VKFFT_BACKEND} -DCL_TARGET_OPENCL_VERSION=120)
-set(vulkan_GIT_REPOSITORY "https://github.com/DTolm/VkFFT") # original source
-set(vulkan_GIT_TAG "3aecc219153f97aaa46e613abbf430033eb27512")
-# set(vulkan_GIT_REPOSITORY "https://github.com/Leengit/VkFFT") # Kitware copy of original source
-# set(vulkan_GIT_TAG "0c5ddfffe1af9ac96c21d4c38941f9b5481b73c3")
-FetchContent_Declare(
- vulkan_lib
- GIT_REPOSITORY ${vulkan_GIT_REPOSITORY}
- GIT_TAG ${vulkan_GIT_TAG}
- )
-FetchContent_MakeAvailable(vulkan_lib)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# Remove this list of disabled warnings when VkFFT has been updated
message("Adding compile options: -Wno-format-overflow")
add_compile_options(-Wno-format-overflow)
- target_compile_options(VkFFT INTERFACE -Wno-format-overflow)
-endif()
-if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
# Remove this list of disabled warnings when VkFFT has been updated
message("Adding compile options: /wd4146 /wd4244 /wd4996")
# C4146: unary minus operator applied to unsigned type, result still unsigned
# C4244: 'argument': conversion from 'double' to 'uint64_t', possible loss of data
# C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead.
add_compile_options(/wd4146 /wd4244 /wd4996)
- target_compile_options(VkFFT INTERFACE /wd4146 /wd4244 /wd4996)
endif()
-# Cache content path so that it is available in test driver subproject
-# when built as an ITK remote module
-set(vulkan_lib_SOURCE_DIR "${vulkan_lib_SOURCE_DIR}" CACHE PATH "VkFFT content path")
+#### Populate VkFFT dependency ###
+
+# VkFFT is a header-only library with build target(s)
+# for FFT benchmarking and applications.
+# By default we populate only the header library file `VkFFT.h`
+# without building other VkFFT targets.
+
+find_path(vkfft_INCLUDE_DIR NAMES vkFFT.h PATHS /usr/include/vkFFT)
+
+include_directories(vkfft_INCLUDE_DIR)
+
+list(APPEND VkFFTBackend_SYSTEM_INCLUDE_DIRS ${vkfft_INCLUDE_DIR})
-include_directories(SYSTEM ${vulkan_lib_SOURCE_DIR}/vkFFT)
+#### Configure ITK module ####
if(NOT ITK_SOURCE_DIR)
find_package(ITK REQUIRED)
--
2.33.8