diff --git a/.gitignore b/.gitignore index d1d270a..0308ca9 100644 --- a/.gitignore +++ b/.gitignore @@ -13,5 +13,5 @@ cmake_build src/IVE _test.sh -src/cudaSirecon/cudasireconConfig.h -src/cudasireconConfig.h +src/cudaSirecon/version.h +src/version.h diff --git a/build.sh b/build.sh index 9be1703..10ee861 100755 --- a/build.sh +++ b/build.sh @@ -20,4 +20,4 @@ cmake ${CMAKE_ARGS} \ ../src make -j 2 -make install +# make install diff --git a/environment-linux.yml b/environment-linux.yml index 83e50f4..7666a20 100644 --- a/environment-linux.yml +++ b/environment-linux.yml @@ -2,11 +2,11 @@ name: simbuild channels: - conda-forge dependencies: - - cudatoolkit-dev - - make - - cxx-compiler - - fftw - - boost-cpp - cmake - - libtiff + - cuda-version=12 + - cuda-nvcc + - fftw + - libboost-devel + - libcufft-dev - liblapack + - libtiff diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index db5a883..e90b71c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -31,24 +31,27 @@ option(BUILD_MRC "Build cudasirecon with MRC support" ON) option(BUILD_OTF_VIEWER "Build OTF viewer (requires X11)" OFF) -cmake_minimum_required(VERSION 3.14) +cmake_minimum_required (VERSION 3.20) # This is the one place where version is set -project(cudasirecon VERSION 1.2.0) -configure_file("${PROJECT_SOURCE_DIR}/cudasireconConfig.h.in" "${PROJECT_SOURCE_DIR}/cudasireconConfig.h") +project(cudasirecon VERSION 1.2.0 LANGUAGES CXX CUDA) +# the single source of our version is above in the project() command +# this header makes the version available to the compiler +configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/version.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/version.h + @ONLY +) + include_directories("${PROJECT_SOURCE_DIR}") -enable_language(CUDA) enable_testing() -if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES) - set(CMAKE_CUDA_ARCHITECTURES "52;60;61;70;72;75") -endif() -find_package(CUDA REQUIRED) find_package(CUDAToolkit REQUIRED) -message(STATUS "FOUND CUDA: " ${CUDAToolkit_BIN_DIR}) -include_directories(${CUDAToolkit_INCLUDE_DIRS}) +message(STATUS "CUDA version : ${CMAKE_CUDA_COMPILER_VERSION}") +set(CMAKE_CUDA_ARCHITECTURES all-major) +include_directories(${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}) add_definitions(-Dcimg_display=0) @@ -64,10 +67,7 @@ if(OPENMP_FOUND) endif() find_package(TIFF) -find_package( - Boost - COMPONENTS program_options filesystem system - REQUIRED) +find_package(Boost REQUIRED COMPONENTS program_options filesystem system) link_directories(${Boost_LIBRARY_DIRS}) include_directories(${Boost_INCLUDE_DIRS}) diff --git a/src/cudaSirecon/CMakeLists.txt b/src/cudaSirecon/CMakeLists.txt index 0ce959a..2c4d793 100644 --- a/src/cudaSirecon/CMakeLists.txt +++ b/src/cudaSirecon/CMakeLists.txt @@ -10,7 +10,6 @@ message(STATUS "LAPACK_FOUND: " ${LAPACK_FOUND}) # libcudasirecon shared library add_library(cudasirecon SHARED cudaSirecon.cpp boostfs.cpp gpuFunctionsImpl.cu interface.cpp) -cuda_add_cufft_to_target(cudasirecon) set_target_properties(cudasirecon PROPERTIES MSVC_RUNTIME_LIBRARY "" @@ -24,12 +23,13 @@ target_link_libraries( ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${IMLIB} - ${IVELIB}) + ${IVELIB} + CUDA::cufft +) # cudasirecon executable file add_executable(cudaSireconDriver cudaSireconDriver.cpp) -cuda_add_cufft_to_target(cudaSireconDriver) target_link_libraries(cudaSireconDriver cudasirecon) target_include_directories(cudaSireconDriver PUBLIC "${PROJECT_BINARY_DIR}") set_target_properties(cudaSireconDriver diff --git a/src/cudaSirecon/cudaSirecon.cpp b/src/cudaSirecon/cudaSirecon.cpp index b47e905..148ff20 100644 --- a/src/cudaSirecon/cudaSirecon.cpp +++ b/src/cudaSirecon/cudaSirecon.cpp @@ -2,16 +2,14 @@ #include "cudaSirecon.h" #include "cudaSireconImpl.h" #include "SIM_reconstructor.hpp" -#include "cudasireconConfig.h" +#include "version.h" #include #ifdef MRC #include "mrc.h" #endif -std::string version_number = std::to_string(cudasirecon_VERSION_MAJOR) + "." + - std::to_string(cudasirecon_VERSION_MINOR) + "." + - std::to_string(cudasirecon_VERSION_PATCH); +std::string version_number = std::string(PROJECT_VERSION); void SetDefaultParams(ReconParams *pParams) { diff --git a/src/cudaSirecon/interface.cpp b/src/cudaSirecon/interface.cpp index a2e9b5f..d259e96 100644 --- a/src/cudaSirecon/interface.cpp +++ b/src/cudaSirecon/interface.cpp @@ -1,5 +1,6 @@ #include "cudaSireconImpl.h" // must come first! #include "SIM_reconstructor.hpp" +#include "version.h" #ifdef _WIN32 #define DllExport __declspec(dllexport) @@ -68,4 +69,8 @@ extern "C" { sr->closeFiles(); } + DllExport const char* get_version() + { + return PROJECT_VERSION; + } } diff --git a/src/cudasireconConfig.h.in b/src/cudasireconConfig.h.in deleted file mode 100644 index 8c47f06..0000000 --- a/src/cudasireconConfig.h.in +++ /dev/null @@ -1,6 +0,0 @@ -// the configured options and settings for cudasirecon -// This will be populated with variables from the project() setting -// in CMakeLists.txt -#define cudasirecon_VERSION_MAJOR @cudasirecon_VERSION_MAJOR@ -#define cudasirecon_VERSION_MINOR @cudasirecon_VERSION_MINOR@ -#define cudasirecon_VERSION_PATCH @cudasirecon_VERSION_PATCH@ \ No newline at end of file diff --git a/src/version.h.in b/src/version.h.in new file mode 100644 index 0000000..b123f5c --- /dev/null +++ b/src/version.h.in @@ -0,0 +1,9 @@ +// the configured options and settings for cudasirecon +// This will be populated with variables from the project() setting +// in CMakeLists.txt +#pragma once + +#define PROJECT_VERSION_MAJOR @PROJECT_VERSION_MAJOR@ +#define PROJECT_VERSION_MINOR @PROJECT_VERSION_MINOR@ +#define PROJECT_VERSION_PATCH @PROJECT_VERSION_PATCH@ +#define PROJECT_VERSION "@PROJECT_VERSION@"