Skip to content

Commit cd5440f

Browse files
mmodatMarc Modat
andauthored
#144 reinstate dynamic libraries (#145)
Co-authored-by: Marc Modat <marc.modat@hologen.ai>
1 parent 7fcc689 commit cd5440f

8 files changed

Lines changed: 111 additions & 15 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,11 @@ CMakeSettings.json
4141
# Mac trash folder
4242
.DS_Store
4343

44-
# Build
44+
# Build and install
4545
build*
4646
out*
4747
benchmark
48+
install
4849

4950
# Doxygen
5051
html

CMakeLists.txt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,10 @@ if(USE_OPENMP)
249249
endif(USE_OPENMP)
250250
#-----------------------------------------------------------------------------
251251
if(BUILD_SHARED_LIBS)
252+
set(NIFTYREG_LIBRARY_TYPE SHARED)
253+
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
252254
if(USE_CUDA)
253-
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build the libraries as shared." FORCE)
254-
message(WARNING "CUDA is not compatible with shared libraries. Forcing BUILD_SHARED_LIBS to OFF")
255-
set(NIFTYREG_LIBRARY_TYPE STATIC)
256-
else(USE_CUDA)
257-
set(NIFTYREG_LIBRARY_TYPE SHARED)
255+
set(CMAKE_CUDA_RUNTIME_LIBRARY Shared)
258256
endif(USE_CUDA)
259257
else(BUILD_SHARED_LIBS)
260258
set(NIFTYREG_LIBRARY_TYPE STATIC)

cmake/CMakeLists.txt

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,41 @@ install(
3838
"${PROJECT_SOURCE_DIR}/src/cmake/"
3939
DESTINATION "${ConfigPackageLocation}"
4040
FILES_MATCHING PATTERN "Find*"
41-
)
41+
)
42+
43+
# install the public headers so that NIFTYREG_INCLUDE_DIRS is usable by external projects
44+
# The in-tree include directories are flat (reg-lib, reg-lib/cpu, reg-io), so the headers
45+
# are installed flat into include/; niftilib, RNifti and znzlib keep their subdirectory
46+
# as they are included with a qualified path (e.g. <znzlib/znzlib.h>)
47+
file(GLOB NR_PUBLIC_HEADERS
48+
"${PROJECT_SOURCE_DIR}/reg-lib/*.h"
49+
"${PROJECT_SOURCE_DIR}/reg-lib/*.hpp"
50+
"${PROJECT_SOURCE_DIR}/reg-lib/cpu/*.h"
51+
"${PROJECT_SOURCE_DIR}/reg-lib/cpu/*.hpp"
52+
)
53+
install(FILES
54+
${NR_PUBLIC_HEADERS}
55+
"${PROJECT_SOURCE_DIR}/reg-io/_reg_ReadWriteImage.h"
56+
"${PROJECT_SOURCE_DIR}/reg-io/_reg_ReadWriteMatrix.h"
57+
"${PROJECT_SOURCE_DIR}/reg-io/RNifti.h"
58+
"${PROJECT_SOURCE_DIR}/reg-io/png/reg_png.h"
59+
DESTINATION include COMPONENT Development
60+
)
61+
install(DIRECTORY
62+
"${PROJECT_SOURCE_DIR}/reg-io/niftilib"
63+
"${PROJECT_SOURCE_DIR}/reg-io/RNifti"
64+
"${PROJECT_SOURCE_DIR}/reg-io/znzlib"
65+
DESTINATION include COMPONENT Development
66+
FILES_MATCHING PATTERN "*.h"
67+
)
68+
# znzlib.h includes zlib/zlib.h when HAVE_ZLIB is defined
69+
install(FILES
70+
"${PROJECT_SOURCE_DIR}/reg-io/zlib/zlib.h"
71+
"${PROJECT_SOURCE_DIR}/reg-io/zlib/zconf.h"
72+
DESTINATION include/zlib COMPONENT Development
73+
)
74+
if(USE_NRRD)
75+
install(FILES "${PROJECT_SOURCE_DIR}/reg-io/nrrd/reg_nrrd.h"
76+
DESTINATION include COMPONENT Development
77+
)
78+
endif(USE_NRRD)

