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