#- * - mode : CMAKE; - * - include_directories(.) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin/") ################################################################################ ## BISON/FLEX ################################################################################ #note that we check - in the generated FLEX / BISON files, therefore they are #generate inside the source tree if (USE_MAINTAINER_MODE AND NOT MSVC) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${FLEX_EXECUTABLE} -L -oAql/tokens.cpp Aql/tokens.ll MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/Aql/tokens.ll VERBATIM ) add_custom_command( OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.cpp WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} COMMAND ${CMAKE_SOURCE_DIR}/utils/bison-c.sh ${BISON_EXECUTABLE} Aql/grammar.cpp Aql/grammar.y MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/Aql/grammar.y VERBATIM ) add_custom_target(clean_aql_autogenerated COMMAND rm -f Aql/tokens.cpp Aql/tokens.h Aql/grammar.cpp Aql/grammar.h ) list(APPEND CLEAN_AUTOGENERATED_FILES clean_aql_autogenerated) set(CLEAN_AUTOGENERATED_FILES ${CLEAN_AUTOGENERATED_FILES} PARENT_SCOPE) endif () if (CMAKE_COMPILER_IS_GNUCC) set_source_files_properties(Aql/tokens.cpp PROPERTIES COMPILE_FLAGS -Wno-sign-compare) endif () ################################################################################ ## IResearch ################################################################################ find_package(IResearch REQUIRED) add_library(arango_iresearch STATIC IResearch/ApplicationServerHelper.h IResearch/ApplicationServerHelper.cpp IResearch/Containers.cpp IResearch/Containers.h IResearch/IResearchAnalyzerFeature.cpp IResearch/IResearchAnalyzerFeature.h IResearch/IResearchCommon.cpp IResearch/IResearchCommon.h IResearch/IResearchKludge.cpp IResearch/IResearchKludge.h IResearch/IResearchLink.cpp IResearch/IResearchLink.h IResearch/IResearchLinkCoordinator.cpp IResearch/IResearchLinkCoordinator.h IResearch/IResearchLinkHelper.cpp IResearch/IResearchLinkHelper.h IResearch/IResearchLinkMeta.cpp IResearch/IResearchLinkMeta.h IResearch/IResearchMMFilesLink.cpp IResearch/IResearchMMFilesLink.h IResearch/IResearchRocksDBLink.cpp IResearch/IResearchRocksDBLink.h IResearch/IResearchRocksDBRecoveryHelper.cpp IResearch/IResearchRocksDBRecoveryHelper.h IResearch/IResearchView.cpp IResearch/IResearchView.h IResearch/IResearchVPackComparer.cpp IResearch/IResearchVPackComparer.h IResearch/IResearchViewSort.cpp IResearch/IResearchViewSort.h IResearch/IResearchViewCoordinator.cpp IResearch/IResearchViewCoordinator.h IResearch/IResearchExpressionContext.cpp IResearch/IResearchExpressionContext.h IResearch/IResearchViewMeta.cpp IResearch/IResearchViewMeta.h IResearch/IResearchFeature.cpp IResearch/IResearchFeature.h IResearch/IResearchDocument.cpp IResearch/IResearchDocument.h IResearch/IResearchPrimaryKeyFilter.cpp IResearch/IResearchPrimaryKeyFilter.h IResearch/IResearchFilterFactory.cpp IResearch/IResearchFilterFactory.h IResearch/IResearchOrderFactory.cpp IResearch/IResearchOrderFactory.h IResearch/VelocyPackHelper.cpp IResearch/VelocyPackHelper.h IResearch/ExpressionFilter.cpp IResearch/ExpressionFilter.h IResearch/AqlHelper.cpp IResearch/AqlHelper.h RestHandler/RestAnalyzerHandler.cpp RestHandler/RestAnalyzerHandler.h ) target_compile_definitions(arango_iresearch PUBLIC "$<$:IRESEARCH_DEBUG=1>" ) target_include_directories(arango_iresearch PUBLIC ${IRESEARCH_INCLUDE} ) if (USE_ENTERPRISE) target_include_directories(arango_iresearch PUBLIC "${PROJECT_SOURCE_DIR}/${ENTERPRISE_INCLUDE_DIR}" ) endif() if(MSVC) set(IRESEARCH_TARGET_DEPENDENCY iresearch-static-scrt) # use static + staticCRT to match ArangoDB else() set(IRESEARCH_TARGET_DEPENDENCY iresearch-static) # use static to match ArangoDB endif() target_link_libraries(arango_iresearch ${IRESEARCH_TARGET_DEPENDENCY} s2 # needed for some includes boost_locale # required by iResearch ) add_dependencies(arango_iresearch ${IRESEARCH_TARGET_DEPENDENCY} v8_build # for ICU required by iResearch ) ################################################################################ # llhttp ################################################################################ SET(LLHTTP_SOURCES ${PROJECT_SOURCE_DIR}/3rdParty/llhttp/src/api.c ${PROJECT_SOURCE_DIR}/3rdParty/llhttp/src/http.c ${PROJECT_SOURCE_DIR}/3rdParty/llhttp/src/llhttp.c ) ################################################################################ ## arangod ################################################################################ if (MSVC AND NOT(SKIP_PACKAGING)) generate_product_version(ProductVersionFiles NAME arangod FILE_DESCRIPTION ${ARANGODB_FRIENDLY_STRING} ICON ${ARANGO_ICON} VERSION_MAJOR ${CPACK_PACKAGE_VERSION_MAJOR} VERSION_MINOR ${CPACK_PACKAGE_VERSION_MINOR} VERSION_PATCH ${CPACK_PACKAGE_VERSION_PATCH} VERSION_REVISION ${BUILD_ID} ) endif () if (USE_ENTERPRISE) set(ENTERPRISE_FILES "") else () set(ENTERPRISE_FILES Utils/Events.cpp ) endif () set(LIB_ARANGO_GRAPH_SOURCES Aql/PruneExpressionEvaluator.cpp Cluster/CallbackGuard.cpp Cluster/ClusterEdgeCursor.cpp Cluster/ClusterTraverser.cpp Cluster/TraverserEngine.cpp Cluster/TraverserEngineRegistry.cpp Graph/AttributeWeightShortestPathFinder.cpp Graph/BaseOptions.cpp Graph/BreadthFirstEnumerator.cpp Graph/ClusterTraverserCache.cpp Graph/ConstantWeightShortestPathFinder.cpp Graph/Graph.cpp Graph/GraphManager.cpp Graph/GraphOperations.cpp Graph/KShortestPathsFinder.cpp Graph/NeighborsEnumerator.cpp Graph/PathEnumerator.cpp Graph/ShortestPathFinder.cpp Graph/ShortestPathOptions.cpp Graph/ShortestPathResult.cpp Graph/SingleServerEdgeCursor.cpp Graph/SingleServerTraverser.cpp Graph/Traverser.cpp Graph/TraverserCache.cpp Graph/TraverserCacheFactory.cpp Graph/TraverserDocumentCache.cpp Graph/TraverserOptions.cpp InternalRestHandler/InternalRestTraverserHandler.cpp RestHandler/RestGraphHandler.cpp RestServer/TraverserEngineRegistryFeature.cpp ) set(LIB_ARANGO_PREGEL_SOURCES Pregel/AggregatorHandler.cpp Pregel/AlgoRegistry.cpp Pregel/Algos/AsyncSCC.cpp Pregel/Algos/ConnectedComponents.cpp Pregel/Algos/DMID/DMID.cpp Pregel/Algos/EffectiveCloseness/EffectiveCloseness.cpp Pregel/Algos/EffectiveCloseness/HLLCounter.cpp Pregel/Algos/HITS.cpp Pregel/Algos/LabelPropagation.cpp Pregel/Algos/LineRank.cpp Pregel/Algos/PageRank.cpp Pregel/Algos/RecoveringPageRank.cpp Pregel/Algos/SCC.cpp Pregel/Algos/SLPA.cpp Pregel/Algos/SSSP.cpp Pregel/Algos/ShortestPath.cpp Pregel/Conductor.cpp Pregel/GraphStore.cpp Pregel/IncomingCache.cpp Pregel/IndexHelpers.cpp Pregel/OutgoingCache.cpp Pregel/PregelFeature.cpp Pregel/Recovery.cpp Pregel/Utils.cpp Pregel/Worker-templates-algorithms.cpp Pregel/Worker-templates-native-types.cpp Pregel/Worker.cpp Pregel/WorkerConfig.cpp RestHandler/RestControlPregelHandler.cpp RestHandler/RestPregelHandler.cpp ) set(LIB_ARANGO_AQL_SOURCES Aql/Aggregator.cpp Aql/AllRowsFetcher.cpp Aql/AqlFunctionFeature.cpp Aql/AqlItemBlock.cpp Aql/AqlItemBlockManager.cpp Aql/AqlItemBlockUtils.cpp Aql/AqlItemMatrix.cpp Aql/AqlResult.cpp Aql/AqlTransaction.cpp Aql/AqlValue.cpp Aql/AqlValueGroup.cpp Aql/AqlValueMaterializer.cpp Aql/Arithmetic.cpp Aql/Ast.cpp Aql/AstHelper.cpp Aql/AstNode.cpp Aql/AttributeAccessor.cpp Aql/BaseExpressionContext.cpp Aql/BindParameters.cpp Aql/BlockCollector.cpp Aql/BlocksWithClients.cpp Aql/CalculationExecutor.cpp Aql/ClusterNodes.cpp Aql/CollectNode.cpp Aql/CollectOptions.cpp Aql/Collection.cpp Aql/CollectionAccessingNode.cpp Aql/Collections.cpp Aql/Condition.cpp Aql/ConditionFinder.cpp Aql/ConstFetcher.cpp Aql/ConstrainedSortExecutor.cpp Aql/CostEstimate.cpp Aql/CountCollectExecutor.cpp Aql/DependencyProxy.cpp Aql/DistinctCollectExecutor.cpp Aql/DistributeConsumerNode.cpp Aql/DistributeExecutor.cpp Aql/DocumentExpressionContext.cpp Aql/DocumentProducingHelper.cpp Aql/DocumentProducingNode.cpp Aql/EngineInfoContainerCoordinator.cpp Aql/EngineInfoContainerDBServerServerBased.cpp Aql/EnumerateCollectionExecutor.cpp Aql/EnumerateListExecutor.cpp Aql/ExecutionBlock.cpp Aql/ExecutionBlockImpl.cpp Aql/ExecutionEngine.cpp Aql/ExecutionNode.cpp Aql/ExecutionPlan.cpp Aql/ExecutionState.cpp Aql/ExecutionStats.cpp Aql/ExecutorExpressionContext.cpp Aql/ExecutorInfos.cpp Aql/Expression.cpp Aql/FilterExecutor.cpp Aql/FixedVarExpressionContext.cpp Aql/Function.cpp Aql/Functions.cpp Aql/GraphNode.cpp Aql/Graphs.cpp Aql/HashedCollectExecutor.cpp Aql/IResearchViewExecutor.cpp Aql/IResearchViewNode.cpp Aql/IResearchViewOptimizerRules.cpp Aql/IdExecutor.cpp Aql/InAndOutRowExpressionContext.cpp Aql/IndexExecutor.cpp Aql/IndexHint.cpp Aql/IndexNode.cpp Aql/IndexNodeOptimizerRules.cpp Aql/InputAqlItemRow.cpp Aql/InsertModifier.cpp Aql/KShortestPathsExecutor.cpp Aql/KShortestPathsNode.cpp Aql/LateMaterializedOptimizerRulesCommon.cpp Aql/LimitExecutor.cpp Aql/MaterializeExecutor.cpp Aql/ModificationExecutor.cpp Aql/ModificationExecutorHelpers.cpp Aql/ModificationExecutorInfos.cpp Aql/ModificationNodes.cpp Aql/ModificationOptions.cpp Aql/MultiDependencySingleRowFetcher.cpp Aql/NoResultsExecutor.cpp Aql/NodeFinder.cpp Aql/Optimizer.cpp Aql/OptimizerRules.cpp Aql/OptimizerRulesCluster.cpp Aql/OptimizerRulesFeature.cpp Aql/OptimizerRulesReplaceFunctions.cpp Aql/OutputAqlItemRow.cpp Aql/Parser.cpp Aql/Quantifier.cpp Aql/Query.cpp Aql/QueryCache.cpp Aql/QueryExecutionState.cpp Aql/QueryExpressionContext.cpp Aql/QueryList.cpp Aql/QueryOptions.cpp Aql/QueryProfile.cpp Aql/QueryRegistry.cpp Aql/QueryResources.cpp Aql/QuerySnippet.cpp Aql/QueryString.cpp Aql/Range.cpp Aql/RemoveModifier.cpp Aql/RegexCache.cpp Aql/RegisterPlan.cpp Aql/RemoteExecutor.cpp Aql/RestAqlHandler.cpp Aql/ReturnExecutor.cpp Aql/ScatterExecutor.cpp Aql/Scopes.cpp Aql/ShadowAqlItemRow.cpp Aql/ShardLocking.cpp Aql/SharedAqlItemBlockPtr.cpp Aql/SharedQueryState.cpp Aql/ShortStringStorage.cpp Aql/ShortestPathExecutor.cpp Aql/ShortestPathNode.cpp Aql/SimpleModifier.cpp Aql/SingleRemoteModificationExecutor.cpp Aql/SingleRowFetcher.cpp Aql/SortCondition.cpp Aql/SortExecutor.cpp Aql/SortNode.cpp Aql/SortRegister.cpp Aql/SortedCollectExecutor.cpp Aql/SortingGatherExecutor.cpp Aql/SubqueryEndExecutionNode.cpp Aql/SubqueryExecutor.cpp Aql/SubqueryEndExecutor.cpp Aql/SubqueryStartExecutionNode.cpp Aql/SubqueryStartExecutor.cpp Aql/TraversalConditionFinder.cpp Aql/TraversalExecutor.cpp Aql/TraversalNode.cpp Aql/ParallelUnsortedGatherExecutor.cpp Aql/UnsortedGatherExecutor.cpp Aql/UpdateReplaceModifier.cpp Aql/UpsertModifier.cpp Aql/V8Executor.cpp Aql/Variable.cpp Aql/VariableGenerator.cpp Aql/grammar.cpp Aql/tokens.cpp ) set(LIB_ARANGO_VOCBASE_SOURCES Aql/PlanCache.cpp Aql/QueryCursor.cpp Replication/DatabaseReplicationApplier.cpp Utils/CollectionNameResolver.cpp Utils/CursorRepository.cpp Utils/DatabaseGuard.cpp Utils/SingleCollectionTransaction.cpp VocBase/KeyGenerator.cpp VocBase/KeyLockInfo.cpp VocBase/LogicalCollection.cpp VocBase/LogicalDataSource.cpp VocBase/LogicalView.cpp VocBase/ManagedDocumentResult.cpp VocBase/Methods/AqlUserFunctions.cpp VocBase/Methods/Collections.cpp VocBase/Methods/Databases.cpp VocBase/Methods/Indexes.cpp VocBase/Methods/Tasks.cpp VocBase/Methods/Transactions.cpp VocBase/Methods/Ttl.cpp VocBase/Methods/Upgrade.cpp VocBase/Methods/UpgradeTasks.cpp VocBase/Methods/Version.cpp VocBase/ticks.cpp VocBase/vocbase.cpp VocBase/VocbaseInfo.cpp ) set(LIB_ARANGO_UTILS_SOURCES Utils/CollectionKeys.cpp Utils/CollectionKeysRepository.cpp Utils/ExecContext.cpp Utils/FlushThread.cpp Utils/OperationCursor.cpp Utils/UrlHelper.cpp ${ENTERPRISE_FILES} ) set(LIB_ARANGO_STORAGE_ENGINE_SOURCES StorageEngine/EngineSelectorFeature.cpp StorageEngine/HotBackup.cpp StorageEngine/PhysicalCollection.cpp StorageEngine/RocksDBOptionFeature.cpp StorageEngine/TransactionCollection.cpp StorageEngine/TransactionState.cpp ) set(LIB_ARANGO_STORAGE_ENGINE_COMMON_SOURCES StorageEngine/WalAccess.cpp ) set(LIB_ARANGO_INDEXES_SOURCES GeoIndex/Index.cpp GeoIndex/Near.cpp Indexes/Index.cpp Indexes/IndexFactory.cpp Indexes/IndexIterator.cpp Indexes/SimpleAttributeEqualityMatcher.cpp Indexes/SortedIndexAttributeMatcher.cpp ) set(LIB_ARANGO_CACHE_SOURCES Cache/BucketState.cpp Cache/Cache.cpp Cache/CacheManagerFeature.cpp Cache/CacheManagerFeatureThreads.cpp Cache/CachedValue.cpp Cache/Finding.cpp Cache/Manager.cpp Cache/ManagerTasks.cpp Cache/Metadata.cpp Cache/PlainBucket.cpp Cache/PlainCache.cpp Cache/Rebalancer.cpp Cache/Table.cpp Cache/Transaction.cpp Cache/TransactionManager.cpp Cache/TransactionalBucket.cpp Cache/TransactionalCache.cpp ) set(LIB_ARANGO_REPLICATION_SOURCES Replication/DatabaseInitialSyncer.cpp Replication/DatabaseTailingSyncer.cpp Replication/GlobalInitialSyncer.cpp Replication/GlobalReplicationApplier.cpp Replication/GlobalTailingSyncer.cpp Replication/InitialSyncer.cpp Replication/ReplicationApplier.cpp Replication/ReplicationApplierConfiguration.cpp Replication/ReplicationApplierState.cpp Replication/ReplicationClients.cpp Replication/ReplicationFeature.cpp Replication/Syncer.cpp Replication/SyncerId.cpp Replication/TailingSyncer.cpp Replication/common-defines.cpp Replication/utilities.cpp ) set (LIB_ARANGO_METRICS_SOURCES RestServer/Metrics.cpp RestServer/MetricsFeature.cpp RestHandler/RestMetricsHandler.cpp ) set(LIB_ARANGO_AGENCY_SOURCES Agency/AgentConfiguration.cpp Agency/ResignLeadership.cpp Agency/ActiveFailoverJob.cpp Agency/AddFollower.cpp Agency/AgencyComm.cpp Agency/AgencyFeature.cpp Agency/Agent.cpp Agency/AgentCallback.cpp Agency/CleanOutServer.cpp Agency/Compactor.cpp Agency/Constituent.cpp Agency/FailedFollower.cpp Agency/FailedLeader.cpp Agency/FailedServer.cpp Agency/Inception.cpp Agency/Job.cpp Agency/JobContext.cpp Agency/MoveShard.cpp Agency/Node.cpp Agency/RemoveFollower.cpp Agency/RestAgencyHandler.cpp Agency/RestAgencyPrivHandler.cpp Agency/State.cpp Agency/Store.cpp Agency/Supervision.cpp Agency/v8-agency.cpp ) set(LIB_ARANGO_V8SERVER_SOURCES Transaction/V8Context.cpp V8Server/FoxxQueuesFeature.cpp V8Server/V8Context.cpp V8Server/V8DealerFeature.cpp V8Server/v8-actions.cpp V8Server/v8-analyzers.cpp V8Server/v8-collection-util.cpp V8Server/v8-collection.cpp V8Server/v8-dispatcher.cpp V8Server/v8-general-graph.cpp V8Server/v8-query.cpp V8Server/v8-replication.cpp V8Server/v8-statistics.cpp V8Server/v8-ttl.cpp V8Server/v8-user-functions.cpp V8Server/v8-user-structures.cpp V8Server/v8-users.cpp V8Server/v8-util.cpp V8Server/v8-views.cpp V8Server/v8-vocbase.cpp V8Server/v8-voccursor.cpp V8Server/v8-vocindex.cpp ) set(LIB_ARANGO_NETWORK_SOURCES Network/ClusterUtils.cpp Network/ConnectionPool.cpp Network/Methods.cpp Network/NetworkFeature.cpp Network/Utils.cpp ) set(LIB_ARANGOSERVER_SOURCES Actions/ActionFeature.cpp Actions/RestActionHandler.cpp Actions/actions.cpp Auth/Common.cpp Auth/TokenCache.cpp Auth/User.cpp Auth/UserManager.cpp Cluster/Action.cpp Cluster/ActionBase.cpp Cluster/ActionDescription.cpp Cluster/AgencyCallback.cpp Cluster/AgencyCallbackRegistry.cpp Cluster/AgencyPaths.cpp Cluster/ClusterCollectionCreationInfo.cpp Cluster/ClusterComm.cpp Cluster/ClusterFeature.cpp Cluster/ClusterHelpers.cpp Cluster/ClusterInfo.cpp Cluster/ClusterRepairDistributeShardsLike.cpp Cluster/ClusterRepairOperations.cpp Cluster/ClusterUpgradeFeature.cpp Cluster/ClusterTrxMethods.cpp Cluster/ClusterTypes.cpp Cluster/CreateCollection.cpp Cluster/CreateDatabase.cpp Cluster/CriticalThread.cpp Cluster/DBServerAgencySync.cpp Cluster/DropCollection.cpp Cluster/DropDatabase.cpp Cluster/DropIndex.cpp Cluster/EnsureIndex.cpp Cluster/FollowerInfo.cpp Cluster/HeartbeatThread.cpp Cluster/Maintenance.cpp Cluster/MaintenanceFeature.cpp Cluster/MaintenanceRestHandler.cpp Cluster/MaintenanceWorker.cpp Cluster/NonAction.cpp Cluster/PathComponent.cpp Cluster/RebootTracker.cpp Cluster/ReplicationTimeoutFeature.cpp Cluster/ResignShardLeadership.cpp Cluster/RestAgencyCallbacksHandler.cpp Cluster/RestClusterHandler.cpp Cluster/ServerState.cpp Cluster/SynchronizeShard.cpp Cluster/TakeoverShardLeadership.cpp Cluster/UpdateCollection.cpp Cluster/v8-cluster.cpp FeaturePhases/AgencyFeaturePhase.cpp FeaturePhases/AqlFeaturePhase.cpp FeaturePhases/BasicFeaturePhaseServer.cpp FeaturePhases/ClusterFeaturePhase.cpp FeaturePhases/DatabaseFeaturePhase.cpp FeaturePhases/FinalFeaturePhase.cpp FeaturePhases/FoxxFeaturePhase.cpp FeaturePhases/ServerFeaturePhase.cpp FeaturePhases/V8FeaturePhase.cpp GeneralServer/Acceptor.cpp GeneralServer/AcceptorTcp.cpp GeneralServer/AsyncJobManager.cpp GeneralServer/AuthenticationFeature.cpp GeneralServer/CommTask.cpp GeneralServer/GeneralCommTask.cpp GeneralServer/GeneralServer.cpp GeneralServer/GeneralServerFeature.cpp GeneralServer/HttpCommTask.cpp GeneralServer/IoContext.cpp GeneralServer/RestHandler.cpp GeneralServer/RestHandlerFactory.cpp GeneralServer/ServerSecurityFeature.cpp GeneralServer/SslServerFeature.cpp GeneralServer/Task.cpp GeneralServer/VstCommTask.cpp RestHandler/RestAdminDatabaseHandler.cpp RestHandler/RestAdminExecuteHandler.cpp RestHandler/RestAdminLogHandler.cpp RestHandler/RestAdminRoutingHandler.cpp RestHandler/RestAdminServerHandler.cpp RestHandler/RestAdminStatisticsHandler.cpp RestHandler/RestAqlFunctionsHandler.cpp RestHandler/RestAqlReloadHandler.cpp RestHandler/RestAqlUserFunctionsHandler.cpp RestHandler/RestAuthHandler.cpp RestHandler/RestAuthReloadHandler.cpp RestHandler/RestBaseHandler.cpp RestHandler/RestBatchHandler.cpp RestHandler/RestCursorHandler.cpp RestHandler/RestDatabaseHandler.cpp RestHandler/RestDebugHandler.cpp RestHandler/RestDocumentHandler.cpp RestHandler/RestEdgesHandler.cpp RestHandler/RestEndpointHandler.cpp RestHandler/RestEngineHandler.cpp RestHandler/RestExplainHandler.cpp RestHandler/RestImportHandler.cpp RestHandler/RestIndexHandler.cpp RestHandler/RestJobHandler.cpp RestHandler/RestPleaseUpgradeHandler.cpp RestHandler/RestQueryCacheHandler.cpp RestHandler/RestQueryHandler.cpp RestHandler/RestRepairHandler.cpp RestHandler/RestShutdownHandler.cpp RestHandler/RestSimpleHandler.cpp RestHandler/RestSimpleQueryHandler.cpp RestHandler/RestStatusHandler.cpp RestHandler/RestTasksHandler.cpp RestHandler/RestTimeHandler.cpp RestHandler/RestTransactionHandler.cpp RestHandler/RestTtlHandler.cpp RestHandler/RestUploadHandler.cpp RestHandler/RestUsersHandler.cpp RestHandler/RestVersionHandler.cpp RestHandler/RestViewHandler.cpp RestHandler/RestVocbaseBaseHandler.cpp RestHandler/RestWalAccessHandler.cpp RestServer/AqlFeature.cpp RestServer/BootstrapFeature.cpp RestServer/CheckVersionFeature.cpp RestServer/ConsoleFeature.cpp RestServer/ConsoleThread.cpp RestServer/DatabaseFeature.cpp RestServer/DatabasePathFeature.cpp RestServer/EndpointFeature.cpp RestServer/FileDescriptorsFeature.cpp RestServer/FlushFeature.cpp RestServer/FortuneFeature.cpp RestServer/FrontendFeature.cpp RestServer/InitDatabaseFeature.cpp RestServer/LanguageCheckFeature.cpp RestServer/LockfileFeature.cpp RestServer/QueryRegistryFeature.cpp RestServer/ScriptFeature.cpp RestServer/ServerFeature.cpp RestServer/ServerIdFeature.cpp RestServer/SystemDatabaseFeature.cpp RestServer/TtlFeature.cpp RestServer/UpgradeFeature.cpp RestServer/ViewTypesFeature.cpp RestServer/VocbaseContext.cpp Scheduler/Scheduler.cpp Scheduler/SchedulerFeature.cpp Scheduler/SupervisedScheduler.cpp Sharding/ShardDistributionReporter.cpp Sharding/ShardingFeature.cpp Sharding/ShardingInfo.cpp Sharding/ShardingStrategy.cpp Sharding/ShardingStrategyDefault.cpp Statistics/ConnectionStatistics.cpp Statistics/Descriptions.cpp Statistics/RequestStatistics.cpp Statistics/ServerStatistics.cpp Statistics/StatisticsFeature.cpp Statistics/StatisticsWorker.cpp Transaction/ClusterUtils.cpp Transaction/Context.cpp Transaction/CountCache.cpp Transaction/Helpers.cpp Transaction/Manager.cpp Transaction/ManagerFeature.cpp Transaction/Methods.cpp Transaction/Options.cpp Transaction/SmartContext.cpp Transaction/StandaloneContext.cpp Transaction/Status.cpp ) set(LIB_ARANGO_COMMON_REST_HANDLER_SOURCES RestHandler/RestCollectionHandler.cpp RestHandler/RestReplicationHandler.cpp ) set(LIB_ARANGO_CLUSTER_METHODS_SOURCES Cluster/ClusterMethods.cpp Cluster/ClusterTtlMethods.cpp ) if (USE_MAINTAINER_MODE) set(LIB_ARANGOSERVER_SOURCES ${LIB_ARANGOSERVER_SOURCES} RestHandler/RestTestHandler.cpp) endif() if (NOT MSVC) set(LIB_ARANGOSERVER_SOURCES ${LIB_ARANGOSERVER_SOURCES} GeneralServer/AcceptorUnixDomain.cpp) endif() include(ClusterEngine/CMakeLists.txt) include(RocksDBEngine/CMakeLists.txt) include(MMFiles/CMakeLists.txt) add_library(arango_graph STATIC ${LIB_ARANGO_GRAPH_SOURCES} ${ADDITIONAL_LIB_ARANGO_GRAPH_SOURCES} ) add_library(arango_pregel STATIC ${LIB_ARANGO_PREGEL_SOURCES} ) add_library(arango_aql STATIC ${LIB_ARANGO_AQL_SOURCES} ${ADDITIONAL_LIB_ARANGO_AQL_SOURCES} ) add_library(arango_vocbase STATIC ${LIB_ARANGO_VOCBASE_SOURCES} ${ADDITIONAL_LIB_ARANGO_VOCBASE_SOURCES} ) add_library(arango_v8server STATIC ${LIB_ARANGO_V8SERVER_SOURCES} ) add_library(arango_utils STATIC ${LIB_ARANGO_UTILS_SOURCES} ) add_library(arango_storage_engine STATIC ${LIB_ARANGO_STORAGE_ENGINE_SOURCES} ) # arango_storage_engine uses arango_mmfiles and arango_rocksdb. # In turn, arango_storage_engine_common provides something for both. add_library(arango_storage_engine_common STATIC ${LIB_ARANGO_STORAGE_ENGINE_COMMON_SOURCES} ) add_library(arango_indexes STATIC ${LIB_ARANGO_INDEXES_SOURCES} ) add_library(arango_cache STATIC ${LIB_ARANGO_CACHE_SOURCES} ) add_library(arango_replication STATIC ${LIB_ARANGO_REPLICATION_SOURCES} ) add_library(arango_metrics STATIC ${LIB_ARANGO_METRICS_SOURCES} ) add_library(arango_agency STATIC ${LIB_ARANGO_AGENCY_SOURCES} ) add_library(arangoserver STATIC ${LIB_ARANGOSERVER_SOURCES} ${ADDITIONAL_LIB_ARANGOSERVER_SOURCES} ${ProductVersionFiles} ) add_library(arango_network STATIC ${LIB_ARANGO_NETWORK_SOURCES} ) add_library(arango_mmfiles STATIC ${MMFILES_SOURCES} ) add_library(arango_rocksdb STATIC ${ROCKSDB_SOURCES} ${ADDITIONAL_LIB_ARANGO_ROCKSDB_SOURCES} ) add_library(arango_cluster_engine STATIC ${CLUSTER_ENGINE_SOURCES} ) add_library(arango_common_rest_handler STATIC ${LIB_ARANGO_COMMON_REST_HANDLER_SOURCES} ) add_library(arango_cluster_methods STATIC ${LIB_ARANGO_CLUSTER_METHODS_SOURCES} ${ADDITIONAL_LIB_ARANGO_CLUSTER_METHODS_SOURCES} ) add_library(llhttp STATIC ${LLHTTP_SOURCES} ) target_include_directories(llhttp PUBLIC "${PROJECT_SOURCE_DIR}/3rdParty/llhttp/include") # Note that arango_geo publicly exports the /J compile option for MSVC, because # s2 requires /J to be set on Windows. # /J makes char unsigned. # Thus all libraries depending on arango_geo will be compiled with /J (and need # to, if they include s2 headers). # I think it would safer to compile everything with /J, so we would not get a # mixture of signed and unsigned char interpretations in the same binary. # However, just setting # add_compile_options(/J) # does not work, either, because # C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\atlmfc\include\atldef.h(94): fatal error C1189: #error: ATL does not support compilation with /J or _CHAR_UNSIGNED flag enabled [C:\vm04-windows\oskar\work\ArangoDB\build\lib\arango.vcxproj] # . target_link_libraries(arango_agency arango) target_link_libraries(arango_agency arango_iresearch) target_link_libraries(arango_agency arango_metrics) target_link_libraries(arango_aql arango_geo) target_link_libraries(arango_aql arango_graph) target_link_libraries(arango_aql arango_indexes) target_link_libraries(arango_aql arango_iresearch) target_link_libraries(arango_aql arango_network) target_link_libraries(arango_cache arango) target_link_libraries(arango_cache boost_system) target_link_libraries(arango_cluster_engine arango_indexes) target_link_libraries(arango_cluster_engine boost_boost) target_link_libraries(arango_cluster_methods arango) target_link_libraries(arango_cluster_methods arango_network) target_link_libraries(arango_common_rest_handler arango_cluster_methods) target_link_libraries(arango_common_rest_handler arango_utils) target_link_libraries(arango_graph arango_cache) target_link_libraries(arango_graph arango_vocbase) target_link_libraries(arango_graph boost_boost) target_link_libraries(arango_indexes arango_geo) target_link_libraries(arango_indexes boost_boost) target_link_libraries(arango_iresearch arango_indexes) target_link_libraries(arango_iresearch arango_cluster_engine) target_link_libraries(arango_metrics arango) target_link_libraries(arango_mmfiles arango_geo) target_link_libraries(arango_mmfiles arango_indexes) target_link_libraries(arango_mmfiles arango_storage_engine_common) target_link_libraries(arango_mmfiles arango_utils) target_link_libraries(arango_mmfiles boost_boost) target_link_libraries(arango_mmfiles boost_system) target_link_libraries(arango_mmfiles llhttp) target_link_libraries(arango_network boost_boost) target_link_libraries(arango_network fuerte) target_link_libraries(arango_network llhttp) target_link_libraries(arango_pregel arango_agency) target_link_libraries(arango_pregel boost_boost) target_link_libraries(arango_pregel boost_system) target_link_libraries(arango_replication arango_storage_engine) target_link_libraries(arango_replication arango_utils) target_link_libraries(arango_rocksdb ${ROCKSDB_LIBS}) target_link_libraries(arango_rocksdb arango_cache) target_link_libraries(arango_rocksdb arango_common_rest_handler) target_link_libraries(arango_rocksdb arango_geo) target_link_libraries(arango_rocksdb arango_indexes) target_link_libraries(arango_rocksdb arango_storage_engine_common) target_link_libraries(arango_rocksdb boost_boost) if (USE_ENTERPRISE) # this is required for hotbackup. Views need to be flushed. target_include_directories(arango_rocksdb PUBLIC ${IRESEARCH_INCLUDE} ) endif() target_link_libraries(arango_storage_engine arango_cluster_engine) target_link_libraries(arango_storage_engine arango_cluster_methods) target_link_libraries(arango_storage_engine arango_mmfiles) target_link_libraries(arango_storage_engine arango_rocksdb) target_link_libraries(arango_utils boost_boost) target_link_libraries(arango_v8server arango_agency) target_link_libraries(arango_v8server arango_iresearch) target_link_libraries(arango_v8server arango_replication) target_link_libraries(arango_v8server arango_v8 ${V8_LIBS}) target_link_libraries(arango_vocbase arango_agency) target_link_libraries(arango_vocbase arango_cluster_methods) target_link_libraries(arango_vocbase arango_indexes) target_link_libraries(arango_vocbase arango_replication) target_link_libraries(arango_vocbase boost_system) target_link_libraries(arangoserver arango_agency) target_link_libraries(arangoserver arango_aql) target_link_libraries(arangoserver arango_cluster_engine) target_link_libraries(arangoserver arango_cluster_methods) target_link_libraries(arangoserver arango_common_rest_handler) target_link_libraries(arangoserver arango_geo) target_link_libraries(arangoserver arango_graph) target_link_libraries(arangoserver arango_indexes) target_link_libraries(arangoserver arango_iresearch) target_link_libraries(arangoserver arango_metrics) target_link_libraries(arangoserver arango_network) target_link_libraries(arangoserver arango_pregel) target_link_libraries(arangoserver arango_replication) target_link_libraries(arangoserver arango_storage_engine) target_link_libraries(arangoserver arango_utils) target_link_libraries(arangoserver arango_v8server) target_link_libraries(arangoserver arango_vocbase) target_link_libraries(arangoserver boost_boost) target_link_libraries(arangoserver ${LINENOISE_LIBS} # Is this ever anything but empty? ${MSVC_LIBS} ) if (MSVC) target_link_libraries(arangoserver Bcrypt.lib) endif() if (USE_ENTERPRISE) add_library(arango_rclone STATIC ${LIB_RCLONE_SOURCES} ) target_link_libraries(arango_rclone arango) target_link_libraries(arango_rocksdb arango_rclone) endif() if (USE_ENTERPRISE) add_definitions(-DUSE_ENTERPRISE=1) if (MSVC) target_link_libraries(arangoserver Wldap32.lib ) else() target_link_libraries(arangoserver ${LDAP_LIB} ${LBER_LIB} ${OPENSSL_LIBRARIES} ) endif() endif() add_executable(${BIN_ARANGOD} RestServer/arangod.cpp ) target_link_libraries(${BIN_ARANGOD} arangoserver ) target_compile_features(${BIN_ARANGOD} PRIVATE cxx_constexpr) install( TARGETS ${BIN_ARANGOD} RUNTIME DESTINATION ${CMAKE_INSTALL_SBINDIR} ) install_config(arangod) if (NOT USE_PRECOMPILED_V8) add_dependencies(arangod zlibstatic v8_build arango_iresearch) else () add_dependencies(arangod zlibstatic arango_iresearch) endif () if (USE_JEMALLOC) add_dependencies(arangod jemalloc) endif () foreach(TARGET arango_agency arango_aql arango_cache arango_cluster_engine arango_cluster_methods arango_common_rest_handler arango_graph arango_indexes arango_metrics arango_mmfiles arango_pregel arango_replication arango_rocksdb arango_storage_engine arango_storage_engine_common arango_utils arango_v8server arango_vocbase arangod arangoserver ) target_include_directories(${TARGET} PUBLIC "${PROJECT_SOURCE_DIR}/${ENTERPRISE_INCLUDE_DIR}") if (USE_FAIL_ON_WARNINGS) if (MSVC) target_compile_options(${TARGET} PRIVATE /WX /D_WINSOCK_DEPRECATED_NO_WARNINGS) else () target_compile_options(${TARGET} PRIVATE -Werror -Wno-error=deprecated-declarations) endif () endif () endforeach() ################################################################################ ## arango-dfdb ################################################################################ install_command_alias(${BIN_ARANGOD} ${CMAKE_INSTALL_SBINDIR} arango-dfdb ) install_config(arango-dfdb) ################################################################################ ## arango-secure-installation ################################################################################ install_command_alias(${BIN_ARANGOD} ${CMAKE_INSTALL_SBINDIR} arango-secure-installation ) install_config(arango-secure-installation) ################################################################################ ## arango-init-database ################################################################################ install_command_alias(${BIN_ARANGOD} ${CMAKE_INSTALL_SBINDIR} arango-init-database ) install_config(arango-init-database)