mirror of https://gitee.com/bigwinds/arangodb
start to use gyp directly from cmake; add 64 bits detection; remove old arm stuff.
This commit is contained in:
parent
53f1ee2c2d
commit
0700ccc847
|
@ -62,7 +62,7 @@ if (UNIX)
|
||||||
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libev
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libev
|
||||||
BUILD_IN_SOURCE 1
|
BUILD_IN_SOURCE 1
|
||||||
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libev
|
PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libev
|
||||||
CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} ./configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/libev --enable-static --disable-shared
|
CONFIGURE_COMMAND ./configure --prefix=${CMAKE_CURRENT_BINARY_DIR}/libev --enable-static --disable-shared ${THIRDP_BUILDFLAGS}
|
||||||
INSTALL_COMMAND ""
|
INSTALL_COMMAND ""
|
||||||
UPDATE_COMMAND ""
|
UPDATE_COMMAND ""
|
||||||
)
|
)
|
||||||
|
@ -77,12 +77,49 @@ import_target(ev ev_build
|
||||||
## V8 and ICU
|
## V8 and ICU
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
set(V8_DIR "${CMAKE_CURRENT_SOURCE_DIR}/V8-4.3.61")
|
||||||
|
# doesn't work?
|
||||||
|
set(V8_TARGET_DIR "${CMAKE_CURRENT_BINARY_DIR}/v8")
|
||||||
|
#set(V8_TARGET_DIR "out")
|
||||||
|
|
||||||
|
|
||||||
|
if ("${HOST_BITS}" STREQUAL "64")
|
||||||
|
set(TARGET_ARCH "x64")
|
||||||
|
else()
|
||||||
|
message(ERROR "WHAT THE FUCK!")
|
||||||
|
set(TARGET_ARCH "ia32")
|
||||||
|
endif() # TODO: ARM? Win32?
|
||||||
|
|
||||||
|
if(DEBUG)
|
||||||
|
list(APPEND V8_GYP_ARGS -Dv8_enable_backtrace=1)
|
||||||
|
set(V8_TARGET_ARCH "${TARGET_ARCH}.debug")
|
||||||
|
else()
|
||||||
|
set(V8_TARGET_ARCH "${TARGET_ARCH}.release")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
list(APPEND V8_GYP_ARGS build/gyp/gyp_main.py --generator-output=${V8_TARGET_DIR} build/all.gyp)
|
||||||
|
|
||||||
|
|
||||||
|
if(WIN32)
|
||||||
|
# TODO: get this from the main configure paramentrisation
|
||||||
|
# CMAKE_BUILD_TYPE:STRING=RelWithDebInfo
|
||||||
|
# -G\ msvs_version=2013
|
||||||
|
# -Dtarget_arch=x64
|
||||||
|
# -Dmode=release
|
||||||
|
list(APPEND V8_GYP_ARGS -Dcomponent=static_library -Dlibrary=static_library)
|
||||||
|
else()
|
||||||
|
# -Dwerror='' breaks shit... rather... -Dwerror=
|
||||||
|
list(APPEND V8_GYP_ARGS -Ibuild/standalone.gypi --depth=. -Dstandalone_static_library=1 -Dlinux_use_bundled_gold=0 -Dlinux_use_gold_flags=0-Dv8_no_strict_aliasing=1)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
list(APPEND V8_GYP_ARGS -Dv8_target_arch=${TARGET_ARCH} -S.${V8_TARGET_ARCH})
|
||||||
|
|
||||||
if (UNIX)
|
if (UNIX)
|
||||||
set(V8_DIR "${CMAKE_CURRENT_SOURCE_DIR}/V8-4.3.61")
|
|
||||||
set(V8_PLATFORM "native")
|
set(V8_PLATFORM "native")
|
||||||
set(V8_BIN_DIR "${V8_DIR}/out/${V8_PLATFORM}")
|
set(V8_BIN_DIR "${V8_DIR}/out/${V8_PLATFORM}")
|
||||||
set(ICU_BIN_DIR "${V8_BIN_DIR}")
|
set(ICU_BIN_DIR "${V8_BIN_DIR}")
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||||
set(V8_BIN_DIR "${V8_BIN_DIR}/obj.target/tools/gyp")
|
set(V8_BIN_DIR "${V8_BIN_DIR}/obj.target/tools/gyp")
|
||||||
set(ICU_BIN_DIR "${ICU_BIN_DIR}/obj.target/third_party/icu")
|
set(ICU_BIN_DIR "${ICU_BIN_DIR}/obj.target/third_party/icu")
|
||||||
|
@ -91,25 +128,36 @@ else ()
|
||||||
message(ERROR "Not implemented for your OS")
|
message(ERROR "Not implemented for your OS")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
set(V8_BUILD_COMMAND $(MAKE) -f Makefile-v8
|
|
||||||
strictaliasing=off snapshot=off werror=no
|
|
||||||
${V8_PLATFORM}
|
|
||||||
CC=${CMAKE_C_COMPILER}
|
|
||||||
CXX=${CMAKE_CXX_COMPILER}
|
|
||||||
PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
include(ExternalProject)
|
||||||
|
set (V8_BUILD_COMMAND $(MAKE) -f Makefile-v8 strictaliasing=off
|
||||||
|
snapshot=off werror=no "${V8_PLATFORM}" CC="${CMAKE_C_COMPILER}"
|
||||||
|
CXX="${CMAKE_CXX_COMPILER}" PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
|
||||||
|
CXXFLAGS=${CMAKE_CXX_FLAGS})
|
||||||
if (APPLE AND CMAKE_COMPILER_IS_CLANG)
|
if (APPLE AND CMAKE_COMPILER_IS_CLANG)
|
||||||
set(V8_BUILD_COMMAND ${V8_BUILD_COMMAND} LDFLAGS=-stdlib=libc++ CXXFLAGS=-stdlib=libc++)
|
set(V8_BUILD_COMMAND ${V8_BUILD_COMMAND} LDFLAGS=-stdlib=libc++ CXXFLAGS=-stdlib=libc++)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
set (V8_COMPILE_ARGS -C ${V8_TARGET_DIR} -f Makefile.${V8_TARGET_ARCH} BUILDTYPE=Release builddir=${V8_TARGET_DIR}/${V8_TARGET_ARCH} VERBOSE=1 V=1 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER})
|
||||||
|
|
||||||
|
#set(RUN_V8_GYP "PYTHON_EXECUTABLE=${PYTHON_EXECUTABLE};\ ${PYTHON_EXECUTABLE}")
|
||||||
|
set(RUN_V8_GYP "${PYTHON_EXECUTABLE}")
|
||||||
|
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
get_cmake_property(_variableNames VARIABLES)
|
||||||
|
foreach (_variableName ${_variableNames})
|
||||||
|
message(STATUS "${_variableName}=${${_variableName}}")
|
||||||
|
endforeach ()
|
||||||
|
#--------------------------------------------------------------------------------
|
||||||
|
|
||||||
if (NOT USE_PRECOMPILED_V8)
|
if (NOT USE_PRECOMPILED_V8)
|
||||||
ExternalProject_Add(v8_build
|
ExternalProject_Add(v8_build
|
||||||
SOURCE_DIR "${V8_DIR}"
|
|
||||||
BUILD_IN_SOURCE TRUE
|
BUILD_IN_SOURCE TRUE
|
||||||
BUILD_COMMAND "${V8_BUILD_COMMAND}"
|
SOURCE_DIR "${V8_DIR}"
|
||||||
INSTALL_COMMAND ""
|
CONFIGURE_COMMAND ${RUN_V8_GYP} ${V8_GYP_ARGS}
|
||||||
)
|
BUILD_COMMAND ${MAKE} ${V8_COMPILE_ARGS}
|
||||||
|
INSTALL_COMMAND "")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
import_target(v8_base v8_build
|
import_target(v8_base v8_build
|
||||||
|
|
|
@ -83,13 +83,24 @@ set(BIN_ARANGOSH arangosh)
|
||||||
# Google V8 engine including ICU
|
# Google V8 engine including ICU
|
||||||
set(V8_VERSION 4.3.61)
|
set(V8_VERSION 4.3.61)
|
||||||
|
|
||||||
|
message(STATUS ${CMAKE_SYSTEM_TYPE})
|
||||||
|
|
||||||
|
# Architecture
|
||||||
|
math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
|
||||||
|
add_definitions("-DTRI_BITS=${BITS}")
|
||||||
|
|
||||||
|
set(MAKE make)
|
||||||
|
set(USE_TCMALLOC, TRUE)
|
||||||
|
set(THIRDP_BUILDFLAGS "CC=${CMAKE_C_COMPILER}")
|
||||||
|
set(HOST_BITS ${BITS})
|
||||||
# OS type (Convenience) --------------------------------------------------------
|
# OS type (Convenience) --------------------------------------------------------
|
||||||
if (WIN32)
|
if(WIN32)
|
||||||
if (NOT WINDOWS)
|
if(NOT WINDOWS)
|
||||||
|
set(USE_TCMALLOC, FALSE)
|
||||||
set(WINDOWS TRUE)
|
set(WINDOWS TRUE)
|
||||||
endif ()
|
endif()
|
||||||
elseif (UNIX AND NOT APPLE)
|
elseif(UNIX AND NOT APPLE)
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES ".*Linux")
|
if(CMAKE_SYSTEM_NAME MATCHES ".*Linux")
|
||||||
set(LINUX TRUE)
|
set(LINUX TRUE)
|
||||||
elseif (CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*")
|
elseif (CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*")
|
||||||
set(FREEBSD TRUE)
|
set(FREEBSD TRUE)
|
||||||
|
@ -105,7 +116,20 @@ elseif (UNIX AND NOT APPLE)
|
||||||
set(FREEBSD TRUE)
|
set(FREEBSD TRUE)
|
||||||
elseif (CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")
|
elseif (CMAKE_SYSTEM_NAME MATCHES "SYSV5.*")
|
||||||
set(SYSV5 TRUE)
|
set(SYSV5 TRUE)
|
||||||
elseif (CMAKE_SYSTEM_NAME MATCHES "Solaris.*")
|
elseif ((CMAKE_SYSTEM_NAME MATCHES "Solaris.*") OR (CMAKE_SYSTEM_NAME MATCHES "SunOS.*"))
|
||||||
|
set(USE_TCMALLOC, FALSE)
|
||||||
|
set(THIRDP_BUILDFLAGS --target=x86_64-pc-solaris2.11
|
||||||
|
--host=x86_64-pc-solaris2.11
|
||||||
|
--build=x86_64-pc-solaris2.11
|
||||||
|
# TODO: is this CMAKE_C_COMPILER? CC=/opt/csw/bin/gcc
|
||||||
|
CC=/opt/csw/bin/gcc
|
||||||
|
CXX=/opt/csw/bin/g++
|
||||||
|
CFLAGS=-I\ /opt/csw/include\ -D_REENTRANT\ -m64
|
||||||
|
CXXFLAGS=-I\ /opt/csw/include\ -D_REENTRANT\ -m64
|
||||||
|
LDFLAGS=-L/opt/csw/lib\ -march=x86-64\ -m64
|
||||||
|
)
|
||||||
|
set(MAKE gmake)
|
||||||
|
set(HOST_BITS 64)
|
||||||
set(SOLARIS TRUE)
|
set(SOLARIS TRUE)
|
||||||
elseif (CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")
|
elseif (CMAKE_SYSTEM_NAME MATCHES "HP-UX.*")
|
||||||
set(HPUX TRUE)
|
set(HPUX TRUE)
|
||||||
|
@ -131,13 +155,19 @@ endif ()
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TL)
|
string(TOLOWER ${CMAKE_BUILD_TYPE} CMAKE_BUILD_TYPE_TL)
|
||||||
|
message (${CMAKE_BUILD_TYPE_TL})
|
||||||
|
set(DEBUG FALSE)
|
||||||
if (CMAKE_BUILD_TYPE_TL MATCHES debug)
|
if (CMAKE_BUILD_TYPE_TL MATCHES debug)
|
||||||
|
set(DEBUG TRUE)
|
||||||
|
set(WIN_RELEASE_TYPE Debug)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g")
|
||||||
elseif (CMAKE_BUILD_TYPE_TL MATCHES relwithdebinfo)
|
elseif (CMAKE_BUILD_TYPE_TL MATCHES relwithdebinfo)
|
||||||
|
set(WIN_RELEASE_TYPE RelWithDebInfo)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O2 -g")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -g")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2 -g")
|
||||||
elseif (CMAKE_BUILD_TYPE_TL MATCHES release)
|
elseif (CMAKE_BUILD_TYPE_TL MATCHES release)
|
||||||
|
set(WIN_RELEASE_TYPE Release)
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O3")
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -218,10 +248,6 @@ if (MSVC)
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE /LTCG /SAFESEH:NO /ignore:4099")
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:CONSOLE /LTCG /SAFESEH:NO /ignore:4099")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Architecture
|
|
||||||
math(EXPR BITS "8*${CMAKE_SIZEOF_VOID_P}")
|
|
||||||
add_definitions("-DTRI_BITS=${BITS}")
|
|
||||||
|
|
||||||
include (TargetArch)
|
include (TargetArch)
|
||||||
target_architecture(CMAKE_TARGET_ARCHITECTURES)
|
target_architecture(CMAKE_TARGET_ARCHITECTURES)
|
||||||
list(LENGTH CMAKE_TARGET_ARCHITECTURES cmake_target_arch_len)
|
list(LENGTH CMAKE_TARGET_ARCHITECTURES cmake_target_arch_len)
|
||||||
|
@ -519,20 +545,6 @@ if (MSVC_LIB_PATH)
|
||||||
link_directories(${MSVC_LIB_PATH})
|
link_directories(${MSVC_LIB_PATH})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Raspberry Pi ------------------------------------------------------------------
|
|
||||||
if (RASPBIAN)
|
|
||||||
set(ARM_INCLUDE ${PROJECT_SOURCE_DIR}/ArmLibraries/include
|
|
||||||
CACHE path "ARM 3rd party include path")
|
|
||||||
set(ARM_LIB_PATH ${PROJECT_SOURCE_DIR}/ArmLibraries/lib
|
|
||||||
CACHE path "ARM 3rd party library path")
|
|
||||||
endif ()
|
|
||||||
if (ARM_INCLUDE)
|
|
||||||
include_directories(${ARM_INCLUDE})
|
|
||||||
endif ()
|
|
||||||
if (ARM_LIB_PATH)
|
|
||||||
link_directories(${ARM_LIB_PATH})
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# ICU ---------------------------------------------------------------------------
|
# ICU ---------------------------------------------------------------------------
|
||||||
if (MSVC)
|
if (MSVC)
|
||||||
set(ICU_LIBS "icui18n;icuuc" CACHE path "ICU libraries")
|
set(ICU_LIBS "icui18n;icuuc" CACHE path "ICU libraries")
|
||||||
|
@ -616,6 +628,11 @@ else ()
|
||||||
message ("Boost unit test framework not found. Unit tests are disabled.")
|
message ("Boost unit test framework not found. Unit tests are disabled.")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
# Tcmalloc ---------------------------------------------------------------------
|
||||||
|
if (USE_TCMALLOC)
|
||||||
|
find_package(tcmalloc)
|
||||||
|
endif()
|
||||||
|
|
||||||
# OpenSSL ----------------------------------------------------------------------
|
# OpenSSL ----------------------------------------------------------------------
|
||||||
#set(OPENSSL_USE_STATIC_LIBS "TRUE")
|
#set(OPENSSL_USE_STATIC_LIBS "TRUE")
|
||||||
find_package(OpenSSL REQUIRED)
|
find_package(OpenSSL REQUIRED)
|
||||||
|
@ -635,6 +652,9 @@ find_package (BISON)
|
||||||
# FLEX -------------------------------------------------------------------------
|
# FLEX -------------------------------------------------------------------------
|
||||||
find_package (FLEX)
|
find_package (FLEX)
|
||||||
|
|
||||||
|
# GO ---------------------------------------------------------------------------
|
||||||
|
find_package(Go 1.2)
|
||||||
|
|
||||||
# Python
|
# Python
|
||||||
find_package(PythonInterp 2)
|
find_package(PythonInterp 2)
|
||||||
set(ENV{PYTHON_EXECUTABLE} ${PYTHON_EXECUTABLE})
|
set(ENV{PYTHON_EXECUTABLE} ${PYTHON_EXECUTABLE})
|
||||||
|
@ -704,14 +724,6 @@ add_subdirectory(UnitTests)
|
||||||
# - raspbian: raspberry debian package
|
# - raspbian: raspberry debian package
|
||||||
set(BUILD_PACKAGE "unknown" CACHE path "Package type to build")
|
set(BUILD_PACKAGE "unknown" CACHE path "Package type to build")
|
||||||
|
|
||||||
# Raspberry Pi
|
|
||||||
if (BUILD_PACKAGE STREQUAL "raspbian")
|
|
||||||
add_definitions("-DTRI_FORCE_ARMV6")
|
|
||||||
option(RASPBIAN "Building for Raspberry PI" ON)
|
|
||||||
else ()
|
|
||||||
option(RASPBIAN "Building for Raspberry PI" OFF)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
# OSX
|
# OSX
|
||||||
if (BUILD_PACKAGE STREQUAL "dmg-cli")
|
if (BUILD_PACKAGE STREQUAL "dmg-cli")
|
||||||
option(DARWIN "Building for MacOS" ON)
|
option(DARWIN "Building for MacOS" ON)
|
||||||
|
@ -752,10 +764,10 @@ if ((BUILD_PACKAGE STREQUAL "debian") OR RASPBIAN)
|
||||||
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
|
set(CPACK_DEBIAN_PACKAGE_SECTION "database")
|
||||||
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA
|
||||||
"${PROJECT_SOURCE_DIR}/Installation/ARM/postinst;${PROJECT_SOURCE_DIR}/Installation/ARM/preinst;${PROJECT_SOURCE_DIR}/Installation/ARM/postrm;${PROJECT_SOURCE_DIR}/Installation/ARM/prerm;")
|
"${PROJECT_SOURCE_DIR}/Installation/Debian/postinst;${PROJECT_SOURCE_DIR}/Installation/Debian/preinst;${PROJECT_SOURCE_DIR}/Installation/Debian/postrm;${PROJECT_SOURCE_DIR}/Installation/Debian/prerm;")
|
||||||
|
|
||||||
install(
|
install(
|
||||||
FILES ${PROJECT_SOURCE_DIR}/Installation/ARM/rc.arangodb
|
FILES ${PROJECT_SOURCE_DIR}/Installation/Debian/rc.arangodb
|
||||||
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
PERMISSIONS OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||||
DESTINATION /etc/init.d
|
DESTINATION /etc/init.d
|
||||||
RENAME arangodb)
|
RENAME arangodb)
|
||||||
|
|
Loading…
Reference in New Issue