Fix some bugs when testing opensds ansible
[stor4nfv.git] / src / ceph / src / rgw / CMakeLists.txt
1 if(WITH_TESTS)
2 add_executable(ceph_rgw_jsonparser
3   rgw_jsonparser.cc)
4 target_link_libraries(ceph_rgw_jsonparser
5   rgw_a
6   global)
7
8 add_executable(ceph_rgw_multiparser
9   rgw_multiparser.cc)
10 target_link_libraries(ceph_rgw_multiparser
11   rgw_a
12   global)
13
14 install(TARGETS
15   ceph_rgw_jsonparser
16   ceph_rgw_multiparser
17   DESTINATION bin)
18 endif(WITH_TESTS)
19
20 add_custom_target(civetweb_h
21   COMMAND ${CMAKE_COMMAND} -E make_directory
22   "${CMAKE_BINARY_DIR}/src/include/civetweb"
23   COMMAND ${CMAKE_COMMAND} -E copy_if_different
24   "${CMAKE_SOURCE_DIR}/src/civetweb/include/civetweb.h"
25   "${CMAKE_BINARY_DIR}/src/include/civetweb"
26   COMMENT "keep civetweb.h up-to-date")
27
28 find_program(GPERF gperf)
29 if(NOT GPERF)
30   message(FATAL_ERROR "Can't find gperf")
31 endif()
32 function(gperf_generate input output)
33   add_custom_command(
34     OUTPUT ${output}
35     COMMAND ${GPERF} ${input} > ${output}
36     DEPENDS ${input}
37     COMMENT "Generate ${output}"
38     )
39 endfunction()
40
41 set(rgw_a_srcs
42   rgw_acl.cc
43   rgw_acl_s3.cc
44   rgw_acl_swift.cc
45   rgw_auth.cc
46   rgw_auth_keystone.cc
47   rgw_auth_s3.cc
48   rgw_basic_types.cc
49   rgw_bucket.cc
50   rgw_cache.cc
51   rgw_client_io.cc
52   rgw_common.cc
53   rgw_compression.cc
54   rgw_cors.cc
55   rgw_cors_s3.cc
56   rgw_dencoder.cc
57   rgw_env.cc
58   rgw_es_query.cc
59   rgw_formats.cc
60   rgw_frontend.cc
61   rgw_gc.cc
62   rgw_http_client.cc
63   rgw_json_enc.cc
64   rgw_keystone.cc
65   rgw_ldap.cc
66   rgw_loadgen.cc
67   rgw_log.cc
68   rgw_lc.cc
69   rgw_lc_s3.cc
70   rgw_metadata.cc
71   rgw_multi.cc
72   rgw_multi_del.cc
73   rgw_sync.cc
74   rgw_data_sync.cc
75   rgw_sync_module.cc
76   rgw_sync_module_es.cc
77   rgw_sync_module_es_rest.cc
78   rgw_sync_module_log.cc
79   rgw_period_history.cc
80   rgw_period_puller.cc
81   rgw_period_pusher.cc
82   rgw_realm_reloader.cc
83   rgw_realm_watcher.cc
84   rgw_reshard.cc
85   rgw_coroutine.cc
86   rgw_cr_rados.cc
87   rgw_object_expirer_core.cc
88   rgw_op.cc
89   rgw_os_lib.cc
90   rgw_policy_s3.cc
91   rgw_process.cc
92   rgw_quota.cc
93   rgw_rados.cc
94   rgw_replica_log.cc
95   rgw_request.cc
96   rgw_resolve.cc
97   rgw_rest_bucket.cc
98   rgw_rest.cc
99   rgw_rest_client.cc
100   rgw_rest_config.cc
101   rgw_rest_conn.cc
102   rgw_rest_log.cc
103   rgw_rest_metadata.cc
104   rgw_rest_opstate.cc
105   rgw_rest_realm.cc
106   rgw_rest_replica_log.cc
107   rgw_rest_role.cc
108   rgw_rest_s3.cc
109   rgw_rest_swift.cc
110   rgw_rest_usage.cc
111   rgw_rest_user.cc
112   rgw_role.cc
113   rgw_string.cc
114   rgw_swift_auth.cc
115   rgw_tag.cc
116   rgw_tag_s3.cc
117   rgw_tools.cc
118   rgw_usage.cc
119   rgw_user.cc
120   rgw_website.cc
121   rgw_xml.cc
122   rgw_xml_enc.cc
123   rgw_torrent.cc
124   rgw_crypt.cc
125   rgw_crypt_sanitize.cc
126   rgw_iam_policy.cc)
127
128 gperf_generate(${CMAKE_SOURCE_DIR}/src/rgw/rgw_iam_policy_keywords.gperf
129   rgw_iam_policy_keywords.frag.cc)
130 set_source_files_properties(rgw_iam_policy.cc PROPERTIES
131   OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/rgw/rgw_iam_policy_keywords.frag.cc
132   COMPILE_FLAGS -I${CMAKE_BINARY_DIR}/src/rgw)
133
134
135 if (WITH_RADOSGW_FCGI_FRONTEND)
136   list(APPEND rgw_a_srcs rgw_fcgi.cc)
137 endif()
138
139 add_library(rgw_a STATIC ${rgw_a_srcs})
140
141 add_dependencies(rgw_a civetweb_h)
142
143 target_include_directories(rgw_a PUBLIC
144   "../Beast/include"
145   ${FCGI_INCLUDE_DIR}
146   "../rapidjson/include"
147   )
148 target_compile_definitions(rgw_a PUBLIC BOOST_COROUTINES_NO_DEPRECATION_WARNING)
149
150 target_link_libraries(rgw_a librados cls_lock_client cls_rgw_client cls_refcount_client
151   cls_log_client cls_statelog_client cls_timeindex_client cls_version_client
152   cls_replica_log_client cls_user_client ceph-common common_utf8 global
153   ${CURL_LIBRARIES}
154   ${EXPAT_LIBRARIES}
155   ${OPENLDAP_LIBRARIES} ${CRYPTO_LIBS})
156
157 set(radosgw_srcs
158   rgw_loadgen_process.cc
159   rgw_civetweb.cc
160   rgw_civetweb_frontend.cc
161   rgw_civetweb_log.cc)
162
163 if (WITH_RADOSGW_FCGI_FRONTEND)
164   list(APPEND radosgw_srcs rgw_fcgi_process.cc)
165 endif()
166
167 if (WITH_RADOSGW_BEAST_FRONTEND)
168   list(APPEND radosgw_srcs
169     rgw_asio_client.cc
170     rgw_asio_frontend.cc)
171 endif (WITH_RADOSGW_BEAST_FRONTEND)
172
173 add_library(radosgw_a STATIC ${radosgw_srcs}
174   $<TARGET_OBJECTS:civetweb_common_objs>)
175 target_link_libraries(radosgw_a rgw_a ${SSL_LIBRARIES})
176 if(WITH_RADOSGW_BEAST_FRONTEND)
177   target_link_libraries(radosgw_a
178     Boost::coroutine
179     Boost::context)
180 endif()
181
182 add_executable(radosgw rgw_main.cc)
183 target_link_libraries(radosgw radosgw_a librados
184   cls_rgw_client cls_lock_client cls_refcount_client
185   cls_log_client cls_statelog_client cls_timeindex_client
186   cls_version_client cls_replica_log_client cls_user_client
187   global ${FCGI_LIBRARY} ${LIB_RESOLV}
188   ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES}
189   ${ALLOC_LIBS})
190 # radosgw depends on cls libraries at runtime, but not as link dependencies
191 add_dependencies(radosgw cls_rgw cls_lock cls_refcount
192   cls_log cls_statelog cls_timeindex
193   cls_version cls_replica_log cls_user)
194 install(TARGETS radosgw DESTINATION bin)
195
196 set(radosgw_admin_srcs
197   rgw_admin.cc
198   rgw_orphan.cc)
199 add_executable(radosgw-admin ${radosgw_admin_srcs})
200 target_link_libraries(radosgw-admin rgw_a librados
201   cls_rgw_client cls_lock_client cls_refcount_client
202   cls_log_client cls_statelog_client cls_timeindex_client
203   cls_version_client cls_replica_log_client cls_user_client
204   global ${FCGI_LIBRARY} ${LIB_RESOLV}
205   ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${SSL_LIBRARIES} ${BLKID_LIBRARIES})
206 install(TARGETS radosgw-admin DESTINATION bin)
207
208 set(radosgw_es_srcs
209   rgw_es_main.cc)
210 add_executable(radosgw-es ${radosgw_es_srcs})
211 target_link_libraries(radosgw-es rgw_a librados
212   cls_rgw_client cls_lock_client cls_refcount_client
213   cls_log_client cls_statelog_client cls_timeindex_client
214   cls_version_client cls_replica_log_client cls_user_client
215   global ${FCGI_LIBRARY} ${LIB_RESOLV}
216   ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${SSL_LIBRARIES} ${BLKID_LIBRARIES})
217 install(TARGETS radosgw-es DESTINATION bin)
218
219 set(radosgw_token_srcs
220   rgw_token.cc)
221 add_executable(radosgw-token ${radosgw_token_srcs})
222 target_link_libraries(radosgw-token librados
223   global ${ALLOC_LIBS})
224 install(TARGETS radosgw-token DESTINATION bin)
225
226 set(radosgw_object_expirer_srcs
227   rgw_object_expirer.cc)
228 add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs})
229 target_link_libraries(radosgw-object-expirer rgw_a librados
230   cls_rgw_client cls_lock_client cls_refcount_client
231   cls_log_client cls_statelog_client cls_timeindex_client
232   cls_version_client cls_replica_log_client cls_user_client
233   global ${FCGI_LIBRARY} ${LIB_RESOLV}
234   ${CURL_LIBRARIES} ${EXPAT_LIBRARIES})
235 install(TARGETS radosgw-object-expirer DESTINATION bin)
236
237 set(librgw_srcs
238   librgw.cc
239   rgw_file.cc)
240 add_library(rgw SHARED ${librgw_srcs})
241 target_link_libraries(rgw LINK_PRIVATE
242   rgw_a
243   librados
244   cls_rgw_client
245   cls_lock_client
246   cls_refcount_client
247   cls_log_client
248   cls_statelog_client
249   cls_timeindex_client
250   cls_version_client
251   cls_replica_log_client
252   cls_user_client
253   global
254   ${LIB_RESOLV}
255   ${CURL_LIBRARIES}
256   ${EXPAT_LIBRARIES})
257 set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0
258   SOVERSION 2)
259 install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR})
260
261 if(WITH_EMBEDDED)
262   include(MergeStaticLibraries)
263   add_library(cephd_rgw_base STATIC rgw_main.cc ${radosgw_admin_srcs})
264   if(WITH_RADOSGW_FCGI_FRONTEND)  
265     target_include_directories(cephd_rgw_base PUBLIC ${FCGI_INCLUDE_DIR})
266   endif()
267   set_target_properties(cephd_rgw_base PROPERTIES COMPILE_DEFINITIONS BUILDING_FOR_EMBEDDED)
268   merge_static_libraries(cephd_rgw cephd_rgw_base rgw_a radosgw_a)
269   if(WITH_RADOSGW_FCGI_FRONTEND) 
270     target_link_libraries(cephd_rgw ${FCGI_LIBRARY})
271   endif()
272 endif()