Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
#
# 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()
Expand All @@ -25,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()
Expand All @@ -46,3 +47,5 @@ endif()

add_subdirectory(src/Core)
add_subdirectory(Wrappers/Python)

cmake_policy(POP)
61 changes: 13 additions & 48 deletions src/Core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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()
Expand All @@ -52,56 +49,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()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
find_package(IPP)

if(NOT DEFINED IPP_INCLUDE)
set(IPP_INCLUDE ${CMAKE_INSTALL_PREFIX}/include)
endif()
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})

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})
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})
endif()

if(IPP_CORE AND IPP_S AND IPP_VM AND IPP_I)
set(USE_IPP TRUE)
message("IPP libraries found")
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()
set(USE_IPP FALSE)
message("IPP libraries not found, FBP_filtering not in build")
message(WARNING "IPP libraries not found, FBP_filtering not in build")
endif()

if(USE_IPP)
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)


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)
else()
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)
Expand Down
25 changes: 25 additions & 0 deletions src/Core/cmake/FindIPP.cmake
Original file line number Diff line number Diff line change
@@ -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()
Loading