1
0
Fork 0

Merge branch 'devel' of https://github.com/arangodb/arangodb into spdvpk

This commit is contained in:
Jan Steemann 2016-03-03 17:59:27 +01:00
commit 4e0328d46f
11 changed files with 192 additions and 80 deletions

View File

@ -42,9 +42,12 @@ endif () # TODO: ARM? Win32?
# target architecture # target architecture
file(RELATIVE_PATH V8_REL_TARGET_PATH ${V8_DIR} ${V8_TARGET_DIR})
list(APPEND V8_GYP_ARGS list(APPEND V8_GYP_ARGS
--generator-output=${V8_TARGET_DIR} --generator-output=${V8_REL_TARGET_PATH}
-Dv8_target_arch=${V8_PROC_ARCH} -Dv8_target_arch=${V8_PROC_ARCH}
-Dv8_host_arch=${V8_PROC_ARCH}
-Dbyteorder=${ENDIANESS} -Dbyteorder=${ENDIANESS}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE} -DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
) )
@ -78,11 +81,93 @@ set(V8_INCLUDE_DIR
"${PROJECT_NAME}: include path" "${PROJECT_NAME}: include path"
) )
if (${CMAKE_GENERATOR} MATCHES "Ninja")
message("NINJA!")
option(USE_DEBUG_V8 "compile V8 in DEBUG mode" OFF)
if (USE_DEBUG_V8)
set(NINJA_TARGET "optDebug") # one of Debug|Release|Optdebug
set(V8_TARGET_ARCH "${V8_PROC_ARCH}.debug")
else ()
set(NINJA_TARGET "Release") # one of Debug|Release|Optdebug
set(V8_TARGET_ARCH "${V8_PROC_ARCH}.release")
endif ()
if (USE_DEBUG_V8)
list(APPEND V8_GYP_ARGS -Dv8_enable_backtrace=1)
endif ()
set(V8_LIBRARY_DIR "${V8_TARGET_DIR}/${V8_TARGET_ARCH}")
set(ICU_LIBRARY_DIR "${V8_LIBRARY_DIR}")
set(GYP_MAIN "${V8_DIR}/build/gyp_v8")
list(APPEND V8_GYP_ARGS ${V8_DIR}/build/all.gyp)
list(APPEND V8_GYP_ARGS --format ninja)
list(APPEND V8_GYP_ARGS -S.${V8_TARGET_ARCH})
if (LINUX)
set(V8_LIBRARY_DIR "${V8_LIBRARY_DIR}/obj.target/tools/gyp")
set(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}/obj.target/third_party/icu")
elseif (SOLARIS)
set(V8_LIBRARY_DIR "${V8_LIBRARY_DIR}/obj.host/tools/gyp")
set(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}/obj.host/third_party/icu")
endif ()
# Gyp wants to use its own clang if we don't set this:
list(APPEND V8_GYP_ARGS
-Dclang=0)
# -Dv8_use_snapshot=true
list(APPEND V8_GYP_ARGS
-I${V8_DIR}/build/standalone.gypi
--depth=.
-Dstandalone_static_library=1
-Dlinux_use_bundled_gold=0
-Dlinux_use_gold_flags=0
-Dv8_no_strict_aliasing=1
-Dwerror=
)
set(NINJA_BUILD_DIR "${V8_TARGET_DIR}/${NINJA_TARGET}")
ExternalProject_Add(v8_build
SOURCE_DIR
"${V8_DIR}"
CONFIGURE_COMMAND
${PYTHON_EXECUTABLE} ${GYP_MAIN} ${V8_GYP_ARGS}
BINARY_DIR
${NINJA_BUILD_DIR}
BUILD_COMMAND
${CMAKE_BUILD_TOOL} v8
STEP_TARGETS
v8_base v8_libbase v8_libplatform v8_nosnapshot icui18n icuuc icudata
INSTALL_COMMAND
"")
list(APPEND LINK_DIRECTORIES "${NINJA_BUILD_DIR}/obj/tools/gyp")
set(V8_LIBS
"v8_base;v8_libbase;v8_libplatform;v8_nosnapshot"
CACHE INTERNAL
"${PROJECT_NAME}: Libraries"
)
list(APPEND LINK_DIRECTORIES "${NINJA_BUILD_DIR}/obj/third_party/icu")
set(ICU_LIBS
"icui18n;icuuc;icudata"
CACHE INTERNAL
"ICU: Libraries"
)
set(LINK_DIRECTORIES "${LINK_DIRECTORIES}" PARENT_SCOPE)
################################################################################ ################################################################################
## WINDOWS ## WINDOWS
################################################################################ ################################################################################
if (WIN32) elseif (WIN32)
set(GYP_MAIN ${V8_DIR}/build/gyp_v8) set(GYP_MAIN ${V8_DIR}/build/gyp_v8)
# try to find 2013 in 'Visual Studio 12 2013 Win64' # try to find 2013 in 'Visual Studio 12 2013 Win64'
@ -257,13 +342,17 @@ else ()
list(APPEND V8_GYP_ARGS --format make) list(APPEND V8_GYP_ARGS --format make)
list(APPEND V8_GYP_ARGS -S.${V8_TARGET_ARCH}) list(APPEND V8_GYP_ARGS -S.${V8_TARGET_ARCH})
if (LINUX OR SOLARIS) if (LINUX)
set(V8_LIBRARY_DIR "${V8_LIBRARY_DIR}/obj.target/tools/gyp") set(V8_LIBRARY_DIR "${V8_LIBRARY_DIR}/obj.target/tools/gyp")
set(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}/obj.target/third_party/icu") set(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}/obj.target/third_party/icu")
elseif (SOLARIS)
set(V8_LIBRARY_DIR "${V8_LIBRARY_DIR}/obj.host/tools/gyp")
set(ICU_LIBRARY_DIR "${ICU_LIBRARY_DIR}/obj.host/third_party/icu")
endif () endif ()
list(APPEND V8_GYP_ARGS list(APPEND V8_GYP_ARGS
-Ibuild/standalone.gypi -Ibuild/standalone.gypi
-Dv8_use_snapshot=true
--depth=. --depth=.
-Dstandalone_static_library=1 -Dstandalone_static_library=1
-Dlinux_use_bundled_gold=0 -Dlinux_use_bundled_gold=0

View File

@ -136,7 +136,7 @@ if __name__ == '__main__':
for f in glob.glob(os.path.join(v8_root, 'out', 'Makefile.*')): for f in glob.glob(os.path.join(v8_root, 'out', 'Makefile.*')):
os.unlink(f) os.unlink(f)
# --generator-output defines where the Makefile goes. # --generator-output defines where the Makefile goes.
gyp_args.append('--generator-output=out') #gyp_args.append('--generator-output=out')
# -Goutput_dir defines where the build output goes, relative to the # -Goutput_dir defines where the build output goes, relative to the
# Makefile. Set it to . so that the build output doesn't end up in out/out. # Makefile. Set it to . so that the build output doesn't end up in out/out.
gyp_args.append('-Goutput_dir=.') gyp_args.append('-Goutput_dir=.')

View File

@ -24,40 +24,40 @@ endif ()
include(CheckIncludeFile) include(CheckIncludeFile)
if (MSVC) if (MSVC)
CHECK_INCLUDE_FILE("winsock.h" HAVE_SYS_SELECT_H) check_include_file("winsock.h" HAVE_SYS_SELECT_H)
else() else()
CHECK_INCLUDE_FILE(poll.h HAVE_POLL_H) check_include_file(poll.h HAVE_POLL_H)
CHECK_INCLUDE_FILE(port.h HAVE_PORT_H) check_include_file(port.h HAVE_PORT_H)
CHECK_INCLUDE_FILE(sys/epoll.h HAVE_SYS_EPOLL_H) check_include_file(sys/epoll.h HAVE_SYS_EPOLL_H)
CHECK_INCLUDE_FILE(sys/event.h HAVE_SYS_EVENT_H) check_include_file(sys/event.h HAVE_SYS_EVENT_H)
CHECK_INCLUDE_FILE(sys/inotify.h HAVE_SYS_INOTIFY_H) check_include_file(sys/inotify.h HAVE_SYS_INOTIFY_H)
CHECK_INCLUDE_FILE(sys/select.h HAVE_SYS_SELECT_H) check_include_file(sys/select.h HAVE_SYS_SELECT_H)
CHECK_INCLUDE_FILE(sys/signalfd.h HAVE_SYS_SIGNALFD_H) check_include_file(sys/signalfd.h HAVE_SYS_SIGNALFD_H)
endif() endif()
include(CheckFunctionExists) include(CheckFunctionExists)
CHECK_FUNCTION_EXISTS(inotify_init HAVE_INOTIFY_INIT) check_function_exists(inotify_init HAVE_INOTIFY_INIT)
CHECK_FUNCTION_EXISTS(epoll_ctl HAVE_EPOLL_CTL) check_function_exists(epoll_ctl HAVE_EPOLL_CTL)
CHECK_FUNCTION_EXISTS(kqueue HAVE_KQUEUE) check_function_exists(kqueue HAVE_KQUEUE)
CHECK_FUNCTION_EXISTS(port_create HAVE_PORT_CREATE) check_function_exists(port_create HAVE_PORT_CREATE)
CHECK_FUNCTION_EXISTS(poll HAVE_POLL) check_function_exists(poll HAVE_POLL)
if (MSVC) if (MSVC)
set(HAVE_SELECT 1) # Force select for windows. set(HAVE_SELECT 1) # Force select for windows.
else() else()
CHECK_FUNCTION_EXISTS(select HAVE_SELECT) check_function_exists(select HAVE_SELECT)
endif() endif()
CHECK_FUNCTION_EXISTS(eventfd HAVE_EVENTFD) check_function_exists(eventfd HAVE_EVENTFD)
CHECK_FUNCTION_EXISTS(signalfd HAVE_SIGNALFD) check_function_exists(signalfd HAVE_SIGNALFD)
CHECK_FUNCTION_EXISTS(clock_gettime HAVE_CLOCK_GETTIME) check_function_exists(clock_gettime HAVE_CLOCK_GETTIME)
CHECK_FUNCTION_EXISTS(nanosleep HAVE_NANOSLEEP) check_function_exists(nanosleep HAVE_NANOSLEEP)
CHECK_FUNCTION_EXISTS(floor HAVE_FLOOR) check_function_exists(floor HAVE_FLOOR)
# check system library # check system library
include(CheckCXXSourceCompiles) include(CheckCXXSourceCompiles)
if (HAVE_CLOCK_GETTIME) if (HAVE_CLOCK_GETTIME)
CHECK_CXX_SOURCE_COMPILES(" check_cxx_source_compiles("
#include <unistd.h> #include <unistd.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#include <time.h> #include <time.h>
@ -96,12 +96,12 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/libev-${libev_VERSION})
add_library(ev STATIC add_library(ev STATIC
${LIBEV_DIR}/ev.c ${LIBEV_DIR}/ev.c
) )
configure_file( configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in ${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/libev-${libev_VERSION}/config.h ${CMAKE_CURRENT_BINARY_DIR}/libev-${libev_VERSION}/config.h
) )
set_target_properties(ev PROPERTIES COMPILE_FLAGS "${FLAGS}") set_target_properties(ev PROPERTIES COMPILE_FLAGS "${FLAGS}")
@ -109,19 +109,19 @@ set(LIBEV_VERSION
${libev_VERSION} ${libev_VERSION}
CACHE INTERNAL CACHE INTERNAL
"${PROJECT_NAME}: Version" "${PROJECT_NAME}: Version"
) )
set(LIBEV_LIBS set(LIBEV_LIBS
ev ev
CACHE INTERNAL CACHE INTERNAL
"${PROJECT_NAME}: Libraries" "${PROJECT_NAME}: Libraries"
) )
set(LIBEV_INCLUDE_DIR set(LIBEV_INCLUDE_DIR
${PROJECT_SOURCE_DIR}/${LIBEV_DIR} ${PROJECT_SOURCE_DIR}/${LIBEV_DIR}
CACHE INTERNAL CACHE INTERNAL
"${PROJECT_NAME}: Include Directories" "${PROJECT_NAME}: Include Directories"
) )
list(APPEND LINK_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}") list(APPEND LINK_DIRECTORIES "${CMAKE_CURRENT_BINARY_DIR}")
set(LINK_DIRECTORIES "${LINK_DIRECTORIES}" PARENT_SCOPE) set(LINK_DIRECTORIES "${LINK_DIRECTORIES}" PARENT_SCOPE)

View File

@ -88,9 +88,9 @@ if(NOT CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
endif() endif()
set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc) set(ZLIB_PC ${CMAKE_CURRENT_BINARY_DIR}/zlib.pc)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zlib.pc.cmakein
${ZLIB_PC} @ONLY) ${ZLIB_PC} @ONLY)
configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein configure_file(${CMAKE_CURRENT_SOURCE_DIR}/zconf.h.cmakein
${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY) ${CMAKE_CURRENT_BINARY_DIR}/zconf.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR}) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_SOURCE_DIR})
@ -153,13 +153,13 @@ endif()
if(MSVC) if(MSVC)
if(ASM686) if(ASM686)
ENABLE_LANGUAGE(ASM_MASM) enable_language(ASM_MASM)
set(ZLIB_ASMS set(ZLIB_ASMS
contrib/masmx86/inffas32.asm contrib/masmx86/inffas32.asm
contrib/masmx86/match686.asm contrib/masmx86/match686.asm
) )
elseif (AMD64) elseif (AMD64)
ENABLE_LANGUAGE(ASM_MASM) enable_language(ASM_MASM)
set(ZLIB_ASMS set(ZLIB_ASMS
contrib/masmx64/gvmat64.asm contrib/masmx64/gvmat64.asm
contrib/masmx64/inffasx64.asm contrib/masmx64/inffasx64.asm
@ -176,7 +176,7 @@ file(READ ${CMAKE_CURRENT_SOURCE_DIR}/zlib.h _zlib_h_contents)
string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*" string(REGEX REPLACE ".*#define[ \t]+ZLIB_VERSION[ \t]+\"([-0-9A-Za-z.]+)\".*"
"\\1" ZLIB_FULL_VERSION ${_zlib_h_contents}) "\\1" ZLIB_FULL_VERSION ${_zlib_h_contents})
if(MINGW) if(MINGW)
# This gets us DLL resource information when compiling on MinGW. # This gets us DLL resource information when compiling on MinGW.
if(NOT CMAKE_RC_COMPILER) if(NOT CMAKE_RC_COMPILER)
set(CMAKE_RC_COMPILER windres.exe) set(CMAKE_RC_COMPILER windres.exe)
@ -190,7 +190,7 @@ if(MINGW)
-o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj -o ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj
-i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc) -i ${CMAKE_CURRENT_SOURCE_DIR}/win32/zlib1.rc)
set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj) set(ZLIB_DLL_SRCS ${CMAKE_CURRENT_BINARY_DIR}/zlib1rc.obj)
endif(MINGW) endif(MINGW)
add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) add_library(zlib SHARED ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_DLL_SRCS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS}) add_library(zlibstatic STATIC ${ZLIB_SRCS} ${ZLIB_ASMS} ${ZLIB_PUBLIC_HDRS} ${ZLIB_PRIVATE_HDRS})
@ -214,24 +214,24 @@ if(UNIX)
if(NOT APPLE AND NOT SOLARIS) if(NOT APPLE AND NOT SOLARIS)
set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"") set_target_properties(zlib PROPERTIES LINK_FLAGS "-Wl,--version-script,\"${CMAKE_CURRENT_SOURCE_DIR}/zlib.map\"")
endif() endif()
elseif(BUILD_SHARED_LIBS AND WIN32) elseif(BUILD_SHARED_LIBS AND WIN32)
# Creates zlib1.dll when building shared library version # Creates zlib1.dll when building shared library version
set_target_properties(zlib PROPERTIES SUFFIX "1.dll") set_target_properties(zlib PROPERTIES SUFFIX "1.dll")
endif() endif()
if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL ) if(NOT SKIP_INSTALL_LIBRARIES AND NOT SKIP_INSTALL_ALL)
install(TARGETS zlib zlibstatic install(TARGETS zlib zlibstatic
RUNTIME DESTINATION "${INSTALL_BIN_DIR}" RUNTIME DESTINATION "${INSTALL_BIN_DIR}"
ARCHIVE DESTINATION "${INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${INSTALL_LIB_DIR}"
LIBRARY DESTINATION "${INSTALL_LIB_DIR}" ) LIBRARY DESTINATION "${INSTALL_LIB_DIR}")
endif() endif()
if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL ) if(NOT SKIP_INSTALL_HEADERS AND NOT SKIP_INSTALL_ALL)
install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}") install(FILES ${ZLIB_PUBLIC_HDRS} DESTINATION "${INSTALL_INC_DIR}")
endif() endif()
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3") install(FILES zlib.3 DESTINATION "${INSTALL_MAN_DIR}/man3")
endif() endif()
if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL ) if(NOT SKIP_INSTALL_FILES AND NOT SKIP_INSTALL_ALL)
install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}") install(FILES ${ZLIB_PC} DESTINATION "${INSTALL_PKGCONFIG_DIR}")
endif() endif()

