Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37791076
en ru br
Репозитории ALT

Группа :: Система/Библиотеки
Пакет: 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
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin