diff --git a/CMakeLists.txt b/CMakeLists.txt index d738cac..f518dd1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,22 +1,19 @@ # define minimum cmake version -cmake_minimum_required(VERSION 3.16 FATAL_ERROR) +cmake_minimum_required(VERSION 3.30 FATAL_ERROR) -#if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) -#message(FATAL_ERROR “In-source_build_detected!_Create_a_build_folder_and_call_CMake_there”) -#endif() +# execute_process( +# COMMAND git describe --tags --abbrev=0 | cut -d'v' -f 2 +# WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" +# OUTPUT_VARIABLE KIPTOOL_VERSION +# OUTPUT_STRIP_TRAILING_WHITESPACE +# ) -execute_process( - COMMAND git describe --tags --abbrev=0 | cut -d'v' -f 2 - WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" - OUTPUT_VARIABLE KIPTOOL_VERSION - OUTPUT_STRIP_TRAILING_WHITESPACE -) +project(nGITool VERSION 1.0 LANGUAGES CXX) -project(nGItool VERSION 1.0 LANGUAGES CXX) +set(CMAKE_FIND_DEBUG_MODE OFF) -# require C++17 if(NOT DEFINED CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 20) + endif(NOT DEFINED CMAKE_CXX_STANDARD) set(CMAKE_CXX_EXTENSIONS OFF) @@ -32,54 +29,127 @@ if(NOT CMAKE_BUILD_TYPE) ) endif(NOT CMAKE_BUILD_TYPE) -#set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ) -set(CMAKE_MODULE_PATH "lib" ) -# for testing we will need the python interpreter -find_package(PythonInterp REQUIRED) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/applications) -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +file(TO_CMAKE_PATH "$ENV{QTPATH}/lib/cmake/;${CMAKE_BINARY_DIR}/generators" PREFIX_PATH) +file(TO_CMAKE_PATH "${PROJECT_SOURCE_DIR}/cmake/;${CMAKE_BINARY_DIR}/generators" MODULE_PATH) + +# Set environment variables so that CMAKE can find the packages +set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} ${PREFIX_PATH}) +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${MODULE_PATH}) +message("CMAKE_PREFIX_PATH is: ${CMAKE_PREFIX_PATH}") +message("CMAKE_MODULE_PATH is: ${CMAKE_MODULE_PATH}") +message("QTPATH is: $ENV{QTPATH}") +set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE) +find_package(Python3 COMPONENTS Interpreter Development) + +find_package(Armadillo REQUIRED) +find_package(pybind11 REQUIRED) +find_package(libxml2 REQUIRED) +find_package(OpenBLAS REQUIRED) +find_package(TIFF REQUIRED) +find_package(FFTW3 REQUIRED) +find_package(cfitsio REQUIRED) +find_package(ZLIB REQUIRED) +find_package(HDF5 REQUIRED) + +# Add imagingsuite install path to CMAKE_PREFIX_PATH +set(IMGSUITE_BUILD_DIR "${PROJECT_SOURCE_DIR}/../build-imagingsuite/Release") +list(APPEND CMAKE_PREFIX_PATH "${IMGSUITE_BUILD_DIR}") +list(APPEND CMAKE_PREFIX_PATH "${IMGSUITE_BUILD_DIR}/lib") + +# find_package(kipl REQUIRED CONFIG) +# find_package(ModuleConfig REQUIRED CONFIG) +# find_package(ImagingAlgorithms REQUIRED CONFIG) +# find_package(ReaderConfig REQUIRED CONFIG) +# find_package(QtAddons REQUIRED CONFIG) +# find_package(ReaderGUI REQUIRED CONFIG) +# find_package(QtModuleConfigure REQUIRED CONFIG) +# find_package(QtImaging REQUIRED CONFIG) + +if (WIN32) + find_package(dirent) +endif() + +if (WIN32) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/Release) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib/Release) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/Release) +elseif (LINUX) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +elseif (APPLE) + set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) + set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + include_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) +endif() -if("${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" VERSION_LESS "3.5") +if("${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}" VERSION_LESS "3.5") message( FATAL_ERROR - "Python v3 interpreter must be greater than or equal to 3.5. Found ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}" + "Python v3 interpreter must be greater than or equal to 3.5. Found ${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}" ) endif() -if (WIN32) - set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/../build-kiptool) # needs to be fixed - - find_package(PythonInterp REQUIRED) - find_package(LibXml2 REQUIRED) - find_package(armadillo REQUIRED) - find_package(ZLIB REQUIRED) - find_package(TIFF REQUIRED) - find_package(FFTW3 REQUIRED) - find_package(OpenBLAS REQUIRED) - find_package(pybind11 REQUIRED) - find_package(cfitsio REQUIRED) - # find_package(Nexus REQUIRED) +# Set path to imagingsuite build/install directory +set(IMAGINGSUITE_INSTALL_DIR "${CMAKE_SOURCE_DIR}/../build-imagingsuite/Release" CACHE PATH "Path to imagingsuite installation") + +# Add imagingsuite library path +link_directories("${IMAGINGSUITE_INSTALL_DIR}/lib") + +# Add imagingsuite include paths +include_directories( + ../imagingsuite/core/kipl/kipl/include + ../imagingsuite/core/modules/ModuleConfig/include + ../imagingsuite/core/modules/ReaderConfig + ../imagingsuite/core/algorithms/ImagingAlgorithms/include + ../imagingsuite/GUI/qt/QtAddons + ../imagingsuite/GUI/qt/QtImaging + ../imagingsuite/GUI/qt/QtModuleConfigure + ../imagingsuite/core/modules/ReaderGUI + +) +link_directories("${IMGSUITE_BUILD_DIR}/lib") + + +execute_process( + COMMAND git describe --tag + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE HAVE_GIT_VERSION_INFO + OUTPUT_VARIABLE GIT_VERSION_INFO + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET +) +if(${HAVE_GIT_VERSION_INFO} EQUAL 0) + message(STATUS "Got version from Git: ${GIT_VERSION_INFO}") + add_definitions(-DVERSION="${GIT_VERSION_INFO}") else() - set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) - - # for testing we will need the python interpreter - find_package(PythonInterp REQUIRED) - find_package(LibXml2 REQUIRED) - find_package(Armadillo REQUIRED) - find_package(ZLIB REQUIRED) - find_package(TIFF REQUIRED) - find_package(FFTW REQUIRED) - find_package(LAPACK REQUIRED) - find_package(BLAS REQUIRED) - find_package(pybind11 REQUIRED) - find_package(CFITSIO REQUIRED) - find_package(Nexus REQUIRED) + set(GIT_VERSION_INFO "${PROJECT_VERSION}") + message(WARNING "Could not get version from Git, using project version: ${GIT_VERSION_INFO}") + add_definitions(-DVERSION="${GIT_VERSION_INFO}") endif() -if(NOT WIN32) +include(CTest) + +execute_process( + COMMAND git describe --tag + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + RESULT_VARIABLE HAVE_GIT_VERSION_INFO + OUTPUT_VARIABLE GIT_VERSION_INFO OUTPUT_STRIP_TRAILING_WHITESPACE +) +if(${HAVE_GIT_VERSION_INFO} EQUAL 0) + message(STATUS "Got version from Git: ${GIT_VERSION_INFO}") + add_definitions(-DIMGSUITE_VERSION="${GIT_VERSION_INFO}") +endif() + +if(WIN32) +add_compile_options( + /openmp + /O2 + ) +else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer") add_compile_options( -Wall @@ -98,7 +168,7 @@ if(NOT WIN32) $<$:-Woverloaded-virtual> $<$:-fno-operator-names> ) -endif(NOT WIN32) +endif() set(PYTHONDIR kipl) set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}) @@ -106,12 +176,17 @@ set(INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR}) set(EXPORT_NAME ${PROJECT_NAME}-targets) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +SET(CMAKE_SKIP_BUILD_RPATH FALSE) +SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) +set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) if(NOT APPLE) set(CMAKE_INSTALL_RPATH $ORIGIN/../lib) else() set(CMAKE_INSTALL_RPATH @loader_path/../Frameworks) endif() +# turn on testing +enable_testing() ## modules add_subdirectory(frameworks/ngi/nGIFramework) @@ -121,109 +196,3 @@ add_subdirectory(frameworks/ngi/nGIPreprocessing) ## applications add_subdirectory(applications/nGItool) - -if(DYNAMIC_LIB) - # install( - # EXPORT ${EXPORT_NAME} - # DESTINATION "lib/cmake/kipl" - # NAMESPACE kipl:: - # ) - - # include(CMakePackageConfigHelpers) - # configure_package_config_file( - # ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in - # "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" - # INSTALL_DESTINATION lib/cmake/kipl - # ) - # write_basic_package_version_file( - # "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake" - # VERSION "${CMAKE_PROJECT_VERSION}" - # COMPATIBILITY SameMinorVersion # switch to SameMajorVersion after 1.0 - # # release - # ) - # install( - # FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" - # "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake" - # DESTINATION lib/cmake/kipl - # ) - if (LINUX) - print('Linux') - install(FILES - ../lib/libkipl.so.1.0.0 - ../lib/libModuleConfig.so.1.0.0 - ../lib/libReconFramework.so.1.0.0 - ../lib/libStdBackProjectors.so.1.0.0 - ../lib/libFDKBackProjectors.so.1.0.0 - ../lib/libImagingAlgorithms.so.1.0.0 - ../lib/libReaderConfig.so.1.0.0 - ../lib/libNeXus.so.1.0.0 - ../lib/libhdf5_cpp.so.11 - ../lib/libNeXusCPP.so.1.0.0 - ../lib/libhdf5_hl.so.10 - ../lib/libhdf5.so.10 - ../lib/libsz.so.2 - - # /opt/local/lib/libxml2.2.dylib - # /opt/local/lib/libtiff.5.dylib - DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) - - execute_process( - COMMAND for f in `ls *.so.1.0.0`; do ln -s $f `basename $f .so.1.0.0`.so.1; done - WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib" - ) - endif() - if (APPLE) - install(FILES -# ../lib/libkipl.1.0.0.dylib -# ../lib/libModuleConfig.1.0.0.dylib -# ../lib/libReconFramework.1.0.0.dylib -# ../lib/libStdBackProjectors.1.0.0.dylib -# ../lib/libFDKBackProjectors.1.0.0.dylib -# ../lib/libImagingAlgorithms.1.0.0.dylib -# ../lib/libReaderConfig.1.0.0.dylib - # ../imagingsuite/external/mac/lib/libNeXus.1.0.0.dylib - # ../imagingsuite/external/mac/lib//libhdf5_cpp.11.dylib - # ../imagingsuite/external/mac/lib//libNeXusCPP.1.0.0.dylib - # ../imagingsuite/external/mac/lib//libhdf5_hl.10.dylib - # ../imagingsuite/external/mac/lib//libhdf5.10.dylib - # ../imagingsuite/external/mac/lib//libsz.2.dylib - # /opt/local/lib/libxml2.2.dylib - # /opt/local/lib/libtiff.5.dylib - # /opt/local/lib/libfftw3.3.dylib - # /opt/local/lib/libfftw3f.3.dylib - # /opt/local/lib/libcfitsio.dylib - # /opt/local/lib/libarmadillo.10.dylib - - DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) - - execute_process( - COMMAND for f in `ls *.1.0.0.*`; do ln -s $f `basename $f .1.0.0.dylib`.1.dylib; done - WORKING_DIRECTORY "${CMAKE_INSTALL_PREFIX}/lib" - ) - endif() - - - -endif(DYNAMIC_LIB) - -# turn on testing -#enable_testing() - -message(${CMAKE_CURRENT_SOURCE_DIR}) -## define test -#add_test( -# NAME -# testBindAverageImage -# COMMAND -# ${CMAKE_COMMAND} -E env IMAGALG_MODULE_PATH=$ -# ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/UnitTests/python/testBindAverageImage.py -# ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/UnitTests/python/testBindAverageImage.py -#) -# -#add_test( -# NAME -# testBindPolynomialCorrection -# COMMAND -# ${CMAKE_COMMAND} -E env IMAGALG_MODULE_PATH=$ -# ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/UnitTests/python/testBindPolynomialCorrection.py -#) diff --git a/applications/ngitool/CMakeLists.txt b/applications/ngitool/CMakeLists.txt index e4aafa5..4f3a017 100644 --- a/applications/ngitool/CMakeLists.txt +++ b/applications/ngitool/CMakeLists.txt @@ -1,6 +1,5 @@ -cmake_minimum_required(VERSION 3.5) set(TARGET_NAME "nGITool") -project(${TARGET_NAME} VERSION 4.4 LANGUAGES CXX) +project(${TARGET_NAME} VERSION 1.0 LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -8,7 +7,6 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) find_package(Qt6 REQUIRED COMPONENTS Widgets Charts) @@ -26,24 +24,10 @@ include_directories( Qt6Widgets_INCLUDE_DIRS/QtCharts ) -if (APPLE) -include_directories( - ../../../ExternalDependencies/macos/include - ) -endif() - -if (WIN32) -include_directories( - ../../external/include/ - ) -endif() - set(SRC_FILES src/main.cpp src/ngimainwindow.cpp # ngireport.cpp - - ) set(INC_FILES @@ -68,8 +52,15 @@ set_source_files_properties(${app_icon_macos} PROPERTIES # qt_add_executable(${TARGET_NAME} MACOSX_BUNDLE ${app_icon_macos}) -message(MuhRec Qt${QT_VERSION_MAJOR}) +message(nGITool Qt${QT_VERSION_MAJOR}) + +set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) +if(NOT APPLE) + set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib") +else() + set(CMAKE_INSTALL_RPATH "@loader_path/../Frameworks") +endif() qt_add_executable(${TARGET_NAME} MANUAL_FINALIZATION @@ -80,47 +71,38 @@ qt_add_executable(${TARGET_NAME} ${APP_ICON_RESOURCE_WINDOWS} ) -target_link_directories(${TARGET_NAME} PUBLIC - ../../../install/lib +if (WIN32) + # link_directories(../../../build-imagingsuite/lib/Release) + target_link_directories(${TARGET_NAME} PUBLIC + ../../../build-imagingsuite/lib/Release ) -if (WIN32) +else() + +target_link_directories(${TARGET_NAME} PUBLIC + ../../../build-imagingsuite/Release/lib - target_link_libraries(${TARGET_NAME} PRIVATE - Qt${QT_VERSION_MAJOR}::Core - Qt${QT_VERSION_MAJOR}::Widgets - kipl - ModuleConfig - ImagingAlgorithms - ReaderConfig - QtAddons - ReaderGUI - QtModuleConfigure - ReconFramework - QtImaging ) endif() -if (UNIX) - target_link_libraries(${TARGET_NAME} PRIVATE - Qt${QT_VERSION_MAJOR}::Core - Qt${QT_VERSION_MAJOR}::Widgets +target_link_libraries(${TARGET_NAME} PRIVATE + LibXml2::LibXml2 + Qt${QT_VERSION_MAJOR}::Core + Qt${QT_VERSION_MAJOR}::Widgets + kipl + ModuleConfig + ImagingAlgorithms + ReaderConfig + QtAddons + ReaderGUI + QtModuleConfigure + nGIFramework + QtImaging - kipl - ModuleConfig - ImagingAlgorithms - ReaderConfig - QtAddons - ReaderGUI - QtModuleConfigure - nGIFramework - QtImaging - ${CFITSIO_LIBRARIES} ) -endif() set_target_properties(${TARGET_NAME} PROPERTIES - MACOSX_BUNDLE_NAME MuhRec + MACOSX_BUNDLE_NAME ${TARGET_NAME} MACOSX_BUNDLE_GUI_IDENTIFIER ch.psi.ngitool MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION} MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR} diff --git a/applications/ngitool/src/ngimainwindow.cpp b/applications/ngitool/src/ngimainwindow.cpp index 4f97156..adddfae 100644 --- a/applications/ngitool/src/ngimainwindow.cpp +++ b/applications/ngitool/src/ngimainwindow.cpp @@ -464,12 +464,6 @@ void nGIMainWindow::on_buttonProcessAll_clicked() m_pEngine->Run(); logger(kipl::logging::Logger::LogMessage,"The data was successfully processed."); } - catch (kipl::base::KiplException & e) { - logger(kipl::logging::Logger::LogError,e.what()); - msgdlg.setDetailedText(QString::fromStdString(e.what())); - msgdlg.exec(); - return; - } catch (nGIException &e) { logger(kipl::logging::Logger::LogError,e.what()); msgdlg.setDetailedText(QString::fromStdString(e.what())); @@ -482,6 +476,12 @@ void nGIMainWindow::on_buttonProcessAll_clicked() msgdlg.exec(); return; } + catch (kipl::base::KiplException & e) { + logger(kipl::logging::Logger::LogError,e.what()); + msgdlg.setDetailedText(QString::fromStdString(e.what())); + msgdlg.exec(); + return; + } catch (std::exception & e) { logger(kipl::logging::Logger::LogError,e.what()); msgdlg.setDetailedText(QString::fromStdString(e.what())); @@ -525,12 +525,6 @@ void nGIMainWindow::on_buttonPreview_clicked() m_pEngine->Run(); logger(kipl::logging::Logger::LogMessage,"The data was successfully processed."); } - catch (kipl::base::KiplException & e) { - logger(kipl::logging::Logger::LogError,e.what()); - msgdlg.setDetailedText(QString::fromStdString(e.what())); - msgdlg.exec(); - return; - } catch (nGIException &e) { logger(kipl::logging::Logger::LogError,e.what()); msgdlg.setDetailedText(QString::fromStdString(e.what())); @@ -543,6 +537,12 @@ void nGIMainWindow::on_buttonPreview_clicked() msgdlg.exec(); return; } + catch (kipl::base::KiplException & e) { + logger(kipl::logging::Logger::LogError,e.what()); + msgdlg.setDetailedText(QString::fromStdString(e.what())); + msgdlg.exec(); + return; + } catch (std::exception & e) { logger(kipl::logging::Logger::LogError,e.what()); msgdlg.setDetailedText(QString::fromStdString(e.what())); @@ -605,9 +605,10 @@ void nGIMainWindow::ShowResults() const size_t nBins=2048; float axis[nBins]; - size_t hist[nBins]; - kipl::base::TImage &proj=m_pEngine->GetProjections(); - size_t nLo=0,nHi=0; + // size_t hist[nBins]; + // kipl::base::TImage &proj=m_pEngine->GetProjections(); + // size_t nLo=0L; + // size_t nHi=0L; ui->sliderProjections->setRange(0,m_Config.projections.nPhaseSteps-1); ui->sliderProjections->setValue(0); @@ -887,7 +888,7 @@ void nGIMainWindow::on_buttonGetVisROI_clicked() ui->imageVisibility->set_rectangle(rect,QColor("green"),0); } -void nGIMainWindow::on_spinVisROI_changed(int x) +void nGIMainWindow::on_spinVisROI_changed(int /*x*/) { QRect rect( ui->spinVisROI0->value(), ui->spinVisROI1->value(), @@ -917,7 +918,7 @@ void nGIMainWindow::on_spinVisROI3_valueChanged(int arg1) on_spinVisROI_changed(arg1); } -void nGIMainWindow::on_spinCrop_Changed(int x) +void nGIMainWindow::on_spinCrop_Changed(int /*x*/) { m_CurrentCropROI.setCoords(ui->spinCrop0->value(), ui->spinCrop1->value(), @@ -947,7 +948,7 @@ void nGIMainWindow::on_spinCrop3_valueChanged(int arg1) on_spinCrop_Changed(arg1); } -void nGIMainWindow::on_spinDose_Changed(int x) +void nGIMainWindow::on_spinDose_Changed(int /*x*/) { m_CurrentDoseROI.setCoords(ui->spinDose0->value(), ui->spinDose1->value(), diff --git a/cmake/FindCFITSIO.cmake b/cmake/FindCFITSIO.cmake deleted file mode 100644 index 5e6984f..0000000 --- a/cmake/FindCFITSIO.cmake +++ /dev/null @@ -1,65 +0,0 @@ -# - Try to find CFITSIO -# Once done this will define -# -# CFITSIO_FOUND - system has CFITSIO -# CFITSIO_INCLUDE_DIR - the CFITSIO include directory -# CFITSIO_LIBRARIES - Link these to use CFITSIO -# CFITSIO_VERSION_STRING - Human readable version number of cfitsio -# CFITSIO_VERSION_MAJOR - Major version number of cfitsio -# CFITSIO_VERSION_MINOR - Minor version number of cfitsio - -# Copyright (c) 2006, Jasem Mutlaq -# Based on FindLibfacile by Carsten Niehaus, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -if (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) - - # in cache already - set(CFITSIO_FOUND TRUE) - message(STATUS "Found CFITSIO: ${CFITSIO_LIBRARIES}") - - -else (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) - - # JM: Packages from different distributions have different suffixes - find_path(CFITSIO_INCLUDE_DIR fitsio.h - PATH_SUFFIXES libcfitsio3 libcfitsio0 cfitsio - ${_obIncDir} - ${GNUWIN32_DIR}/include - ) - - find_library(CFITSIO_LIBRARIES NAMES cfitsio - PATHS - ${_obLinkDir} - ${GNUWIN32_DIR}/lib - ) - - if(CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) - set(CFITSIO_FOUND TRUE) - else (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) - set(CFITSIO_FOUND FALSE) - endif(CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) - - - if (CFITSIO_FOUND) - - # Find the version of the cfitsio header - file(STRINGS ${CFITSIO_INCLUDE_DIR}/fitsio.h CFITSIO_VERSION_STRING LIMIT_COUNT 1 REGEX "CFITSIO_VERSION") - STRING(REGEX REPLACE "[^0-9.]" "" CFITSIO_VERSION_STRING ${CFITSIO_VERSION_STRING}) - STRING(REGEX REPLACE "^([0-9]+)[.]([0-9]+)" "\\1" CFITSIO_VERSION_MAJOR ${CFITSIO_VERSION_STRING}) - STRING(REGEX REPLACE "^([0-9]+)[.]([0-9]+)" "\\2" CFITSIO_VERSION_MINOR ${CFITSIO_VERSION_STRING}) - - if (NOT CFITSIO_FIND_QUIETLY) - message(STATUS "Found CFITSIO ${CFITSIO_VERSION_STRING}: ${CFITSIO_LIBRARIES}") - endif (NOT CFITSIO_FIND_QUIETLY) - else (CFITSIO_FOUND) - if (CFITSIO_FIND_REQUIRED) - message(STATUS "CFITSIO not found.") - endif (CFITSIO_FIND_REQUIRED) - endif (CFITSIO_FOUND) - - mark_as_advanced(CFITSIO_INCLUDE_DIR CFITSIO_LIBRARIES) - -endif (CFITSIO_INCLUDE_DIR AND CFITSIO_LIBRARIES) \ No newline at end of file diff --git a/cmake/FindFFTW.cmake b/cmake/FindFFTW.cmake deleted file mode 100644 index ec1981e..0000000 --- a/cmake/FindFFTW.cmake +++ /dev/null @@ -1,419 +0,0 @@ -# - Find the FFTW library -# -# Original version of this file: -# Copyright (c) 2015, Wenzel Jakob -# https://github.com/wjakob/layerlab/blob/master/cmake/FindFFTW.cmake, commit 4d58bfdc28891b4f9373dfe46239dda5a0b561c6 -# Modifications: -# Copyright (c) 2017, Patrick Bos -# -# Usage: -# find_package(FFTW [REQUIRED] [QUIET] [COMPONENTS component1 ... componentX] ) -# -# It sets the following variables: -# FFTW_FOUND ... true if fftw is found on the system -# FFTW_[component]_LIB_FOUND ... true if the component is found on the system (see components below) -# FFTW_LIBRARIES ... full paths to all found fftw libraries -# FFTW_[component]_LIB ... full path to one of the components (see below) -# FFTW_INCLUDE_DIRS ... fftw include directory paths -# -# The following variables will be checked by the function -# FFTW_USE_STATIC_LIBS ... if true, only static libraries are found, otherwise both static and shared. -# FFTW_ROOT ... if set, the libraries are exclusively searched -# under this path -# -# This package supports the following components: -# FLOAT_LIB -# DOUBLE_LIB -# LONGDOUBLE_LIB -# FLOAT_THREADS_LIB -# DOUBLE_THREADS_LIB -# LONGDOUBLE_THREADS_LIB -# FLOAT_OPENMP_LIB -# DOUBLE_OPENMP_LIB -# LONGDOUBLE_OPENMP_LIB -# - -# TODO (maybe): extend with ExternalProject download + build option -# TODO: put on conda-forge - - -if( NOT FFTW_ROOT AND DEFINED ENV{FFTWDIR} ) - set( FFTW_ROOT $ENV{FFTWDIR} ) -endif() - -# Check if we can use PkgConfig -find_package(PkgConfig) - -#Determine from PKG -if( PKG_CONFIG_FOUND AND NOT FFTW_ROOT ) - pkg_check_modules( PKG_FFTW QUIET "fftw3" ) -endif() - -#Check whether to search static or dynamic libs -set( CMAKE_FIND_LIBRARY_SUFFIXES_SAV ${CMAKE_FIND_LIBRARY_SUFFIXES} ) - -if( ${FFTW_USE_STATIC_LIBS} ) - set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_STATIC_LIBRARY_SUFFIX} ) -else() - set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} ) -endif() - -if( FFTW_ROOT ) - # find libs - - find_library( - FFTW_DOUBLE_LIB - NAMES "fftw3" libfftw3-3 - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_DOUBLE_THREADS_LIB - NAMES "fftw3_threads" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_DOUBLE_OPENMP_LIB - NAMES "fftw3_omp" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_DOUBLE_MPI_LIB - NAMES "fftw3_mpi" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_FLOAT_LIB - NAMES "fftw3f" libfftw3f-3 - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_FLOAT_THREADS_LIB - NAMES "fftw3f_threads" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_FLOAT_OPENMP_LIB - NAMES "fftw3f_omp" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_FLOAT_MPI_LIB - NAMES "fftw3f_mpi" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_LONGDOUBLE_LIB - NAMES "fftw3l" libfftw3l-3 - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_LONGDOUBLE_THREADS_LIB - NAMES "fftw3l_threads" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_LONGDOUBLE_OPENMP_LIB - NAMES "fftw3l_omp" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - find_library( - FFTW_LONGDOUBLE_MPI_LIB - NAMES "fftw3l_mpi" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "lib" "lib64" - NO_DEFAULT_PATH - ) - - #find includes - find_path(FFTW_INCLUDE_DIRS - NAMES "fftw3.h" - PATHS ${FFTW_ROOT} - PATH_SUFFIXES "include" - NO_DEFAULT_PATH - ) - -else() - - find_library( - FFTW_DOUBLE_LIB - NAMES "fftw3" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_DOUBLE_THREADS_LIB - NAMES "fftw3_threads" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_DOUBLE_OPENMP_LIB - NAMES "fftw3_omp" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_DOUBLE_MPI_LIB - NAMES "fftw3_mpi" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_FLOAT_LIB - NAMES "fftw3f" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_FLOAT_THREADS_LIB - NAMES "fftw3f_threads" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_FLOAT_OPENMP_LIB - NAMES "fftw3f_omp" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_FLOAT_MPI_LIB - NAMES "fftw3f_mpi" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_LONGDOUBLE_LIB - NAMES "fftw3l" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library( - FFTW_LONGDOUBLE_THREADS_LIB - NAMES "fftw3l_threads" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library(FFTW_LONGDOUBLE_OPENMP_LIB - NAMES "fftw3l_omp" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_library(FFTW_LONGDOUBLE_MPI_LIB - NAMES "fftw3l_mpi" - PATHS ${PKG_FFTW_LIBRARY_DIRS} ${LIB_INSTALL_DIR} - ) - - find_path(FFTW_INCLUDE_DIRS - NAMES "fftw3.h" - PATHS ${PKG_FFTW_INCLUDE_DIRS} ${INCLUDE_INSTALL_DIR} - ) - -endif( FFTW_ROOT ) - -#--------------------------------------- components - -if (FFTW_DOUBLE_LIB) - set(FFTW_DOUBLE_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_DOUBLE_LIB}) - add_library(FFTW::Double INTERFACE IMPORTED) - set_target_properties(FFTW::Double - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_DOUBLE_LIB}" - ) -else() - set(FFTW_DOUBLE_LIB_FOUND FALSE) -endif() - -if (FFTW_FLOAT_LIB) - set(FFTW_FLOAT_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_FLOAT_LIB}) - add_library(FFTW::Float INTERFACE IMPORTED) - set_target_properties(FFTW::Float - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_FLOAT_LIB}" - ) -else() - set(FFTW_FLOAT_LIB_FOUND FALSE) -endif() - -if (FFTW_LONGDOUBLE_LIB) - set(FFTW_LONGDOUBLE_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_LONGDOUBLE_LIB}) - add_library(FFTW::LongDouble INTERFACE IMPORTED) - set_target_properties(FFTW::LongDouble - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_LONGDOUBLE_LIB}" - ) -else() - set(FFTW_LONGDOUBLE_LIB_FOUND FALSE) -endif() - -if (FFTW_DOUBLE_THREADS_LIB) - set(FFTW_DOUBLE_THREADS_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_DOUBLE_THREADS_LIB}) - add_library(FFTW::DoubleThreads INTERFACE IMPORTED) - set_target_properties(FFTW::DoubleThreads - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_DOUBLE_THREADS_LIB}" - ) -else() - set(FFTW_DOUBLE_THREADS_LIB_FOUND FALSE) -endif() - -if (FFTW_FLOAT_THREADS_LIB) - set(FFTW_FLOAT_THREADS_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_FLOAT_THREADS_LIB}) - add_library(FFTW::FloatThreads INTERFACE IMPORTED) - set_target_properties(FFTW::FloatThreads - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_FLOAT_THREADS_LIB}" - ) -else() - set(FFTW_FLOAT_THREADS_LIB_FOUND FALSE) -endif() - -if (FFTW_LONGDOUBLE_THREADS_LIB) - set(FFTW_LONGDOUBLE_THREADS_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_LONGDOUBLE_THREADS_LIB}) - add_library(FFTW::LongDoubleThreads INTERFACE IMPORTED) - set_target_properties(FFTW::LongDoubleThreads - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_LONGDOUBLE_THREADS_LIB}" - ) -else() - set(FFTW_LONGDOUBLE_THREADS_LIB_FOUND FALSE) -endif() - -if (FFTW_DOUBLE_OPENMP_LIB) - set(FFTW_DOUBLE_OPENMP_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_DOUBLE_OPENMP_LIB}) - add_library(FFTW::DoubleOpenMP INTERFACE IMPORTED) - set_target_properties(FFTW::DoubleOpenMP - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_DOUBLE_OPENMP_LIB}" - ) -else() - set(FFTW_DOUBLE_OPENMP_LIB_FOUND FALSE) -endif() - -if (FFTW_FLOAT_OPENMP_LIB) - set(FFTW_FLOAT_OPENMP_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_FLOAT_OPENMP_LIB}) - add_library(FFTW::FloatOpenMP INTERFACE IMPORTED) - set_target_properties(FFTW::FloatOpenMP - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_FLOAT_OPENMP_LIB}" - ) -else() - set(FFTW_FLOAT_OPENMP_LIB_FOUND FALSE) -endif() - -if (FFTW_LONGDOUBLE_OPENMP_LIB) - set(FFTW_LONGDOUBLE_OPENMP_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_LONGDOUBLE_OPENMP_LIB}) - add_library(FFTW::LongDoubleOpenMP INTERFACE IMPORTED) - set_target_properties(FFTW::LongDoubleOpenMP - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_LONGDOUBLE_OPENMP_LIB}" - ) -else() - set(FFTW_LONGDOUBLE_OPENMP_LIB_FOUND FALSE) -endif() - -if (FFTW_DOUBLE_MPI_LIB) - set(FFTW_DOUBLE_MPI_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_DOUBLE_MPI_LIB}) - add_library(FFTW::DoubleMPI INTERFACE IMPORTED) - set_target_properties(FFTW::DoubleMPI - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_DOUBLE_MPI_LIB}" - ) -else() - set(FFTW_DOUBLE_MPI_LIB_FOUND FALSE) -endif() - -if (FFTW_FLOAT_MPI_LIB) - set(FFTW_FLOAT_MPI_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_FLOAT_MPI_LIB}) - add_library(FFTW::FloatMPI INTERFACE IMPORTED) - set_target_properties(FFTW::FloatMPI - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_FLOAT_MPI_LIB}" - ) -else() - set(FFTW_FLOAT_MPI_LIB_FOUND FALSE) -endif() - -if (FFTW_LONGDOUBLE_MPI_LIB) - set(FFTW_LONGDOUBLE_MPI_LIB_FOUND TRUE) - set(FFTW_LIBRARIES ${FFTW_LIBRARIES} ${FFTW_LONGDOUBLE_MPI_LIB}) - add_library(FFTW::LongDoubleMPI INTERFACE IMPORTED) - set_target_properties(FFTW::LongDoubleMPI - PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}" - INTERFACE_LINK_LIBRARIES "${FFTW_LONGDOUBLE_MPI_LIB}" - ) -else() - set(FFTW_LONGDOUBLE_MPI_LIB_FOUND FALSE) -endif() - -#--------------------------------------- end components - -set( CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_SAV} ) - -include(FindPackageHandleStandardArgs) - -find_package_handle_standard_args(FFTW - REQUIRED_VARS FFTW_INCLUDE_DIRS - HANDLE_COMPONENTS - ) - -mark_as_advanced( - FFTW_INCLUDE_DIRS - FFTW_LIBRARIES - FFTW_FLOAT_LIB - FFTW_DOUBLE_LIB - FFTW_LONGDOUBLE_LIB - FFTW_FLOAT_THREADS_LIB - FFTW_DOUBLE_THREADS_LIB - FFTW_LONGDOUBLE_THREADS_LIB - FFTW_FLOAT_OPENMP_LIB - FFTW_DOUBLE_OPENMP_LIB - FFTW_LONGDOUBLE_OPENMP_LIB - FFTW_FLOAT_MPI_LIB - FFTW_DOUBLE_MPI_LIB - FFTW_LONGDOUBLE_MPI_LIB - ) diff --git a/cmake/FindNexus.cmake b/cmake/FindNexus.cmake deleted file mode 100644 index 87eff50..0000000 --- a/cmake/FindNexus.cmake +++ /dev/null @@ -1,170 +0,0 @@ -# ###################################################################################################################### -# * Attempt to find NeXus C/C++ libraries and include files NEXUS_INCLUDE_DIR where to find napi.h, etc. -# NEXUS_C_LIBRARIES C libraries to link against NEXUS_CPP_LIBRARIES C++ libraries to link against NEXUS_LIBRARIES All -# libraries that have been found NEXUS_VERSION The NeXus version NEXUS_FOUND If false, do not try to use NeXus -# ###################################################################################################################### - -# Search for the include files. Newer versions of Nexus have a nexus sub directory containing the headers but older -# versions just have napi.h in the root include path Try for nexus/napi.h first -find_path(NEXUS_INCLUDE_DIR napi.h PATH_SUFFIXES nexus) - -# Find the C libraries -if(WIN32 AND CONDA_ENV) - find_library(NEXUS_C_LIBRARIES NAMES NeXus NeXus) - # Find the C++ libraries - find_library(NEXUS_CPP_LIBRARIES NAMES NeXusCPP NeXusCPP) -else() - find_library(NEXUS_C_LIBRARIES NAMES NeXus libNeXus-0) - # Find the C++ libraries - find_library(NEXUS_CPP_LIBRARIES NAMES NeXusCPP libNeXusCPP-0) -endif() - -# Debug variants C -find_library(NEXUS_C_LIBRARIES_DEBUG NAMES NeXus libNeXus-0D) -# C++ -find_library(NEXUS_CPP_LIBRARIES_DEBUG NAMES NeXusCPP libNeXusCPP-0D) - -if(NEXUS_C_LIBRARIES_DEBUG AND NEXUS_CPP_LIBRARIES_DEBUG) - set(NEXUS_LIBRARIES - optimized - ${NEXUS_C_LIBRARIES} - optimized - ${NEXUS_CPP_LIBRARIES} - debug - ${NEXUS_C_LIBRARIES_DEBUG} - debug - ${NEXUS_CPP_LIBRARIES_DEBUG} - ) -else() - set(NEXUS_LIBRARIES ${NEXUS_C_LIBRARIES} ${NEXUS_CPP_LIBRARIES}) -endif() - -# Set a version string by examining the napi.h header -if(NEXUS_INCLUDE_DIR) - # Extract the line containing the version string which will look like this "#define NEXUS_VERSION "X.X.X" /* - # major.minor.patch */" - file(STRINGS ${NEXUS_INCLUDE_DIR}/napi.h NEXUS_VERSION_TMP - REGEX "^#define[ \t]+NEXUS_VERSION[ \t]+\"[0-9]+.[0-9]+.[0-9]+\"[ \t]+/\\* major\\.minor\\.patch \\*/$" - ) - # Hack off the portion up to and including the first double quote - string(REGEX REPLACE "^#define[ \t]+NEXUS_VERSION[ \t]+\"" "" NEXUS_VERSION_TMP ${NEXUS_VERSION_TMP}) - # Hack off the portion from the second double quote to the end of the line - string(REGEX REPLACE "\"[ \t]+/\\* major\\.minor\\.patch \\*/$" "" NEXUS_VERSION_TMP ${NEXUS_VERSION_TMP}) - set(NEXUS_VERSION - ${NEXUS_VERSION_TMP} - CACHE STRING "" FORCE - ) -endif() - -# Handle the QUIETLY and REQUIRED arguments and set NEXUS_FOUND to TRUE if all listed variables are TRUE -include(FindPackageHandleStandardArgs) -if(NEXUS_VERSION) - message(STATUS "NeXus version ${NEXUS_VERSION}") - find_package_handle_standard_args( - Nexus - REQUIRED_VARS NEXUS_LIBRARIES NEXUS_INCLUDE_DIR - VERSION_VAR NEXUS_VERSION - ) - # this and related code should go away when libraries are upgraded - if(NEXUS_VERSION VERSION_LESS 4.4) - add_definitions(-DNEXUS43) - endif() -else(NEXUS_VERSION) - message(WARNING "Failed to determine version: Ignoring version requirement") - find_package_handle_standard_args(Nexus DEFAULT_MSG NEXUS_LIBRARIES NEXUS_INCLUDE_DIR) -endif(NEXUS_VERSION) - -if(WIN32) - # c library - string(REPLACE ".lib" ".dll" NEXUS_C_LIBRARIES_DLL "${NEXUS_C_LIBRARIES}") - string(REPLACE ".lib" ".dll" NEXUS_C_LIBRARIES_DEBUG_DLL "${NEXUS_C_LIBRARIES_DEBUG}") - get_filename_component(NEXUS_C_LIBRARIES_DLL ${NEXUS_C_LIBRARIES_DLL} NAME) - get_filename_component(NEXUS_C_LIBRARIES_DEBUG_DLL ${NEXUS_C_LIBRARIES_DEBUG_DLL} NAME) - find_file(NEXUS_C_LIBRARIES_DLL PATH_SUFFIXES bin/) - find_file(NEXUS_C_LIBRARIES_DEBUG_DLL PATH_SUFFIXES bin/) - - # cpp library - string(REPLACE ".lib" ".dll" NEXUS_CPP_LIBRARIES_DLL "${NEXUS_CPP_LIBRARIES}") - string(REPLACE ".lib" ".dll" NEXUS_CPP_LIBRARIES_DEBUG_DLL "${NEXUS_CPP_LIBRARIES_DEBUG}") - get_filename_component(NEXUS_CPP_LIBRARIES_DLL ${NEXUS_CPP_LIBRARIES_DLL} NAME) - get_filename_component(NEXUS_CPP_LIBRARIES_DEBUG_DLL ${NEXUS_CPP_LIBRARIES_DEBUG_DLL} NAME) - find_file(NEXUS_CPP_LIBRARIES_DLL PATH_SUFFIXES bin/) - find_file(NEXUS_CPP_LIBRARIES_DEBUG_DLL PATH_SUFFIXES bin/) - -endif() - -if(NEXUS_FOUND - AND NOT TARGET Nexus::nexus - AND NOT TARGET Nexus::nexuscpp -) - if(NEXUS_C_LIBRARIES_DLL AND NEXUS_CPP_LIBRARIES_DLL) - - # Nexus c library Windows systems with dll libraries. - add_library(Nexus::nexus SHARED IMPORTED) - - # Windows with dlls, but only Release libraries. - set_target_properties( - Nexus::nexus - PROPERTIES IMPORTED_LOCATION_RELEASE "${NEXUS_C_LIBRARIES_DLL}" - IMPORTED_IMPLIB "${NEXUS_C_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${NEXUS_INCLUDE_DIR}" - IMPORTED_CONFIGURATIONS Release - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - ) - - # If we have both Debug and Release libraries - if(NEXUS_C_LIBRARIES_DEBUG_DLL) - set_property( - TARGET Nexus::nexus - APPEND - PROPERTY IMPORTED_CONFIGURATIONS Debug - ) - set_target_properties( - Nexus::nexus PROPERTIES IMPORTED_LOCATION_DEBUG "${NEXUS_C_LIBRARIES_DEBUG_DLL}" IMPORTED_IMPLIB_DEBUG - "${NEXUS_C_LIBRARIES_DEBUG}" - ) - endif() - - # Nexus cpp library Windows systems with dll libraries. - add_library(Nexus::nexuscpp SHARED IMPORTED) - - # Windows with dlls, but only Release libraries. - set_target_properties( - Nexus::nexuscpp - PROPERTIES IMPORTED_LOCATION_RELEASE "${NEXUS_CPP_LIBRARIES_DLL}" - IMPORTED_IMPLIB "${NEXUS_CPP_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${NEXUS_INCLUDE_DIR}" - IMPORTED_CONFIGURATIONS Release - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - ) - - # If we have both Debug and Release libraries - if(NEXUS_CPP_LIBRARIES_DEBUG_DLL) - set_property( - TARGET Nexus::nexuscpp - APPEND - PROPERTY IMPORTED_CONFIGURATIONS Debug - ) - set_target_properties( - Nexus::nexuscpp PROPERTIES IMPORTED_LOCATION_DEBUG "${NEXUS_CPP_LIBRARIES_DEBUG_DLL}" - IMPORTED_IMPLIB_DEBUG "${NEXUS_CPP_LIBRARIES_DEBUG}" - ) - endif() - else() - add_library(Nexus::nexus UNKNOWN IMPORTED) - set_target_properties( - Nexus::nexus - PROPERTIES IMPORTED_LOCATION "${NEXUS_C_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${NEXUS_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "C" - ) - - add_library(Nexus::nexuscpp UNKNOWN IMPORTED) - set_target_properties( - Nexus::nexuscpp - PROPERTIES IMPORTED_LOCATION "${NEXUS_CPP_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${NEXUS_INCLUDE_DIR}" - IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" - ) - endif() -endif() diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000..1628848 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,123 @@ +from conan import ConanFile +from conan.tools.cmake import CMakeToolchain, CMake, cmake_layout, CMakeDeps +from conan.tools.env import VirtualRunEnv +from conan.tools.files import copy +import os +import shutil +from io import StringIO + +class nGIToolRecipe(ConanFile): + settings = "os", "compiler", "build_type", "arch" + default_options = {"*:shared": True} + + def requirements(self): + self.requires("zlib/[1.3.1]") + self.requires("openblas/[0.3.25]") # Can't update to 0.3.27 because of armadillo + self.requires("pybind11/3.0.1") + self.requires("libxml2/[2.15.0]") + self.requires("armadillo/[12.6.4]") + self.requires("libtiff/[4.7.1]") + self.requires("fftw/[3.3.10]") + self.requires("cfitsio/[4.6.3]") + self.requires("hdf5/[1.14.6]") + self.requires("nlohmann_json/[3.12.0]") + + + if self.settings.os == "Windows": + self.requires("dirent/1.24") # Header files only + #self.requires("qt/[6.6.1]") Does work but QtCharts is not included + + + def build_requirements(self): # Only used if conanbuild.bat environment is used, such as by "conan build ." + self.tool_requires("ninja/[1.13.1]") + self.tool_requires("cmake/[4.1.2]") + + def layout(self): + cmake_layout( + self, + build_folder="../build-nGITool", + ) + + def generate(self): + deps = CMakeDeps(self) + deps.generate() + tc = CMakeToolchain(self, generator="Ninja") #default is None + tc.generate() + ms = VirtualRunEnv(self) + ms.generate() + bin_folder = os.path.abspath(os.path.join(self.build_folder, "bin", self.cpp.build.bindir)) + print("bindir is: ", self.cpp.build.bindir) + self.lib_folder = os.path.abspath(os.path.join(self.build_folder, "lib", self.cpp.build.bindir)) + self.framework_folder_nGITool = os.path.abspath(os.path.join(self.build_folder, self.cpp.build.bindir, 'nGITool.app', 'Contents', 'Frameworks')) + # Copy dynamic libraries from conan + for dep in self.dependencies.values(): + if len(dep.cpp_info.bindirs)>0: # Avoid errors when using header-only files such as dirent. Can probably be done neater + copy(self, "*.dll", dep.cpp_info.bindirs[0], bin_folder) + if len(dep.cpp_info.libdirs)>0: + copy(self, "*.so*", dep.cpp_info.libdirs[0], self.lib_folder) + copy(self, "*.dylib", dep.cpp_info.libdirs[0], self.lib_folder) + + # Copy dynamic libraries from qt + qtpath = os.environ["QTPATH"] + Qt_dynamic_library_list = ["Qt6PrintSupport", "Qt6Charts", "Qt6OpenGLWidgets", "Qt6OpenGl", "Qt6Test"] + Qt_linux_library_list = ["Qt6Core","Qt6Gui","Qt6Widgets","Qt6DBus","Qt6XcbQpa","icui18n","icudata","icuuc"] + for library in Qt_dynamic_library_list: + copy(self, library+".dll", os.path.join(qtpath, "bin"), bin_folder) + #copy(self, library+".dylib", os.path.join(qtpath, "bin"), bin_folder) + copy(self, "lib"+library+".so*", os.path.join(qtpath, "lib"), self.lib_folder) + if self.settings.os == "Linux": + for library in Qt_linux_library_list: + copy(self, "lib"+library+".so*", os.path.join(qtpath, "lib"), self.lib_folder) + copy(self, "libqxcb.so", os.path.join(qtpath, "plugins", "platforms"), os.path.join(bin_folder, "platforms")) + + # Allow override via env var IMGSUITE_LIB_DIR, default to ../build-imagingsuite/Release/lib + default_imgsuite = os.path.abspath(os.path.join(self.source_folder, "..", "build-imagingsuite", "Release", "lib")) + imgsuite_lib_dir = os.environ.get("IMGSUITE_LIB_DIR", default_imgsuite) + + # List of imagingsuite libs used by nGITool + imgsuite_libs = [ + "kipl", + "ModuleConfig", + "ImagingAlgorithms", + "ReaderConfig", + "QtAddons", + "ReaderGUI", + "QtModuleConfigure", + "QtImaging", + ] + + if self.settings.os == "Windows": + for name in imgsuite_libs: + copy(self, f"{name}.dll", imgsuite_lib_dir, bin_folder) + elif self.settings.os == "Linux": + for name in imgsuite_libs: + copy(self, f"lib{name}.so*", imgsuite_lib_dir, self.lib_folder) + else: # Macos + for name in imgsuite_libs: + copy(self, f"lib{name}.dylib", imgsuite_lib_dir, self.lib_folder) + + if self.settings.os == "Windows": + dst = os.path.join(bin_folder,"resources") + elif self.settings.os == "Linux": + dst = os.path.join(bin_folder,"..","resources") + else: + dst = os.path.join(self.framework_folder_nGITool,"..",'Resources') + if self.settings.arch == "armv8": + sse2neon_dir = StringIO() + self.run("brew --prefix sse2neon", stdout=sse2neon_dir) + sse2neon = sse2neon_dir.getvalue().strip() + copy(self, 'sse2neon/sse2neon.h', os.path.join(sse2neon, "include"), self.lib_folder) + shutil.copytree( + os.path.join(self.source_folder,"applications","nGITool","Resources"), + dst, + dirs_exist_ok=True, + ) + + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + if self.settings.os == "Macos": + copy(self, "*.dylib", self.lib_folder, self.framework_folder_nGITool, excludes='*cpython*') + \ No newline at end of file diff --git a/frameworks/ngi/nGIEstimators/CMakeLists.txt b/frameworks/ngi/nGIEstimators/CMakeLists.txt index 6c9c6cb..72a5c21 100644 --- a/frameworks/ngi/nGIEstimators/CMakeLists.txt +++ b/frameworks/ngi/nGIEstimators/CMakeLists.txt @@ -14,20 +14,10 @@ include_directories( ../nGIFramework/include ) -if (APPLE) - include_directories( - ../../../../ExternalDependencies/macos/include - ) -endif() - if (WIN32) - include_directories( - ../../../../imagingsuite/external/include/ - ) + link_directories(../../../../build-imagingsuite/lib/Release) endif() -link_directories(../../../../install/lib) - set(INC_FILES include/nGIBLUEEstimator.h include/nGILSEstimator.h @@ -35,7 +25,6 @@ set(INC_FILES include/nGIEstimators.h include/nGIPenalizedMLEstimator.h include/ngiestimators_global.h - # stdafx.h ) set(SRC_FILES @@ -44,9 +33,7 @@ set(SRC_FILES src/nGIBLUEEstimator.cpp src/nGILSEstimator.cpp src/nGIStandardEstimator.cpp - # stdafx.h - # stdafx.cpp - # dllmain.cpp + ) @@ -58,63 +45,25 @@ add_library(${TARGET_NAME} SHARED set_target_properties(${TARGET_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) -target_compile_definitions(${TARGET_NAME} PRIVATE NGIESTIMATORS_LIBRARY HAVE_NEXUS) +target_compile_definitions(${TARGET_NAME} PRIVATE NGIESTIMATORS_LIBRARY ) # HAVE_NEXUS) -add_definitions(-DHAVE_NEXUS) +# add_definitions(-DHAVE_NEXUS) message(${CMAKE_HOST_SYSTEM_PROCESSOR}) -if (WIN32) - - target_link_libraries(${TARGET_NAME} - PUBLIC +target_link_libraries(${TARGET_NAME} + PRIVATE kipl + # ImagingAlgorithms ModuleConfig - ImagingAlgorithms + # ReaderConfig + nGIFramework LibXml2::LibXml2 - TIFF::TIFF + TIFF::TIFF cfitsio::cfitsio - ) -endif() - -if (APPLE) - target_link_libraries(${TARGET_NAME} - PUBLIC - kipl - ImagingAlgorithms - ModuleConfig - ReaderConfig - nGIFramework - LibXml2::LibXml2 - TIFF::TIFF - # ${LAPACK_LIBRARIES} - # # LAPACK::LAPACK - # ${BLAS_LIBRARIES} - # # BLAS::BLAS - ${ARMADILLO_LIBRARIES} - # FFTW::Double - # FFTW::Float - ${CFITSIO_LIBRARIES} - # ${NEXUS_LIBRARIES} - ) -endif() + OpenBLAS::OpenBLAS + # HDF5::HDF5 + armadillo::armadillo +) -if (LINUX) - target_link_libraries(${TARGET_NAME} - PUBLIC - kipl - ImagingAlgorithms - ModuleConfig - xml2 - fftw3 - fftw3f - cfitsio - tiff - armadillo - lapack - blas - NeXus - NeXusCPP - ) -endif() install(TARGETS ${TARGET_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) diff --git a/frameworks/ngi/nGIEstimators/src/nGIBLUEEstimator.cpp b/frameworks/ngi/nGIEstimators/src/nGIBLUEEstimator.cpp index 5c97ce0..f7718e1 100644 --- a/frameworks/ngi/nGIEstimators/src/nGIBLUEEstimator.cpp +++ b/frameworks/ngi/nGIEstimators/src/nGIBLUEEstimator.cpp @@ -58,7 +58,7 @@ std::map nGIBLUEEstimator::GetParameters() int nGIBLUEEstimator::ProcessCore(kipl::base::TImage proj, - std::map parameters, + std::map /*parameters*/, kipl::base::TImage,2> & H0, kipl::base::TImage,2> &H1) { @@ -156,7 +156,7 @@ void nGIBLUEEstimator::ComputeVarianceImages(kipl::base::TImage img) float *pM=m.GetDataPtr(); const float M=1.0f/float(m_nFilterSize*m_nFilterSize); - const float M1=1.0f/float(m_nFilterSize*m_nFilterSize-1); + // const float M1=1.0f/float(m_nFilterSize*m_nFilterSize-1); ptrdiff_t j=0; @@ -176,7 +176,7 @@ void nGIBLUEEstimator::ComputeVarianceImages(kipl::base::TImage img) m_variance=PermuteImage(m_variance); } -int nGIBLUEEstimator::PrepareKernel(float fHarmonic, int N, bool bCompletePeriod) +int nGIBLUEEstimator::PrepareKernel(float fHarmonic, int N, bool /*bCompletePeriod*/) { arma::mat mat(N,3); arma::mat mat2(3,N); diff --git a/frameworks/ngi/nGIEstimators/src/nGIEstimators.cpp b/frameworks/ngi/nGIEstimators/src/nGIEstimators.cpp index 2ddebfd..1d033ee 100644 --- a/frameworks/ngi/nGIEstimators/src/nGIEstimators.cpp +++ b/frameworks/ngi/nGIEstimators/src/nGIEstimators.cpp @@ -61,12 +61,6 @@ NGIESTIMATORSSHARED_EXPORT int Destroy(const char * application, void *obj) delete module; } } - catch (std::exception & e) { - msg<<"Failed to destroy "< parameters) +int nGILSEstimator::Configure(nGIConfig config, std::map /*parameters*/) { mConfig=config; @@ -49,7 +49,7 @@ std::map nGILSEstimator::GetParameters() int nGILSEstimator::ProcessCore(kipl::base::TImage proj, - std::map parameters, + std::map /*parameters*/, kipl::base::TImage,2> & H0, kipl::base::TImage,2> &H1) { @@ -93,7 +93,7 @@ void nGILSEstimator::leastsquare(float *data, int N, complex &H0, complex H1=complex(m2.at(2),m2.at(1)); } -int nGILSEstimator::PrepareKernel(float fHarmonic, int N, bool bCompletePeriod) +int nGILSEstimator::PrepareKernel(float fHarmonic, int N, bool /*bCompletePeriod*/) { arma::mat mat(N,3); arma::mat mat2(3,N); diff --git a/frameworks/ngi/nGIEstimators/src/nGIPenalizedMLEstimator.cpp b/frameworks/ngi/nGIEstimators/src/nGIPenalizedMLEstimator.cpp index b774fa2..f470505 100644 --- a/frameworks/ngi/nGIEstimators/src/nGIPenalizedMLEstimator.cpp +++ b/frameworks/ngi/nGIEstimators/src/nGIPenalizedMLEstimator.cpp @@ -27,7 +27,7 @@ nGIPenalizedMLEstimator::~nGIPenalizedMLEstimator() } -int nGIPenalizedMLEstimator::Configure(nGIConfig config, std::map parameters) +int nGIPenalizedMLEstimator::Configure(nGIConfig config, std::map /*parameters*/) { mConfig=config; @@ -54,7 +54,7 @@ std::map nGIPenalizedMLEstimator::GetParameters() int nGIPenalizedMLEstimator::ProcessCore(kipl::base::TImage proj, - std::map parameters, + std::map /*parameters*/, kipl::base::TImage,2> & H0, kipl::base::TImage,2> &H1) { @@ -191,7 +191,7 @@ void nGIPenalizedMLEstimator::PenalizeVariance(float *pData, ptrdiff_t N) } } -int nGIPenalizedMLEstimator::PrepareKernel(float fHarmonic, int N, bool bCompletePeriod) +int nGIPenalizedMLEstimator::PrepareKernel(float fHarmonic, int N, bool /*bCompletePeriod*/) { arma::mat mat(N,3); arma::mat mat2(3,N); diff --git a/frameworks/ngi/nGIEstimators/src/nGIStandardEstimator.cpp b/frameworks/ngi/nGIEstimators/src/nGIStandardEstimator.cpp index a07b142..54bed98 100644 --- a/frameworks/ngi/nGIEstimators/src/nGIStandardEstimator.cpp +++ b/frameworks/ngi/nGIEstimators/src/nGIStandardEstimator.cpp @@ -22,7 +22,7 @@ nGIStandardEstimator::~nGIStandardEstimator() { } -int nGIStandardEstimator::Configure(nGIConfig config, std::map parameters) +int nGIStandardEstimator::Configure(nGIConfig config, std::map /*parameters*/) { logger(kipl::logging::Logger::LogVerbose,"module configured"); mConfig = config; @@ -72,7 +72,7 @@ std::map nGIStandardEstimator::GetParameters() } int nGIStandardEstimator::ProcessCore(kipl::base::TImage proj, - std::map parameters, + std::map /*parameters*/, kipl::base::TImage,2> & H0, kipl::base::TImage,2> &H1) { diff --git a/frameworks/ngi/nGIFramework/CMakeLists.txt b/frameworks/ngi/nGIFramework/CMakeLists.txt index 1921255..b387006 100644 --- a/frameworks/ngi/nGIFramework/CMakeLists.txt +++ b/frameworks/ngi/nGIFramework/CMakeLists.txt @@ -1,10 +1,7 @@ -cmake_minimum_required(VERSION 3.14) - set(TARGET_NAME "nGIFramework") project(nGITool LANGUAGES CXX) set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if (APPLE) @@ -23,9 +20,10 @@ include_directories( ../../../../imagingsuite/core/modules/ModuleConfig/include ../../../../imagingsuite/external/include/ ) + link_directories(../../../../build-imagingsuite/lib/Release) endif() -link_directories(../../../../install/lib) +# link_directories(../../../../install/lib) set(INC_FILES include/EstimatorBase.h @@ -40,8 +38,6 @@ set(INC_FILES include/nGIException.h include/nGIFramework_global.h include/ngigenerator.h - # stdafx.h - # targetver.h ) set(SRC_FILES @@ -56,8 +52,6 @@ set(SRC_FILES src/nGIConfig.cpp src/nGIException.cpp src/nGIProcessor.cpp - # src/stdafx.h - # stdafx.cpp ) @@ -69,54 +63,24 @@ add_library(${TARGET_NAME} SHARED set_target_properties(${TARGET_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) -target_compile_definitions(${TARGET_NAME} PRIVATE NGIFRAMEWORK_LIBRARY HAVE_NEXUS) +target_compile_definitions(${TARGET_NAME} PRIVATE NGIFRAMEWORK_LIBRARY ) # HAVE_NEXUS) -add_definitions(-DHAVE_NEXUS) +# add_definitions(-DHAVE_NEXUS) message(${CMAKE_HOST_SYSTEM_PROCESSOR}) -if (WIN32) - - target_link_libraries(${TARGET_NAME} +target_link_libraries(${TARGET_NAME} PRIVATE kipl + # ImagingAlgorithms ModuleConfig - ImagingAlgorithms + # ReaderConfig LibXml2::LibXml2 - TIFF::TIFF + TIFF::TIFF cfitsio::cfitsio - ) -endif() - -if (APPLE) - target_link_libraries(${TARGET_NAME} - PUBLIC - kipl - ImagingAlgorithms - ModuleConfig - ReaderConfig - LibXml2::LibXml2 - TIFF::TIFF - ${CFITSIO_LIBRARIES} - ) -endif() + # OpenBLAS::OpenBLAS + # HDF5::HDF5 + # armadillo::armadillo +) -if (LINUX) - target_link_libraries(${TARGET_NAME} - PRIVATE - kipl - ImagingAlgorithms - ModuleConfig - xml2 - fftw3 - fftw3f - cfitsio - tiff - armadillo - lapack - blas - NeXus - NeXusCPP - ) -endif() install(TARGETS ${TARGET_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) diff --git a/frameworks/ngi/nGIFramework/include/PreprocModuleBase.h b/frameworks/ngi/nGIFramework/include/PreprocModuleBase.h index 9491937..330c876 100644 --- a/frameworks/ngi/nGIFramework/include/PreprocModuleBase.h +++ b/frameworks/ngi/nGIFramework/include/PreprocModuleBase.h @@ -19,13 +19,13 @@ class NGIFRAMEWORKSHARED_EXPORT PreprocModuleBase : public ProcessModuleBase public: PreprocModuleBase(std::string name="PreprocModuleBase"); virtual int Configure(nGIConfig config, std::map parameters)=0; - virtual bool SetROI(size_t *roi) {return false;} + virtual bool SetROI(size_t * /*roi*/) {return false;} virtual ~PreprocModuleBase(void); protected: int ExtractSinogram(kipl::base::TImage &projections, kipl::base::TImage &sinogram, size_t idx); int InsertSinogram(kipl::base::TImage &sinogram, kipl::base::TImage &projections, size_t idx); - virtual int Configure(std::map parameters) {return 0;} + virtual int Configure(std::map /*parameters*/) {return 0;} }; diff --git a/frameworks/ngi/nGIFramework/include/nGIEngine.h b/frameworks/ngi/nGIFramework/include/nGIEngine.h index a45624c..b6f87c9 100644 --- a/frameworks/ngi/nGIFramework/include/nGIEngine.h +++ b/frameworks/ngi/nGIFramework/include/nGIEngine.h @@ -37,7 +37,7 @@ class NGIFRAMEWORKSHARED_EXPORT nGIEngine kipl::base::TImage & dark, kipl::base::TImage & vis); - void Progress(size_t *blocks, float *blockProgress, float *overallProgress) + void Progress(size_t */*blocks*/, float */*blockProgress*/, float * /*overallProgress*/) {// todo } diff --git a/frameworks/ngi/nGIFramework/src/EstimatorBase.cpp b/frameworks/ngi/nGIFramework/src/EstimatorBase.cpp index 02f9d34..f05efc9 100644 --- a/frameworks/ngi/nGIFramework/src/EstimatorBase.cpp +++ b/frameworks/ngi/nGIFramework/src/EstimatorBase.cpp @@ -114,7 +114,7 @@ void EstimatorBase::GetProcessedImages(kipl::base::TImage & transmissio } -int EstimatorBase::ComputeResidualImage(kipl::base::TImage proj) +int EstimatorBase::ComputeResidualImage(kipl::base::TImage /*proj*/) { // todo Implement the residual image processing return 0; @@ -197,17 +197,17 @@ float EstimatorBase::ComputeVisibility(const std::vector &roi) int window=roi[3]-roi[1]; float *pVis=new float[window]; memset(pVis,0,sizeof(float)*window); - float sum=0.0f; + // float sum=0.0f; - for (int y=0; y *pH=m_ReferenceH1.GetLinePtr(y); complex *pDC=m_ReferenceH0.GetLinePtr(y); - for (int x=roi[0]; x ProjectionReader::GetImageSize(std::string filename) throw nGIException("Unknown file type",__FILE__, __LINE__); } } - catch (std::exception &e) { + catch (kipl::base::KiplException &e) { throw nGIException(e.what(),__FILE__,__LINE__); } - catch (kipl::base::KiplException &e) { + catch (std::exception &e) { throw nGIException(e.what(),__FILE__,__LINE__); } + return dims; } kipl::base::TImage ProjectionReader::ReadFITS(std::string filename, const std::vector & nCrop) @@ -84,12 +85,12 @@ kipl::base::TImage ProjectionReader::ReadFITS(std::string filename, con try { kipl::io::ReadFITS(img,filename,nCrop); } - catch (std::exception &e) { - throw nGIException(e.what(), __FILE__,__LINE__); - } catch (kipl::base::KiplException &e) { throw kipl::base::KiplException(e.what(), __FILE__,__LINE__); } + catch (std::exception &e) { + throw nGIException(e.what(), __FILE__,__LINE__); + } catch (...) { throw nGIException("Unknown exception", __FILE__,__LINE__); } @@ -105,7 +106,7 @@ kipl::base::TImage ProjectionReader::ReadTIFF(std::string filename, con return img; } -kipl::base::TImage ProjectionReader::ReadPNG(std::string filename, const std::vector & nCrop) +kipl::base::TImage ProjectionReader::ReadPNG(std::string /*filename*/, const std::vector & /*nCrop*/) { throw nGIException("ReadPNG is not implemented",__FILE__, __LINE__); return kipl::base::TImage(); diff --git a/frameworks/ngi/nGIFramework/src/nGIConfig.cpp b/frameworks/ngi/nGIFramework/src/nGIConfig.cpp index 065ea37..2899859 100644 --- a/frameworks/ngi/nGIFramework/src/nGIConfig.cpp +++ b/frameworks/ngi/nGIFramework/src/nGIConfig.cpp @@ -229,7 +229,7 @@ void nGIConfig::ParseProcess(xmlTextReaderPtr reader) nGIConfig::nGIConfig(const std::string &appPath) : ConfigBase("nGIConfig",appPath), - estimator(appPath) + estimator(appPath,"estimators") { #ifdef _MSCVER_ @@ -413,7 +413,7 @@ void nGIConfig::ParseProcessChain(xmlTextReaderPtr reader) sValue="Empty"; sName=reinterpret_cast(name); if (sName=="module") { - ModuleConfig module(m_sApplicationPath); + ModuleConfig module(m_sApplicationPath,"estimators"); module.ParseModule(reader); modules.push_back(module); } @@ -441,7 +441,7 @@ std::string nGIConfig::SanitySlicesCheck() return ""; } -std::string nGIConfig::SanityMessage(bool msg) +std::string nGIConfig::SanityMessage(bool /*msg*/) { return ""; } diff --git a/frameworks/ngi/nGIFramework/src/nGIEngine.cpp b/frameworks/ngi/nGIFramework/src/nGIEngine.cpp index fcaffae..42bdf8a 100644 --- a/frameworks/ngi/nGIFramework/src/nGIEngine.cpp +++ b/frameworks/ngi/nGIFramework/src/nGIEngine.cpp @@ -158,7 +158,7 @@ int nGIEngine::Run() return result; } -kipl::base::TImage nGIEngine::RunPreprocess(size_t *roi, std::string sLastModule) +kipl::base::TImage nGIEngine::RunPreprocess(size_t * /*roi*/, std::string sLastModule) { std::stringstream msg; diff --git a/frameworks/ngi/nGIFramework/src/nGIProcessor.cpp b/frameworks/ngi/nGIFramework/src/nGIProcessor.cpp index 755e21f..23fdc66 100644 --- a/frameworks/ngi/nGIFramework/src/nGIProcessor.cpp +++ b/frameworks/ngi/nGIFramework/src/nGIProcessor.cpp @@ -22,9 +22,9 @@ #include DpcProcessor::DpcProcessor(size_t lut_size) : - mConfig(""), logger("nGI Processor"), nLUTsize(lut_size), + mConfig(""), sin_LUT(new float[nLUTsize]), cos_LUT(new float[nLUTsize]), fReferenceDose(1.0f) @@ -163,7 +163,7 @@ void DpcProcessor::ComputeOscillationPlot(kipl::base::TImage stack) for (size_t y=start_y; y DpcProcessor::LoadImageStack(std::string mask, size_ float *pDark=dark.GetDataPtr(); ptrdiff_t j=0; #pragma omp parallel for - for (j=0; j(slice.Size()); j++) pSlice[j]=(pSlice[j]-pDark[j])*fDose; @@ -238,7 +238,7 @@ kipl::base::TImage DpcProcessor::LoadImageStack(std::string mask, size_ pSlice=slice.GetDataPtr(); // Re-get the pointer since it has changed during spotcleaning; ptrdiff_t k=0; - for (j=0 ; j(slice.Size()); j++) { pStack[k]=pSlice[j]; k+=mConfig.projections.nPhaseSteps; @@ -278,7 +278,7 @@ kipl::base::TImage ,2> DpcProcessor::ComputeHarmonicImage(kipl::b void DpcProcessor::ComputeResultImages() { // Compute transmission image - const size_t N=openbeamDC.Size(); + const ptrdiff_t N=static_cast(openbeamDC.Size()); complex *pOpenBeamDC = openbeamDC.GetDataPtr(); complex *pSampleDC = sampleDC.GetDataPtr(); diff --git a/frameworks/ngi/nGIFramework/src/ngigenerator.cpp b/frameworks/ngi/nGIFramework/src/ngigenerator.cpp index 6ec6416..45862b0 100644 --- a/frameworks/ngi/nGIFramework/src/ngigenerator.cpp +++ b/frameworks/ngi/nGIFramework/src/ngigenerator.cpp @@ -7,11 +7,11 @@ nGIGenerator::nGIGenerator() } kipl::base::TImage nGIGenerator::GeneratePhaseSteps(kipl::base::TImage &bias, - kipl::base::TImage &l, - kipl::base::TImage &phase, + kipl::base::TImage &/*ampl*/, + kipl::base::TImage &/*phase*/, int steps, - int periods, - bool full_osc) + int /*periods*/, + bool /*full_osc*/) { std::vector dims={size_t(bias.Size(0)), size_t(bias.Size(1)),size_t(steps)}; kipl::base::TImage phasesteps(dims); diff --git a/frameworks/ngi/nGIPreprocessing/CMakeLists.txt b/frameworks/ngi/nGIPreprocessing/CMakeLists.txt index dac39c8..2177685 100644 --- a/frameworks/ngi/nGIPreprocessing/CMakeLists.txt +++ b/frameworks/ngi/nGIPreprocessing/CMakeLists.txt @@ -14,19 +14,11 @@ include_directories( ../nGIFramework/include ) -if (APPLE) -include_directories( - ../../../../ExternalDependencies/macos/include - ) -endif() - if (WIN32) -include_directories( - ../../../../imagingsuite/external/include/ - ) + link_directories(../../../../build-imagingsuite/lib/Release) endif() -link_directories(../../../../install/lib) +# link_directories(../../../../install/lib) set(INC_FILES include/nGIISSfilter.h @@ -34,7 +26,6 @@ set(INC_FILES include/nGILogNorm.h include/ngipreprocessing_global.h include/nGIPreprocessing.h - # include/stdafx.h ) set(SRC_FILES @@ -42,8 +33,6 @@ set(SRC_FILES src/nGIPreprocessing.cpp src/nGILogNorm.cpp src/nGISpotClean.cpp - # src/stdafx.h - # src/stdafx.cpp ) @@ -55,56 +44,25 @@ add_library(${TARGET_NAME} SHARED set_target_properties(${TARGET_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) -target_compile_definitions(${TARGET_NAME} PRIVATE NGIPREPROCESSING_LIBRARY HAVE_NEXUS) +target_compile_definitions(${TARGET_NAME} PRIVATE NGIPREPROCESSING_LIBRARY ) #HAVE_NEXUS) -add_definitions(-DHAVE_NEXUS) +# add_definitions(-DHAVE_NEXUS) message(${CMAKE_HOST_SYSTEM_PROCESSOR}) -if (WIN32) - - target_link_libraries(${TARGET_NAME} - PUBLIC +target_link_libraries(${TARGET_NAME} + PRIVATE kipl - ModuleConfig ImagingAlgorithms + ModuleConfig + # ReaderConfig nGIFramework LibXml2::LibXml2 - TIFF::TIFF - cfitsio::cfitsio - ) -endif() - -if (APPLE) - target_link_libraries(${TARGET_NAME} - PUBLIC - kipl - ImagingAlgorithms - ModuleConfig - ReaderConfig - nGIFramework - LibXml2::LibXml2 - TIFF::TIFF - ) -endif() + # TIFF::TIFF + # cfitsio::cfitsio + # OpenBLAS::OpenBLAS + # HDF5::HDF5 + # armadillo::armadillo +) -if (LINUX) - target_link_libraries(${TARGET_NAME} - PRIVATE - kipl - ImagingAlgorithms - ModuleConfig - nGIFramework - xml2 - fftw3 - fftw3f - cfitsio - tiff - armadillo - lapack - blas - NeXus - NeXusCPP - ) -endif() install(TARGETS ${TARGET_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib) diff --git a/frameworks/ngi/nGIPreprocessing/src/nGIISSfilter.cpp b/frameworks/ngi/nGIPreprocessing/src/nGIISSfilter.cpp index 8787ce2..4aa1be2 100644 --- a/frameworks/ngi/nGIPreprocessing/src/nGIISSfilter.cpp +++ b/frameworks/ngi/nGIPreprocessing/src/nGIISSfilter.cpp @@ -29,12 +29,12 @@ nGIISSfilter::nGIISSfilter() : nGIISSfilter::~nGIISSfilter() { } -int nGIISSfilter::Configure(nGIConfig config, std::map parameters) +int nGIISSfilter::Configure(nGIConfig /*config*/, std::map parameters) { - m_fTau = GetFloatParameter(parameters,"tau"); - m_nN = GetIntParameter(parameters,"N"); - m_fLambda = GetFloatParameter(parameters,"lambda"); - m_fAlpha = GetFloatParameter(parameters,"alpha"); + m_fTau = GetFloatParameter(parameters,"tau"); + m_nN = GetIntParameter(parameters,"N"); + m_fLambda = GetFloatParameter(parameters,"lambda"); + m_fAlpha = GetFloatParameter(parameters,"alpha"); m_bScaleData = kipl::strings::string2bool(GetStringParameter(parameters,"scaledata")); m_bAutoScale = kipl::strings::string2bool(GetStringParameter(parameters,"autoscale")); m_fSlope = GetFloatParameter(parameters,"slope"); @@ -47,25 +47,25 @@ std::map nGIISSfilter::GetParameters() { std::map parameters; - parameters["tau"]=kipl::strings::value2string(m_fTau); - parameters["N"]=kipl::strings::value2string(m_nN); - parameters["lambda"]=kipl::strings::value2string(m_fLambda); - parameters["alpha"]=kipl::strings::value2string(m_fAlpha); + parameters["tau"] = kipl::strings::value2string(m_fTau); + parameters["N"] = kipl::strings::value2string(m_nN); + parameters["lambda"] = kipl::strings::value2string(m_fLambda); + parameters["alpha"] = kipl::strings::value2string(m_fAlpha); - parameters["autoscale"]=kipl::strings::bool2string(m_bAutoScale); - parameters["slope"]=kipl::strings::value2string(m_fSlope); - parameters["intercept"]=kipl::strings::value2string(m_fIntercept); - parameters["scaledata"]=kipl::strings::bool2string(m_bScaleData); + parameters["autoscale"] = kipl::strings::bool2string(m_bAutoScale); + parameters["slope"] = kipl::strings::value2string(m_fSlope); + parameters["intercept"] = kipl::strings::value2string(m_fIntercept); + parameters["scaledata"] = kipl::strings::bool2string(m_bScaleData); return parameters; } -bool nGIISSfilter::SetROI(size_t *roi) +bool nGIISSfilter::SetROI(size_t * /*roi*/) { return false; } -int nGIISSfilter::ProcessCore(kipl::base::TImage & img, std::map & coeff) +int nGIISSfilter::ProcessCore(kipl::base::TImage & img, std::map & /*coeff*/) { akipl::scalespace::ISSfilter filter; filter.ErrorCurve(m_bErrorCurve); @@ -88,7 +88,7 @@ int nGIISSfilter::ProcessCore(kipl::base::TImage & img, std::map & img, std::map & coeff) +int nGIISSfilter::ProcessCore(kipl::base::TImage & img, std::map & /*coeff*/) { #pragma omp parallel { diff --git a/frameworks/ngi/nGIPreprocessing/src/nGILogNorm.cpp b/frameworks/ngi/nGIPreprocessing/src/nGILogNorm.cpp index fd66ef7..8c1ff3d 100644 --- a/frameworks/ngi/nGIPreprocessing/src/nGILogNorm.cpp +++ b/frameworks/ngi/nGIPreprocessing/src/nGILogNorm.cpp @@ -16,7 +16,7 @@ nGILogNorm::nGILogNorm() : m_Config("") nGILogNorm::~nGILogNorm() { } -int nGILogNorm::Configure(nGIConfig config, std::map parameters) +int nGILogNorm::Configure(nGIConfig /*config*/, std::map /*parameters*/) { return 0; diff --git a/frameworks/ngi/nGIPreprocessing/src/nGIPreprocessing.cpp b/frameworks/ngi/nGIPreprocessing/src/nGIPreprocessing.cpp index db9f609..8efb4dd 100644 --- a/frameworks/ngi/nGIPreprocessing/src/nGIPreprocessing.cpp +++ b/frameworks/ngi/nGIPreprocessing/src/nGIPreprocessing.cpp @@ -54,27 +54,26 @@ int Destroy(const char * application, void *obj) delete module; } } - catch (std::exception & e) { - msg<<"Failed to destroy "< & img, std::map &coeff) +int nGISpotClean::ProcessCore(kipl::base::TImage & img, std::map &/*coeff*/) { std::ostringstream msg; msg.str(""); @@ -113,7 +113,7 @@ int nGISpotClean::ProcessCore(kipl::base::TImage & img, std::map &img, std::map ¶meters) +int nGISpotClean::ProcessCore(kipl::base::TImage &img, std::map &/*parameters*/) { std::ostringstream msg; msg.str(""); diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 0000000..ace54e4 --- /dev/null +++ b/pixi.toml @@ -0,0 +1,39 @@ +[workspace] +authors = ["Anders Kaestner "] +channels = ["conda-forge"] +name = "scripts" +platforms = ["linux-64", "osx-64", "osx-arm64", "win-64"] +version = "0.1.0" + +[tasks] + +[dependencies] +numpy = "*" +python = "3.12.*" +scipy = "*" +matplotlib = "*" +jupyter = "*" +notebook = "*" +pandas = "*" +scikit-learn = "*" +scikit-image = "*" +uncertainties = "*" +opencv = "*" +pandoc = "*" +jupyter-book = "*" +ipywidgets = "*" +astropy = "*" +dask = "*" +mysqlclient = "*" +seaborn = "*" +tifffile = "*" +tqdm = "*" +pytest = "*" +matplotlib-scalebar = "*" +ffmpeg = "*" +rise = "*" +jupyter_contrib_nbextensions = "*" +pip = "*" +cmake = "*" +ninja = "*" +conan = "*" \ No newline at end of file diff --git a/profiles/linux_gcc_11_release b/profiles/linux_gcc_11_release new file mode 100644 index 0000000..d4ff990 --- /dev/null +++ b/profiles/linux_gcc_11_release @@ -0,0 +1,9 @@ +[settings] +os=Linux +arch=x86_64 +build_type=Release +compiler=gcc +compiler.version=11 +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +[options] \ No newline at end of file diff --git a/profiles/linux_gcc_11_testing b/profiles/linux_gcc_11_testing new file mode 100644 index 0000000..788d8af --- /dev/null +++ b/profiles/linux_gcc_11_testing @@ -0,0 +1,14 @@ +[settings] +os=Linux +arch=x86_64 +build_type=Release +compiler=gcc +compiler.version=11 +compiler.cppstd=20 +compiler.libcxx=libstdc++11 +[options] +[conf] +tools.build:cflags=['-pg', '-fsanitize=address'] +tools.build:cxxflags=['-pg', '-fsanitize=address'] +tools.build:exelinkflags=['-fsanitize=address'] +tools.build:sharedlinkflags=['-fsanitize=address'] \ No newline at end of file diff --git a/profiles/macos_arm_clang_15_release b/profiles/macos_arm_clang_15_release new file mode 100644 index 0000000..c8961b3 --- /dev/null +++ b/profiles/macos_arm_clang_15_release @@ -0,0 +1,9 @@ +[settings] +os=Macos +arch=armv8 +build_type=Release +compiler=apple-clang +compiler.version=15 +compiler.cppstd=20 +compiler.libcxx=libc++ +[options] diff --git a/profiles/macos_x64_clang_14_release b/profiles/macos_x64_clang_14_release new file mode 100644 index 0000000..0d4c3c0 --- /dev/null +++ b/profiles/macos_x64_clang_14_release @@ -0,0 +1,9 @@ +[settings] +os=Macos +arch=x86_64 +build_type=Release +compiler=apple-clang +compiler.version=14 +compiler.cppstd=20 +compiler.libcxx=libc++ +[options] diff --git a/profiles/windows_msvc_17_release b/profiles/windows_msvc_17_release new file mode 100644 index 0000000..28ce72b --- /dev/null +++ b/profiles/windows_msvc_17_release @@ -0,0 +1,9 @@ +[settings] +os=Windows +arch=x86_64 +build_type=Release +compiler=msvc +compiler.cppstd=20 +compiler.version=194 +compiler.runtime=dynamic +[options]