reg-apps/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ add_executable(reg_resample reg_resample.cpp)
1212
set(_reg_resample_libraries
1313
_reg_compute
1414
_reg_kernels
15+
_reg_platform
1516
_reg_resampling
1617
_reg_localTrans
1718
_reg_tools

reg-io/niftilib/CMakeLists.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ endif(USE_NII_NAN)
77
set(NAME reg_nifti)
88
add_library(${NAME} nifti1_io.c)
99
target_link_libraries(${NAME} znz)
10+
if(UNIX AND NOT APPLE)
11+
# nifti1_io.c uses sqrt/sqrtf; libm is separate from libc on Linux
12+
target_link_libraries(${NAME} m)
13+
endif()
1014
install(TARGETS ${NAME}
1115
RUNTIME DESTINATION bin
1216
LIBRARY DESTINATION lib

reg-lib/CMakeLists.txt

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,17 +94,36 @@ install(TARGETS _reg_blockMatching
9494
)
9595
set(NIFTYREG_LIBRARIES "${NIFTYREG_LIBRARIES};_reg_blockMatching")
9696
#-----------------------------------------------------------------------------
97-
add_library(_reg_compute ${NIFTYREG_LIBRARY_TYPE}
98-
Compute.cpp
97+
add_library(_reg_content ${NIFTYREG_LIBRARY_TYPE}
9998
AladinContent.cpp
10099
Content.cpp
101100
DefContent.cpp
102101
F3dContent.cpp
102+
)
103+
target_link_libraries(_reg_content
104+
_reg_blockMatching
105+
_reg_resampling
106+
_reg_tools
107+
)
108+
install(TARGETS _reg_content
109+
RUNTIME DESTINATION lib
110+
LIBRARY DESTINATION lib
111+
ARCHIVE DESTINATION lib
112+
)
113+
set(NIFTYREG_LIBRARIES "${NIFTYREG_LIBRARIES};_reg_content")
114+
#-----------------------------------------------------------------------------
115+
add_library(_reg_compute ${NIFTYREG_LIBRARY_TYPE}
116+
Compute.cpp
103117
Optimiser.cpp
104-
Platform.cpp
105118
MeasureCreator.cpp
106119
)
107-
target_link_libraries(_reg_compute _reg_measure)
120+
target_link_libraries(_reg_compute
121+
_reg_blockMatching
122+
_reg_content
123+
_reg_localTrans
124+
_reg_measure
125+
_reg_resampling
126+
)
108127
install(TARGETS _reg_compute
109128
RUNTIME DESTINATION lib
110129
LIBRARY DESTINATION lib
@@ -122,6 +141,10 @@ add_library(_reg_kernels ${NIFTYREG_LIBRARY_TYPE}
122141
)
123142
target_link_libraries(_reg_kernels
124143
_reg_blockMatching
144+
_reg_content
145+
_reg_globalTrans
146+
_reg_resampling
147+
_reg_tools
125148
)
126149
install(TARGETS _reg_kernels
127150
RUNTIME DESTINATION lib
@@ -130,12 +153,28 @@ install(TARGETS _reg_kernels
130153
)
131154
set(NIFTYREG_LIBRARIES "${NIFTYREG_LIBRARIES};_reg_kernels")
132155
#-----------------------------------------------------------------------------
156+
add_library(_reg_platform ${NIFTYREG_LIBRARY_TYPE} Platform.cpp)
157+
target_link_libraries(_reg_platform
158+
_reg_compute
159+
_reg_kernels
160+
${NR_OPENCL_LIBRARIES}
161+
${NR_CUDA_LIBRARIES}
162+
)
163+
install(TARGETS _reg_platform
164+
RUNTIME DESTINATION lib
165+
LIBRARY DESTINATION lib
166+
ARCHIVE DESTINATION lib
167+
)
168+
set(NIFTYREG_LIBRARIES "${NIFTYREG_LIBRARIES};_reg_platform")
169+
#-----------------------------------------------------------------------------
133170
## BUILD THE ALADIN LIBRARY
134171
add_library(_reg_aladin ${NIFTYREG_LIBRARY_TYPE} _reg_aladin.cpp _reg_aladin_sym.cpp)
135172
target_link_libraries(_reg_aladin
136173
_reg_blockMatching
137174
_reg_compute
175+
_reg_content
138176
_reg_kernels
177+
_reg_platform
139178
_reg_localTrans
140179
_reg_resampling
141180
_reg_globalTrans
@@ -161,7 +200,9 @@ set(_reg_f3d_files
161200
set(_reg_f3d_libraries
162201
_reg_blockMatching
163202
_reg_compute
203+
_reg_content
164204
_reg_kernels
205+
_reg_platform
165206
_reg_localTrans
166207
_reg_globalTrans
167208
_reg_resampling

reg-lib/cl/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,14 @@ add_library(${NAME} ${NIFTYREG_LIBRARY_TYPE}
1313
ClConvolutionKernel.cpp
1414
ClLtsKernel.cpp
1515
ClResampleImageKernel.cpp
16-
../AladinContent.cpp
1716
)
18-
target_link_libraries(${NAME} ${OpenCL_LIBRARIES})
17+
target_link_libraries(${NAME}
18+
_reg_blockMatching
19+
_reg_compute
20+
_reg_content
21+
_reg_tools
22+
${OpenCL_LIBRARIES}
23+
)
1924
install(TARGETS ${NAME}
2025
RUNTIME DESTINATION lib
2126
LIBRARY DESTINATION lib

reg-lib/cuda/CMakeLists.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ endif(CUDA_FAST_MATH AND CUDA_PRECISE_SQRT EQUAL "OFF" AND CUDA_PRECISE_DIV EQUA
5858
#-----------------------------------------------------------------------------
5959
set(NAME _reg_cuda_kernels)
6060
add_library(${NAME} ${NIFTYREG_LIBRARY_TYPE}
61-
../AladinContent.cpp
6261
affineDeformationKernel.cu
6362
blockMatchingKernel.cu
6463
CudaAffineDeformationFieldKernel.cpp
@@ -87,7 +86,17 @@ add_library(${NAME} ${NIFTYREG_LIBRARY_TYPE}
8786
_reg_nmi_gpu.cu
8887
_reg_ssd_gpu.cu
8988
)
90-
target_link_libraries(${NAME} CUDA::cuda_driver CUDA::cusolver CUDA::cublas)
89+
target_link_libraries(${NAME}
90+
_reg_blockMatching
91+
_reg_compute
92+
_reg_content
93+
_reg_measure
94+
_reg_tools
95+
CUDA::cuda_driver CUDA::cusolver CUDA::cublas
96+
)
97+
if(BUILD_SHARED_LIBS)
98+
target_link_libraries(${NAME} CUDA::cudart)
99+
endif(BUILD_SHARED_LIBS)
91100
install(TARGETS ${NAME}
92101
RUNTIME DESTINATION lib
93102
LIBRARY DESTINATION lib

0 commit comments

Comments
 (0)