]> git.proxmox.com Git - ceph.git/blame - ceph/src/rgw/CMakeLists.txt
import ceph quincy 17.2.6
[ceph.git] / ceph / src / rgw / CMakeLists.txt
CommitLineData
31f18b77
FG
1find_program(GPERF gperf)
2if(NOT GPERF)
3 message(FATAL_ERROR "Can't find gperf")
4endif()
20effc67
TL
5
6if(WITH_RADOSGW_SELECT_PARQUET)
33c7a0ef 7 set(ARROW_LIBRARIES Arrow::Arrow Arrow::Parquet)
20effc67
TL
8 add_definitions(-D_ARROW_EXIST)
9 message("-- arrow is installed, radosgw/s3select-op is able to process parquet objects")
10endif(WITH_RADOSGW_SELECT_PARQUET)
11
31f18b77
FG
12function(gperf_generate input output)
13 add_custom_command(
14 OUTPUT ${output}
11fdf7f2 15 COMMAND ${GPERF} ${input} | sed "s/register //g" > ${output}
31f18b77
FG
16 DEPENDS ${input}
17 COMMENT "Generate ${output}"
18 )
19endfunction()
20
f67539c2
TL
21find_package(ICU 52.0 COMPONENTS uc REQUIRED)
22
11fdf7f2
TL
23set(librgw_common_srcs
24 services/svc_finisher.cc
9f95a23c
TL
25 services/svc_bi_rados.cc
26 services/svc_bilog_rados.cc
27 services/svc_bucket.cc
28 services/svc_bucket_sobj.cc
29 services/svc_bucket_sync_sobj.cc
30 services/svc_cls.cc
31 services/svc_config_key_rados.cc
9f95a23c
TL
32 services/svc_mdlog.cc
33 services/svc_meta.cc
34 services/svc_meta_be.cc
35 services/svc_meta_be_otp.cc
36 services/svc_meta_be_sobj.cc
11fdf7f2 37 services/svc_notify.cc
9f95a23c 38 services/svc_otp.cc
11fdf7f2
TL
39 services/svc_quota.cc
40 services/svc_sync_modules.cc
41 services/svc_rados.cc
39ae355f 42 services/svc_role_rados.cc
11fdf7f2
TL
43 services/svc_sys_obj.cc
44 services/svc_sys_obj_cache.cc
45 services/svc_sys_obj_core.cc
9f95a23c
TL
46 services/svc_tier_rados.cc
47 services/svc_user.cc
48 services/svc_user_rados.cc
11fdf7f2
TL
49 services/svc_zone.cc
50 services/svc_zone_utils.cc
51 rgw_service.cc
7c673cae
FG
52 rgw_acl.cc
53 rgw_acl_s3.cc
54 rgw_acl_swift.cc
9f95a23c 55 rgw_aio.cc
11fdf7f2 56 rgw_aio_throttle.cc
7c673cae 57 rgw_auth.cc
7c673cae 58 rgw_auth_s3.cc
eafe8130 59 rgw_arn.cc
7c673cae
FG
60 rgw_basic_types.cc
61 rgw_bucket.cc
f67539c2 62 rgw_bucket_layout.cc
9f95a23c 63 rgw_bucket_sync.cc
7c673cae 64 rgw_cache.cc
20effc67 65 rgw_d3n_datacache.cc
7c673cae
FG
66 rgw_common.cc
67 rgw_compression.cc
adb31ebb 68 rgw_etag_verifier.cc
7c673cae
FG
69 rgw_cors.cc
70 rgw_cors_s3.cc
7c673cae 71 rgw_env.cc
31f18b77 72 rgw_es_query.cc
7c673cae 73 rgw_formats.cc
7c673cae 74 rgw_gc.cc
9f95a23c 75 rgw_gc_log.cc
7c673cae 76 rgw_http_client.cc
7c673cae
FG
77 rgw_keystone.cc
78 rgw_ldap.cc
7c673cae
FG
79 rgw_lc.cc
80 rgw_lc_s3.cc
20effc67 81 rgw_lc_tier.cc
7c673cae
FG
82 rgw_metadata.cc
83 rgw_multi.cc
84 rgw_multi_del.cc
9f95a23c 85 rgw_obj_manifest.cc
11fdf7f2 86 rgw_pubsub.cc
7c673cae
FG
87 rgw_sync.cc
88 rgw_data_sync.cc
81eedcae 89 rgw_sync_counters.cc
f67539c2 90 rgw_sync_error_repo.cc
7c673cae 91 rgw_sync_module.cc
11fdf7f2 92 rgw_sync_module_aws.cc
7c673cae 93 rgw_sync_module_es.cc
31f18b77 94 rgw_sync_module_es_rest.cc
7c673cae 95 rgw_sync_module_log.cc
11fdf7f2 96 rgw_sync_module_pubsub.cc
9f95a23c 97 rgw_sync_policy.cc
11fdf7f2 98 rgw_pubsub_push.cc
eafe8130
TL
99 rgw_notify.cc
100 rgw_notify_event_type.cc
11fdf7f2 101 rgw_sync_module_pubsub_rest.cc
11fdf7f2 102 rgw_sync_trace.cc
9f95a23c
TL
103 rgw_trim_bilog.cc
104 rgw_trim_datalog.cc
105 rgw_trim_mdlog.cc
7c673cae
FG
106 rgw_period_history.cc
107 rgw_period_puller.cc
31f18b77 108 rgw_reshard.cc
7c673cae
FG
109 rgw_coroutine.cc
110 rgw_cr_rados.cc
11fdf7f2
TL
111 rgw_cr_rest.cc
112 rgw_cr_tools.cc
7c673cae
FG
113 rgw_object_expirer_core.cc
114 rgw_op.cc
11fdf7f2 115 rgw_otp.cc
7c673cae 116 rgw_policy_s3.cc
9f95a23c 117 rgw_public_access.cc
11fdf7f2
TL
118 rgw_putobj.cc
119 rgw_putobj_processor.cc
7c673cae
FG
120 rgw_quota.cc
121 rgw_rados.cc
7c673cae 122 rgw_resolve.cc
7c673cae
FG
123 rgw_rest.cc
124 rgw_rest_client.cc
7c673cae
FG
125 rgw_rest_conn.cc
126 rgw_rest_log.cc
127 rgw_rest_metadata.cc
eafe8130
TL
128 rgw_rest_pubsub.cc
129 rgw_rest_pubsub_common.cc
7c673cae 130 rgw_rest_realm.cc
7c673cae
FG
131 rgw_rest_role.cc
132 rgw_rest_s3.cc
20effc67 133 rgw_s3select.cc
7c673cae 134 rgw_role.cc
9f95a23c 135 rgw_sal.cc
f67539c2 136 rgw_sal_rados.cc
d2e6a577 137 rgw_string.cc
224ce89b
WB
138 rgw_tag.cc
139 rgw_tag_s3.cc
7c673cae 140 rgw_tools.cc
f67539c2 141 rgw_log_backing.cc
7c673cae
FG
142 rgw_user.cc
143 rgw_website.cc
144 rgw_xml.cc
7c673cae
FG
145 rgw_torrent.cc
146 rgw_crypt.cc
31f18b77 147 rgw_crypt_sanitize.cc
11fdf7f2
TL
148 rgw_iam_policy.cc
149 rgw_rest_user_policy.cc
150 rgw_zone.cc
151 rgw_sts.cc
152 rgw_rest_sts.cc
eafe8130 153 rgw_perf_counters.cc
f91f0fd5 154 rgw_rest_oidc_provider.cc
9f95a23c 155 rgw_rest_iam.cc
92f5a8d4 156 rgw_object_lock.cc
9f95a23c 157 rgw_kms.cc
f67539c2 158 rgw_kmip_client.cc
f91f0fd5 159 rgw_url.cc
522d829b 160 rgw_oidc_provider.cc
f67539c2
TL
161 rgw_datalog.cc
162 cls_fifo_legacy.cc
163 rgw_lua_utils.cc
164 rgw_lua.cc
20effc67
TL
165 rgw_lua_request.cc
166 rgw_bucket_encryption.cc
167 rgw_tracer.cc)
11fdf7f2
TL
168
169if(WITH_RADOSGW_AMQP_ENDPOINT)
170 list(APPEND librgw_common_srcs rgw_amqp.cc)
171endif()
9f95a23c
TL
172if(WITH_RADOSGW_KAFKA_ENDPOINT)
173 list(APPEND librgw_common_srcs rgw_kafka.cc)
174endif()
20effc67
TL
175if(WITH_RADOSGW_DBSTORE)
176 add_subdirectory(store/dbstore)
177 list(APPEND librgw_common_srcs rgw_sal_dbstore.cc)
178endif()
179if(WITH_JAEGER)
180 list(APPEND librgw_common_srcs rgw_tracer.cc)
181endif()
11fdf7f2 182
20effc67 183add_library(rgw_common STATIC ${librgw_common_srcs})
f67539c2 184
20effc67
TL
185include(CheckCXXCompilerFlag)
186check_cxx_compiler_flag("-Wimplicit-const-int-float-conversion"
187 COMPILER_SUPPORTS_WARN_IMPLICIT_CONST_INT_FLOAT_CONVERSION)
188if(COMPILER_SUPPORTS_WARN_IMPLICIT_CONST_INT_FLOAT_CONVERSION)
189 target_compile_definitions(common-objs PRIVATE
190 HAVE_WARN_IMPLICIT_CONST_INT_FLOAT_CONVERSION)
191endif()
f67539c2 192
20effc67
TL
193target_link_libraries(rgw_common
194 PRIVATE
195 ceph-common
196 cls_2pc_queue_client
197 cls_cmpomap_client
198 cls_lock_client
199 cls_log_client
200 cls_otp_client
201 cls_refcount_client
202 cls_rgw_client
203 cls_rgw_gc_client
204 cls_timeindex_client
205 cls_user_client
206 cls_version_client
207 librados
208 rt
209 fmt::fmt
210 ICU::uc
211 OATH::OATH
212 dmclock::dmclock
213 ${CURL_LIBRARIES}
214 ${EXPAT_LIBRARIES}
215 ${LUA_LIBRARIES}
216 ${ARROW_LIBRARIES}
217 PUBLIC
218 spawn)
219target_include_directories(rgw_common
220 SYSTEM PUBLIC "services"
221 PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw"
222 PRIVATE "${LUA_INCLUDE_DIR}")
223if(WITH_RADOSGW_KAFKA_ENDPOINT)
224 # used by rgw_kafka.cc
225 target_link_libraries(rgw_common
226 PRIVATE
227 RDKafka::RDKafka)
228endif()
229if(WITH_RADOSGW_AMQP_ENDPOINT)
230 # used by rgw_amqp.cc
231 target_link_libraries(rgw_common
232 PRIVATE
233 RabbitMQ::RabbitMQ
234 OpenSSL::SSL)
235endif()
236if(WITH_OPENLDAP)
237 target_link_libraries(rgw_common
238 PRIVATE
239 OpenLDAP::OpenLDAP)
240endif()
241if(WITH_RADOSGW_LUA_PACKAGES)
242 target_link_libraries(rgw_common
243 PRIVATE Boost::filesystem StdFilesystem::filesystem)
244endif()
11fdf7f2
TL
245
246if(WITH_LTTNG)
247 # rgw/rgw_op.cc includes "tracing/rgw_op.h"
248 # rgw/rgw_rados.cc includes "tracing/rgw_rados.h"
249 add_dependencies(rgw_common rgw_op-tp rgw_rados-tp)
250endif()
251
f67539c2 252if(WITH_JAEGER)
20effc67
TL
253 add_dependencies(rgw_common ${jaeger_base})
254 target_link_libraries(rgw_common PUBLIC ${jaeger_base})
255endif()
256
257if(WITH_RADOSGW_DBSTORE)
258 target_link_libraries(rgw_common PRIVATE global dbstore)
f67539c2
TL
259endif()
260
11fdf7f2
TL
261set(rgw_a_srcs
262 rgw_auth_keystone.cc
263 rgw_client_io.cc
264 rgw_frontend.cc
265 rgw_http_client_curl.cc
266 rgw_loadgen.cc
267 rgw_log.cc
268 rgw_period_pusher.cc
269 rgw_realm_reloader.cc
270 rgw_realm_watcher.cc
271 rgw_os_lib.cc
272 rgw_process.cc
273 rgw_rest_bucket.cc
274 rgw_rest_config.cc
275 rgw_rest_log.cc
276 rgw_rest_metadata.cc
277 rgw_rest_realm.cc
278 rgw_rest_swift.cc
279 rgw_rest_usage.cc
20effc67 280 rgw_rest_info.cc
11fdf7f2 281 rgw_rest_user.cc
20effc67 282 rgw_rest_ratelimit.cc
11fdf7f2
TL
283 rgw_swift_auth.cc
284 rgw_usage.cc
285 rgw_opa.cc
286 rgw_sts.cc
287 rgw_rest_sts.cc)
31f18b77
FG
288
289gperf_generate(${CMAKE_SOURCE_DIR}/src/rgw/rgw_iam_policy_keywords.gperf
290 rgw_iam_policy_keywords.frag.cc)
291set_source_files_properties(rgw_iam_policy.cc PROPERTIES
292 OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/rgw/rgw_iam_policy_keywords.frag.cc
293 COMPILE_FLAGS -I${CMAKE_BINARY_DIR}/src/rgw)
294
7c673cae 295
11fdf7f2 296add_library(rgw_a STATIC
20effc67 297 ${rgw_a_srcs})
7c673cae 298
9f95a23c 299target_compile_definitions(rgw_a PUBLIC "-DCLS_CLIENT_HIDE_IOCTX")
11fdf7f2 300target_include_directories(rgw_a PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/support/src")
f64942e4 301target_include_directories(rgw_a SYSTEM PUBLIC "../rapidjson/include")
f91f0fd5 302target_include_directories(rgw_a SYSTEM PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw")
7c673cae 303
11fdf7f2
TL
304if(WITH_RADOSGW_AMQP_ENDPOINT)
305 find_package(RabbitMQ REQUIRED)
306endif()
9f95a23c
TL
307if(WITH_RADOSGW_KAFKA_ENDPOINT)
308 find_package(RDKafka 0.9.2 REQUIRED)
309endif()
11fdf7f2
TL
310
311target_link_libraries(rgw_a
312 PRIVATE
20effc67
TL
313 common_utf8 global
314 ${CRYPTO_LIBS}
315 ${LUA_LIBRARIES}
316 ${ARROW_LIBRARIES}
317 OATH::OATH
318 PUBLIC
319 rgw_common
320 spawn)
7c673cae 321
11fdf7f2
TL
322if(WITH_CURL_OPENSSL)
323 # used by rgw_http_client_curl.cc
324 target_link_libraries(rgw_a PRIVATE OpenSSL::Crypto)
f64942e4 325endif()
11fdf7f2 326
11fdf7f2 327set(rgw_libs rgw_a)
94b18763 328
f67539c2
TL
329list(APPEND rgw_libs ${LUA_LIBRARIES})
330
9f95a23c
TL
331set(rgw_schedulers_srcs
332 rgw_dmclock_scheduler_ctx.cc
20effc67
TL
333 rgw_dmclock_sync_scheduler.cc
334 rgw_dmclock_async_scheduler.cc)
7c673cae
FG
335set(radosgw_srcs
336 rgw_loadgen_process.cc
20effc67
TL
337 rgw_asio_client.cc
338 rgw_asio_frontend.cc)
7c673cae 339
9f95a23c
TL
340add_library(rgw_schedulers STATIC ${rgw_schedulers_srcs})
341target_link_libraries(rgw_schedulers
20effc67 342 PUBLIC dmclock::dmclock spawn)
9f95a23c 343
20effc67
TL
344add_library(radosgw SHARED
345 ${radosgw_srcs}
346 ${rgw_a_srcs}
347 rgw_main.cc
348 rgw_kmip_client_impl.cc)
9f95a23c
TL
349
350target_compile_definitions(radosgw PUBLIC "-DCLS_CLIENT_HIDE_IOCTX")
20effc67
TL
351target_include_directories(radosgw
352 PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/support/src"
353 PRIVATE "${CMAKE_SOURCE_DIR}/src/libkmip")
9f95a23c
TL
354target_include_directories(radosgw SYSTEM PUBLIC "../rapidjson/include")
355
356target_link_libraries(radosgw
f67539c2 357 PRIVATE ${rgw_libs} rgw_schedulers kmip
9f95a23c
TL
358 PUBLIC dmclock::dmclock
359)
20effc67
TL
360if(WITH_RADOSGW_BEAST_OPENSSL)
361 # used by rgw_asio_frontend.cc
362 target_link_libraries(radosgw PRIVATE OpenSSL::SSL)
11fdf7f2 363endif()
9f95a23c
TL
364set_target_properties(radosgw PROPERTIES OUTPUT_NAME radosgw VERSION 2.0.0
365 SOVERSION 2)
366install(TARGETS radosgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
7c673cae 367
9f95a23c
TL
368add_executable(radosgwd radosgw.cc)
369target_link_libraries(radosgwd radosgw librados
11fdf7f2 370 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
39ae355f 371 cls_log_client cls_timeindex_client
11fdf7f2 372 cls_version_client cls_user_client
9f95a23c 373 global
20effc67 374 ${LIB_RESOLV}
7c673cae
FG
375 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES}
376 ${ALLOC_LIBS})
9f95a23c
TL
377set_target_properties(radosgwd PROPERTIES OUTPUT_NAME radosgw)
378install(TARGETS radosgwd DESTINATION bin)
7c673cae
FG
379
380set(radosgw_admin_srcs
381 rgw_admin.cc
f67539c2 382 rgw_sync_checkpoint.cc
7c673cae
FG
383 rgw_orphan.cc)
384add_executable(radosgw-admin ${radosgw_admin_srcs})
11fdf7f2
TL
385target_link_libraries(radosgw-admin ${rgw_libs} librados
386 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
39ae355f 387 cls_log_client cls_timeindex_client
11fdf7f2 388 cls_version_client cls_user_client
20effc67
TL
389 global ${LIB_RESOLV}
390 OATH::OATH
11fdf7f2 391 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
7c673cae
FG
392install(TARGETS radosgw-admin DESTINATION bin)
393
31f18b77
FG
394set(radosgw_es_srcs
395 rgw_es_main.cc)
396add_executable(radosgw-es ${radosgw_es_srcs})
11fdf7f2
TL
397target_link_libraries(radosgw-es ${rgw_libs} librados
398 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
39ae355f 399 cls_log_client cls_timeindex_client
11fdf7f2 400 cls_version_client cls_user_client
20effc67 401 global ${LIB_RESOLV}
11fdf7f2 402 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
31f18b77
FG
403install(TARGETS radosgw-es DESTINATION bin)
404
7c673cae
FG
405set(radosgw_token_srcs
406 rgw_token.cc)
407add_executable(radosgw-token ${radosgw_token_srcs})
408target_link_libraries(radosgw-token librados
409 global ${ALLOC_LIBS})
410install(TARGETS radosgw-token DESTINATION bin)
411
412set(radosgw_object_expirer_srcs
413 rgw_object_expirer.cc)
414add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs})
11fdf7f2
TL
415target_link_libraries(radosgw-object-expirer ${rgw_libs} librados
416 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
39ae355f 417 cls_log_client cls_timeindex_client
11fdf7f2 418 cls_version_client cls_user_client
20effc67 419 global ${LIB_RESOLV}
7c673cae
FG
420 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES})
421install(TARGETS radosgw-object-expirer DESTINATION bin)
422
423set(librgw_srcs
424 librgw.cc
425 rgw_file.cc)
426add_library(rgw SHARED ${librgw_srcs})
11fdf7f2
TL
427target_link_libraries(rgw
428 PRIVATE
429 ${rgw_libs}
7c673cae
FG
430 librados
431 cls_rgw_client
11fdf7f2 432 cls_otp_client
7c673cae
FG
433 cls_lock_client
434 cls_refcount_client
435 cls_log_client
7c673cae
FG
436 cls_timeindex_client
437 cls_version_client
7c673cae
FG
438 cls_user_client
439 global
440 ${LIB_RESOLV}
441 ${CURL_LIBRARIES}
11fdf7f2
TL
442 ${EXPAT_LIBRARIES}
443 PUBLIC
444 dmclock::dmclock)
445
446if(WITH_RADOSGW_AMQP_ENDPOINT)
447 target_link_libraries(rgw PRIVATE RabbitMQ::RabbitMQ)
f67539c2 448 target_link_libraries(rgw PRIVATE OpenSSL::SSL)
11fdf7f2
TL
449endif()
450
9f95a23c
TL
451if(WITH_RADOSGW_KAFKA_ENDPOINT)
452 target_link_libraries(rgw PRIVATE RDKafka::RDKafka)
453endif()
454
f67539c2
TL
455target_link_libraries(rgw PRIVATE ${LUA_LIBRARIES})
456
7c673cae
FG
457set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0
458 SOVERSION 2)
459install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
11fdf7f2 460
11fdf7f2
TL
461if(WITH_TESTS)
462 add_executable(ceph_rgw_jsonparser
463 rgw_jsonparser.cc)
464 target_link_libraries(ceph_rgw_jsonparser
465 ${rgw_libs}
466 global)
467
468 add_executable(ceph_rgw_multiparser
469 rgw_multiparser.cc)
470 target_link_libraries(ceph_rgw_multiparser
471 ${rgw_libs}
472 global)
473
474 install(TARGETS
475 ceph_rgw_jsonparser
476 ceph_rgw_multiparser
477 DESTINATION bin)
478endif(WITH_TESTS)
e306af50 479
f67539c2
TL
480install(PROGRAMS
481 rgw-gap-list
482 rgw-gap-list-comparator
483 rgw-orphan-list
e306af50 484 DESTINATION bin)