X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Frgw%2FCMakeLists.txt;fp=src%2Fceph%2Fsrc%2Frgw%2FCMakeLists.txt;h=fc3a33a0fdfd3279980fdb7633bcc2a4a16d7a13;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/rgw/CMakeLists.txt b/src/ceph/src/rgw/CMakeLists.txt new file mode 100644 index 0000000..fc3a33a --- /dev/null +++ b/src/ceph/src/rgw/CMakeLists.txt @@ -0,0 +1,272 @@ +if(WITH_TESTS) +add_executable(ceph_rgw_jsonparser + rgw_jsonparser.cc) +target_link_libraries(ceph_rgw_jsonparser + rgw_a + global) + +add_executable(ceph_rgw_multiparser + rgw_multiparser.cc) +target_link_libraries(ceph_rgw_multiparser + rgw_a + global) + +install(TARGETS + ceph_rgw_jsonparser + ceph_rgw_multiparser + DESTINATION bin) +endif(WITH_TESTS) + +add_custom_target(civetweb_h + COMMAND ${CMAKE_COMMAND} -E make_directory + "${CMAKE_BINARY_DIR}/src/include/civetweb" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${CMAKE_SOURCE_DIR}/src/civetweb/include/civetweb.h" + "${CMAKE_BINARY_DIR}/src/include/civetweb" + COMMENT "keep civetweb.h up-to-date") + +find_program(GPERF gperf) +if(NOT GPERF) + message(FATAL_ERROR "Can't find gperf") +endif() +function(gperf_generate input output) + add_custom_command( + OUTPUT ${output} + COMMAND ${GPERF} ${input} > ${output} + DEPENDS ${input} + COMMENT "Generate ${output}" + ) +endfunction() + +set(rgw_a_srcs + rgw_acl.cc + rgw_acl_s3.cc + rgw_acl_swift.cc + rgw_auth.cc + rgw_auth_keystone.cc + rgw_auth_s3.cc + rgw_basic_types.cc + rgw_bucket.cc + rgw_cache.cc + rgw_client_io.cc + rgw_common.cc + rgw_compression.cc + rgw_cors.cc + rgw_cors_s3.cc + rgw_dencoder.cc + rgw_env.cc + rgw_es_query.cc + rgw_formats.cc + rgw_frontend.cc + rgw_gc.cc + rgw_http_client.cc + rgw_json_enc.cc + rgw_keystone.cc + rgw_ldap.cc + rgw_loadgen.cc + rgw_log.cc + rgw_lc.cc + rgw_lc_s3.cc + rgw_metadata.cc + rgw_multi.cc + rgw_multi_del.cc + rgw_sync.cc + rgw_data_sync.cc + rgw_sync_module.cc + rgw_sync_module_es.cc + rgw_sync_module_es_rest.cc + rgw_sync_module_log.cc + rgw_period_history.cc + rgw_period_puller.cc + rgw_period_pusher.cc + rgw_realm_reloader.cc + rgw_realm_watcher.cc + rgw_reshard.cc + rgw_coroutine.cc + rgw_cr_rados.cc + rgw_object_expirer_core.cc + rgw_op.cc + rgw_os_lib.cc + rgw_policy_s3.cc + rgw_process.cc + rgw_quota.cc + rgw_rados.cc + rgw_replica_log.cc + rgw_request.cc + rgw_resolve.cc + rgw_rest_bucket.cc + rgw_rest.cc + rgw_rest_client.cc + rgw_rest_config.cc + rgw_rest_conn.cc + rgw_rest_log.cc + rgw_rest_metadata.cc + rgw_rest_opstate.cc + rgw_rest_realm.cc + rgw_rest_replica_log.cc + rgw_rest_role.cc + rgw_rest_s3.cc + rgw_rest_swift.cc + rgw_rest_usage.cc + rgw_rest_user.cc + rgw_role.cc + rgw_string.cc + rgw_swift_auth.cc + rgw_tag.cc + rgw_tag_s3.cc + rgw_tools.cc + rgw_usage.cc + rgw_user.cc + rgw_website.cc + rgw_xml.cc + rgw_xml_enc.cc + rgw_torrent.cc + rgw_crypt.cc + rgw_crypt_sanitize.cc + rgw_iam_policy.cc) + +gperf_generate(${CMAKE_SOURCE_DIR}/src/rgw/rgw_iam_policy_keywords.gperf + rgw_iam_policy_keywords.frag.cc) +set_source_files_properties(rgw_iam_policy.cc PROPERTIES + OBJECT_DEPENDS ${CMAKE_BINARY_DIR}/src/rgw/rgw_iam_policy_keywords.frag.cc + COMPILE_FLAGS -I${CMAKE_BINARY_DIR}/src/rgw) + + +if (WITH_RADOSGW_FCGI_FRONTEND) + list(APPEND rgw_a_srcs rgw_fcgi.cc) +endif() + +add_library(rgw_a STATIC ${rgw_a_srcs}) + +add_dependencies(rgw_a civetweb_h) + +target_include_directories(rgw_a PUBLIC + "../Beast/include" + ${FCGI_INCLUDE_DIR} + "../rapidjson/include" + ) +target_compile_definitions(rgw_a PUBLIC BOOST_COROUTINES_NO_DEPRECATION_WARNING) + +target_link_libraries(rgw_a librados cls_lock_client cls_rgw_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client cls_version_client + cls_replica_log_client cls_user_client ceph-common common_utf8 global + ${CURL_LIBRARIES} + ${EXPAT_LIBRARIES} + ${OPENLDAP_LIBRARIES} ${CRYPTO_LIBS}) + +set(radosgw_srcs + rgw_loadgen_process.cc + rgw_civetweb.cc + rgw_civetweb_frontend.cc + rgw_civetweb_log.cc) + +if (WITH_RADOSGW_FCGI_FRONTEND) + list(APPEND radosgw_srcs rgw_fcgi_process.cc) +endif() + +if (WITH_RADOSGW_BEAST_FRONTEND) + list(APPEND radosgw_srcs + rgw_asio_client.cc + rgw_asio_frontend.cc) +endif (WITH_RADOSGW_BEAST_FRONTEND) + +add_library(radosgw_a STATIC ${radosgw_srcs} + $) +target_link_libraries(radosgw_a rgw_a ${SSL_LIBRARIES}) +if(WITH_RADOSGW_BEAST_FRONTEND) + target_link_libraries(radosgw_a + Boost::coroutine + Boost::context) +endif() + +add_executable(radosgw rgw_main.cc) +target_link_libraries(radosgw radosgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + global ${FCGI_LIBRARY} ${LIB_RESOLV} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${BLKID_LIBRARIES} + ${ALLOC_LIBS}) +# radosgw depends on cls libraries at runtime, but not as link dependencies +add_dependencies(radosgw cls_rgw cls_lock cls_refcount + cls_log cls_statelog cls_timeindex + cls_version cls_replica_log cls_user) +install(TARGETS radosgw DESTINATION bin) + +set(radosgw_admin_srcs + rgw_admin.cc + rgw_orphan.cc) +add_executable(radosgw-admin ${radosgw_admin_srcs}) +target_link_libraries(radosgw-admin rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + global ${FCGI_LIBRARY} ${LIB_RESOLV} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${SSL_LIBRARIES} ${BLKID_LIBRARIES}) +install(TARGETS radosgw-admin DESTINATION bin) + +set(radosgw_es_srcs + rgw_es_main.cc) +add_executable(radosgw-es ${radosgw_es_srcs}) +target_link_libraries(radosgw-es rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + global ${FCGI_LIBRARY} ${LIB_RESOLV} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES} ${SSL_LIBRARIES} ${BLKID_LIBRARIES}) +install(TARGETS radosgw-es DESTINATION bin) + +set(radosgw_token_srcs + rgw_token.cc) +add_executable(radosgw-token ${radosgw_token_srcs}) +target_link_libraries(radosgw-token librados + global ${ALLOC_LIBS}) +install(TARGETS radosgw-token DESTINATION bin) + +set(radosgw_object_expirer_srcs + rgw_object_expirer.cc) +add_executable(radosgw-object-expirer ${radosgw_object_expirer_srcs}) +target_link_libraries(radosgw-object-expirer rgw_a librados + cls_rgw_client cls_lock_client cls_refcount_client + cls_log_client cls_statelog_client cls_timeindex_client + cls_version_client cls_replica_log_client cls_user_client + global ${FCGI_LIBRARY} ${LIB_RESOLV} + ${CURL_LIBRARIES} ${EXPAT_LIBRARIES}) +install(TARGETS radosgw-object-expirer DESTINATION bin) + +set(librgw_srcs + librgw.cc + rgw_file.cc) +add_library(rgw SHARED ${librgw_srcs}) +target_link_libraries(rgw LINK_PRIVATE + rgw_a + librados + cls_rgw_client + cls_lock_client + cls_refcount_client + cls_log_client + cls_statelog_client + cls_timeindex_client + cls_version_client + cls_replica_log_client + cls_user_client + global + ${LIB_RESOLV} + ${CURL_LIBRARIES} + ${EXPAT_LIBRARIES}) +set_target_properties(rgw PROPERTIES OUTPUT_NAME rgw VERSION 2.0.0 + SOVERSION 2) +install(TARGETS rgw DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +if(WITH_EMBEDDED) + include(MergeStaticLibraries) + add_library(cephd_rgw_base STATIC rgw_main.cc ${radosgw_admin_srcs}) + if(WITH_RADOSGW_FCGI_FRONTEND) + target_include_directories(cephd_rgw_base PUBLIC ${FCGI_INCLUDE_DIR}) + endif() + set_target_properties(cephd_rgw_base PROPERTIES COMPILE_DEFINITIONS BUILDING_FOR_EMBEDDED) + merge_static_libraries(cephd_rgw cephd_rgw_base rgw_a radosgw_a) + if(WITH_RADOSGW_FCGI_FRONTEND) + target_link_libraries(cephd_rgw ${FCGI_LIBRARY}) + endif() +endif()