From 7add9984f943c656f8cbed80a85216222502a641 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 23 Apr 2025 12:57:58 +0100 Subject: [PATCH 1/6] quick FindIPP --- src/Core/CMakeLists.txt | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index da824d83e9..51bb6fdce6 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -52,33 +52,24 @@ else() set (OpenMP_EXE_LINKER_FLAGS ${OpenMP_C_FLAGS}) endif() -if(NOT DEFINED IPP_LIBRARY) - if (UNIX) - set(IPP_LIBRARY ${CMAKE_INSTALL_PREFIX}/lib) - elseif(WIN32) - set(IPP_LIBRARY ${CMAKE_INSTALL_PREFIX}/Library/lib) - endif() -endif() - -if(NOT DEFINED IPP_INCLUDE) - set(IPP_INCLUDE ${CMAKE_INSTALL_PREFIX}/include) -endif() - if (UNIX) - find_library(IPP_CORE libippcore.so PATHS ${IPP_LIBRARY}) - find_library(IPP_S libipps.so PATHS ${IPP_LIBRARY}) - find_library(IPP_VM libippvm.so PATHS ${IPP_LIBRARY}) - find_library(IPP_I libippi.so PATHS ${IPP_LIBRARY}) + find_library(IPP_CORE libippcore.so) + find_library(IPP_S libipps.so) + find_library(IPP_VM libippvm.so) + find_library(IPP_I libippi.so) elseif(WIN32) - find_library(IPP_CORE ippcore PATHS ${IPP_LIBRARY}) - find_library(IPP_S ipps PATHS ${IPP_LIBRARY}) - find_library(IPP_VM ippvm PATHS ${IPP_LIBRARY}) - find_library(IPP_I ippi PATHS ${IPP_LIBRARY}) + find_library(IPP_CORE ippcore) + find_library(IPP_S ipps) + find_library(IPP_VM ippvm) + find_library(IPP_I ippi) endif() if(IPP_CORE AND IPP_S AND IPP_VM AND IPP_I) set(USE_IPP TRUE) message("IPP libraries found") + get_filename_component(LIB_BASE ${IPP_CORE}/../.. REALPATH) + find_file(IPP_INCLUDE ipp.h ${LIB_BASE} PATH_SUFFIXES include include/ipp) + get_filename_component(IPP_INCLUDE ${IPP_INCLUDE}/.. REALPATH) else() set(USE_IPP FALSE) message("IPP libraries not found, FBP_filtering not in build") From 3d9d9e33d004ea026c1a4e672417a96608118d41 Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Wed, 23 Apr 2025 14:47:42 +0100 Subject: [PATCH 2/6] bump cmake to fix docker --- CMakeLists.txt | 8 +------- recipe/meta.yaml | 3 +-- scripts/create_local_env_for_cil_development.sh | 6 +++--- scripts/requirements-test.yml | 2 +- src/Core/CMakeLists.txt | 4 ++-- 5 files changed, 8 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 267d5819bc..9c0536bd11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,13 +15,7 @@ # # Authors: # CIL Developers, listed at: https://github.com/TomographicImaging/CIL/blob/master/NOTICE.txt -# Richard Brown (University College London) - -if(APPLE) - cmake_minimum_required(VERSION 3.16) -else() - cmake_minimum_required(VERSION 3.5) -endif() +cmake_minimum_required(VERSION 3.20) project(cil LANGUAGES CXX) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 3305bcc3ca..fb5ef6fdef 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -42,8 +42,7 @@ requirements: - pip - setuptools >=64 - setuptools_scm >=8 - - cmake # [not osx] - - cmake >=3.16 # [osx] + - cmake >=3.20 - libgcc-ng # [linux] - libstdcxx-ng # [linux] - _openmp_mutex # [linux] diff --git a/scripts/create_local_env_for_cil_development.sh b/scripts/create_local_env_for_cil_development.sh index dee37eb1e9..da481916fb 100755 --- a/scripts/create_local_env_for_cil_development.sh +++ b/scripts/create_local_env_for_cil_development.sh @@ -48,7 +48,7 @@ echo "Environment name $name" conda_args=(create --name="$name" python="$python" numpy="$numpy" - cmake'>=3.16' + cmake'>=3.20' dxchange h5py ipp'>=2021.10' @@ -99,7 +99,7 @@ else ) fi -conda "${conda_args[@]}" +conda "${conda_args[@]}" if [[ -n "${pip_install_pkgs[@]}" ]]; then python -m pip install "${pip_install_pkgs[@]}" -fi \ No newline at end of file +fi diff --git a/scripts/requirements-test.yml b/scripts/requirements-test.yml index 9abef82307..d7f2d532a4 100644 --- a/scripts/requirements-test.yml +++ b/scripts/requirements-test.yml @@ -29,7 +29,7 @@ dependencies: - python-wget - scikit-image - packaging - - cmake >=3.16 + - cmake >=3.20 - setuptools <71 - ipp-include=2021.12 - ipp-devel=2021.12 diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index 51bb6fdce6..9c13bf10ba 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -67,9 +67,9 @@ endif() if(IPP_CORE AND IPP_S AND IPP_VM AND IPP_I) set(USE_IPP TRUE) message("IPP libraries found") - get_filename_component(LIB_BASE ${IPP_CORE}/../.. REALPATH) + file(REAL_PATH ${IPP_CORE}/../.. LIB_BASE) find_file(IPP_INCLUDE ipp.h ${LIB_BASE} PATH_SUFFIXES include include/ipp) - get_filename_component(IPP_INCLUDE ${IPP_INCLUDE}/.. REALPATH) + cmake_path(GET IPP_INCLUDE PARENT_PATH IPP_INCLUDE) else() set(USE_IPP FALSE) message("IPP libraries not found, FBP_filtering not in build") From 877fc24cbbd3b505ed11425522cb84b81d74c88f Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Thu, 24 Apr 2025 08:25:16 +0100 Subject: [PATCH 3/6] separate FindIPP.cmake --- src/Core/CMakeLists.txt | 31 ++++++------------------------- src/Core/cmake/FindIPP.cmake | 25 +++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 25 deletions(-) create mode 100644 src/Core/cmake/FindIPP.cmake diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index 9c13bf10ba..b699d203ee 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -52,30 +52,10 @@ else() set (OpenMP_EXE_LINKER_FLAGS ${OpenMP_C_FLAGS}) endif() -if (UNIX) - find_library(IPP_CORE libippcore.so) - find_library(IPP_S libipps.so) - find_library(IPP_VM libippvm.so) - find_library(IPP_I libippi.so) -elseif(WIN32) - find_library(IPP_CORE ippcore) - find_library(IPP_S ipps) - find_library(IPP_VM ippvm) - find_library(IPP_I ippi) -endif() - -if(IPP_CORE AND IPP_S AND IPP_VM AND IPP_I) - set(USE_IPP TRUE) - message("IPP libraries found") - file(REAL_PATH ${IPP_CORE}/../.. LIB_BASE) - find_file(IPP_INCLUDE ipp.h ${LIB_BASE} PATH_SUFFIXES include include/ipp) - cmake_path(GET IPP_INCLUDE PARENT_PATH IPP_INCLUDE) -else() - set(USE_IPP FALSE) - message("IPP libraries not found, FBP_filtering not in build") -endif() +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +find_package(IPP) -if(USE_IPP) +if(IPP_FOUND) add_library(cilacc SHARED ${CMAKE_CURRENT_SOURCE_DIR}/utilities.cpp ${CMAKE_CURRENT_SOURCE_DIR}/axpby.cpp ${CMAKE_CURRENT_SOURCE_DIR}/FiniteDifferenceLibrary.cpp @@ -83,9 +63,10 @@ if(USE_IPP) ${CMAKE_CURRENT_SOURCE_DIR}/Binning.cpp) - target_link_libraries(cilacc ${OpenMP_EXE_LINKER_FLAGS} ${IPP_CORE} ${IPP_S} ${IPP_I} ${IPP_VM}) - include_directories(cilacc PUBLIC ${IPP_INCLUDE} ${CMAKE_CURRENT_SOURCE_DIR}/include) + target_link_libraries(cilacc ${OpenMP_EXE_LINKER_FLAGS} ${IPP_LIBRARIES}) + include_directories(cilacc PUBLIC ${IPP_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) else() + message(WARNING "IPP libraries not found, FBP_filtering not in build") add_library(cilacc SHARED ${CMAKE_CURRENT_SOURCE_DIR}/utilities.cpp ${CMAKE_CURRENT_SOURCE_DIR}/axpby.cpp ${CMAKE_CURRENT_SOURCE_DIR}/FiniteDifferenceLibrary.cpp ) diff --git a/src/Core/cmake/FindIPP.cmake b/src/Core/cmake/FindIPP.cmake new file mode 100644 index 0000000000..b5c402d202 --- /dev/null +++ b/src/Core/cmake/FindIPP.cmake @@ -0,0 +1,25 @@ +# Outputs: IPP_FOUND, IPP_INCLUDE_DIRS, IPP_LIBRARIES + +find_path(IPP_ROOT_DIR include/ipp.h PATHS ${IPP_ROOT} $ENV{IPPROOT} $ENV{CONDA_PREFIX}) +find_path(IPP_INCLUDE_DIR ipp.h PATHS ${IPP_ROOT_DIR}/include) + +if(APPLE) + set(IPP_PRE "lib") + set(IPP_POST ".a") +elseif(NOT WIN32) + set(IPP_PRE "lib") + set(IPP_POST ".so") +endif() +find_library(IPP_CORE ${IPP_PRE}ippcore${IPP_POST} PATHS ${IPP_ROOT_DIR}) +find_library(IPP_S ${IPP_PRE}ipps${IPP_POST} PATHS ${IPP_ROOT_DIR}) +find_library(IPP_VM ${IPP_PRE}ippvm${IPP_POST} PATHS ${IPP_ROOT_DIR}) +find_library(IPP_I ${IPP_PRE}ippi${IPP_POST} PATHS ${IPP_ROOT_DIR}) + +if(IPP_INCLUDE_DIR AND IPP_CORE AND IPP_S AND IPP_VM AND IPP_I) + message(STATUS "IPP found in: ${IPP_ROOT_DIR}") + set(IPP_FOUND TRUE) + set(IPP_INCLUDE_DIRS "${IPP_INCLUDE_DIR}") + set(IPP_LIBRARIES "${IPP_CORE};${IPP_S};${IPP_VM};${IPP_I}") +else() + message(STATUS "IPP not found") +endif() From aa4f38ec479d7113498d1d0fc9e246d2b2d331fe Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Thu, 24 Apr 2025 08:53:31 +0100 Subject: [PATCH 4/6] Revert "bump cmake to fix docker" This reverts commit 3d9d9e33d004ea026c1a4e672417a96608118d41. --- CMakeLists.txt | 6 +++++- recipe/meta.yaml | 3 ++- scripts/create_local_env_for_cil_development.sh | 6 +++--- scripts/requirements-test.yml | 2 +- src/Core/CMakeLists.txt | 3 --- 5 files changed, 11 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9c0536bd11..89f2342caa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,11 @@ # # Authors: # CIL Developers, listed at: https://github.com/TomographicImaging/CIL/blob/master/NOTICE.txt -cmake_minimum_required(VERSION 3.20) +if(APPLE) + cmake_minimum_required(VERSION 3.16) +else() + cmake_minimum_required(VERSION 3.5) +endif() project(cil LANGUAGES CXX) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index fb5ef6fdef..3305bcc3ca 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -42,7 +42,8 @@ requirements: - pip - setuptools >=64 - setuptools_scm >=8 - - cmake >=3.20 + - cmake # [not osx] + - cmake >=3.16 # [osx] - libgcc-ng # [linux] - libstdcxx-ng # [linux] - _openmp_mutex # [linux] diff --git a/scripts/create_local_env_for_cil_development.sh b/scripts/create_local_env_for_cil_development.sh index da481916fb..dee37eb1e9 100755 --- a/scripts/create_local_env_for_cil_development.sh +++ b/scripts/create_local_env_for_cil_development.sh @@ -48,7 +48,7 @@ echo "Environment name $name" conda_args=(create --name="$name" python="$python" numpy="$numpy" - cmake'>=3.20' + cmake'>=3.16' dxchange h5py ipp'>=2021.10' @@ -99,7 +99,7 @@ else ) fi -conda "${conda_args[@]}" +conda "${conda_args[@]}" if [[ -n "${pip_install_pkgs[@]}" ]]; then python -m pip install "${pip_install_pkgs[@]}" -fi +fi \ No newline at end of file diff --git a/scripts/requirements-test.yml b/scripts/requirements-test.yml index d7f2d532a4..9abef82307 100644 --- a/scripts/requirements-test.yml +++ b/scripts/requirements-test.yml @@ -29,7 +29,7 @@ dependencies: - python-wget - scikit-image - packaging - - cmake >=3.20 + - cmake >=3.16 - setuptools <71 - ipp-include=2021.12 - ipp-devel=2021.12 diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index b699d203ee..b310eaa3ae 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -15,8 +15,6 @@ # # Authors: # CIL Developers, listed at: https://github.com/TomographicImaging/CIL/blob/master/NOTICE.txt -# Richard Brown (UCL) - set (CMAKE_CXX_STANDARD 11) set (CMAKE_CXX_STANDARD_REQUIRED ON) if(NOT DEFINED CMAKE_BUILD_TYPE) @@ -27,7 +25,6 @@ message ("OpenMP_CXX_FLAGS ${OpenMP_CXX_FLAGS}") find_package(OpenMP REQUIRED) add_definitions(${OpenMP_CXX_FLAGS}) - if (WIN32) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ddll_EXPORTS") endif() From 74e8ea4e21e9c87872b7665d7be95bd4cb6102ce Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Thu, 24 Apr 2025 10:11:15 +0100 Subject: [PATCH 5/6] simplify logic --- src/Core/CMakeLists.txt | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/Core/CMakeLists.txt b/src/Core/CMakeLists.txt index b310eaa3ae..82f0c8e0b0 100644 --- a/src/Core/CMakeLists.txt +++ b/src/Core/CMakeLists.txt @@ -52,26 +52,22 @@ endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(IPP) -if(IPP_FOUND) - add_library(cilacc SHARED ${CMAKE_CURRENT_SOURCE_DIR}/utilities.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/axpby.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/FiniteDifferenceLibrary.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/FBP_filtering.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/Binning.cpp) - +list(APPEND cilacc_SOURCES utilities.cpp axpby.cpp FiniteDifferenceLibrary.cpp) +list(APPEND cilacc_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include) +list(APPEND cilacc_LIBRARIES ${OpenMP_EXE_LINKER_FLAGS}) - target_link_libraries(cilacc ${OpenMP_EXE_LINKER_FLAGS} ${IPP_LIBRARIES}) - include_directories(cilacc PUBLIC ${IPP_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include) +if(IPP_FOUND) + list(APPEND cilacc_SOURCES FBP_filtering.cpp Binning.cpp) + list(APPEND cilacc_INCLUDES ${IPP_INCLUDE_DIRS}) + list(APPEND cilacc_LIBRARIES ${IPP_LIBRARIES}) else() message(WARNING "IPP libraries not found, FBP_filtering not in build") - add_library(cilacc SHARED ${CMAKE_CURRENT_SOURCE_DIR}/utilities.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/axpby.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/FiniteDifferenceLibrary.cpp ) - - target_link_libraries(cilacc ${OpenMP_EXE_LINKER_FLAGS}) - include_directories(cilacc PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) endif() +add_library(cilacc SHARED ${cilacc_SOURCES}) +target_link_libraries(cilacc ${cilacc_LIBRARIES}) +include_directories(cilacc PUBLIC ${cilacc_INCLUDES}) + ## Install #include(GNUInstallDirs) #install(TARGETS cilacc From 257de66a4a8da776640908e2bb73b0279606b61b Mon Sep 17 00:00:00 2001 From: Casper da Costa-Luis Date: Tue, 29 Apr 2025 16:16:31 +0100 Subject: [PATCH 6/6] cmake: find using *_ROOT hints --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89f2342caa..261c61cb66 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,9 @@ endif() project(cil LANGUAGES CXX) +cmake_policy(PUSH) + +cmake_policy(SET CMP0074 NEW) if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.27) cmake_policy(SET CMP0148 OLD) endif() @@ -44,3 +47,5 @@ endif() add_subdirectory(src/Core) add_subdirectory(Wrappers/Python) + +cmake_policy(POP)