Skip to content
Snippets Groups Projects
CMakeLists.txt 22.3 KiB
Newer Older
  • Learn to ignore specific revisions
  • Andrea Michelotti's avatar
    Andrea Michelotti committed
    cmake_minimum_required(VERSION 3.7)
    
    project(ChaosMetadataService)
    
    #add module path for permi to find lirary
    list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
    set(CMAKE_MACOSX_RPATH ON)
    MESG("Configure Metadata Service")
    
    option(COMPILE_HAZELCAST_LIVE_DRIVER "Compile hazelcast live data driver" OFF)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    #
    
    # ExternalProject_Add(
    # cpprestsdk
    #  GIT_REPOSITORY https://github.com/microsoft/cpprestsdk.git
    #  PREFIX "${CMAKE_BINARY_DIR}/ext_dep/cpprest-prefix"
    #  SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/cpprest-src"
    #  BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/cpprest-build"
    #  # BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS}
    #  CMAKE_ARGS
    #   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release
    #   -DBUILD_STATIC_LIBS=ON
    #   -DBUILD_SHARED_LIBS=OFF
    #  LOG_DOWNLOAD ON
    #  LOG_CONFIGURE ON
    #  LOG_BUILD ON)
    
    # ExternalProject_Add(
    # fmtlib
    #  GIT_REPOSITORY https://github.com/fmtlib/fmt.git
    #  GIT_TAG 6.1.2
    #  PREFIX "${CMAKE_BINARY_DIR}/ext_dep/fmtlib-prefix"
    #  SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/fmtlib-src"
    #  BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/fmtlib-build"
    #  # BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS}
    #  CMAKE_ARGS
    #   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release
    #   -DBUILD_STATIC_LIBS=ON
    #   -DBUILD_SHARED_LIBS=OFF
    
    #  LOG_DOWNLOAD ON
    #  LOG_CONFIGURE ON
    #  LOG_BUILD ON)
    
    #  ExternalProject_Add(
    # rxcpp
    #  GIT_REPOSITORY  https://github.com/ReactiveX/RxCpp.git
    #  PREFIX "${CMAKE_BINARY_DIR}/ext_dep/rxcpp-prefix"
    #  SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/rxcpp-src"
    #  BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/rxcpp-build"
    #  # BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS}
    #  CMAKE_ARGS
    #   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release
    #   -DBUILD_STATIC_LIBS=ON
    #   -DBUILD_SHARED_LIBS=OFF
    #  LOG_DOWNLOAD ON
    #  LOG_CONFIGURE ON
    #  LOG_BUILD ON)
    
      
    
    IF (DEFINED ENV{CHAOS_BUNDLE} )
      include($ENV{CHAOS_BUNDLE}/tools/project_template/CMakeChaos.txt)
    ENDIF()
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
        #  MESG("Influxdb client")
      
        #  ExternalProject_Add(
        #     influxdb-cpp
        #     GIT_REPOSITORY https://github.com/orca-zhang/influxdb-cpp.git
        #     PREFIX "${CMAKE_BINARY_DIR}/ext_dep/influxdb-cpp-prefix"
        #     SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/influxdb-cpp-src"
        #     BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/influxdb-cpp-build"
        #     CMAKE_ARGS 
        #      -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
        #      -DCMAKE_BUILD_TYPE=Release
        #      -DBUILD_STATIC_LIBS=ON
        #      -DBUILD_SHARED_LIBS=OFF
        #     LOG_DOWNLOAD ON
        #     LOG_CONFIGURE ON
        #     LOG_BUILD ON)
    
         # 
    
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      IF(KAFKA_RDK_ENABLE)
         #  message(STATUS "ENABLING KAFKA ASIO on ${PROJECT_NAME}")
           ADD_DEFINITIONS(-DKAFKA_RDK_ENABLE)
      ENDIF(KAFKA_RDK_ENABLE)
         
    
    IF (COMPILE_HAZELCAST_LIVE_DRIVER)
    
      ExternalProject_Add(
         hazelcast
         GIT_REPOSITORY https://github.com/hazelcast/hazelcast-cpp-client.git
         GIT_TAG v3.9.1
         PREFIX "${CMAKE_BINARY_DIR}/ext_dep/hazelcast-prefix"
         SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/hazelcast-src"
         BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/hazelcast-build"
         CMAKE_ARGS
          -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
    
          -DCMAKE_BUILD_TYPE=Release
         LOG_DOWNLOAD ON
         LOG_CONFIGURE ON
         LOG_BUILD ON)
    
    
         # Specify include dir
         ExternalProject_Get_Property(hazelcast source_dir)
         set(HAZELCAST_INCLUDE_DIR ${source_dir}/include)
    
         # Library
         ExternalProject_Get_Property(hazelcast binary_dir)
         set(HAZELCAST_LIBRARY_DIR ${binary_dir})
    
         MESG("${HAZELCAST_INCLUDE_DIR}")
         MESG("${HAZELCAST_LIBRARY_DIR}")
         MESG("${HAZELCAST_LIBRARY}")
    ENDIF()
    
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    MESG("Install c mongodb driver")
    ExternalProject_Add(
     mongo-c-driver
     GIT_REPOSITORY https://github.com/mongodb/mongo-c-driver.git
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
     GIT_TAG 1.12.0
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
     # GIT_TAG 1.24.0
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
     PREFIX "${CMAKE_BINARY_DIR}/ext_dep/mongo-c-driver-prefix"
     SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/mongo-c-driver-src"
     BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/mongo-c-driver-build"
    
    amichelotti's avatar
    amichelotti committed
     # BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS}
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
     CMAKE_ARGS
    
    amichelotti's avatar
    amichelotti committed
      -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_TESTS=OFF -DENABLE_EXAMPLES=OFF -DENABLE_BSON=ONLY
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
     LOG_DOWNLOAD ON
     LOG_CONFIGURE ON
     LOG_BUILD ON)
    
    
    
     MESG("Install c couchbase driver")
    ExternalProject_Add(
     couchbase-c-driver
     GIT_REPOSITORY https://github.com/couchbase/libcouchbase.git
     GIT_TAG release-2.10
     PREFIX "${CMAKE_BINARY_DIR}/ext_dep/couchbase-c-driver-prefix"
     SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/couchbase-c-driver-src"
     BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/couchbase-c-driver-build"
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    INSTALL_COMMAND cp ${CMAKE_BINARY_DIR}/ext_dep/couchbase-c-driver-build/lib/libcouchbase.so ${CMAKE_INSTALL_PREFIX}/lib
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
     BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS} install
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DLCB_INSTALL_HEADERS=ON -DLCB_NO_PLUGINS=ON -DCMAKE_BUILD_TYPE=Release -DLCB_NO_TESTS=ON -DLCB_NO_MOCK=ON -DLCB_NO_SSL=ON
    
     LOG_DOWNLOAD ON
     LOG_CONFIGURE ON
     LOG_BUILD ON)
    
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    MESG("Install cxx mongodb driver")
    ExternalProject_Add(
     mongo-cxx-driver
     DEPENDS mongo-c-driver
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
     # GIT_REPOSITORY https://github.com/mongodb/mongo-cxx-driver
     GIT_REPOSITORY https://github.com/amichelotti/mongo-cxx-driver
     #GIT_TAG r3.3.1
     GIT_TAG mongocxx-chaos
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
     PREFIX "${CMAKE_BINARY_DIR}/ext_dep/mongo-cxx-driver-prefix"
     SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/mongo-cxx-driver-src"
     BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/mongo-cxx-driver-build"
    
    amichelotti's avatar
    amichelotti committed
     # BUILD_COMMAND make CFLAGS=${CMAKE_C_FLAGS} CXXFLAGS=${CMAKE_CXX_FLAGS}
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
     CMAKE_ARGS
      -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX} -DCMAKE_BUILD_TYPE=Release
     LOG_DOWNLOAD ON
     LOG_CONFIGURE ON
     LOG_BUILD ON)
    
     include_directories(${LIBMONGOCXX_INCLUDE_DIR})
     include_directories(${LIBBSONCXX_INCLUDE_DIR})
     include_directories("${CMAKE_INSTALL_PREFIX}/include/mongocxx/v_noabi")
     include_directories("${CMAKE_INSTALL_PREFIX}/include/bsoncxx/v_noabi")
     include_directories("${CMAKE_INSTALL_PREFIX}/include/libmongoc-1.0")
     include_directories("${CMAKE_INSTALL_PREFIX}/include/libbson-1.0")
     include_directories("${CMAKE_INSTALL_PREFIX}/lib")
    
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    # MESG("Install libuv driver for cassandra dependecy")
    # ExternalProject_Add(
    #  libuv-driver
    #  GIT_REPOSITORY https://github.com/libuv/libuv.git
    #  GIT_TAG v1.24.0
    #  PREFIX "${CMAKE_BINARY_DIR}/ext_dep/libuv-driver-prefix"
    #  SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/libuv-driver-src"
    #  BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/libuv-driver-build"
    #  CMAKE_ARGS
    #   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
    #  LOG_DOWNLOAD ON
    #  LOG_CONFIGURE ON
    #  LOG_BUILD ON)
    
    # MESG("Install Cassandra driver")
    # ExternalProject_Add(
    #  cassandra-driver
    #  DEPENDS libuv-driver
    #  GIT_REPOSITORY https://github.com/datastax/cpp-driver.git
    #  GIT_TAG 2.10.0
    #  PREFIX "${CMAKE_BINARY_DIR}/ext_dep/cassandra-driver-prefix"
    #  SOURCE_DIR "${CMAKE_BINARY_DIR}/ext_dep/cassandra-driver-src"
    #  BINARY_DIR "${CMAKE_BINARY_DIR}/ext_dep/cassandra-driver-build"
    #  CMAKE_ARGS
    #   -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
    #   -DLIBUV_ROOT_DIR=${CMAKE_INSTALL_PREFIX}
    #   -DCASS_USE_OPENSSL=OFF
    #  LOG_DOWNLOAD ON
    #  LOG_CONFIGURE ON
    #  LOG_BUILD ON)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    
     include_directories(${LIBMONGOCXX_INCLUDE_DIR})
     include_directories(${LIBBSONCXX_INCLUDE_DIR})
    
    include_directories(chaos/common ../)
    link_directories(${CMAKE_INSTALL_PREFIX}/lib64)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                ChaosMetadataService.cpp
    
                QueryDataConsumer.cpp
                QueryDataMsgPSConsumer.cpp
                )
    
      SET(service_src  ../chaos_service_common/persistence/mongodb/MongoDBHAConnectionManager.cpp
                       ../chaos_service_common/persistence/mongodb/MongoDBAccessor.cpp
                       ../chaos_service_common/DriverPoolManager.cpp ../chaos_service_common/health_system/HealtManagerDirect.cpp)
    
      SET(service_src  ${service_src} ../chaos_service_common/persistence/mongodb/mongodb_cxx/MongoDBCXXDriver.cpp)
    
     SET(service_src  ${service_src} ../chaos_service_common/persistence/data_access/AbstractDataAccess.cpp
     						../chaos_service_common/persistence/data_access/AbstractPersistenceDriver.cpp
                 ../chaos_service_common/ChaosManager.cpp
                 ../chaos_service_common/ChaosServiceToolkit.cpp)
    
    SET(cnd_src  ${cnd_src}	cron_job/MDSCronusManager.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            cron_job/MDSCronJob.cpp
                            cron_job/management/MDSHistoryAgeingManagement.cpp)
    
    SET(cnd_src  ${cnd_src}	common/CUCommonUtility.cpp
                            common/LogUtility.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  	api/ApiManagement.cpp
    
                            api/AbstractApi.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/logging/LoggingApiGroup.cpp
    
                            api/logging/SubmitEntryBase.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/logging/DeleteLog.cpp
    
                            api/logging/SearchLogEntry.cpp
    
                            api/logging/GetLogForSourceUID.cpp
                            api/logging/GetLogDomainForSourceUID.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/groups/GroupsApiGroup.cpp
    
                            api/groups/AddNode.cpp
                            api/groups/DeleteNode.cpp
    
                            api/groups/GetDomains.cpp
                            api/groups/GetNodeChilds.cpp)
    
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/service/ServiceApiGroup.cpp
    
                            api/service/ResetAll.cpp
    
                            api/service/GetAllSnapshot.cpp
                            api/service/RestoreSnapshot.cpp
                            api/service/CreateNewSnapshot.cpp
    
                            api/service/GetSnapshotDatasetsForNode.cpp
    
                            api/service/GetSnapshotForNode.cpp
                            api/service/SetVariable.cpp
                            api/service/RemoveVariable.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/service/GetVariable.cpp
    
                            api/service/RetrieveMultipleData.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/service/QueryDataCloud.cpp
                            api/service/DeleteDataCloud.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/healt/HealtApiGroup.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/healt/ProcessHello.cpp
                            api/healt/ProcessBye.cpp)
    
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/unit_server/UnitServerApiGroup.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/unit_server/LoadUnloadControlUnit.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/unit_server/NewUS.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/unit_server/DeleteUS.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/unit_server/ManageCUType.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/unit_server/GetSetFullUnitServer.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/data_service/DataServiceApiGroup.cpp
    
                            api/data_service/AssociationControlUnit.cpp
                            api/data_service/GetAssociationByDS.cpp
    
                            api/data_service/GetAllDataService.cpp
                            api/data_service/GetBestEndpoints.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/control_unit/SetInputDatasetAttributeValues.cpp
    
                            api/control_unit/ControlUnitGroup.cpp
    
                            api/control_unit/SetInstanceDescription.cpp
                            api/control_unit/SearchInstancesByUS.cpp
    
                            api/control_unit/DeleteInstance.cpp
    
                            api/control_unit/Delete.cpp
    
                            api/control_unit/InitDeinit.cpp
                            api/control_unit/StartStop.cpp
    
                            api/control_unit/CopyInstance.cpp
                            api/control_unit/RecoverError.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/control_unit/GetCurrentDataset.cpp
    
                            api/control_unit/SendStorageBurst.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/node/NodeGroup.cpp
    
                            api/node/NodeGetDescription.cpp
                            api/node/NodeRegister.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/node/NodeHealthStatus.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/node/NodeNewDelete.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            api/node/NodeSetDescription.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    
    
                            api/node/UpdateProperty.cpp
    
                            api/node/UpdatePropertyDefaultValues.cpp
                            api/node/GetPropertyDefaultValues.cpp
    
                            api/node/ChangeNodeState.cpp
                            api/node/CommandGet.cpp
                            api/node/CommandTemplateSet.cpp
                            api/node/CommandTemplateGet.cpp
    
                            api/node/CommandTemplateDelete.cpp
                            api/node/CommandTemplateSearch.cpp
                            api/node/CommandTemplateSubmit.cpp
                            api/node/CommandInstanceSubmit.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/node/CommandCommonUtility.cpp
    
                            api/node/NodeGenericCommand.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/node/ClearCommandQueue.cpp
                            api/node/ForwardNodeRpcMessage.cpp
    
                            api/node/GetCommandAndTemplateDescription.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/script/ScriptGroupApi.cpp
    
                            api/script/SearchScript.cpp
                            api/script/SaveScript.cpp
    
                            api/script/RemoveScript.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/script/LoadFullScript.cpp
    
    bisegni's avatar
    bisegni committed
                            api/script/SearchInstancesForScript.cpp
    
                            api/script/ManageScriptInstance.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/script/ExecutionPoolHeartbeat.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/script/UpdateScriptOnNode.cpp
                            api/script/UpdateBindType.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/agent/AgentApiGroup.cpp
    
                            api/agent/LoadAgentDescription.cpp
                            api/agent/ListNodeForAgent.cpp
    
                            api/agent/GetAgentForNode.cpp
    
                            api/agent/SaveNodeAssociation.cpp
                            api/agent/LoadNodeAssociation.cpp
                            api/agent/RemoveNodeAssociation.cpp
    
                            api/agent/CheckAgentHostedProcess.cpp
                            api/agent/GetManagementConfiguration.cpp
                            api/agent/SetManagementConfiguration.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	api/agent/logging/AgentLoggingApiGroup.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            api/agent/logging/GetProcessLogEntries.cpp
    
                            api/agent/logging/ManageNodeLogging.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src} persistence/data_access/UnitServerDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            persistence/data_access/NodeDataAccess.cpp
    
                            persistence/data_access/UtilityDataAccess.cpp
    
                            persistence/data_access/ControlUnitDataAccess.cpp
    
                            persistence/data_access/DataServiceDataAccess.cpp
    
                            persistence/data_access/SnapshotDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    						persistence/data_access/TreeGroupDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            persistence/data_access/LoggingDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    						persistence/data_access/ScriptDataAccess.cpp
    
                            persistence/data_access/AgentDataAccess.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	persistence/mongodb/MongoDBPersistenceDriver.cpp
    
                            persistence/mongodb/MongoDBUnitServerDataAccess.cpp
    
                            persistence/mongodb/MongoDBNodeDataAccess.cpp
                            persistence/mongodb/MongoDBUtilityDataAccess.cpp
    
                            persistence/mongodb/MongoDBControlUnitDataAccess.cpp
    
                            persistence/mongodb/MongoDBDataServiceDataAccess.cpp
    
                            persistence/mongodb/MongoDBSnapshotDataAccess.cpp
    
                            persistence/mongodb/MongoDBTreeGroupDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            persistence/mongodb/MongoDBLoggingDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    						            persistence/mongodb/MongoDBScriptDataAccess.cpp
    
                            persistence/mongodb/MongoDBAgentDataAccess.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	cache_system/CouchbaseCacheDriver.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	object_storage/abstraction/ObjectStorageDataAccess.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src}	object_storage/mongodb/MongoDBObjectStorageDataAccess.cpp
    
                            object_storage/mongodb/MongoDBObjectStorageDriver.cpp
                            object_storage/mongodb/ShardKeyManagement.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    #mongodb new driver version
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src} object_storage/mongodb_3/MongoDBObjectStorageDataAccess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            object_storage/mongodb_3/NewMongoDBObjectStorageDriver.cpp
                            object_storage/mongodb_3/ShardKeyManagement.cpp)
    
     SET(posix_src  object_storage/posixFile/PosixFile.cpp
     object_storage/posixFile/PosixFileObjectStorageDriver.cpp
     object_storage/posixFile/BsonFStream.cpp object_storage/posixFile/FileLock.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(api_src  ${api_src} object_storage/influxDB/InfluxDB.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    object_storage/influxDB/InfluxDBLogStorageDriver.cpp 
    #object_storage/influxDB/influxdb-cpp-rest/influxdb_simple_async_api.cpp 
    #object_storage/influxDB/influxdb-cpp-rest/influxdb_raw_db.cpp
    # object_storage/influxDB/influxdb-cpp-rest/influxdb_raw_db_utf8.cpp
    )
    
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    #hybrid base driver
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    #SET(cnd_src  ${cnd_src} ${api_src} object_storage/hybdriver/ShardKeyManagement.cpp
    #                        object_storage/hybdriver/HybBaseDriver.cpp
    #                        object_storage/hybdriver/HybBaseDataAccess.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    
    #hybrid cassasndra storage driver
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    # SET(cnd_src  ${cnd_src} object_storage/hybdriver/cassandra/CassHybObjectStorageDriver.cpp
    #                         object_storage/hybdriver/cassandra/CassHybDataAccess.cpp)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    #Worker
    SET(cnd_src  ${cnd_src}	worker/DataWorker.cpp
                            worker/DeviceSharedDataWorker.cpp)
    
    
    SET(cnd_src  ${cnd_src}	batch/MDSBatchExecutor.cpp
                            batch/MDSBatchCommand.cpp)
    
    SET(cnd_src  ${cnd_src}	batch/agent/AgentAckCommand.cpp
                            batch/agent/AgentProcessController.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            batch/agent/AgentCheckAgentProcess.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            batch/agent/AgentRemoveNodeSafety.cpp
                            batch/agent/AgentLoggingNodeManagement.cpp)
    
    SET(cnd_src  ${cnd_src}	batch/node/UpdatePropertyCommand.cpp
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
                            batch/node/SubmitBatchCommand.cpp
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
                            batch/node/SendRpcCommand.cpp batch/node/NodeAckCommand.cpp)
    
    SET(cnd_src  ${cnd_src}	batch/unit_server/UnitServerAckBatchCommand.cpp
                            batch/unit_server/LoadUnloadControlUnit.cpp)
    
    
    SET(cnd_src  ${cnd_src}	batch/control_unit/RegistrationAckBatchCommand.cpp
    
                            batch/control_unit/IDSTControlUnitBatchCommand.cpp
    
                            batch/control_unit/ApplyChangeSet.cpp
                            batch/control_unit/RecoverError.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    SET(cnd_src  ${cnd_src}	batch/script/LoadInstanceOnUnitServer.cpp
                            batch/script/UpdateScriptOnNode.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    SET(cnd_src  ${cnd_src}	batch/general/RestoreSnapshotBatch.cpp
                            batch/general/CreateSnapshotBatch.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    if(CHAOS_PROMETHEUS)
    SET(cnd_src  ${cnd_src}	worker/DeviceSharedDataWorkerMetricCollector.cpp
    
                            cache_system/CacheDriverMetricCollector.cpp)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    ENDIF(CHAOS_PROMETHEUS)
    
    
    IF (BUILD_FORCE_STATIC  )
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      ADD_LIBRARY(chaos_cds STATIC ${cnd_src} ${api_src} ${service_src} ${posix_src})
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      TARGET_LINK_LIBRARIES(chaos_cds PRIVATE chaos_common couchbaseS.a mongoclient mongocxx bsoncxx )
    
    ELSE (BUILD_FORCE_STATIC)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
      ADD_LIBRARY(chaos_cds SHARED    ${posix_src} ${service_src}  ${api_src} ${cnd_src}) #   
     # set_target_properties(chaos_cds PROPERTIES VERSION 1.0.0 SOVERSION 1)
    
    ENDIF (BUILD_FORCE_STATIC)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    ADD_EXECUTABLE(${PROJECT_NAME} main.cpp )
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    #add dependency
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    # add_dependencies(chaos_cds mongo-cxx-driver)
    # add_dependencies(chaos_cds couchbase-c-driver)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    # add_dependencies(${PROJECT_NAME} mongo-cxx-driver)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    # add_dependencies(${PROJECT_NAME} cassandra-driver)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    FILE(GLOB files "../chaos_service_common/data/node/*.h")
    INSTALL(FILES ${files} DESTINATION include/chaos_service_common/data/node/)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    FILE(GLOB files "../chaos_service_common/*.h")
    INSTALL(FILES ${files} DESTINATION include/chaos_service_common/)
    
    # CheckConfigureBuild(couchbaseS libcouchbase:chaos-0.1 "-DLCB_NO_SSL=true;-DLCB_NO_TESTS=true;-DLCB_NO_TOOLS=true;-DLCB_NO_PLUGINS=true" https://github.com/amichelotti)
    
    # CheckConfigureBuild(couchbaseS libcouchbase:release-2.10 "-DLCB_NO_SSL=true;-DLCB_NO_TESTS=true;-DLCB_NO_TOOLS=true;-DLCB_NO_PLUGINS=true" https://github.com/couchbase)
    
    IF(BUILD_FORCE_STATIC)
      SET(CMAKE_EXE_LINKER_FLAGS "-static -Wl,--whole-archive -lchaos_common -Wl,--no-whole-archive")
    ENDIF()
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(BUILD_LIBRARY  boost_iostreams boost_regex)
    # SET(BUILD_LIBRARY )
    
    
    SET(BUILD_LIBRARY ${BUILD_LIBRARY} chaos_common)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    # SET(BUILD_LIBRARY ${BUILD_LIBRARY} boost_random)
    
    SET(BUILD_LIBRARY ${BUILD_LIBRARY} couchbase)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    SET(BUILD_LIBRARY ${BUILD_LIBRARY} mongoclient )
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    
    
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    #IF(CERN_ROOT)
    #SET(BUILD_LIBRARY ${BUILD_LIBRARY} chaos_driver_misc_cernroot Tree tbb)
    #ENDIF()
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    MESG("Enable link to mongocxx and bsoncxx library")
    SET(BUILD_LIBRARY ${BUILD_LIBRARY} mongocxx)
    SET(BUILD_LIBRARY ${BUILD_LIBRARY} bsoncxx)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    target_compile_definitions(${PROJECT_NAME} PRIVATE USE_MONGODB3_DRIVER=1)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    target_compile_definitions(chaos_cds PRIVATE USE_MONGODB3_DRIVER=1)
    
    Claudio Bisegni's avatar
    Claudio Bisegni committed
    # MESG("Enable link to cassandra and bsoncxx library")
    # SET(BUILD_LIBRARY ${BUILD_LIBRARY} uv)
    # SET(BUILD_LIBRARY ${BUILD_LIBRARY} cassandra)
    # target_compile_definitions(${PROJECT_NAME} PRIVATE USE_CASSANDRA_DRIVER=1)
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    TARGET_LINK_LIBRARIES(chaos_cds PUBLIC ${BUILD_LIBRARY} PRIVATE jsoncpp.a )
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
    TARGET_LINK_LIBRARIES(${PROJECT_NAME} PUBLIC chaos_cds ${BUILD_LIBRARY} )
    
    #INSTALL_TARGETS(/bin ${PROJECT_NAME})
    INSTALL(TARGETS ${PROJECT_NAME}
            DESTINATION "bin"
    
            PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)
    INSTALL(TARGETS chaos_cds
            DESTINATION "lib"
    
    Andrea Michelotti's avatar
    Andrea Michelotti committed
            PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE)