# -*- mode: CMAKE; -*- include_directories(.) ################################################################################ ## 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_SOURCE_DIR}/lib/V8/v8-json.cpp WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} COMMAND ${FLEX_EXECUTABLE} -L -olib/V8/v8-json.cpp lib/V8/v8-json.ll MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.ll VERBATIM ) add_custom_target(clean_lib_autogenerated COMMAND rm -f ${CMAKE_SOURCE_DIR}/lib/V8/v8-json.cpp) list(APPEND CLEAN_AUTOGENERATED_FILES clean_lib_autogenerated) set(CLEAN_AUTOGENERATED_FILES ${CLEAN_AUTOGENERATED_FILES} PARENT_SCOPE) endif () if (CMAKE_COMPILER_IS_GNUCC) set_source_files_properties(V8/v8-json.cpp PROPERTIES COMPILE_FLAGS -Wno-sign-compare) endif () ################################################################################ ## LIB_ARANGO ################################################################################ if (MSVC) set(LIB_ARANGO_MSVC Basics/locks-win32.cpp Basics/memory-map-win32.cpp Basics/terminal-utils-win32.cpp Basics/threads-win32.cpp Basics/win-utils.cpp Zip/iowin32.cpp ApplicationFeatures/WindowsServiceFeature.cpp ) else () set(LIB_ARANGO_POSIX ApplicationFeatures/DaemonFeature.cpp ApplicationFeatures/SupervisorFeature.cpp Basics/locks-posix.cpp Basics/memory-map-posix.cpp Basics/terminal-utils-posix.cpp Basics/threads-posix.cpp Endpoint/EndpointUnixDomain.cpp Endpoint/EndpointSrv.cpp ) endif () set(LIB_ARANGO_LINENOISE ${PROJECT_SOURCE_DIR}/3rdParty/linenoise-ng/src/ConvertUTF.cpp ${PROJECT_SOURCE_DIR}/3rdParty/linenoise-ng/src/linenoise.cpp ${PROJECT_SOURCE_DIR}/3rdParty/linenoise-ng/src/wcwidth.cpp Utilities/LinenoiseShell.cpp ) set(LIB_ARANGO_VPACK ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/AttributeTranslator.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Builder.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Collection.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Compare.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Dumper.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Exception.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/HexDump.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Iterator.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Options.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Parser.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Serializable.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Slice.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/SliceStaticData.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/StringRef.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Utf8Helper.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Value.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/ValueType.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Validator.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/Version.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/asm-functions.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/asm-utf8check.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/fpconv.cpp ${PROJECT_SOURCE_DIR}/3rdParty/velocypack/src/velocypack-common.cpp ${PROJECT_SOURCE_DIR}/lib/Basics/xxhash.cpp ) add_definitions("-DARCHITECTURE_OPTIMIZATIONS=${ARCHITECTURE_OPTIMIZATIONS}") if (ASM_OPTIMIZATIONS AND CMAKE_TARGET_ARCHITECTURE_CODE MATCHES "x86_64") if (DARWIN) set(LIB_ASM_SOURCES Basics/crc1.S) else() set(LIB_ASM_SOURCES Basics/crc5.S) endif() add_definitions("-DENABLE_ASM_CRC32=1") message(STATUS "Will compile in hand-optimized assembler code for CRC32.") else() add_definitions("-DENABLE_ASM_CRC32=0") message(STATUS "Will not compile in hand-optimized assembler code for CRC32.") endif() if (USE_LOCAL_CLOCK_GETTIME) set(LIB_CLOCK_GETTIME Utilities/clock_gettime.cpp) endif () add_library(${LIB_ARANGO} STATIC ${LIB_ARANGO_APPLE} ${LIB_ARANGO_MSVC} ${LIB_ARANGO_POSIX} ${LIB_ARANGO_LINENOISE} ${LIB_ARANGO_VPACK} ${LIB_CLOCK_GETTIME} ${LIB_ASM_SOURCES} ApplicationFeatures/ApplicationFeature.cpp ApplicationFeatures/ApplicationFeaturePhase.cpp ApplicationFeatures/ApplicationServer.cpp ApplicationFeatures/AgencyPhase.cpp ApplicationFeatures/CommunicationPhase.cpp ApplicationFeatures/AQLPhase.cpp ApplicationFeatures/BasicPhase.cpp ApplicationFeatures/ClusterPhase.cpp ApplicationFeatures/DatabasePhase.cpp ApplicationFeatures/FinalPhase.cpp ApplicationFeatures/FoxxPhase.cpp ApplicationFeatures/GreetingsPhase.cpp ApplicationFeatures/ServerPhase.cpp ApplicationFeatures/V8Phase.cpp ApplicationFeatures/V8ShellPhase.cpp ApplicationFeatures/ConfigFeature.cpp ApplicationFeatures/EnvironmentFeature.cpp ApplicationFeatures/GreetingsFeature.cpp ApplicationFeatures/LanguageFeature.cpp ApplicationFeatures/MaxMapCountFeature.cpp ApplicationFeatures/NonceFeature.cpp ApplicationFeatures/PageSizeFeature.cpp ApplicationFeatures/PrivilegeFeature.cpp ApplicationFeatures/RocksDBOptionFeature.cpp ApplicationFeatures/ShellColorsFeature.cpp ApplicationFeatures/ShutdownFeature.cpp ApplicationFeatures/TempFeature.cpp ApplicationFeatures/V8PlatformFeature.cpp ApplicationFeatures/VersionFeature.cpp Basics/ArangoGlobalContext.cpp Basics/AttributeNameParser.cpp Basics/ConditionLocker.cpp Basics/ConditionVariable.cpp Basics/DataProtector.cpp Basics/Exceptions.cpp Basics/FileUtils.cpp Basics/HybridLogicalClock.cpp Basics/LdapUrlParser.cpp Basics/LocalTaskQueue.cpp Basics/Mutex.cpp Basics/Nonce.cpp Basics/ReadWriteLock.cpp Basics/Result.cpp Basics/FileResult.cpp Basics/RocksDBLogger.cpp Basics/RocksDBUtils.cpp Basics/SharedPRNG.cpp Basics/StaticStrings.cpp Basics/StringBuffer.cpp Basics/StringHeap.cpp Basics/StringUtils.cpp Basics/Thread.cpp Basics/Utf8Helper.cpp Basics/VelocyPackDumper.cpp Basics/VelocyPackHelper.cpp Basics/application-exit.cpp Basics/CleanupFunctions.cpp Basics/conversions.cpp Basics/csv.cpp Basics/datetime.cpp Basics/debugging.cpp Basics/error.cpp Basics/fasthash.cpp Basics/files.cpp Basics/fpconv.cpp Basics/hashes.cpp Basics/json.cpp Basics/levenshtein.cpp Basics/memory.cpp Basics/mimetypes.cpp Basics/prime-numbers.cpp Basics/process-utils.cpp Basics/socket-utils.cpp Basics/system-functions.cpp Basics/terminal-utils.cpp Basics/tri-strings.cpp Basics/tri-zip.cpp Basics/vector.cpp Basics/voc-errors.cpp Basics/exitcodes.cpp Basics/voc-mimetypes.cpp Basics/xxhash.cpp Endpoint/Endpoint.cpp Endpoint/EndpointIp.cpp Endpoint/EndpointIpV4.cpp Endpoint/EndpointIpV6.cpp Endpoint/EndpointList.cpp Futures/Future.cpp Logger/LogAppender.cpp Logger/LogAppenderFile.cpp Logger/LogAppenderSyslog.cpp Logger/LogBuffer.cpp Logger/LogLevel.cpp Logger/LogThread.cpp Logger/LogTopic.cpp Logger/Logger.cpp Logger/LoggerBufferFeature.cpp Logger/LoggerFeature.cpp Logger/LoggerStream.cpp Logger/LogTimeFormat.cpp Maskings/AttributeMasking.cpp Maskings/Collection.cpp Maskings/Maskings.cpp Maskings/Path.cpp Maskings/RandomMask.cpp Maskings/RandomStringMask.cpp ProgramOptions/Option.cpp ProgramOptions/Parameters.cpp ProgramOptions/ProgramOptions.cpp ProgramOptions/Section.cpp ProgramOptions/Translator.cpp ProgramOptions/IniFileParser.cpp Random/RandomFeature.cpp Random/RandomGenerator.cpp Random/UniformCharacter.cpp Rest/GeneralRequest.cpp Rest/GeneralResponse.cpp Rest/VstRequest.cpp Rest/VstResponse.cpp Rest/HttpRequest.cpp Rest/HttpResponse.cpp Rest/InitializeRest.cpp Rest/Version.cpp SimpleHttpClient/ClientConnection.cpp SimpleHttpClient/Communicator.cpp SimpleHttpClient/GeneralClientConnection.cpp SimpleHttpClient/SimpleHttpClient.cpp SimpleHttpClient/SimpleHttpResult.cpp SimpleHttpClient/SslClientConnection.cpp Ssl/SslFeature.cpp Ssl/SslInterface.cpp Ssl/SslServerFeature.cpp Ssl/ssl-helper.cpp Utilities/LineEditor.cpp Utilities/ScriptLoader.cpp Utilities/ShellBase.cpp Zip/ioapi.cpp Zip/unzip.cpp Zip/zip.cpp ${ADDITIONAL_LIB_ARANGO_SOURCES} ) target_link_libraries(${LIB_ARANGO} s2 boost_system boost_boost ) # Enterprise if (USE_ENTERPRISE) target_compile_definitions(${LIB_ARANGO} PUBLIC "-DUSE_ENTERPRISE=1") target_include_directories(${LIB_ARANGO} PUBLIC "${PROJECT_SOURCE_DIR}/${ENTERPRISE_INCLUDE_DIR}") endif() ################################################################################ ## LIB_ARANGO_GEO ################################################################################ add_library(${LIB_ARANGO_GEO} STATIC Geo/GeoJson.cpp Geo/GeoParams.cpp Geo/GeoUtils.cpp Geo/ShapeContainer.cpp Geo/Shapes.cpp Geo/S2/S2MultiPointRegion.cpp Geo/S2/S2MultiPolyline.cpp ) target_link_libraries(${LIB_ARANGO_GEO} ${LIB_ARANGO} boost_system boost_boost ) if (WINDOWS) target_compile_options(${LIB_ARANGO_GEO} PUBLIC "-J") endif() # Enterprise if (USE_ENTERPRISE) target_compile_definitions(${LIB_ARANGO_GEO} PUBLIC "-DUSE_ENTERPRISE=1") target_include_directories(${LIB_ARANGO_GEO} PUBLIC "${PROJECT_SOURCE_DIR}/${ENTERPRISE_INCLUDE_DIR}") endif() ################################################################################ ## LIB_ARANGO_V8 ################################################################################ add_library(${LIB_ARANGO_V8} STATIC ApplicationFeatures/V8SecurityFeature.cpp V8/JavaScriptSecurityContext.cpp V8/JSLoader.cpp V8/V8LineEditor.cpp V8/v8-buffer.cpp V8/v8-conv.cpp V8/v8-globals.cpp V8/v8-json.cpp V8/v8-shell.cpp V8/v8-utils.cpp V8/v8-vpack.cpp V8/v8-environment.cpp ) target_link_libraries(${LIB_ARANGO_V8} boost_system boost_boost ) # Enterprise if (USE_ENTERPRISE) target_compile_definitions(${LIB_ARANGO_V8} PUBLIC "-DUSE_ENTERPRISE=1") target_include_directories(${LIB_ARANGO_V8} PUBLIC "${PROJECT_SOURCE_DIR}/${ENTERPRISE_INCLUDE_DIR}") endif() if(MSVC) target_compile_options(${LIB_ARANGO_V8} PRIVATE /WX /D_WINSOCK_DEPRECATED_NO_WARNINGS) target_compile_options(${LIB_ARANGO_GEO} PRIVATE /WX /D_WINSOCK_DEPRECATED_NO_WARNINGS) target_compile_options(${LIB_ARANGO} PRIVATE /WX /D_WINSOCK_DEPRECATED_NO_WARNINGS) endif() if (DARWIN) target_compile_options(${LIB_ARANGO_V8} PRIVATE -Werror) target_compile_options(${LIB_ARANGO_GEO} PRIVATE -Werror) target_compile_options(${LIB_ARANGO} PRIVATE -Werror) endif()