]> git.proxmox.com Git - ceph.git/blame - ceph/src/rgw/CMakeLists.txt
Import ceph 15.2.8
[ceph.git] / ceph / src / rgw / CMakeLists.txt
CommitLineData
7c673cae
FG
1add_custom_target(civetweb_h
2 COMMAND ${CMAKE_COMMAND} -E make_directory
3 "${CMAKE_BINARY_DIR}/src/include/civetweb"
4 COMMAND ${CMAKE_COMMAND} -E copy_if_different
5 "${CMAKE_SOURCE_DIR}/src/civetweb/include/civetweb.h"
6 "${CMAKE_BINARY_DIR}/src/include/civetweb"
7 COMMENT "keep civetweb.h up-to-date")
8
31f18b77
FG
9find_program(GPERF gperf)
10if(NOT GPERF)
11 message(FATAL_ERROR "Can't find gperf")
12endif()
13function(gperf_generate input output)
14 add_custom_command(
15 OUTPUT ${output}
11fdf7f2 16 COMMAND ${GPERF} ${input} | sed "s/register //g" > ${output}
31f18b77
FG
17 DEPENDS ${input}
18 COMMENT "Generate ${output}"
19 )
20endfunction()
21
11fdf7f2
TL
22set(librgw_common_srcs
23 services/svc_finisher.cc
9f95a23c
TL
24 services/svc_bi_rados.cc
25 services/svc_bilog_rados.cc
26 services/svc_bucket.cc
27 services/svc_bucket_sobj.cc
28 services/svc_bucket_sync_sobj.cc
29 services/svc_cls.cc
30 services/svc_config_key_rados.cc
31 services/svc_datalog_rados.cc
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
42 services/svc_sys_obj.cc
43 services/svc_sys_obj_cache.cc
44 services/svc_sys_obj_core.cc
9f95a23c
TL
45 services/svc_tier_rados.cc
46 services/svc_user.cc
47 services/svc_user_rados.cc
11fdf7f2
TL
48 services/svc_zone.cc
49 services/svc_zone_utils.cc
50 rgw_service.cc
7c673cae
FG
51 rgw_acl.cc
52 rgw_acl_s3.cc
53 rgw_acl_swift.cc
9f95a23c 54 rgw_aio.cc
11fdf7f2 55 rgw_aio_throttle.cc
7c673cae 56 rgw_auth.cc
7c673cae 57 rgw_auth_s3.cc
eafe8130 58 rgw_arn.cc
7c673cae
FG
59 rgw_basic_types.cc
60 rgw_bucket.cc
9f95a23c 61 rgw_bucket_sync.cc
7c673cae 62 rgw_cache.cc
7c673cae
FG
63 rgw_common.cc
64 rgw_compression.cc
65 rgw_cors.cc
66 rgw_cors_s3.cc
67 rgw_dencoder.cc
68 rgw_env.cc
31f18b77 69 rgw_es_query.cc
7c673cae 70 rgw_formats.cc
7c673cae 71 rgw_gc.cc
9f95a23c 72 rgw_gc_log.cc
7c673cae
FG
73 rgw_http_client.cc
74 rgw_json_enc.cc
75 rgw_keystone.cc
76 rgw_ldap.cc
7c673cae
FG
77 rgw_lc.cc
78 rgw_lc_s3.cc
79 rgw_metadata.cc
80 rgw_multi.cc
81 rgw_multi_del.cc
9f95a23c 82 rgw_obj_manifest.cc
11fdf7f2 83 rgw_pubsub.cc
7c673cae
FG
84 rgw_sync.cc
85 rgw_data_sync.cc
81eedcae 86 rgw_sync_counters.cc
7c673cae 87 rgw_sync_module.cc
11fdf7f2 88 rgw_sync_module_aws.cc
7c673cae 89 rgw_sync_module_es.cc
31f18b77 90 rgw_sync_module_es_rest.cc
7c673cae 91 rgw_sync_module_log.cc
11fdf7f2 92 rgw_sync_module_pubsub.cc
9f95a23c 93 rgw_sync_policy.cc
11fdf7f2 94 rgw_pubsub_push.cc
eafe8130
TL
95 rgw_notify.cc
96 rgw_notify_event_type.cc
11fdf7f2 97 rgw_sync_module_pubsub_rest.cc
11fdf7f2 98 rgw_sync_trace.cc
9f95a23c
TL
99 rgw_trim_bilog.cc
100 rgw_trim_datalog.cc
101 rgw_trim_mdlog.cc
7c673cae
FG
102 rgw_period_history.cc
103 rgw_period_puller.cc
31f18b77 104 rgw_reshard.cc
7c673cae
FG
105 rgw_coroutine.cc
106 rgw_cr_rados.cc
11fdf7f2
TL
107 rgw_cr_rest.cc
108 rgw_cr_tools.cc
7c673cae
FG
109 rgw_object_expirer_core.cc
110 rgw_op.cc
11fdf7f2 111 rgw_otp.cc
7c673cae 112 rgw_policy_s3.cc
9f95a23c 113 rgw_public_access.cc
11fdf7f2
TL
114 rgw_putobj.cc
115 rgw_putobj_processor.cc
7c673cae
FG
116 rgw_quota.cc
117 rgw_rados.cc
7c673cae 118 rgw_resolve.cc
7c673cae
FG
119 rgw_rest.cc
120 rgw_rest_client.cc
7c673cae
FG
121 rgw_rest_conn.cc
122 rgw_rest_log.cc
123 rgw_rest_metadata.cc
eafe8130
TL
124 rgw_rest_pubsub.cc
125 rgw_rest_pubsub_common.cc
7c673cae 126 rgw_rest_realm.cc
7c673cae
FG
127 rgw_rest_role.cc
128 rgw_rest_s3.cc
7c673cae 129 rgw_role.cc
9f95a23c 130 rgw_sal.cc
d2e6a577 131 rgw_string.cc
224ce89b
WB
132 rgw_tag.cc
133 rgw_tag_s3.cc
7c673cae 134 rgw_tools.cc
7c673cae
FG
135 rgw_user.cc
136 rgw_website.cc
137 rgw_xml.cc
138 rgw_xml_enc.cc
139 rgw_torrent.cc
140 rgw_crypt.cc
31f18b77 141 rgw_crypt_sanitize.cc
11fdf7f2
TL
142 rgw_iam_policy.cc
143 rgw_rest_user_policy.cc
144 rgw_zone.cc
145 rgw_sts.cc
146 rgw_rest_sts.cc
eafe8130 147 rgw_perf_counters.cc
f91f0fd5 148 rgw_rest_oidc_provider.cc
9f95a23c 149 rgw_rest_iam.cc
92f5a8d4 150 rgw_object_lock.cc
9f95a23c 151 rgw_kms.cc
f91f0fd5
TL
152 rgw_url.cc
153 rgw_oidc_provider)
11fdf7f2
TL
154
155if(WITH_RADOSGW_AMQP_ENDPOINT)
156 list(APPEND librgw_common_srcs rgw_amqp.cc)
157endif()
9f95a23c
TL
158if(WITH_RADOSGW_KAFKA_ENDPOINT)
159 list(APPEND librgw_common_srcs rgw_kafka.cc)
160endif()
11fdf7f2
TL
161
162add_library(rgw_common OBJECT ${librgw_common_srcs})
163
164target_include_directories(rgw_common SYSTEM PUBLIC "services")
165target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/support/src")
9f95a23c 166target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/fmt/include")
f91f0fd5 167target_include_directories(rgw_common PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw")
9f95a23c
TL
168
169if(WITH_BOOST_CONTEXT)
170 target_include_directories(rgw_common PRIVATE
171 $<TARGET_PROPERTY:spawn,INTERFACE_INCLUDE_DIRECTORIES>)
172endif()
11fdf7f2
TL
173
174if(WITH_LTTNG)
175 # rgw/rgw_op.cc includes "tracing/rgw_op.h"
176 # rgw/rgw_rados.cc includes "tracing/rgw_rados.h"
177 add_dependencies(rgw_common rgw_op-tp rgw_rados-tp)
178endif()
179
180set(rgw_a_srcs
181 rgw_auth_keystone.cc
182 rgw_client_io.cc
183 rgw_frontend.cc
184 rgw_http_client_curl.cc
185 rgw_loadgen.cc
186 rgw_log.cc
187 rgw_period_pusher.cc
188 rgw_realm_reloader.cc
189 rgw_realm_watcher.cc
190 rgw_os_lib.cc
191 rgw_process.cc
192 rgw_rest_bucket.cc
193 rgw_rest_config.cc
194 rgw_rest_log.cc
195 rgw_rest_metadata.cc
196 rgw_rest_realm.cc
197 rgw_rest_swift.cc
198 rgw_rest_usage.cc
199 rgw_rest_user.cc
200 rgw_swift_auth.cc
201 rgw_usage.cc
202 rgw_opa.cc
203 rgw_sts.cc
204 rgw_rest_sts.cc)
31f18b77
FG
205
206gperf_generate(${CMAKE_SOURCE_DIR}/src/rgw/rgw_iam_policy_keywords.gperf
207 rgw_iam_policy_keywords.frag.cc)
208set_source_files_properties(rgw_iam_policy.cc PROPERTIES
209 OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/rgw/rgw_iam_policy_keywords.frag.cc
210 COMPILE_FLAGS -I${CMAKE_BINARY_DIR}/src/rgw)
211
7c673cae
FG
212
213if (WITH_RADOSGW_FCGI_FRONTEND)
214 list(APPEND rgw_a_srcs rgw_fcgi.cc)
215endif()
216
11fdf7f2
TL
217add_library(rgw_a STATIC
218 ${rgw_a_srcs}
219 $<TARGET_OBJECTS:rgw_common>)
7c673cae
FG
220
221add_dependencies(rgw_a civetweb_h)
222
9f95a23c 223target_compile_definitions(rgw_a PUBLIC "-DCLS_CLIENT_HIDE_IOCTX")
11fdf7f2 224target_include_directories(rgw_a PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/support/src")
f64942e4 225target_include_directories(rgw_a SYSTEM PUBLIC "../rapidjson/include")
f91f0fd5 226target_include_directories(rgw_a SYSTEM PUBLIC "${CMAKE_SOURCE_DIR}/src/rgw")
7c673cae 227
11fdf7f2
TL
228if(WITH_RADOSGW_AMQP_ENDPOINT)
229 find_package(RabbitMQ REQUIRED)
230endif()
9f95a23c
TL
231if(WITH_RADOSGW_KAFKA_ENDPOINT)
232 find_package(RDKafka 0.9.2 REQUIRED)
233endif()
11fdf7f2
TL
234
235target_link_libraries(rgw_a
236 PRIVATE
237 librados cls_otp_client cls_lock_client cls_rgw_client cls_refcount_client
238 cls_log_client cls_timeindex_client cls_version_client
9f95a23c 239 cls_user_client cls_rgw_gc_client ceph-common common_utf8 global
31f18b77 240 ${CURL_LIBRARIES}
7c673cae 241 ${EXPAT_LIBRARIES}
11fdf7f2
TL
242 ${OPENLDAP_LIBRARIES} ${CRYPTO_LIBS}
243 OATH::OATH)
7c673cae 244
11fdf7f2
TL
245if(WITH_CURL_OPENSSL)
246 # used by rgw_http_client_curl.cc
247 target_link_libraries(rgw_a PRIVATE OpenSSL::Crypto)
f64942e4 248endif()
11fdf7f2
TL
249
250if(WITH_BOOST_CONTEXT)
9f95a23c 251 target_link_libraries(rgw_a PUBLIC spawn)
11fdf7f2
TL
252endif()
253
254set(rgw_libs rgw_a)
255if(WITH_RADOSGW_AMQP_ENDPOINT)
256 # used by rgw_amqp.cc
257 list(APPEND rgw_libs RabbitMQ::RabbitMQ)
f64942e4 258endif()
9f95a23c
TL
259if(WITH_RADOSGW_KAFKA_ENDPOINT)
260 # used by rgw_kafka.cc
261 list(APPEND rgw_libs RDKafka::RDKafka)
262endif()
94b18763 263
9f95a23c
TL
264set(rgw_schedulers_srcs
265 rgw_dmclock_scheduler_ctx.cc
266 rgw_dmclock_sync_scheduler.cc)
7c673cae
FG
267set(radosgw_srcs
268 rgw_loadgen_process.cc
269 rgw_civetweb.cc
270 rgw_civetweb_frontend.cc
9f95a23c 271 rgw_civetweb_log.cc)
7c673cae
FG
272if (WITH_RADOSGW_FCGI_FRONTEND)
273 list(APPEND radosgw_srcs rgw_fcgi_process.cc)
274endif()
275
11fdf7f2 276if(WITH_RADOSGW_BEAST_FRONTEND)
7c673cae
FG
277 list(APPEND radosgw_srcs
278 rgw_asio_client.cc
9f95a23c
TL
279 rgw_asio_frontend.cc)
280 list(APPEND rgw_schedulers_srcs
11fdf7f2
TL
281 rgw_dmclock_async_scheduler.cc)
282endif()
7c673cae 283
9f95a23c
TL
284add_library(rgw_schedulers STATIC ${rgw_schedulers_srcs})
285target_link_libraries(rgw_schedulers
286 PUBLIC dmclock::dmclock)
287
288add_library(radosgw SHARED ${radosgw_srcs} ${rgw_a_srcs} rgw_main.cc
7c673cae 289 $<TARGET_OBJECTS:civetweb_common_objs>)
9f95a23c
TL
290
291add_dependencies(radosgw civetweb_h)
292
293target_compile_definitions(radosgw PUBLIC "-DCLS_CLIENT_HIDE_IOCTX")
294target_include_directories(radosgw PUBLIC "${CMAKE_SOURCE_DIR}/src/dmclock/support/src")
295target_include_directories(radosgw SYSTEM PUBLIC "../rapidjson/include")
296
297target_link_libraries(radosgw
298 PRIVATE ${rgw_libs} rgw_schedulers
299 PUBLIC dmclock::dmclock
300)
301if(WITH_RADOSGW_BEAST_FRONTEND)
302 target_link_libraries(rgw_schedulers PUBLIC spawn)
303 if(WITH_RADOSGW_BEAST_OPENSSL)
304 # used by rgw_asio_frontend.cc
305 target_link_libraries(radosgw PRIVATE OpenSSL::SSL)
306 endif()
11fdf7f2 307endif()
9f95a23c
TL
308set_target_properties(radosgw PROPERTIES OUTPUT_NAME radosgw VERSION 2.0.0
309 SOVERSION 2)
310install(TARGETS radosgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
7c673cae 311
9f95a23c
TL
312add_executable(radosgwd radosgw.cc)
313target_link_libraries(radosgwd radosgw librados
11fdf7f2
TL
314 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
315 cls_log_client cls_timeindex_client
316 cls_version_client cls_user_client
9f95a23c 317 global
11fdf7f2 318 ${FCGI_LIBRARY} ${LIB_RESOLV}
7c673cae
FG
319 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES}
320 ${ALLOC_LIBS})
9f95a23c
TL
321set_target_properties(radosgwd PROPERTIES OUTPUT_NAME radosgw)
322install(TARGETS radosgwd DESTINATION bin)
7c673cae
FG
323
324set(radosgw_admin_srcs
325 rgw_admin.cc
326 rgw_orphan.cc)
327add_executable(radosgw-admin ${radosgw_admin_srcs})
11fdf7f2
TL
328target_link_libraries(radosgw-admin ${rgw_libs} librados
329 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
330 cls_log_client cls_timeindex_client
331 cls_version_client cls_user_client
7c673cae 332 global ${FCGI_LIBRARY} ${LIB_RESOLV}
11fdf7f2 333 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
7c673cae
FG
334install(TARGETS radosgw-admin DESTINATION bin)
335
31f18b77
FG
336set(radosgw_es_srcs
337 rgw_es_main.cc)
338add_executable(radosgw-es ${radosgw_es_srcs})
11fdf7f2
TL
339target_link_libraries(radosgw-es ${rgw_libs} librados
340 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
341 cls_log_client cls_timeindex_client
342 cls_version_client cls_user_client
31f18b77 343 global ${FCGI_LIBRARY} ${LIB_RESOLV}
11fdf7f2 344 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES})
31f18b77
FG
345install(TARGETS radosgw-es DESTINATION bin)
346
7c673cae
FG
347set(radosgw_token_srcs
348 rgw_token.cc)
349add_executable(radosgw-token ${radosgw_token_srcs})
350target_link_libraries(radosgw-token librados
351 global ${ALLOC_LIBS})
352install(TARGETS radosgw-token DESTINATION bin)
353
354set(radosgw_object_expirer_srcs
355 rgw_object_expirer.cc)
356add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs})
11fdf7f2
TL
357target_link_libraries(radosgw-object-expirer ${rgw_libs} librados
358 cls_rgw_client cls_otp_client cls_lock_client cls_refcount_client
359 cls_log_client cls_timeindex_client
360 cls_version_client cls_user_client
7c673cae
FG
361 global ${FCGI_LIBRARY} ${LIB_RESOLV}
362 ${CURL_LIBRARIES} ${EXPAT_LIBRARIES})
363install(TARGETS radosgw-object-expirer DESTINATION bin)
364
365set(librgw_srcs
366 librgw.cc
367 rgw_file.cc)
368add_library(rgw SHARED ${librgw_srcs})
11fdf7f2
TL
369target_link_libraries(rgw
370 PRIVATE
371 ${rgw_libs}
7c673cae
FG
372 librados
373 cls_rgw_client
11fdf7f2 374 cls_otp_client
7c673cae
FG
375 cls_lock_client
376 cls_refcount_client
377 cls_log_client
7c673cae
FG
378 cls_timeindex_client
379 cls_version_client
7c673cae
FG
380 cls_user_client
381 global
382 ${LIB_RESOLV}
383 ${CURL_LIBRARIES}
11fdf7f2
TL
384 ${EXPAT_LIBRARIES}
385 PUBLIC
386 dmclock::dmclock)
387
388if(WITH_RADOSGW_AMQP_ENDPOINT)
389 target_link_libraries(rgw PRIVATE RabbitMQ::RabbitMQ)
390endif()
391
9f95a23c
TL
392if(WITH_RADOSGW_KAFKA_ENDPOINT)
393 target_link_libraries(rgw PRIVATE RDKafka::RDKafka)
394endif()
395
7c673cae
FG
396set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0
397 SOVERSION 2)
398install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
11fdf7f2 399
11fdf7f2
TL
400if(WITH_TESTS)
401 add_executable(ceph_rgw_jsonparser
402 rgw_jsonparser.cc)
403 target_link_libraries(ceph_rgw_jsonparser
404 ${rgw_libs}
405 global)
406
407 add_executable(ceph_rgw_multiparser
408 rgw_multiparser.cc)
409 target_link_libraries(ceph_rgw_multiparser
410 ${rgw_libs}
411 global)
412
413 install(TARGETS
414 ceph_rgw_jsonparser
415 ceph_rgw_multiparser
416 DESTINATION bin)
417endif(WITH_TESTS)
e306af50
TL
418
419install(PROGRAMS rgw-orphan-list
420 DESTINATION bin)