-
Notifications
You must be signed in to change notification settings - Fork 160
/
Copy pathCMakeLists.txt
68 lines (58 loc) · 2.03 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# required source files
set(zfp_source
zfp.c
bitstream.c
encode1f.c encode1d.c encode1i.c encode1l.c
decode1f.c decode1d.c decode1i.c decode1l.c
encode2f.c encode2d.c encode2i.c encode2l.c
decode2f.c decode2d.c decode2i.c decode2l.c
encode3f.c encode3d.c encode3i.c encode3l.c
decode3f.c decode3d.c decode3i.c decode3l.c
encode4f.c encode4d.c encode4i.c encode4l.c
decode4f.c decode4d.c decode4i.c decode4l.c
)
add_library(zfp ${zfp_source})
add_library(zfp::zfp ALIAS zfp)
if(HAVE_LIBM_MATH)
target_link_libraries(zfp PRIVATE m)
endif()
if(WIN32 AND BUILD_SHARED_LIBS)
# Define ZFP_SOURCE when compiling libzfp to export symbols to Windows DLL
list(APPEND zfp_public_defs ZFP_SHARED_LIBS)
list(APPEND zfp_private_defs ZFP_SOURCE)
endif()
if(ZFP_WITH_OPENMP)
target_compile_definitions(zfp PUBLIC -DZFP_WITH_OPENMP)
target_link_libraries(zfp PRIVATE OpenMP::OpenMP_C)
endif()
if(ZFP_WITH_CUDA)
add_subdirectory(cuda)
target_sources(zfp PRIVATE cuda/interface.cu)
target_compile_definitions(zfp PUBLIC -DZFP_WITH_CUDA)
target_link_libraries(zfp PRIVATE CUDA::cudart stdc++)
set_property(TARGET zfp PROPERTY POSITION_INDEPENDENT_CODE ON)
endif()
if(ZFP_WITH_HIP)
add_subdirectory(hip)
target_sources(zfp PRIVATE hip/interface.cpp)
set_source_files_properties(hip/interface.cpp PROPERTIES LANGUAGE HIP)
target_compile_definitions(zfp PUBLIC -DZFP_WITH_HIP)
target_link_libraries(zfp PRIVATE hip::device)
endif()
target_compile_definitions(zfp
PRIVATE ${zfp_private_defs}
PUBLIC ${zfp_public_defs}
)
target_include_directories(zfp
PUBLIC
$<BUILD_INTERFACE:${ZFP_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
set_property(TARGET zfp PROPERTY VERSION ${ZFP_VERSION})
set_property(TARGET zfp PROPERTY SOVERSION ${ZFP_VERSION_MAJOR})
set_property(TARGET zfp PROPERTY OUTPUT_NAME ${ZFP_LIBRARY_PREFIX}zfp)
install(TARGETS zfp EXPORT zfp-targets
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
)