forked from ECP-VeloC/AXL
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
135 lines (106 loc) · 4.33 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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
PROJECT(AXL)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
# Mac rpath Policy
IF(POLICY CMP0042)
CMAKE_POLICY(SET CMP0042 NEW)
ENDIF(POLICY CMP0042)
SET(CMAKE_MACOSX_RPATH ON)
# Linux rpath settings
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(CMAKE_POSITION_INDEPENDENT_CODE ON)
INCLUDE(GNUInstallDirs)
# Configuration Options
OPTION(AXL_LINK_STATIC "Default to static linking? (Needed for Cray)" OFF)
# TODO: make these NOT mutually exclusive
SET(AXL_ASYNC_API "NONE" CACHE STRING "Vendor-specific asynchronous file transfer (CRAY_DW INTEL_CPPR IBM_BBAPI NONE)")
SET_PROPERTY(CACHE AXL_ASYNC_API PROPERTY STRINGS NONE CRAY_DW INTEL_CPPR IBM_BBAPI)
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
# Find Packages & Files
LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
## KVTREE
FIND_PACKAGE(KVTREE REQUIRED)
IF(KVTREE_FOUND)
INCLUDE_DIRECTORIES(${KVTREE_INCLUDE_DIRS})
LIST(APPEND AXL_EXTERNAL_LIBS ${KVTREE_LIBRARIES})
LIST(APPEND AXL_LINK_LINE "-lkvtree")
ENDIF(KVTREE_FOUND)
## ZLIB
FIND_PACKAGE(ZLIB REQUIRED)
IF(ZLIB_FOUND)
INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIRS})
LIST(APPEND AXL_EXTERNAL_LIBS ${ZLIB_LIBRARIES})
LIST(APPEND AXL_LINK_LINE "-lz")
ENDIF(ZLIB_FOUND)
# PTHREADS
FIND_PACKAGE(Threads REQUIRED)
IF(CMAKE_THREAD_LIBS_INIT)
LIST(APPEND AXL_EXTERNAL_LIBS "-lpthread")
ENDIF()
## CPPR
IF(${AXL_ASYNC_API} STREQUAL "INTEL_CPPR")
FIND_PACKAGE(CPPR REQUIRED)
SET(HAVE_CPPR TRUE)
INCLUDE_DIRECTORIES(${CPPR_INCLUDE_DIRS})
LIST(APPEND AXL_EXTERNAL_LIBS ${CPPR_LIBRARIES})
ENDIF(${AXL_ASYNC_API} STREQUAL "INTEL_CPPR")
## DataWarp
IF(${AXL_ASYNC_API} STREQUAL "CRAY_DW")
FIND_PACKAGE(DataWarp REQUIRED)
SET(HAVE_DATAWARP TRUE)
INCLUDE_DIRECTORIES(${DATAWARP_INCLUDE_DIRS})
LIST(APPEND AXL_EXTERNAL_LIBS ${DATAWARP_LIBRARIES})
# LIST(APPEND AXL_LINK_LINE " -L${WITH_DATAWARP_PREFIX}/lib64 -ldatawarp")
ENDIF(${AXL_ASYNC_API} STREQUAL "CRAY_DW")
## IBM Burst Buffer API (optional)
FIND_PACKAGE(BBAPI)
IF(BBAPI_FOUND)
SET(HAVE_BBAPI TRUE)
SET(ENABLE_BBAPI_FALLBACK OFF CACHE BOOL "Fallback to a different transfer type if BBAPI not supported")
IF(${ENABLE_BBAPI_FALLBACK})
SET(HAVE_BBAPI_FALLBACK TRUE)
ENDIF(${ENABLE_BBAPI_FALLBACK})
INCLUDE_DIRECTORIES(${BBAPI_INCLUDE_DIRS})
LIST(APPEND AXL_EXTERNAL_LIBS ${BBAPI_LIBRARIES})
LIST(APPEND AXL_LINK_LINE " -L${WITH_BBAPI_PREFIX}/lib -lbbAPI")
ENDIF(BBAPI_FOUND)
############
# This sets an rpath to buildtime libraries in build directory
# and rewrites the rpath to the install location during install
# these lines must come before add_library and add_executable macros
############
# https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/RPATH-handling
# use, i.e. don't skip the full RPATH for the build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)
# when building, don't use the install RPATH already
# (but later on when installing)
SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
# add the automatically determined parts of the RPATH
# which point to directories outside the build tree to the install RPATH
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
# the RPATH to be used when installing, but only if it's not a system directory
LIST(FIND CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}" isSystemDir)
IF("${isSystemDir}" STREQUAL "-1")
SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}")
ENDIF("${isSystemDir}" STREQUAL "-1")
############
# End rpath stuff
############
# Subdirectories
ADD_SUBDIRECTORY(src)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src)
INCLUDE(CTest)
ADD_SUBDIRECTORY(test)
# Generate config.h with all our build #defs
CONFIGURE_FILE(${PROJECT_SOURCE_DIR}/cmake/config.h.in ${PROJECT_BINARY_DIR}/config.h)
SET_SOURCE_FILES_PROPERTIES(config.h.in PROPERTIES GENERATED FALSE)
SET_SOURCE_FILES_PROPERTIES(${PROJECT_BINARY_DIR}/config.h PROPERTIES GENERATED TRUE)
# Special Install Files
INSTALL(FILES README.md DESTINATION ${CMAKE_INSTALL_DATADIR}/axl)
# Package
SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Asynchronous Transfer Library")
SET(CPACK_PACKAGE_VENDOR "Lawrence Livermore National Laboratory")
SET(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/README.md")
SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE.TXT")