1
0
Fork 0
arangodb/CMakeLists.txt

678 lines
22 KiB
CMake
Executable File

# -*- mode: CMAKE; -*-
# ------------------------------------------------------------------------------
# General
# ------------------------------------------------------------------------------
cmake_minimum_required(VERSION 2.8)
if (POLICY CMP0037)
cmake_policy(SET CMP0037 NEW)
endif ()
if (APPLE)
if (NOT DEFINED CMAKE_C_COMPILER)
set(CMAKE_C_COMPILER /usr/bin/clang)
endif ()
if (NOT DEFINED CMAKE_CXX_COMPILER)
set(CMAKE_CXX_COMPILER /usr/bin/clang++)
endif ()
endif ()
option(VERBOSE OFF)
project(ArangoDB)
# where to find CMAKE modules
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
################################################################################
## ARANGODB
################################################################################
set(ARANGODB_VERSION_MAJOR "3")
set(ARANGODB_VERSION_MINOR "0")
set(ARANGODB_VERSION_REVISION "0-devel")
set(ARANGODB_VERSION
"${ARANGODB_VERSION_MAJOR}.${ARANGODB_VERSION_MINOR}.${ARANGODB_VERSION_REVISION}")
string(TIMESTAMP ARANGODB_BUILD_DATE "%Y-%m-%d %H:%M:%S")
add_definitions("-DARANGODB_BUILD_DATE=\"${ARANGODB_BUILD_DATE}\"")
# for NSIS
set(ARANGODB_DISPLAY_NAME "ArangoDB")
set(ARANGODB_URL_INFO_ABOUT "https://www.arangodb.com")
set(ARANGODB_CONTACT "hackers@arangodb.com")
set(ARANGODB_FRIENDLY_STRING "ArangoDB - the multi-model database")
# MSVC
set(ARANGOB_FRIENDLY_STRING "arangob - stress test program")
set(ARANGO_DUMP_FRIENDLY_STRING "arangodump - export")
set(ARANGO_RESTORE_FRIENDLY_STRING "arangrestore - importer")
set(ARANGO_IMP_FRIENDLY_STRING "arangoimp - TSV/CSV/JSON importer")
set(ARANGOSH_FRIENDLY_STRING "arangosh - commandline client")
# libraries
set(LIB_ARANGO arango)
set(LIB_ARANGO_V8 arango_v8)
# binaries
set(BIN_ARANGOB arangob)
set(BIN_ARANGOD arangod)
set(BIN_ARANGODUMP arangodump)
set(BIN_ARANGOIMP arangoimp)
set(BIN_ARANGORESTORE arangorestore)
set(BIN_ARANGOSH arangosh)
# test binaries
set(TEST_BASICS_SUITE basics_suite)
set(TEST_GEO_SUITE geo_suite)
################################################################################
## VERSION FILES
################################################################################
configure_file (
"${CMAKE_CURRENT_SOURCE_DIR}/lib/Basics/build.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/lib/Basics/build.h"
)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/lib/Basics/VERSION.in"
"${CMAKE_CURRENT_SOURCE_DIR}/VERSION"
)
################################################################################
## OPERATION SYSTEM
################################################################################
if (WIN32)
set(WINDOWS TRUE)
set(MSBUILD TRUE)
elseif (UNIX AND NOT APPLE)
if(CMAKE_SYSTEM_NAME MATCHES ".*Linux")
set(LINUX TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*")
set(FREEBSD TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "kNetBSD.*|NetBSD.*")
set(NETBSD TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "kOpenBSD.*|OpenBSD.*")
set(OPENBSD TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES ".*GNU.*")
set(GNU TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES ".*BSDI.*")
set(BSDI TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "DragonFly.*|FreeBSD")
set(FREEBSD TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")
set(SYSV5 TRUE)
elseif ((CMAKE_SYSTEM_NAME MATCHES "Solaris.*") OR (CMAKE_SYSTEM_NAME MATCHES "SunOS.*"))
set(SOLARIS TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")
set(HPUX TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "AIX.*")
set(AIX TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES "Minix.*")
set(MINIX TRUE)
endif ()
elseif (APPLE)
if (CMAKE_SYSTEM_NAME MATCHES ".*Darwin.*")
set(DARWIN TRUE)
elseif (CMAKE_SYSTEM_NAME MATCHES ".*MacOS.*")
set(MACOSX TRUE)
endif ()
endif ()
################################################################################
## EXTERNAL PROGRAMS
################################################################################
if (SOLARIS)
set(MAKE gmake)
else ()
set(MAKE make)
endif ()
find_package(FLEX)
find_package(BISON)
find_package(PythonInterp 2)
get_filename_component(PYTHON_EXECUTABLE ${PYTHON_EXECUTABLE} REALPATH)
find_package(Go 1.2)
if (NOT GO_FOUND)
message(STATUS "Go version >=1.2 not found. etcd will not be built.")
endif ()
################################################################################
## ARCHITECTURE
################################################################################
if (SOLARIS)
set(CMAKE_SIZEOF_VOID_P 8)
set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
endif ()
math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
add_definitions("-DARANGODB_BITS=${BITS}")
################################################################################
## COMPILER FEATURES
################################################################################
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_COMPILER_IS_CLANG 1)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "AppleClang")
set(CMAKE_COMPILER_IS_CLANG 1)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "Intel")
set(CMAKE_COMPILER_IS_INTEL 1)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
set(CMAKE_COMPILER_IS_INTEL 1)
endif ()
if (WINDOWS)
set(BASE_FLAGS "/D WIN32 /D _WINDOWS /W3")
set(BASE_C_FLAGS)
set(BASE_CXX_FLAGS "/GR /EHsc")
else ()
set(BASE_FLAGS)
set(BASE_C_FLAGS ${CMAKE_C_FLAGS})
set(BASE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
endif ()
if (SOLARIS)
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++")
set(CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES
/lib;/lib64;/lib64;/usr/lib;/usr/lib64;/usr/lib64
)
list(APPEND SYSTEM_LIBRARIES nsl socket)
# force 64bit compile
set(BASE_FLAGS "${BASE_FLAGS} -I /opt/csw/include -D_REENTRANT -m64")
endif ()
if (CMAKE_COMPILER_IS_GNUCC)
set(BASE_FLAGS "${BASE_FLAGS} -std=gnu89")
endif ()
if (CMAKE_COMPILER_IS_GNUCC OR APPLE)
set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -std=c++11")
endif ()
if (APPLE AND CMAKE_COMPILER_IS_CLANG)
set(BASE_CXX_FLAGS "${BASE_CXX_FLAGS} -stdlib=libc++")
add_definitions("-Wno-deprecated-declarations")
endif ()
# need c++11
set(CMAKE_CXX_STANDARD 11)
include(CheckCXX11Features)
# need threads
find_package(Threads REQUIRED)
if (MSVC)
add_definitions("-D_CRT_SECURE_NO_WARNINGS=1")
add_definitions("-DFD_SETSIZE=2048")
add_definitions("-DUSE_REGEX_STATIC=1")
add_definitions("-DU_STATIC_IMPLEMENTATION=1")
set(MSVC_LIBS crypt32.lib;WINMM.LIB;Ws2_32.lib;getopt;regex)
set(CMAKE_EXE_LINKER_FLAGS
"${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE /LTCG /SAFESEH:NO /MACHINE:x64 /ignore:4099"
)
endif ()
################################################################################
## INCLUDE DIRECTORIES
################################################################################
include_directories(${PROJECT_SOURCE_DIR}/3rdParty/linenoise-ng/include)
include_directories(${PROJECT_SOURCE_DIR}/3rdParty/linenoise-ng/src)
include_directories(${PROJECT_SOURCE_DIR}/3rdParty/velocypack/include)
include_directories(${PROJECT_BINARY_DIR})
include_directories(${PROJECT_BINARY_DIR}/lib)
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_SOURCE_DIR}/arangod)
include_directories(${PROJECT_SOURCE_DIR}/arangosh)
include_directories(${PROJECT_SOURCE_DIR}/lib)
if (CUSTOM_INCLUDES)
include_directories(${CUSTOM_INCLUDES})
endif ()
################################################################################
## TARGET ARCHITECTURE
################################################################################
if (WINDOWS)
add_definitions("-DNO_SSE42")
else ()
include(TargetArch)
target_architecture(CMAKE_TARGET_ARCHITECTURES)
list(LENGTH CMAKE_TARGET_ARCHITECTURES cmake_target_arch_len)
if (NOT "${cmake_target_arch_len}" EQUAL "1")
set(CMAKE_TARGET_ARCHITECTURE_UNIVERSAL TRUE)
set(CMAKE_TARGET_ARCHITECTURE_CODE "universal")
else ()
set(CMAKE_TARGET_ARCHITECTURE_UNIVERSAL FALSE)
set(CMAKE_TARGET_ARCHITECTURE_CODE "${CMAKE_TARGET_ARCHITECTURES}")
endif ()
include(VcMacros)
include(OptimizeForArchitecture)
OptimizeForArchitecture()
set(BASE_FLAGS "${BASE_FLAGS} ${Vc_ARCHITECTURE_FLAGS}")
endif ()
################################################################################
## BACKTRACE
################################################################################
option(USE_BACKTRACE
"whether we should try to generate c-level stacktraces"
OFF
)
if (USE_BACKTRACE)
if (MSVC)
set(BT_LIBS "Dbghelp" CACHE path "Debug Helper libraries")
else ()
set(BT_LIBS "" CACHE path "Debug Helper libraries")
endif ()
add_definitions("-DARANGODB_ENABLE_BACKTRACE=1")
else ()
set(BT_LIBS "" CACHE path "Debug Helper libraries")
endif ()
################################################################################
## MAINTAINER MODE
################################################################################
option(USE_MAINTAINER_MODE
"whether we want to have assertions and other development features"
OFF
)
if (USE_MAINTAINER_MODE)
add_definitions("-DARANGODB_ENABLE_MAINTAINER_MODE=1")
endif ()
################################################################################
## FAILURE TESTS
################################################################################
option(USE_FAILURE_TESTS
"whether we want to have failure tests compiled in"
OFF
)
if (USE_FAILURE_TESTS)
add_definitions("-DARANGODB_ENABLE_FAILURE_TESTS=1")
endif ()
################################################################################
## TCMALLOC
################################################################################
if (WINDOWS OR SOLARIS)
option(USE_TCMALLOC
"use TCMALLOC library"
FALSE
)
else ()
option(USE_TCMALLOC
"use TCMALLOC if the library is available"
TRUE
)
endif ()
if (USE_TCMALLOC)
find_package(tcmalloc)
endif ()
################################################################################
## FLAGS
################################################################################
if (VERBOSE)
message(STATUS)
endif ()
# compiler options
if (CMAKE_COMPILER_IS_GNUCC)
if (VERBOSE)
message(STATUS "Compiler type GNU: ${CMAKE_CXX_COMPILER}")
endif ()
set(BASE_FLAGS "${BASE_FLAGS} -Wall -Wextra")
set(CMAKE_C_FLAGS "" CACHE STRING "default C compiler flags")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g" CACHE STRING "C debug flags")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os" CACHE STRING "C minimal size flags")
set(CMAKE_C_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C release flags")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C release with debug info flags")
set(CMAKE_CXX_FLAGS "" CACHE STRING "default C++ compiler flags")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "C++ debug flags")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os" CACHE STRING "C++ minimal size flags")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C++ release flags")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C++ release with debug info flags")
elseif (CMAKE_COMPILER_IS_CLANG)
if (VERBOSE)
message(STATUS "Compiler type CLANG: ${CMAKE_CXX_COMPILER}")
endif ()
set(BASE_FLAGS "${BASE_FLAGS} -Wall -Wextra")
set(CMAKE_C_FLAGS "" CACHE STRING "default C compiler flags")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g" CACHE STRING "C debug flags")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os" CACHE STRING "C minimal size flags")
set(CMAKE_C_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C release flags")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C release with debug info flags")
set(CMAKE_CXX_FLAGS "" CACHE STRING "default C++ compiler flags")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "C++ debug flags")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os" CACHE STRING "C++ minimal size flags")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C++ release flags")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C++ release with debug info flags")
elseif (MSVC)
if (VERBOSE)
message(STATUS "Compiler type MSVC: ${CMAKE_CXX_COMPILER}")
endif ()
set(CMAKE_C_FLAGS "" CACHE STRING "default C++ compiler flags")
set(CMAKE_C_FLAGS_DEBUG "/D _DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C++ debug flags")
set(CMAKE_C_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "C++ minimal size flags")
set(CMAKE_C_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "C++ release flags")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "C++ release with debug info flags")
set(CMAKE_CXX_FLAGS "" CACHE STRING "default C++ compiler flags")
set(CMAKE_CXX_FLAGS_DEBUG "/D _DEBUG /MTd /Zi /Ob0 /Od /RTC1" CACHE STRING "C++ debug flags")
set(CMAKE_CXX_FLAGS_MINSIZEREL "/MT /O1 /Ob1 /D NDEBUG" CACHE STRING "C++ minimal size flags")
set(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG" CACHE STRING "C++ release flags")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/MT /Zi /O2 /Ob1 /D NDEBUG" CACHE STRING "C++ release with debug info flags")
else ()
# unknown compiler
message(STATUS "Compiler type UNKNOWN: ${CMAKE_CXX_COMPILER}")
set(BASE_FLAGS "${BASE_FLAGS} -Wall")
set(CMAKE_C_FLAGS "" CACHE STRING "default C compiler flags")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g" CACHE STRING "C debug flags")
set(CMAKE_C_FLAGS_MINSIZEREL "-Os" CACHE STRING "C minimal size flags")
set(CMAKE_C_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C release flags")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C release with debug info flags")
set(CMAKE_CXX_FLAGS "" CACHE STRING "default C++ compiler flags")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g" CACHE STRING "C++ debug flags")
set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os" CACHE STRING "C++ minimal size flags")
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -fomit-frame-pointer" CACHE STRING "C++ release flags")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O3 -g -fno-omit-frame-pointer" CACHE STRING "C++ release with debug info flags")
endif ()
if (VERBOSE)
message(STATUS)
endif ()
set(CMAKE_C_FLAGS "${BASE_FLAGS} ${BASE_C_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_C_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}")
set(CMAKE_C_FLAGS_MINSIZEREL "${BASE_FLAGS} ${BASE_C_FLAGS} ${CMAKE_C_FLAGS_MINSIZEREL}")
set(CMAKE_CXX_FLAGS "${BASE_FLAGS} ${BASE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_RELEASE "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${BASE_FLAGS} ${BASE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_MINSIZEREL}")
if (VERBOSE)
message(STATUS "Info CMAKE_C_FLAGS")
message(STATUS "${CMAKE_C_FLAGS}")
message(STATUS)
message(STATUS "Info CMAKE_C_FLAGS_DEBUG")
message(STATUS "${CMAKE_C_FLAGS_DEBUG}")
message(STATUS)
message(STATUS "Info CMAKE_C_FLAGS_RELEASE")
message(STATUS "${CMAKE_C_FLAGS_RELEASE}")
message(STATUS)
message(STATUS "Info CMAKE_C_FLAGS_RELWITHDEBINFO")
message(STATUS "${CMAKE_C_FLAGS_RELWITHDEBINFO}")
message(STATUS)
message(STATUS "Info CMAKE_C_FLAGS_MINSIZEREL")
message(STATUS "${CMAKE_C_FLAGS_MINSIZEREL}")
message(STATUS)
message(STATUS "Info CMAKE_CXX_FLAGS")
message(STATUS "${CMAKE_CXX_FLAGS}")
message(STATUS)
message(STATUS "Info CMAKE_CXX_FLAGS_DEBUG")
message(STATUS "${CMAKE_CXX_FLAGS_DEBUG}")
message(STATUS)
message(STATUS "Info CMAKE_CXX_FLAGS_RELEASE")
message(STATUS "${CMAKE_CXX_FLAGS_RELEASE}")
message(STATUS)
message(STATUS "Info CMAKE_CXX_FLAGS_RELWITHDEBINFO")
message(STATUS "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
message(STATUS)
message(STATUS "Info CMAKE_CXX_FLAGS_MINSIZEREL")
message(STATUS "${CMAKE_CXX_FLAGS_MINSIZEREL}")
message(STATUS)
message(STATUS "Info CMAKE_EXE_LINKER_FLAGS")
message(STATUS "${CMAKE_EXE_LINKER_FLAGS}")
message(STATUS)
endif ()
################################################################################
## 3RD PARTY
################################################################################
# 3rdParty exports:
#
# BOOST_VERSION
# BOOST_INCLUDE_DIR
# USE_BOOST_UNITTESTS
#
# V8_VERSION
# V8_LIBS
# V8_INCLUDE_DIR
#
# ICU_VERSION
# ICU_LIBS
# ICU_INCLUDE_DIR
#
# LIBEV_VERSION
# LIBEV_LIBS
# LIBEV_INCLUDE_DIR
#
# ZLIB_VERSION
# ZLIB_LIBS
# ZLIB_INCLUDE_DIR
add_subdirectory(3rdParty)
foreach (LINK_DIR ${LINK_DIRECTORIES})
link_directories("${LINK_DIR}")
endforeach()
################################################################################
## GETOPT
################################################################################
if (WINDOWS)
include_directories(${GETOPT_INCLUDE_DIR})
endif ()
################################################################################
## REGEX
################################################################################
if (WINDOWS)
include_directories(${REGEX_INCLUDE_DIR})
endif ()
################################################################################
## BOOST
################################################################################
include_directories(${BOOST_INCLUDE_DIR})
add_definitions(-DARANGODB_BOOST_VERSION=\"${BOOST_VERSION}\")
################################################################################
## ICU
################################################################################
include_directories(${ICU_INCLUDE_DIR})
################################################################################
## LIBEV
################################################################################
include_directories(${LIBEV_INCLUDE_DIR})
add_definitions("-DARANGODB_LIBEV_VERSION=\"${LIBEV_VERSION}\"")
################################################################################
## OPENSSL
################################################################################
include_directories(${OPENSSL_INCLUDE_DIR})
add_definitions(-DARANGODB_OPENSSL_VERSION=\"${OPENSSL_VERSION}\")
if (USE_OPENSSL_NO_SSL2)
add_definitions(-DOPENSSL_NO_SSL2)
endif ()
################################################################################
## V8
################################################################################
include_directories(${V8_INCLUDE_DIR})
add_definitions("-DARANGODB_V8_VERSION=\"${V8_VERSION}\"")
################################################################################
## ZLIB
################################################################################
include_directories(${ZLIB_INCLUDE_DIR})
add_definitions("-DARANGODB_ZLIB_VERSION=\"${ZLIB_VERSION}\"")
################################################################################
## PATHS
################################################################################
include(ArangoDBMacros)
################################################################################
## ERRORS FILE
################################################################################
if (USE_MAINTAINER_MODE)
set(ERROR_FILES
lib/Basics/voc-errors.h
lib/Basics/voc-errors.cpp
js/common/bootstrap/errors.js
)
set(ERROR_FILES_GEN)
set(ERRORS_DAT lib/Basics/errors.dat)
foreach (m IN LISTS ERROR_FILES)
add_custom_command(
OUTPUT
${CMAKE_SOURCE_DIR}/${m}
COMMAND
./utils/generateErrorfile.sh ./${ERRORS_DAT} ./${m}
DEPENDS
${CMAKE_SOURCE_DIR}/${ERRORS_DAT}
WORKING_DIRECTORY
${CMAKE_SOURCE_DIR}
COMMENT
"Building errors files ${m}"
VERBATIM
)
list(APPEND ERROR_FILES_GEN ${CMAKE_SOURCE_DIR}/${m})
endforeach ()
add_custom_target(errorfiles ALL DEPENDS ${ERROR_FILES_GEN})
endif ()
################################################################################
## MIMETYPES FILE
################################################################################
if (USE_MAINTAINER_MODE)
set(MIMETYPES_FILES
lib/Basics/voc-mimetypes.h
lib/Basics/voc-mimetypes.cpp
js/common/modules/@arangodb/mimetypes.js
)
set(MIMETYPES_FILES_GEN)
set(MIMETYPES_DAT lib/Basics/mimetypes.dat)
foreach (m IN LISTS MIMETYPES_FILES)
add_custom_command(
OUTPUT
${CMAKE_SOURCE_DIR}/${m}
COMMAND
./utils/generateMimetypes.sh ./${MIMETYPES_DAT} ./${m}
DEPENDS
${CMAKE_SOURCE_DIR}/${MIMETYPES_DAT}
WORKING_DIRECTORY
${CMAKE_SOURCE_DIR}
COMMENT
"Building mimetypes files ${m}"
VERBATIM
)
list(APPEND MIMETYPES_FILES_GEN ${CMAKE_SOURCE_DIR}/${m})
endforeach ()
add_custom_target(mimetypes ALL DEPENDS ${MIMETYPES_FILES_GEN})
endif ()
################################################################################
## SUB-PROJECTS
################################################################################
list(INSERT SYSTEM_LIBRARIES 0
${BT_LIBS}
${ZLIB_LIBS}
${ICU_LIBS}
${OPENSSL_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
${CMAKE_DL_LIBS}
)
add_subdirectory(lib)
add_subdirectory(arangosh)
add_subdirectory(arangod)
add_subdirectory(UnitTests)
add_subdirectory(Documentation)