Skip to content

Commit

Permalink
Merge pull request #558 from carterbox/win-build-update
Browse files Browse the repository at this point in the history
BLD: Address some issue with CMAKE build system on Windows
  • Loading branch information
carterbox committed Sep 15, 2021
2 parents 362743a + 5c6aff1 commit 3bc0e9f
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 27 deletions.
4 changes: 2 additions & 2 deletions cmake/Modules/BuildSettings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -163,11 +163,11 @@ if(TOMOPY_USE_SANITIZER)

if(c_fsanitize_${SANITIZER_TYPE} AND cxx_fsanitize_${SANITIZER_TYPE})
if("${SANITIZER_TYPE}" STREQUAL "memory")
list(APPEND EXTERNAL_LIBRARIES msan)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES msan)
elseif("${SANITIZER_TYPE}" STREQUAL "thread")
list(APPEND EXTERNAL_LIBRARUES tsan)
elseif("${SANITIZER_TYPE}" STREQUAL "leak")
list(APPEND EXTERNAL_LIBRARIES lsan)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES lsan)
endif()
else()
unset(SANITIZER_TYPE CACHE)
Expand Down
54 changes: 35 additions & 19 deletions cmake/Modules/Packages.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ if(CMAKE_C_COMPILER_IS_INTEL OR CMAKE_CXX_COMPILER_IS_INTEL)

find_package(Threads)
if(Threads_FOUND)
list(APPEND EXTERNAL_PRIVATE_LIBRARIES Threads::Threads)
list(APPEND TOMOPY_EXTERNAL_PRIVATE_LIBRARIES Threads::Threads)
endif()
endif()

Expand Down Expand Up @@ -48,8 +48,8 @@ endif()

if(TOMOPY_USE_MKL)
if(MKL_FOUND)
list(APPEND EXTERNAL_INCLUDE_DIRS ${MKL_INCLUDE_DIRS})
list(APPEND EXTERNAL_LIBRARIES ${MKL_LIBRARIES})
list(APPEND TOMOPY_EXTERNAL_INCLUDE_DIRS ${MKL_INCLUDE_DIRS})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${MKL_LIBRARIES})
else()
message(FATAL_ERROR "MKL not found. Aborting build.")
endif()
Expand All @@ -65,7 +65,7 @@ endif()

if(TOMOPY_USE_OPENCV)
if(OpenCV_FOUND)
list(APPEND EXTERNAL_LIBRARIES ${OpenCV_LIBRARIES})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${OpenCV_LIBRARIES})
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_OPENCV)
else()
message(FATAL_ERROR "OpenCV not found. Aborting build.")
Expand All @@ -83,9 +83,9 @@ endif()
if(TOMOPY_USE_COVERAGE)
find_library(GCOV_LIBRARY gcov)
if(GCOV_LIBRARY)
list(APPEND EXTERNAL_LIBRARIES ${GCOV_LIBRARY})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${GCOV_LIBRARY})
else()
list(APPEND EXTERNAL_LIBRARIES gcov)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES gcov)
endif()
add(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgcov")
endif()
Expand All @@ -101,8 +101,8 @@ if(TOMOPY_USE_TIMEMORY)
find_package(TiMemory)

if(TiMemory_FOUND)
list(APPEND EXTERNAL_INCLUDE_DIRS ${TiMemory_INCLUDE_DIRS})
list(APPEND EXTERNAL_LIBRARIES
list(APPEND TOMOPY_EXTERNAL_INCLUDE_DIRS ${TiMemory_INCLUDE_DIRS})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES
${TiMemory_LIBRARIES} ${TiMemory_C_LIBRARIES})
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_TIMEMORY)
endif()
Expand All @@ -120,8 +120,8 @@ if(TOMOPY_USE_GPERF)
find_package(GPerfTools COMPONENTS profiler)

if(GPerfTools_FOUND)
list(APPEND EXTERNAL_INCLUDE_DIRS ${GPerfTools_INCLUDE_DIRS})
list(APPEND EXTERNAL_LIBRARIES ${GPerfTools_LIBRARIES})
list(APPEND TOMOPY_EXTERNAL_INCLUDE_DIRS ${GPerfTools_INCLUDE_DIRS})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${GPerfTools_LIBRARIES})
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_GPERF)
endif()

Expand Down Expand Up @@ -178,6 +178,12 @@ endif()
#
################################################################################

add_library(tomopy-cuda-npp INTERFACE)
# create an alias in the tompy namespace which helps make it clear that you want
# to link to a cmake target named tomopy::cuda-npp, not a potential library
# tomopy-cuda-npp (i.e. libtomopy-cuda-npp.so)
add_library(tomopy::cuda-npp ALIAS tomopy-cuda-npp)

if(TOMOPY_USE_CUDA)

if(NOT CMAKE_CUDA_HOST_COMPILER)
Expand All @@ -186,13 +192,23 @@ if(TOMOPY_USE_CUDA)

if(NOT CMAKE_CUDA_COMPILER AND CUDAToolkit_FOUND)
set(CMAKE_CUDA_COMPILER ${CUDAToolkit_BIN_DIR}/nvcc)
if (WIN32)
set(CMAKE_CUDA_COMPILER "${CMAKE_CUDA_COMPILER}.exe")
endif (WIN32)
endif()

