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