initial code repo
[stor4nfv.git] / src / ceph / src / rgw / CMakeLists.txt
diff --git a/src/ceph/src/rgw/CMakeLists.txt b/src/ceph/src/rgw/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fc3a33a
--- /dev/null
@@ -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_OBJECTS:civetweb_common_objs>)
+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()