enable_language(CUDA)

list(APPEND EXTERNAL_LIBRARIES "CUDA::nppc_static;CUDA::npps_static;CUDA::nppig_static;CUDA::nppisu_static")
list(APPEND EXTERNAL_INCLUDE_DIRS ${CUDA_INCLUDE_DIRS}
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})
foreach(_NPP_LIB nppc npps nppig nppisu)
if(TARGET CUDA::${_NPP_LIB}_static)
target_link_libraries(tomopy-cuda-npp INTERFACE CUDA::${_NPP_LIB}_static)
elseif(TARGET CUDA::${_NPP_LIB})
target_link_libraries(tomopy-cuda-npp INTERFACE CUDA::${_NPP_LIB})
else()
message(FATAL_ERROR "Missing CUDA NPP target: CUDA::${_NPP_LIB} or CUDA::${_NPP_LIB}_static")
endif()
endforeach()
target_include_directories(tomopy-cuda-npp INTERFACE ${CUDA_INCLUDE_DIRS} ${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES})

get_property(LANGUAGES GLOBAL PROPERTY ENABLED_LANGUAGES)

Expand Down Expand Up @@ -231,7 +247,7 @@ if(TOMOPY_USE_CUDA)
endif()

if(NVTX_LIBRARY)
list(APPEND EXTERNAL_LIBRARIES ${NVTX_LIBRARY})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${NVTX_LIBRARY})
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_NVTX)
else()
if(TOMOPY_USE_NVTX)
Expand Down Expand Up @@ -274,18 +290,18 @@ endif()
# user customization to force link libs
to_list(_LINKLIBS "${TOMOPY_USER_LIBRARIES};$ENV{TOMOPY_USER_LIBRARIES}")
foreach(_LIB ${_LINKLIBS})
list(APPEND EXTERNAL_LIBRARIES ${_LIB})
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ${_LIB})
endforeach()

# including the directories
safe_remove_duplicates(EXTERNAL_INCLUDE_DIRS ${EXTERNAL_INCLUDE_DIRS})
safe_remove_duplicates(EXTERNAL_LIBRARIES ${EXTERNAL_LIBRARIES})
foreach(_DIR ${EXTERNAL_INCLUDE_DIRS})
safe_remove_duplicates(TOMOPY_EXTERNAL_INCLUDE_DIRS ${TOMOPY_EXTERNAL_INCLUDE_DIRS})
safe_remove_duplicates(TOMOPY_EXTERNAL_LIBRARIES ${TOMOPY_EXTERNAL_LIBRARIES})
foreach(_DIR ${TOMOPY_EXTERNAL_INCLUDE_DIRS})
include_directories(SYSTEM ${_DIR})
endforeach()

# include dirs
set(TARGET_INCLUDE_DIRECTORIES
${PROJECT_SOURCE_DIR}/source/include
${PROJECT_SOURCE_DIR}/source/PTL/source
${EXTERNAL_INCLUDE_DIRS})
${TOMOPY_EXTERNAL_INCLUDE_DIRS})
4 changes: 2 additions & 2 deletions source/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ checkout_git_submodule(RECURSIVE TEST_FILE CMakeLists.txt
if(TOMOPY_USE_PTL)
add_subdirectory(PTL)
if(BUILD_STATIC_LIBS)
list(APPEND EXTERNAL_LIBRARIES ptl-static)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ptl-static)
else()
list(APPEND EXTERNAL_LIBRARIES ptl-shared)
list(APPEND TOMOPY_EXTERNAL_LIBRARIES ptl-shared)
endif()
list(APPEND ${PROJECT_NAME}_DEFINITIONS TOMOPY_USE_PTL)
endif()
Expand Down
5 changes: 3 additions & 2 deletions source/libtomo/accel/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ endif(TOMOPY_USE_CUDA)

add_library(libtomopy-accel SHARED ${ACCEL_LIBRARY_SOURCES})

target_link_libraries(libtomopy-accel PUBLIC ${EXTERNAL_LIBRARIES}
PRIVATE ${EXTERNAL_PRIVATE_LIBRARIES})
target_link_libraries(libtomopy-accel
PUBLIC tomopy::cuda-npp ${TOMOPY_EXTERNAL_LIBRARIES}
PRIVATE ${TOMOPY_EXTERNAL_PRIVATE_LIBRARIES})

set(CUDA_PROPERTIES
CUDA_STANDARD ${CMAKE_CXX_STANDARD}
Expand Down
4 changes: 2 additions & 2 deletions source/libtomo/gridrec/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ set(GRIDREC_SOURCES ${gridrec_tomo_headers} ${gridrec_tomo_sources})
add_library(libtomopy-gridrec SHARED ${GRIDREC_SOURCES})

# link library
target_link_libraries(libtomopy-gridrec PUBLIC ${EXTERNAL_LIBRARIES}
PRIVATE ${EXTERNAL_PRIVATE_LIBRARIES})
target_link_libraries(libtomopy-gridrec PUBLIC ${TOMOPY_EXTERNAL_LIBRARIES}
PRIVATE ${TOMOPY_EXTERNAL_PRIVATE_LIBRARIES})

# where to place the library
set(OUTPUT_PATH ${CMAKE_BINARY_DIR})
Expand Down

0 comments on commit 3bc0e9f

Please sign in to comment.