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