View File

@ -220,6 +220,7 @@ include(CheckCXX11Features)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
if (MSVC) if (MSVC)
configure_file("Installation/Windows/vcproj.user/arangod.vcxproj.user" ${CMAKE_BINARY_DIR})
add_definitions("-D_CRT_SECURE_NO_WARNINGS=1") add_definitions("-D_CRT_SECURE_NO_WARNINGS=1")
add_definitions("-DFD_SETSIZE=2048") add_definitions("-DFD_SETSIZE=2048")
add_definitions("-DUSE_REGEX_STATIC=1") add_definitions("-DUSE_REGEX_STATIC=1")

View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerCommandArguments>--config etc/relative/arangod.conf aoeu</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>..\..</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
</PropertyGroup>
</Project>

View File

@ -204,6 +204,14 @@ void SchedulerLibev::switchAllocator() {
} }
} }
static void LibEvErrorLogger(const char *msg) {
#if _WIN32
TRI_ERRORBUF;
TRI_SYSTEM_ERROR();
#endif
LOG(WARN) << "LIBEV: " << msg << " - " << TRI_GET_ERRORBUF;
}
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief creates a scheduler /// @brief creates a scheduler
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -226,6 +234,8 @@ SchedulerLibev::SchedulerLibev(size_t concurrency, int backend)
// construct the loops // construct the loops
_loops = new struct ev_loop* [nrThreads]; _loops = new struct ev_loop* [nrThreads];
ev_set_syserr_cb(LibEvErrorLogger);
((struct ev_loop**)_loops)[0] = ev_default_loop(_backend); ((struct ev_loop**)_loops)[0] = ev_default_loop(_backend);
for (size_t i = 1; i < nrThreads; ++i) { for (size_t i = 1; i < nrThreads; ++i) {

View File

@ -150,9 +150,12 @@ int finalizeWindows(const TRI_win_finalize_e finalizeWhat, char const* data) {
switch (finalizeWhat) { switch (finalizeWhat) {
case TRI_WIN_FINAL_WSASTARTUP_FUNCTION_CALL: { case TRI_WIN_FINAL_WSASTARTUP_FUNCTION_CALL: {
/*
TODO: we can't always determine when to call this properly.
if we have closed libev, its ok, if we have active socket operations
these will fail with errors.
int result = int result =
WSACleanup(); // could this cause error on server termination? WSACleanup(); // could this cause error on server termination?
if (result != 0) { if (result != 0) {
// can not use LOG_ etc here since the logging may have terminated // can not use LOG_ etc here since the logging may have terminated
printf( printf(
@ -161,6 +164,7 @@ int finalizeWindows(const TRI_win_finalize_e finalizeWhat, char const* data) {
result); result);
return -1; return -1;
} }
*/
return 0; return 0;
} }