]>
Commit | Line | Data |
---|---|---|
7c673cae | 1 | include(GetGitRevisionDescription) |
9f95a23c | 2 | include(CheckCXXCompilerFlag) |
7c673cae | 3 | |
7c673cae FG |
4 | include(GNUInstallDirs) |
5 | # for erasure and compressor plugins | |
11fdf7f2 TL |
6 | set(CEPH_INSTALL_PKGLIBDIR ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}) |
7 | set(CEPH_INSTALL_FULL_PKGLIBDIR ${CMAKE_INSTALL_FULL_LIBDIR}/${PROJECT_NAME}) | |
8 | # for mgr plugins | |
9 | set(CEPH_INSTALL_DATADIR ${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}) | |
7c673cae FG |
10 | # so libceph-common can be found |
11 | set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) | |
12 | if(NOT CMAKE_INSTALL_RPATH) | |
11fdf7f2 | 13 | set(CMAKE_INSTALL_RPATH "${CEPH_INSTALL_FULL_PKGLIBDIR}") |
7c673cae FG |
14 | endif() |
15 | ||
16 | # to be compatible with configure_files shared with autoconfig | |
17 | set(bindir ${CMAKE_INSTALL_FULL_BINDIR}) | |
18 | set(sbindir ${CMAKE_INSTALL_FULL_SBINDIR}) | |
19 | set(libdir ${CMAKE_INSTALL_FULL_LIBDIR}) | |
20 | set(sysconfdir ${CMAKE_INSTALL_FULL_SYSCONFDIR}) | |
21 | set(libexecdir ${CMAKE_INSTALL_FULL_LIBEXECDIR}) | |
22 | set(pkgdatadir ${CMAKE_INSTALL_FULL_DATADIR}) | |
11fdf7f2 | 23 | set(datadir ${CEPH_INSTALL_DATADIR}) |
7c673cae FG |
24 | set(prefix ${CMAKE_INSTALL_PREFIX}) |
25 | ||
7c673cae FG |
26 | add_definitions("-DHAVE_CONFIG_H -D__CEPH__ -D_REENTRANT -D_THREAD_SAFE -D__STDC_FORMAT_MACROS") |
27 | add_definitions("-D_FILE_OFFSET_BITS=64") | |
28 | if(LINUX) | |
29 | add_definitions("-D_GNU_SOURCE") | |
30 | endif() | |
31 | ||
9f95a23c TL |
32 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") |
33 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -fsigned-char") | |
34 | ||
35 | if(NOT MSVC) | |
36 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wtype-limits -Wignored-qualifiers") | |
37 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wpointer-arith -Werror=format-security") | |
38 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Winit-self -Wno-unknown-pragmas") | |
39 | ||
40 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unknown-pragmas") | |
41 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor") | |
42 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-ignored-qualifiers") | |
43 | endif() | |
7c673cae | 44 | |
11fdf7f2 | 45 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth-1024") |
9f95a23c TL |
46 | |
47 | CHECK_CXX_COMPILER_FLAG("-Wpessimizing-move" COMPILER_SUPPORTS_PESSIMIZING_MOVE) | |
48 | if(COMPILER_SUPPORTS_PESSIMIZING_MOVE) | |
49 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wpessimizing-move") | |
50 | endif() | |
51 | CHECK_CXX_COMPILER_FLAG("-Wredundant-move" COMPILER_SUPPORTS_REDUNDANT_MOVE) | |
52 | if(COMPILER_SUPPORTS_REDUNDANT_MOVE) | |
53 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wredundant-move") | |
54 | endif() | |
7c673cae | 55 | if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) |
9f95a23c TL |
56 | if(MINGW) |
57 | # The MINGW headers are missing some "const" qualifiers. | |
58 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpermissive") | |
59 | else() | |
60 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic") | |
61 | endif() | |
7c673cae | 62 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wstrict-null-sentinel -Woverloaded-virtual") |
11fdf7f2 TL |
63 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-new-ttp-matching") |
64 | # cmake does not add '-pie' for executables even if | |
65 | # CMAKE_POSITION_INDEPENDENT_CODE is TRUE. | |
66 | if(EXE_LINKER_USE_PIE) | |
67 | if (NOT WITH_OSD_INSTRUMENT_FUNCTIONS AND NOT HAVE_SEASTAR) | |
68 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") | |
69 | endif() | |
31f18b77 | 70 | endif() |
7c673cae | 71 | elseif(CMAKE_CXX_COMPILER_ID STREQUAL Clang) |
11fdf7f2 TL |
72 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_EXPORTS_C_FLAG}") |
73 | set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -rdynamic -export-dynamic ${CMAKE_EXE_EXPORTS_C_FLAG}") | |
7c673cae FG |
74 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override -Wno-mismatched-tags") |
75 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-private-field") | |
11fdf7f2 | 76 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-address-of-packed-member") |
7c673cae FG |
77 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-function") |
78 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-local-typedef") | |
79 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-varargs") | |
80 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-gnu-designator") | |
81 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-missing-braces -Wno-parentheses -Wno-deprecated-register") | |
9f95a23c TL |
82 | if(FREEBSD) |
83 | # Need to use the GNU binutils linker to get versioning right. | |
84 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=/usr/local/bin/ld -Wno-unused-command-line-argument") | |
85 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=/usr/local/bin/ld -Wno-unused-command-line-argument") | |
86 | endif() | |
11fdf7f2 TL |
87 | if(APPLE) |
88 | set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -undefined dynamic_lookup") | |
89 | endif() | |
7c673cae FG |
90 | endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU) |
91 | set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_CXX_FLAGS}") | |
92 | ||
93 | if(NOT CMAKE_BUILD_TYPE) | |
9f95a23c TL |
94 | if(EXISTS "${CMAKE_SOURCE_DIR}/.git") |
95 | set(default_build_type "Debug") | |
96 | else() | |
97 | set(default_build_type "RelWithDebInfo") | |
98 | endif() | |
99 | set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE | |
100 | STRING "Default BUILD_TYPE is Debug, other options are: RelWithDebInfo, Release, and MinSizeRel." FORCE) | |
7c673cae FG |
101 | endif() |
102 | ||
11fdf7f2 TL |
103 | if(WITH_CEPH_DEBUG_MUTEX OR CMAKE_BUILD_TYPE STREQUAL Debug) |
104 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCEPH_DEBUG_MUTEX") | |
7c673cae FG |
105 | endif() |
106 | ||
107 | include(CheckCCompilerFlag) | |
108 | if(CMAKE_CXX_COMPILER_ID STREQUAL GNU) | |
31f18b77 | 109 | CHECK_C_COMPILER_FLAG("-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2" HAS_FORTIFY_SOURCE) |
7c673cae FG |
110 | if(NOT CMAKE_BUILD_TYPE STREQUAL Debug) |
111 | if(HAS_FORTIFY_SOURCE) | |
31f18b77 | 112 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2") |
11fdf7f2 | 113 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2") |
7c673cae FG |
114 | endif() |
115 | endif() | |
116 | CHECK_C_COMPILER_FLAG(-fstack-protector-strong HAS_STACK_PROTECT) | |
117 | if (HAS_STACK_PROTECT) | |
118 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector-strong") | |
119 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong") | |
120 | endif() | |
121 | endif(CMAKE_CXX_COMPILER_ID STREQUAL GNU) | |
122 | ||
9f95a23c TL |
123 | CHECK_C_COMPILER_FLAG("-D_GLIBCXX_ASSERTIONS" HAS_GLIBCXX_ASSERTIONS) |
124 | if(HAS_GLIBCXX_ASSERTIONS AND CMAKE_BUILD_TYPE STREQUAL Debug) | |
125 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_GLIBCXX_ASSERTIONS") | |
126 | endif() | |
127 | ||
7c673cae FG |
128 | include(SIMDExt) |
129 | if(HAVE_INTEL) | |
130 | set(CMAKE_ASM_COMPILER ${PROJECT_SOURCE_DIR}/src/yasm-wrapper) | |
11fdf7f2 TL |
131 | if(APPLE) |
132 | set(object_format "macho64") | |
133 | else() | |
134 | set(object_format "elf64") | |
135 | endif() | |
136 | set(CMAKE_ASM_FLAGS "-f ${object_format}") | |
9f95a23c TL |
137 | if(NOT WIN32) |
138 | # The native tools might be located even when cross compiling, which | |
139 | # might not work in this case (especially when targeting Windows). | |
140 | include(CheckYasm) | |
141 | check_yasm_support(${object_format} | |
142 | HAVE_GOOD_YASM_ELF64 | |
143 | HAVE_BETTER_YASM_ELF64) | |
144 | endif() | |
7c673cae FG |
145 | endif() |
146 | ||
11fdf7f2 | 147 | # require c++17 |
9f95a23c TL |
148 | set(CMAKE_CXX_STANDARD 17) |
149 | set(CMAKE_CXX_EXTENSIONS OFF) | |
150 | set(CMAKE_CXX_STANDARD_REQUIRED ON) | |
151 | set(CMAKE_C_STANDARD 99) | |
152 | # we use `asm()` to inline assembly, so enable the GNU extension | |
153 | set(CMAKE_C_EXTENSIONS ON) | |
154 | set(C_STANDARD_REQUIRED ON) | |
7c673cae | 155 | |
11fdf7f2 TL |
156 | include(CheckCXXSourceCompiles) |
157 | CHECK_CXX_SOURCE_COMPILES(" | |
158 | #include <map> | |
159 | using Map = std::map<int, int>; | |
160 | int main() { | |
161 | Map m; | |
162 | m.merge(Map{}); | |
163 | } | |
164 | " HAVE_STDLIB_MAP_SPLICING) | |
165 | ||
7c673cae FG |
166 | ## Handle diagnostics color if compiler supports them. |
167 | CHECK_C_COMPILER_FLAG("-fdiagnostics-color=always" | |
168 | COMPILER_SUPPORTS_DIAGNOSTICS_COLOR) | |
169 | ||
170 | set(DIAGNOSTICS_COLOR "auto" | |
171 | CACHE STRING "Used if the C/C++ compiler supports the -fdiagnostics-color option. May have one of three values -- 'auto' (default), 'always', or 'never'. If set to 'always' and the compiler supports the option, 'make [...] | less -R' will make visible diagnostics colorization of compiler output.") | |
172 | ||
173 | if(COMPILER_SUPPORTS_DIAGNOSTICS_COLOR) | |
174 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}") | |
175 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdiagnostics-color=${DIAGNOSTICS_COLOR}") | |
176 | endif() | |
177 | ||
11fdf7f2 | 178 | set(EXTRALIBS ${CMAKE_DL_LIBS}) |
9f95a23c TL |
179 | if(HAVE_POSIX_TIMERS) |
180 | list(APPEND EXTRALIBS ${RT_LIBRARY}) | |
11fdf7f2 TL |
181 | endif() |
182 | if(LINUX OR APPLE) | |
7c673cae FG |
183 | set(LIB_RESOLV resolv) |
184 | list(APPEND EXTRALIBS ${LIB_RESOLV}) | |
11fdf7f2 | 185 | endif() |
7c673cae FG |
186 | |
187 | if(${ENABLE_COVERAGE}) | |
188 | find_program(HAVE_GCOV gcov) | |
189 | if(NOT HAVE_GCOV) | |
190 | message(FATAL_ERROR "Coverage Enabled but gcov Not Found") | |
191 | endif(NOT HAVE_GCOV) | |
192 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage -O0") | |
193 | set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage") | |
194 | list(APPEND EXTRALIBS gcov) | |
195 | endif(${ENABLE_COVERAGE}) | |
196 | ||
7c673cae FG |
197 | set(GCOV_PREFIX_STRIP 4) |
198 | ||
31f18b77 FG |
199 | # the src/.git_version file may be written out by make-dist; otherwise |
200 | # we pull the git version from .git | |
7c673cae FG |
201 | option(ENABLE_GIT_VERSION "build Ceph with git version string" ON) |
202 | if(${ENABLE_GIT_VERSION}) | |
203 | get_git_head_revision(GIT_REFSPEC CEPH_GIT_VER) | |
9f95a23c TL |
204 | git_describe(CEPH_GIT_NICE_VER_WITH_V --always) |
205 | # remove leading 'v' | |
206 | string(SUBSTRING ${CEPH_GIT_NICE_VER_WITH_V} 1 -1 CEPH_GIT_NICE_VER) | |
7c673cae FG |
207 | #if building from a source tarball via make-dist |
208 | if(${CEPH_GIT_VER} STREQUAL "GITDIR-NOTFOUND") | |
209 | message(STATUS "Ceph/.git directory not found, parsing ${CMAKE_CURRENT_SOURCE_DIR}/.git_version for CEPH_GIT_VER and CEPH_GIT_NICE_VER") | |
210 | file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/.git_version CEPH_GIT_SHA_AND_TAG) | |
211 | list(GET CEPH_GIT_SHA_AND_TAG 0 CEPH_GIT_VER) | |
212 | list(GET CEPH_GIT_SHA_AND_TAG 1 CEPH_GIT_NICE_VER) | |
213 | endif(${CEPH_GIT_VER} STREQUAL "GITDIR-NOTFOUND") | |
7c673cae FG |
214 | else(${ENABLE_GIT_VERSION}) |
215 | set(CEPH_GIT_VER "no_version") | |
216 | set(CEPH_GIT_NICE_VER "Development") | |
217 | endif(${ENABLE_GIT_VERSION}) | |
218 | ||
31f18b77 FG |
219 | # the src/ceph_release file is 3 lines, |
220 | # <release number, e.g. '12' for luminous> | |
221 | # <release name, e.g. 'luminous'> | |
222 | # <release type: 'dev' for x.0.z, 'rc' or x.1.z, or 'stable' or x.2.z> | |
223 | # note that the release name is semi-redundant and must match CEPH_RELEASE_* | |
224 | # definitions in include/rados.h and common/ceph_strings.c. | |
225 | file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/ceph_release CEPH_RELEASE_FILE) | |
226 | list(GET CEPH_RELEASE_FILE 0 CEPH_RELEASE) | |
227 | list(GET CEPH_RELEASE_FILE 1 CEPH_RELEASE_NAME) | |
228 | list(GET CEPH_RELEASE_FILE 2 CEPH_RELEASE_TYPE) | |
229 | ||
7c673cae FG |
230 | option(WITH_OCF "build OCF-compliant cluster resource agent" OFF) |
231 | if(WITH_OCF) | |
232 | add_subdirectory(ocf) | |
233 | endif() | |
234 | ||
235 | option(WITH_CEPHFS_JAVA "build libcephfs Java bindings" OFF) | |
236 | if(WITH_CEPHFS_JAVA) | |
237 | add_subdirectory(java) | |
238 | endif() | |
239 | ||
240 | # Python stuff | |
9f95a23c | 241 | option(WITH_PYTHON2 "build python2 bindings" OFF) |
11fdf7f2 | 242 | if(WITH_PYTHON2) |
9f95a23c | 243 | message(FATAL_ERROR "Python 2 is not supported anymore") |
7c673cae FG |
244 | endif() |
245 | ||
7c673cae FG |
246 | # sort out which allocator to use |
247 | if(ALLOCATOR STREQUAL "tcmalloc") | |
11fdf7f2 | 248 | set(ALLOC_LIBS gperftools::tcmalloc) |
7c673cae | 249 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") |
7c673cae | 250 | elseif(ALLOCATOR STREQUAL "tcmalloc_minimal") |
11fdf7f2 | 251 | set(ALLOC_LIBS gperftools::tcmalloc_minimal) |
7c673cae | 252 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") |
7c673cae | 253 | elseif(ALLOCATOR STREQUAL "jemalloc") |
11fdf7f2 | 254 | set(ALLOC_LIBS JeMalloc::JeMalloc) |
7c673cae | 255 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-free") |
7c673cae FG |
256 | endif() |
257 | ||
7c673cae FG |
258 | if (WITH_BLKIN) |
259 | add_subdirectory(blkin/blkin-lib) | |
260 | endif(WITH_BLKIN) | |
261 | ||
262 | # Common infrastructure | |
263 | configure_file( | |
264 | ${CMAKE_SOURCE_DIR}/src/ceph_ver.h.in.cmake | |
265 | ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h | |
266 | @ONLY) | |
267 | ||
7c673cae FG |
268 | set(mds_files) |
269 | list(APPEND mds_files | |
270 | mds/MDSMap.cc | |
271 | mds/FSMap.cc | |
272 | mds/FSMapUser.cc | |
273 | mds/inode_backtrace.cc | |
274 | mds/mdstypes.cc | |
275 | mds/flock.cc) | |
276 | ||
7c673cae FG |
277 | add_subdirectory(json_spirit) |
278 | ||
11fdf7f2 | 279 | include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/xxHash") |
31f18b77 | 280 | include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/rapidjson/include") |
7c673cae | 281 | |
9f95a23c TL |
282 | find_package(fmt 5.2.1 QUIET) |
283 | if(fmt_FOUND) | |
284 | include_directories(SYSTEM "${fmt_INCLUDE_DIR}") | |
285 | else() | |
286 | message(STATUS "Could not find fmt, will build it") | |
287 | add_subdirectory(fmt) | |
288 | include_directories(SYSTEM "${CMAKE_SOURCE_DIR}/src/fmt/include") | |
289 | endif() | |
290 | ||
11fdf7f2 | 291 | if(WITH_SEASTAR) |
11fdf7f2 TL |
292 | find_package(c-ares 1.13.0 QUIET) |
293 | if(NOT c-ares_FOUND) | |
294 | message(STATUS "Could not find c-ares, will build it") | |
295 | include(Buildc-ares) | |
296 | build_c_ares() | |
297 | endif() | |
298 | macro(find_package name) | |
299 | if(NOT TARGET ${name}) | |
300 | _find_package(${ARGV}) | |
301 | endif() | |
302 | endmacro () | |
303 | set(Seastar_HWLOC OFF CACHE BOOL "" FORCE) | |
304 | set(Seastar_STD_OPTIONAL_VARIANT_STRINGVIEW ON CACHE BOOL "" FORCE) | |
9f95a23c TL |
305 | if(Seastar_DPDK) |
306 | find_package(dpdk QUIET) | |
307 | if(NOT DPDK_FOUND) | |
308 | include(BuildDPDK) | |
309 | build_dpdk(${CMAKE_BINARY_DIR}/src/dpdk) | |
310 | endif() | |
311 | endif() | |
312 | set(Seastar_CXX_FLAGS "-Wno-error;-Wno-sign-compare;-Wno-attributes;-Wno-pessimizing-move;-Wno-address-of-packed-member;-Wno-non-virtual-dtor" CACHE STRING "" FORCE) | |
11fdf7f2 TL |
313 | add_subdirectory(seastar) |
314 | # create the directory so cmake won't complain when looking at the imported | |
315 | # target: Seastar exports this directory created at build-time | |
316 | file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/seastar/gen/include") | |
317 | add_subdirectory(crimson) | |
318 | endif() | |
7c673cae FG |
319 | |
320 | set(libcommon_files | |
321 | ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h | |
322 | ceph_ver.c | |
9f95a23c | 323 | global/global_context.cc |
7c673cae | 324 | xxHash/xxhash.c |
7c673cae | 325 | log/Log.cc |
7c673cae FG |
326 | mon/MonCap.cc |
327 | mon/MonClient.cc | |
328 | mon/MonMap.cc | |
11fdf7f2 | 329 | mon/MonSub.cc |
7c673cae | 330 | mgr/MgrClient.cc |
31f18b77 | 331 | mon/PGMap.cc |
224ce89b | 332 | mgr/ServiceMap.cc |
7c673cae FG |
333 | osd/ECMsgTypes.cc |
334 | osd/HitSet.cc | |
7c673cae FG |
335 | osd/OSDMap.cc |
336 | osd/OSDMapMapping.cc | |
7c673cae | 337 | osd/osd_types.cc |
11fdf7f2 | 338 | osd/PGPeeringEvent.cc |
7c673cae | 339 | osd/OpRequest.cc |
9f95a23c TL |
340 | osd/ClassHandler.cc |
341 | osd/osd_op_util.cc | |
7c673cae FG |
342 | osdc/Striper.cc |
343 | osdc/Objecter.cc | |
11fdf7f2 | 344 | librbd/Features.cc |
7c673cae | 345 | ${mds_files}) |
11fdf7f2 TL |
346 | set_source_files_properties(ceph_ver.c |
347 | APPEND PROPERTY OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/include/ceph_ver.h) | |
348 | add_library(common-objs OBJECT ${libcommon_files}) | |
7c673cae | 349 | |
3efd9988 | 350 | CHECK_C_COMPILER_FLAG("-fvar-tracking-assignments" HAS_VTA) |
11fdf7f2 TL |
351 | add_subdirectory(auth) |
352 | add_subdirectory(common) | |
353 | add_subdirectory(crush) | |
354 | add_subdirectory(msg) | |
355 | add_subdirectory(arch) | |
7c673cae | 356 | |
7c673cae | 357 | set(ceph_common_objs |
11fdf7f2 TL |
358 | $<TARGET_OBJECTS:common-auth-objs> |
359 | $<TARGET_OBJECTS:common-common-objs> | |
360 | $<TARGET_OBJECTS:common-msg-objs> | |
7c673cae FG |
361 | $<TARGET_OBJECTS:common_buffer_obj> |
362 | $<TARGET_OBJECTS:common_texttable_obj> | |
363 | $<TARGET_OBJECTS:compressor_objs> | |
364 | $<TARGET_OBJECTS:common-objs> | |
365 | $<TARGET_OBJECTS:common_mountcephfs_objs> | |
7c673cae FG |
366 | $<TARGET_OBJECTS:crush_objs>) |
367 | set(ceph_common_deps | |
11fdf7f2 TL |
368 | json_spirit erasure_code arch crc32 |
369 | ${LIB_RESOLV} | |
31f18b77 FG |
370 | Boost::thread |
371 | Boost::system | |
31f18b77 FG |
372 | Boost::random |
373 | Boost::program_options | |
374 | Boost::date_time | |
375 | Boost::iostreams | |
9f95a23c TL |
376 | StdFilesystem::filesystem |
377 | fmt::fmt | |
7c673cae FG |
378 | ${BLKID_LIBRARIES} |
379 | ${Backtrace_LIBRARIES} | |
380 | ${BLKIN_LIBRARIES} | |
381 | ${CRYPTO_LIBS} | |
11fdf7f2 | 382 | ${GSSAPI_LIBRARIES} |
7c673cae FG |
383 | ${CMAKE_THREAD_LIBS_INIT} |
384 | ${CMAKE_DL_LIBS}) | |
11fdf7f2 TL |
385 | if(HAVE_UDEV) |
386 | list(APPEND ceph_common_deps ${UDEV_LIBRARIES}) | |
387 | endif() | |
388 | ||
389 | if(HAVE_VERBS) | |
390 | list(APPEND ceph_common_deps IBVerbs::verbs) | |
7c673cae | 391 | endif() |
11fdf7f2 TL |
392 | |
393 | if(HAVE_RDMACM) | |
394 | list(APPEND ceph_common_deps RDMA::RDMAcm) | |
395 | endif() | |
396 | ||
7c673cae FG |
397 | if(NOT WITH_SYSTEM_BOOST) |
398 | list(APPEND ceph_common_deps ${ZLIB_LIBRARIES}) | |
399 | endif() | |
400 | ||
11fdf7f2 TL |
401 | if(HAVE_QATZIP) |
402 | list(APPEND ceph_common_deps ${QATZIP_LIBRARIES}) | |
403 | endif() | |
7c673cae | 404 | |
11fdf7f2 TL |
405 | if(WITH_DPDK) |
406 | list(APPEND ceph_common_deps common_async_dpdk) | |
407 | endif() | |
7c673cae | 408 | |
9f95a23c TL |
409 | if(WIN32) |
410 | list(APPEND ceph_common_deps ws2_32 mswsock) | |
411 | endif() | |
412 | ||
413 | if(WITH_BLUESTORE_PMEM OR WITH_RBD_RWL) | |
414 | if(WITH_SYSTEM_PMDK) | |
415 | if(WITH_BLUESTORE_PMEM) | |
416 | find_package(pmem REQUIRED COMPONENTS pmem) | |
417 | endif() | |
418 | if(WITH_RBD_RWL) | |
419 | find_package(pmem REQUIRED COMPONENTS pmemobj) | |
420 | endif() | |
421 | else() | |
422 | include(Buildpmem) | |
423 | build_pmem() | |
424 | endif() | |
425 | endif() | |
426 | ||
7c673cae FG |
427 | add_library(common STATIC ${ceph_common_objs}) |
428 | target_link_libraries(common ${ceph_common_deps}) | |
429 | ||
430 | add_library(ceph-common SHARED ${ceph_common_objs}) | |
431 | target_link_libraries(ceph-common ${ceph_common_deps}) | |
432 | # appease dpkg-shlibdeps | |
433 | set_target_properties(ceph-common PROPERTIES | |
9f95a23c TL |
434 | SOVERSION 2 |
435 | SKIP_RPATH TRUE) | |
11fdf7f2 | 436 | if(NOT APPLE AND NOT FREEBSD) |
91327a77 AA |
437 | # Apple uses Mach-O, not ELF. so this option does not apply to APPLE. |
438 | # | |
439 | # prefer the local symbol definitions when binding references to global | |
440 | # symbols. otherwise we could reference the symbols defined by the application | |
441 | # with the same name, instead of using the one defined in libceph-common. | |
442 | # in other words, we require libceph-common to use local symbols, even if redefined | |
443 | # in application". | |
444 | set_property( | |
445 | TARGET ceph-common | |
446 | APPEND APPEND_STRING | |
447 | PROPERTY LINK_FLAGS "-Wl,-Bsymbolic -Wl,-Bsymbolic-functions") | |
448 | endif() | |
449 | ||
9f95a23c TL |
450 | if(MINGW) |
451 | install( | |
452 | TARGETS ceph-common | |
453 | RUNTIME | |
454 | DESTINATION ${CEPH_INSTALL_PKGLIBDIR}) | |
455 | else() | |
456 | install( | |
457 | TARGETS ceph-common | |
458 | LIBRARY | |
459 | DESTINATION ${CEPH_INSTALL_PKGLIBDIR} | |
460 | NAMELINK_SKIP) | |
461 | endif() | |
7c673cae | 462 | |
7c673cae FG |
463 | if(${WITH_LTTNG}) |
464 | add_subdirectory(tracing) | |
465 | add_dependencies(common-objs oprequest-tp) | |
466 | endif(${WITH_LTTNG}) | |
467 | ||
468 | add_subdirectory(global) | |
469 | ||
470 | add_subdirectory(lua) | |
471 | ||
472 | # rados object classes | |
473 | add_subdirectory(cls) | |
474 | ||
475 | # RADOS client/library | |
476 | add_subdirectory(osdc) | |
477 | ||
11fdf7f2 TL |
478 | # heal_profiler |
479 | add_subdirectory(perfglue) | |
480 | ||
7c673cae FG |
481 | add_library(rados_snap_set_diff_obj OBJECT librados/snap_set_diff.cc) |
482 | ||
11fdf7f2 TL |
483 | option(WITH_LIBRADOSSTRIPER "build with libradosstriper support" ON) |
484 | ||
7c673cae FG |
485 | add_subdirectory(include) |
486 | add_subdirectory(librados) | |
7c673cae | 487 | |
11fdf7f2 TL |
488 | if(WITH_LIBRADOSSTRIPER) |
489 | add_subdirectory(libradosstriper) | |
490 | endif() | |
491 | ||
9f95a23c | 492 | add_subdirectory(mgr) |
7c673cae FG |
493 | |
494 | set(librados_config_srcs | |
495 | librados-config.cc) | |
496 | add_executable(librados-config ${librados_config_srcs}) | |
9f95a23c | 497 | target_link_libraries(librados-config librados Boost::program_options) |
7c673cae FG |
498 | |
499 | install(TARGETS librados-config DESTINATION bin) | |
500 | ||
501 | # virtualenv base directory for ceph-disk and ceph-detect-init | |
502 | set(CEPH_BUILD_VIRTUALENV $ENV{TMPDIR}) | |
503 | if(NOT CEPH_BUILD_VIRTUALENV) | |
a8e16298 | 504 | set(CEPH_BUILD_VIRTUALENV ${CMAKE_BINARY_DIR}) |
7c673cae FG |
505 | endif() |
506 | ||
507 | add_subdirectory(pybind) | |
d2e6a577 | 508 | add_subdirectory(ceph-volume) |
9f95a23c TL |
509 | add_subdirectory(python-common) |
510 | add_subdirectory(cephadm) | |
7c673cae FG |
511 | |
512 | # Monitor | |
7c673cae FG |
513 | add_subdirectory(mon) |
514 | set(ceph_mon_srcs | |
515 | ceph_mon.cc) | |
516 | add_executable(ceph-mon ${ceph_mon_srcs} | |
517 | $<TARGET_OBJECTS:common_texttable_obj>) | |
518 | add_dependencies(ceph-mon erasure_code_plugins) | |
11fdf7f2 | 519 | target_link_libraries(ceph-mon mon os global-static ceph-common |
7c673cae | 520 | ${EXTRALIBS} |
11fdf7f2 | 521 | ${CMAKE_DL_LIBS} ${GSSAPI_LIBRARIES}) |
7c673cae FG |
522 | install(TARGETS ceph-mon DESTINATION bin) |
523 | ||
524 | # OSD/ObjectStore | |
525 | # make rocksdb statically | |
526 | ||
11fdf7f2 TL |
527 | if(NOT WITH_SYSTEM_ROCKSDB) |
528 | include(BuildRocksDB) | |
529 | build_rocksdb() | |
7c673cae FG |
530 | endif(NOT WITH_SYSTEM_ROCKSDB) |
531 | ||
532 | include(TestBigEndian) | |
533 | test_big_endian(CEPH_BIG_ENDIAN) | |
534 | if(NOT CEPH_BIG_ENDIAN) | |
535 | set(CEPH_LITTLE_ENDIAN 1) | |
536 | endif() | |
537 | ||
538 | add_subdirectory(kv) | |
539 | add_subdirectory(os) | |
540 | ||
7c673cae FG |
541 | add_subdirectory(osd) |
542 | ||
543 | set(ceph_osd_srcs | |
9f95a23c TL |
544 | # Link the Object Class API implementation directly as intermediary |
545 | # static library (like libosd.a) nullifies the effect of `-rdynamic`. | |
546 | osd/objclass.cc | |
547 | objclass/class_api.cc | |
7c673cae | 548 | ceph_osd.cc) |
31f18b77 | 549 | add_executable(ceph-osd ${ceph_osd_srcs}) |
7c673cae FG |
550 | add_dependencies(ceph-osd erasure_code_plugins) |
551 | target_link_libraries(ceph-osd osd os global-static common | |
11fdf7f2 | 552 | ${BLKID_LIBRARIES}) |
7c673cae | 553 | if(WITH_FUSE) |
1911f103 | 554 | target_link_libraries(ceph-osd FUSE::FUSE) |
7c673cae | 555 | endif() |
11fdf7f2 | 556 | set_target_properties(ceph-osd PROPERTIES |
81eedcae TL |
557 | POSITION_INDEPENDENT_CODE ${EXE_LINKER_USE_PIE} |
558 | INSTALL_RPATH "") | |
7c673cae FG |
559 | install(TARGETS ceph-osd DESTINATION bin) |
560 | ||
11fdf7f2 TL |
561 | if (WITH_CEPHFS) |
562 | add_subdirectory(mds) | |
563 | set(ceph_mds_srcs | |
564 | ceph_mds.cc) | |
565 | add_executable(ceph-mds ${ceph_mds_srcs}) | |
566 | target_link_libraries(ceph-mds mds ${CMAKE_DL_LIBS} global-static ceph-common | |
567 | Boost::thread) | |
568 | install(TARGETS ceph-mds DESTINATION bin) | |
569 | endif() | |
7c673cae FG |
570 | |
571 | add_subdirectory(erasure-code) | |
572 | ||
573 | # Support/Tools | |
574 | if(WITH_TESTS) | |
11fdf7f2 TL |
575 | option(WITH_SYSTEM_GTEST "require and build with system gtest and gmock" OFF) |
576 | if(WITH_SYSTEM_GTEST) | |
577 | find_package(GTest REQUIRED) | |
578 | find_package(GMock REQUIRED) | |
579 | else() | |
9f95a23c TL |
580 | set(INSTALL_GTEST OFF CACHE BOOL "" FORCE) |
581 | add_subdirectory(googletest) | |
11fdf7f2 TL |
582 | add_library(GMock::GMock ALIAS gmock) |
583 | add_library(GMock::Main ALIAS gmock_main) | |
584 | target_include_directories(gmock INTERFACE | |
585 | $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>) | |
586 | target_include_directories(gmock_main INTERFACE | |
587 | $<TARGET_PROPERTY:gtest,INTERFACE_INCLUDE_DIRECTORIES>) | |
588 | add_library(GTest::GTest ALIAS gtest) | |
589 | add_library(GTest::Main ALIAS gtest_main) | |
590 | endif() | |
7c673cae FG |
591 | endif(WITH_TESTS) |
592 | ||
31f18b77 | 593 | # dmClock (after gmock) |
31f18b77 FG |
594 | option(WITH_DMCLOCK_TESTS |
595 | "enable the build of dmclock-tests and dmclock-data-struct tests binaries" | |
596 | OFF) | |
597 | if(WITH_TESTS AND WITH_DMCLOCK_TESTS) | |
598 | # note: add_test is not being called, so dmclock tests aren't part | |
599 | # of ceph tests | |
11fdf7f2 TL |
600 | set(dmclock_TEST ON CACHE BOOL "" FORCE) |
601 | endif() | |
602 | add_subdirectory(dmclock) | |
7c673cae | 603 | |
11fdf7f2 TL |
604 | add_subdirectory(compressor) |
605 | ||
606 | add_subdirectory(tools) | |
7c673cae FG |
607 | |
608 | if(WITH_TESTS) | |
11fdf7f2 TL |
609 | add_subdirectory(test) |
610 | endif() | |
7c673cae | 611 | |
11fdf7f2 | 612 | add_subdirectory(crypto) |
7c673cae | 613 | |
11fdf7f2 TL |
614 | if(WITH_TESTS) |
615 | configure_file(${CMAKE_SOURCE_DIR}/src/ceph-coverage.in | |
616 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-coverage @ONLY) | |
617 | configure_file(${CMAKE_SOURCE_DIR}/src/ceph-debugpack.in | |
618 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-debugpack @ONLY) | |
619 | endif() | |
7c673cae FG |
620 | |
621 | configure_file(${CMAKE_SOURCE_DIR}/src/ceph.in | |
622 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph @ONLY) | |
623 | ||
7c673cae FG |
624 | configure_file(${CMAKE_SOURCE_DIR}/src/init-ceph.in |
625 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/init-ceph @ONLY) | |
626 | ||
627 | configure_file(ceph-post-file.in | |
628 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-post-file @ONLY) | |
629 | ||
11fdf7f2 TL |
630 | configure_file(ceph-crash.in |
631 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-crash @ONLY) | |
632 | ||
7c673cae | 633 | if(WITH_TESTS) |
11fdf7f2 TL |
634 | install(PROGRAMS |
635 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-debugpack | |
636 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-coverage | |
637 | DESTINATION bin) | |
638 | endif() | |
7c673cae FG |
639 | |
640 | install(PROGRAMS | |
641 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph | |
7c673cae | 642 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-post-file |
11fdf7f2 | 643 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ceph-crash |
7c673cae | 644 | ${CMAKE_SOURCE_DIR}/src/ceph-run |
7c673cae FG |
645 | ${CMAKE_SOURCE_DIR}/src/ceph-clsinfo |
646 | DESTINATION bin) | |
647 | install(PROGRAMS | |
648 | ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/init-ceph | |
649 | DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/init.d | |
650 | RENAME ceph) | |
651 | ||
652 | install(FILES | |
653 | ${CMAKE_SOURCE_DIR}/share/id_rsa_drop.ceph.com | |
654 | ${CMAKE_SOURCE_DIR}/share/id_rsa_drop.ceph.com.pub | |
655 | ${CMAKE_SOURCE_DIR}/share/known_hosts_drop.ceph.com | |
656 | DESTINATION ${CMAKE_INSTALL_DATADIR}/ceph) | |
657 | ||
658 | install(PROGRAMS | |
659 | ceph_common.sh | |
660 | ceph-osd-prestart.sh | |
661 | DESTINATION ${CMAKE_INSTALL_LIBEXECDIR}/ceph) | |
662 | ||
663 | install(PROGRAMS | |
664 | ${CMAKE_SOURCE_DIR}/src/ceph-create-keys | |
7c673cae FG |
665 | DESTINATION sbin) |
666 | ||
667 | add_subdirectory(bash_completion) | |
7c673cae FG |
668 | add_subdirectory(client) |
669 | ||
670 | if(WITH_LIBCEPHFS) | |
671 | set(libcephfs_srcs libcephfs.cc) | |
672 | add_library(cephfs ${CEPH_SHARED} ${libcephfs_srcs}) | |
11fdf7f2 | 673 | target_link_libraries(cephfs PRIVATE client ceph-common |
7c673cae FG |
674 | ${CRYPTO_LIBS} ${EXTRALIBS}) |
675 | if(ENABLE_SHARED) | |
7c673cae FG |
676 | set_target_properties(cephfs PROPERTIES |
677 | OUTPUT_NAME cephfs | |
678 | VERSION 2.0.0 | |
11fdf7f2 TL |
679 | SOVERSION 2) |
680 | if(NOT APPLE) | |
681 | foreach(name ceph-common client osdc) | |
682 | set_property(TARGET cephfs APPEND_STRING PROPERTY | |
683 | LINK_FLAGS " -Wl,--exclude-libs,lib${name}.a") | |
684 | endforeach() | |
685 | endif() | |
7c673cae FG |
686 | endif(ENABLE_SHARED) |
687 | install(TARGETS cephfs DESTINATION ${CMAKE_INSTALL_LIBDIR}) | |
688 | install(DIRECTORY | |
689 | "${CMAKE_SOURCE_DIR}/src/include/cephfs" | |
c07f9fc5 | 690 | DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) |
7c673cae FG |
691 | set(ceph_syn_srcs |
692 | ceph_syn.cc | |
693 | client/SyntheticClient.cc) | |
694 | add_executable(ceph-syn ${ceph_syn_srcs}) | |
11fdf7f2 | 695 | target_link_libraries(ceph-syn client global-static ceph-common) |
7c673cae | 696 | install(TARGETS ceph-syn DESTINATION bin) |
eafe8130 TL |
697 | if(LINUX) |
698 | add_subdirectory(mount) | |
699 | endif() | |
7c673cae FG |
700 | endif(WITH_LIBCEPHFS) |
701 | ||
702 | if(WITH_FUSE) | |
703 | set(ceph_fuse_srcs | |
704 | ceph_fuse.cc | |
705 | client/fuse_ll.cc) | |
706 | add_executable(ceph-fuse ${ceph_fuse_srcs}) | |
1911f103 | 707 | target_link_libraries(ceph-fuse FUSE::FUSE |
9f95a23c | 708 | ${GSSAPI_LIBRARIES} client ceph-common global-static ${EXTRALIBS}) |
11fdf7f2 | 709 | set_target_properties(ceph-fuse PROPERTIES |
11fdf7f2 | 710 | POSITION_INDEPENDENT_CODE ${EXE_LINKER_USE_PIE}) |
7c673cae FG |
711 | install(TARGETS ceph-fuse DESTINATION bin) |
712 | install(PROGRAMS mount.fuse.ceph DESTINATION ${CMAKE_INSTALL_SBINDIR}) | |
713 | endif(WITH_FUSE) | |
714 | ||
715 | add_subdirectory(journal) | |
716 | ||
717 | if(WITH_RBD) | |
718 | if(WITH_KRBD) | |
719 | add_library(krbd STATIC krbd.cc | |
720 | $<TARGET_OBJECTS:parse_secret_objs>) | |
11fdf7f2 | 721 | target_link_libraries(krbd keyutils::keyutils) |
7c673cae FG |
722 | endif() |
723 | add_subdirectory(librbd) | |
724 | if(WITH_FUSE) | |
725 | add_subdirectory(rbd_fuse) | |
726 | endif() | |
727 | ||
728 | install(PROGRAMS | |
729 | ${CMAKE_SOURCE_DIR}/src/ceph-rbdnamer | |
730 | ${CMAKE_SOURCE_DIR}/src/rbd-replay-many | |
731 | ${CMAKE_SOURCE_DIR}/src/rbdmap | |
732 | DESTINATION ${CMAKE_INSTALL_BINDIR}) | |
733 | add_subdirectory(rbd_replay) | |
734 | endif(WITH_RBD) | |
735 | ||
9f95a23c TL |
736 | if(WITH_BOOST_CONTEXT) |
737 | set(SPAWN_BUILD_TESTS OFF CACHE INTERNAL "disable building of spawn unit tests") | |
738 | set(SPAWN_INSTALL OFF CACHE INTERNAL "disable installation of spawn headers") | |
739 | add_subdirectory(spawn) | |
740 | endif() | |
741 | ||
7c673cae FG |
742 | # RadosGW |
743 | if(WITH_KVS) | |
744 | add_subdirectory(key_value_store) | |
745 | endif(WITH_KVS) | |
746 | ||
747 | if(WITH_RADOSGW) | |
748 | set(civetweb_common_files civetweb/src/civetweb.c) | |
749 | add_library(civetweb_common_objs OBJECT ${civetweb_common_files}) | |
11fdf7f2 | 750 | target_include_directories(civetweb_common_objs SYSTEM PRIVATE |
7c673cae FG |
751 | "${CMAKE_SOURCE_DIR}/src/civetweb/include") |
752 | set_property(TARGET civetweb_common_objs | |
753 | APPEND PROPERTY COMPILE_DEFINITIONS USE_IPV6=1) | |
7c673cae FG |
754 | if (LIBSSL_SONAME) |
755 | set_property(TARGET civetweb_common_objs | |
756 | APPEND PROPERTY COMPILE_DEFINITIONS SSL_LIB="${LIBSSL_SONAME}") | |
757 | set_property(TARGET civetweb_common_objs | |
758 | APPEND PROPERTY COMPILE_DEFINITIONS CRYPTO_LIB="${LIBCRYPTO_SONAME}") | |
759 | endif() | |
760 | ||
11fdf7f2 TL |
761 | if (OPENSSL_FOUND) |
762 | # Use cmake to determine openssl version, a TODO is to make | |
763 | # civetweb itself do this based on openssl_api_compat strings | |
764 | if (NOT (OPENSSL_VERSION VERSION_LESS "1.1")) | |
765 | message(STATUS "Setting civetweb to use OPENSSL >= 1.1") | |
766 | set_property(TARGET civetweb_common_objs | |
767 | APPEND PROPERTY COMPILE_DEFINITIONS OPENSSL_API_1_1=1) | |
768 | endif() | |
769 | endif(OPENSSL_FOUND) | |
7c673cae FG |
770 | add_subdirectory(rgw) |
771 | ||
772 | endif(WITH_RADOSGW) | |
773 | ||
774 | install(FILES | |
775 | sample.ceph.conf | |
776 | DESTINATION ${CMAKE_INSTALL_DOCDIR}) | |
7c673cae | 777 | |
11fdf7f2 | 778 | # Now create a usable config.h |
7c673cae FG |
779 | configure_file( |
780 | ${CMAKE_SOURCE_DIR}/src/include/config-h.in.cmake | |
781 | ${CMAKE_BINARY_DIR}/include/acconfig.h | |
782 | ) | |
783 | ||
7c673cae FG |
784 | # Everything you need to spin up a cluster with vstart.sh |
785 | add_custom_target(vstart-base DEPENDS | |
786 | ceph-osd | |
787 | ceph-mon | |
7c673cae FG |
788 | ceph-authtool |
789 | ceph-conf | |
790 | monmaptool | |
791 | crushtool | |
792 | rados | |
9f95a23c | 793 | cython_rados) |
11fdf7f2 TL |
794 | if (WITH_MGR) |
795 | add_dependencies(vstart-base ceph-mgr) | |
796 | endif() | |
7c673cae | 797 | |
11fdf7f2 | 798 | add_custom_target(vstart DEPENDS vstart-base) |
9f95a23c TL |
799 | if(WITH_RBD) |
800 | add_dependencies(vstart cython_rbd) | |
11fdf7f2 TL |
801 | endif() |
802 | if (WITH_CEPHFS) | |
9f95a23c | 803 | add_dependencies(vstart ceph-mds cephfs cython_cephfs) |
11fdf7f2 | 804 | endif() |
7c673cae | 805 | if(WITH_RADOSGW) |
9f95a23c TL |
806 | add_dependencies(vstart radosgwd radosgw-admin) |
807 | endif() | |
7c673cae FG |
808 | |
809 | if(WITH_LTTNG) | |
810 | add_dependencies(vstart tracepoint_libraries) | |
811 | endif(WITH_LTTNG) | |
812 | ||
11fdf7f2 TL |
813 | if(WITH_MGR AND WITH_MGR_DASHBOARD_FRONTEND AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|amd64") |
814 | add_dependencies(vstart mgr-dashboard-frontend-build) | |
815 | endif() | |
816 | ||
817 | if(WITH_MGR) | |
818 | add_dependencies(vstart ceph-volume-venv-setup) | |
819 | endif() | |
820 | ||
7c673cae FG |
821 | # Everything you need to run CephFS tests |
822 | add_custom_target(cephfs_testing DEPENDS | |
823 | vstart | |
824 | rados | |
9f95a23c | 825 | cython_modules |
7c673cae FG |
826 | cephfs |
827 | cls_cephfs | |
828 | ceph-fuse | |
829 | ceph-dencoder | |
830 | cephfs-journal-tool | |
831 | cephfs-data-scan | |
832 | cephfs-table-tool) | |
833 | ||
834 | if (IS_DIRECTORY "${PROJECT_SOURCE_DIR}/.git") | |
835 | add_custom_target( | |
836 | git-update | |
837 | COMMAND git submodule sync | |
838 | COMMAND git submodule update --force --init --recursive | |
839 | WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}") | |
840 | endif() | |
841 | ||
842 | add_subdirectory(script) |