Index: 3rdParty/V8/CMakeLists.txt --- 3rdParty/V8/CMakeLists.txt.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/V8/CMakeLists.txt 2017-02-02 23:22:45.176464000 +0100 @@ -209,7 +209,7 @@ list(APPEND V8_GYP_ARGS --format ninja) list(APPEND V8_GYP_ARGS -S.${V8_TARGET_ARCH}) - if (LINUX) + if (LINUX OR FREEBSD) 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) @@ -255,7 +255,7 @@ "${PROJECT_NAME}: Libraries" ) - list(APPEND LINK_DIRECTORIES "${NINJA_BUILD_DIR}/obj/third_party/icu") + list(INSERT LINK_DIRECTORIES 0 "${NINJA_BUILD_DIR}/obj/third_party/icu") set(ICU_LIBS "icui18n;icuuc;icudata" @@ -478,7 +478,7 @@ list(APPEND V8_GYP_ARGS --format make) list(APPEND V8_GYP_ARGS -S.${V8_TARGET_ARCH}) - if (LINUX) + if (LINUX OR FREEBSD) 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) @@ -553,7 +553,7 @@ "${PROJECT_NAME}: Libraries" ) - list(APPEND LINK_DIRECTORIES "${ICU_LIBRARY_DIR}") + list(INSERT LINK_DIRECTORIES 0 "${ICU_LIBRARY_DIR}") set(ICU_LIBS "icui18n;icuuc;icudata" Index: 3rdParty/V8/V8-5.0.71.39/build/all.gyp --- 3rdParty/V8/V8-5.0.71.39/build/all.gyp.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/V8/V8-5.0.71.39/build/all.gyp 2017-02-02 23:22:45.176677000 +0100 @@ -8,11 +8,7 @@ 'target_name': 'All', 'type': 'none', 'dependencies': [ - '../samples/samples.gyp:*', - '../src/d8.gyp:d8', - '../test/cctest/cctest.gyp:*', - '../test/fuzzer/fuzzer.gyp:*', - '../test/unittests/unittests.gyp:*', + '../src/d8.gyp:d8' ], 'conditions': [ ['component!="shared_library"', { Index: 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-freebsd.cc --- 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-freebsd.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-freebsd.cc 2017-02-02 23:22:45.176904000 +0100 @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include Index: 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-posix.cc --- 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-posix.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/V8/V8-5.0.71.39/src/base/platform/platform-posix.cc 2017-02-02 23:22:45.177179000 +0100 @@ -26,6 +26,9 @@ defined(__NetBSD__) || defined(__OpenBSD__) #include // NOLINT, for sysctl #endif +#if defined(__FreeBSD__) +#include +#endif #undef MAP_TYPE @@ -36,6 +39,7 @@ #include #include +#include #include "src/base/lazy-instance.h" #include "src/base/macros.h" Index: 3rdParty/V8/V8-5.0.71.39/tools/gyp/v8.gyp --- 3rdParty/V8/V8-5.0.71.39/tools/gyp/v8.gyp.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/V8/V8-5.0.71.39/tools/gyp/v8.gyp 2017-02-02 23:22:45.177676000 +0100 @@ -438,6 +438,9 @@ 'V8_IMMINENT_DEPRECATION_WARNINGS', ], 'sources': [ ### gcmole(all) ### + '<(SHARED_INTERMEDIATE_DIR)/libraries.cc', + '<(SHARED_INTERMEDIATE_DIR)/experimental-libraries.cc', + '../../src/snapshot/snapshot-empty.cc', '../../include/v8-debug.h', '../../include/v8-experimental.h', '../../include/v8-platform.h', Index: 3rdParty/rocksdb/rocksdb/CMakeLists.txt --- 3rdParty/rocksdb/rocksdb/CMakeLists.txt.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/CMakeLists.txt 2017-02-02 23:22:45.177964000 +0100 @@ -189,11 +189,7 @@ # -DSNAPPY -DZLIB - if (SOLARIS OR DARWIN) set(ROCKSDB_MALLOC_USABLE_SIZE "") - else() - set(ROCKSDB_MALLOC_USABLE_SIZE "-DROCKSDB_MALLOC_USABLE_SIZE") - endif() set(BASE_FLAGS "${BASE_FLAGS} -W -Wextra -Wall -Wsign-compare -Wshadow -Wno-unused-parameter -fno-omit-frame-pointer ${OPT_momit_leaf_frame_pointer} -fno-builtin-memcmp -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers ${ROCKSDB_MALLOC_USABLE_SIZE} -isystem -fPIC -D${OS_DEFINE} ${POSIX_FLAG}") Index: 3rdParty/rocksdb/rocksdb/Makefile --- 3rdParty/rocksdb/rocksdb/Makefile.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/Makefile 2017-02-02 23:22:45.178323000 +0100 @@ -138,13 +138,7 @@ include make_config.mk CLEAN_FILES += make_config.mk -ifneq ($(PLATFORM), IOS) -CFLAGS += -g -CXXFLAGS += -g -else -# no debug info for IOS, that will make our library big OPT += -DNDEBUG -endif ifeq ($(PLATFORM), OS_SOLARIS) PLATFORM_CXXFLAGS += -D _GLIBCXX_USE_C99 @@ -458,7 +452,7 @@ analyze tools -all: $(LIBRARY) $(BENCHMARKS) tools $(TESTS) +all: $(LIBRARY) static_lib: $(LIBRARY) Index: 3rdParty/rocksdb/rocksdb/port/port_posix.h --- 3rdParty/rocksdb/rocksdb/port/port_posix.h.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/port/port_posix.h 2017-02-02 23:22:45.178525000 +0100 @@ -27,7 +27,7 @@ #define PLATFORM_IS_LITTLE_ENDIAN \ (__DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN) #endif -#elif defined(OS_SOLARIS) +#elif defined(OS_SOLARIS) || defined(__sun) #include #ifdef _LITTLE_ENDIAN #define PLATFORM_IS_LITTLE_ENDIAN true @@ -35,7 +35,7 @@ #define PLATFORM_IS_LITTLE_ENDIAN false #endif #elif defined(OS_FREEBSD) || defined(OS_OPENBSD) || defined(OS_NETBSD) || \ - defined(OS_DRAGONFLYBSD) || defined(OS_ANDROID) + defined(OS_DRAGONFLYBSD) || defined(OS_ANDROID) || defined(__FreeBSD__) #include #include #define PLATFORM_IS_LITTLE_ENDIAN (_BYTE_ORDER == _LITTLE_ENDIAN) Index: 3rdParty/rocksdb/rocksdb/tools/ldb_cmd.cc --- 3rdParty/rocksdb/rocksdb/tools/ldb_cmd.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/tools/ldb_cmd.cc 2017-02-02 23:22:45.179024000 +0100 @@ -213,7 +213,7 @@ map::const_iterator itr = option_map_.find(option); if (itr != option_map_.end()) { try { -#if defined(CYGWIN) +#if 1 value = strtol(itr->second.c_str(), 0, 10); #else value = stoi(itr->second); @@ -974,7 +974,7 @@ itr = options.find(ARG_MAX_KEYS); if (itr != options.end()) { try { -#if defined(CYGWIN) +#if 1 max_keys_ = strtol(itr->second.c_str(), 0, 10); #else max_keys_ = stoi(itr->second); @@ -1870,7 +1870,7 @@ itr = options.find(ARG_MAX_KEYS); if (itr != options.end()) { try { -#if defined(CYGWIN) +#if 1 max_keys_scanned_ = strtol(itr->second.c_str(), 0, 10); #else max_keys_scanned_ = stoi(itr->second); Index: 3rdParty/rocksdb/rocksdb/util/env_posix.cc --- 3rdParty/rocksdb/rocksdb/util/env_posix.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/util/env_posix.cc 2017-02-02 23:22:45.179289000 +0100 @@ -52,6 +52,11 @@ #include "util/thread_local.h" #include "util/thread_status_updater.h" +#if defined(OS_FREEBSD) || defined(__FreeBSD__) +#define fdatasync fsync +#define fread_unlocked fread +#endif + #if !defined(TMPFS_MAGIC) #define TMPFS_MAGIC 0x01021994 #endif Index: 3rdParty/rocksdb/rocksdb/util/options_builder.cc --- 3rdParty/rocksdb/rocksdb/util/options_builder.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/util/options_builder.cc 2017-02-02 23:22:45.179493000 +0100 @@ -27,7 +27,7 @@ // Otherwise, calculate a score based on threshold and expected value of // two styles, weighing reads 4X important than writes. int expected_levels = static_cast(ceil( - std::log(target_db_size / write_buffer_size) / std::log(kBytesForLevelMultiplier))); + log(target_db_size / write_buffer_size) / log(kBytesForLevelMultiplier))); int expected_max_files_universal = static_cast(ceil(log2(target_db_size / write_buffer_size))); @@ -118,8 +118,8 @@ int write_amplification_threshold, uint64_t target_db_size, Options* options) { int expected_levels_one_level0_file = - static_cast(ceil(std::log(target_db_size / options->write_buffer_size) / - std::log(kBytesForLevelMultiplier))); + static_cast(ceil(log(target_db_size / options->write_buffer_size) / + log(kBytesForLevelMultiplier))); int level0_stop_writes_trigger = read_amplification_threshold - expected_levels_one_level0_file; Index: 3rdParty/rocksdb/rocksdb/util/options_helper.cc --- 3rdParty/rocksdb/rocksdb/util/options_helper.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/util/options_helper.cc 2017-02-02 23:22:45.179855000 +0100 @@ -160,7 +160,7 @@ uint64_t ParseUint64(const std::string& value) { size_t endchar; -#ifndef CYGWIN +#if 0 uint64_t num = std::stoull(value.c_str(), &endchar); #else char* endptr; @@ -198,7 +198,7 @@ int ParseInt(const std::string& value) { size_t endchar; -#ifndef CYGWIN +#if 0 int num = std::stoi(value.c_str(), &endchar); #else char* endptr; @@ -220,7 +220,7 @@ } double ParseDouble(const std::string& value) { -#ifndef CYGWIN +#if 0 return std::stod(value); #else return std::strtod(value.c_str(), 0); Index: 3rdParty/rocksdb/rocksdb/util/string_util.h --- 3rdParty/rocksdb/rocksdb/util/string_util.h.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/util/string_util.h 2017-02-02 23:22:45.180044000 +0100 @@ -16,7 +16,7 @@ template inline std::string ToString(T value) { -#if !(defined OS_ANDROID) && !(defined CYGWIN) +#if 0 return std::to_string(value); #else // Andorid or cygwin doesn't support all of C++11, std::to_string() being Index: 3rdParty/rocksdb/rocksdb/util/thread_posix.cc --- 3rdParty/rocksdb/rocksdb/util/thread_posix.cc.orig 2017-02-02 18:50:53.000000000 +0100 +++ 3rdParty/rocksdb/rocksdb/util/thread_posix.cc 2017-02-02 23:22:45.180242000 +0100 @@ -10,6 +10,7 @@ #include "util/thread_posix.h" #include #include +#include #ifdef OS_LINUX #include #endif Index: CMakeLists.txt --- CMakeLists.txt.orig 2017-02-02 18:50:53.000000000 +0100 +++ CMakeLists.txt 2017-02-02 23:22:45.180534000 +0100 @@ -507,9 +507,10 @@ ################################################################################ if (NOT WINDOWS) - set(SYS_LIBS ${SYS_LIBS} resolv) - - if (NOT DARWIN) + if (NOT FREEBSD) + set(SYS_LIBS ${SYS_LIBS} resolv) + endif () + if (NOT DARWIN AND NOT FREEBSD) set(SYS_LIBS ${SYS_LIBS} rt) endif () endif () @@ -885,6 +886,11 @@ ## SUB-PROJECTS ################################################################################ +set(SYS_LIBS ${SYS_LIBS} crypto) +set(SYS_LIBS ${SYS_LIBS} ncurses) +set(SYS_LIBS ${SYS_LIBS} execinfo) +set(SYS_LIBS ${SYS_LIBS} m) + list(INSERT SYSTEM_LIBRARIES 0 ${BT_LIBS} ${ZLIB_LIBS} Index: arangod/Aql/Condition.cpp --- arangod/Aql/Condition.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Aql/Condition.cpp 2017-02-02 23:22:45.180908000 +0100 @@ -32,6 +32,8 @@ #include "Logger/Logger.h" #include "Utils/Transaction.h" +#include + #ifdef _WIN32 // turn off warnings about too long type name for debug symbols blabla in MSVC // only... Index: arangod/Aql/Expression.cpp --- arangod/Aql/Expression.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Aql/Expression.cpp 2017-02-02 23:22:45.181290000 +0100 @@ -594,7 +594,7 @@ try { // stoll() might throw an exception if the string is not a number - int64_t position = static_cast(std::stoll(value)); + int64_t position = static_cast(strtol(value.c_str(), NULL, 10)); return result.at(trx, position, mustDestroy, true); } catch (...) { // no number found. Index: arangod/Aql/Functions.cpp --- arangod/Aql/Functions.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Aql/Functions.cpp 2017-02-02 23:22:45.182044000 +0100 @@ -299,10 +299,10 @@ isValid = true; return 0.0; } - size_t behind = 0; - double value = std::stod(str, &behind); - while (behind < str.size()) { - char c = str[behind]; + char *behind = NULL; + double value = strtod(str.c_str(), &behind); + while (behind < str.c_str() + str.size()) { + char c = *behind; if (c != ' ' && c != '\t' && c != '\r' && c != '\n' && c != '\f') { isValid = false; return 0.0; @@ -2917,7 +2917,7 @@ AqlValue value = ExtractFunctionParameterValue(trx, parameters, 0); double input = value.toDouble(trx); - return NumberValue(trx, std::log2(input), true); + return NumberValue(trx, log2(input), true); } /// @brief function LOG10 @@ -2953,7 +2953,7 @@ AqlValue value = ExtractFunctionParameterValue(trx, parameters, 0); double input = value.toDouble(trx); - return NumberValue(trx, std::exp2(input), true); + return NumberValue(trx, exp2(input), true); } /// @brief function SIN Index: arangod/Aql/ShortestPathNode.cpp --- arangod/Aql/ShortestPathNode.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Aql/ShortestPathNode.cpp 2017-02-02 23:22:45.182273000 +0100 @@ -437,6 +437,6 @@ edgesCount += edges; } - nrItems = edgesCount + static_cast(std::log2(nodesEstimate) * nodesEstimate); + nrItems = edgesCount + static_cast(log2(nodesEstimate) * nodesEstimate); return depCost + nrItems; } Index: arangod/Aql/SortNode.cpp --- arangod/Aql/SortNode.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Aql/SortNode.cpp 2017-02-02 23:22:45.182456000 +0100 @@ -196,5 +196,5 @@ if (nrItems <= 3.0) { return depCost + nrItems; } - return depCost + nrItems * std::log2(static_cast(nrItems)); + return depCost + nrItems * log2(static_cast(nrItems)); } Index: arangod/Indexes/Index.cpp --- arangod/Indexes/Index.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Indexes/Index.cpp 2017-02-02 23:22:45.182719000 +0100 @@ -534,7 +534,7 @@ // by default, no sort conditions are supported coveredAttributes = 0; if (itemsInIndex > 0) { - estimatedCost = itemsInIndex * std::log2(itemsInIndex); + estimatedCost = itemsInIndex * log2(itemsInIndex); } else { estimatedCost = 0.0; } Index: arangod/Indexes/RocksDBIndex.cpp --- arangod/Indexes/RocksDBIndex.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Indexes/RocksDBIndex.cpp 2017-02-02 23:22:45.183020000 +0100 @@ -833,7 +833,7 @@ return true; } else if (coveredAttributes > 0) { estimatedCost = (itemsInIndex / coveredAttributes) * - std::log2(static_cast(itemsInIndex)); + log2(static_cast(itemsInIndex)); if (sortCondition->isAscending()) { // reverse iteration is more expensive estimatedCost *= 4; @@ -846,7 +846,7 @@ coveredAttributes = 0; // by default no sort conditions are supported if (itemsInIndex > 0) { - estimatedCost = itemsInIndex * std::log2(static_cast(itemsInIndex)); + estimatedCost = itemsInIndex * log2(static_cast(itemsInIndex)); // slightly penalize this type of index against other indexes which // are in memory estimatedCost *= 1.05; Index: arangod/Indexes/SkiplistIndex.cpp --- arangod/Indexes/SkiplistIndex.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Indexes/SkiplistIndex.cpp 2017-02-02 23:22:45.183342000 +0100 @@ -35,6 +35,8 @@ #include #include +#include + using namespace arangodb; static size_t sortWeight(arangodb::aql::AstNode const* node) { @@ -1404,7 +1406,7 @@ return true; } else if (coveredAttributes > 0) { estimatedCost = (itemsInIndex / coveredAttributes) * - std::log2(static_cast(itemsInIndex)); + log2(static_cast(itemsInIndex)); return true; } } @@ -1413,7 +1415,7 @@ coveredAttributes = 0; // by default no sort conditions are supported if (itemsInIndex > 0) { - estimatedCost = itemsInIndex * std::log2(static_cast(itemsInIndex)); + estimatedCost = itemsInIndex * log2(static_cast(itemsInIndex)); } else { estimatedCost = 0.0; } Index: arangod/Scheduler/ListenTask.cpp --- arangod/Scheduler/ListenTask.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Scheduler/ListenTask.cpp 2017-02-02 23:22:45.183512000 +0100 @@ -22,6 +22,11 @@ /// @author Achim Brandt //////////////////////////////////////////////////////////////////////////////// +#include +#include +#include +#include + #include "ListenTask.h" #include "GeneralServer/GeneralServerFeature.h" Index: arangod/Utils/Transaction.cpp --- arangod/Utils/Transaction.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ arangod/Utils/Transaction.cpp 2017-02-02 23:22:45.184142000 +0100 @@ -119,7 +119,7 @@ // index does not support the sort condition if (itemsInIndex > 0) { - estimatedCost = itemsInIndex * std::log2(static_cast(itemsInIndex)); + estimatedCost = itemsInIndex * log2(static_cast(itemsInIndex)); } else { estimatedCost = 0.0; } Index: etc/arangodb3/arango-dfdb.conf.in --- etc/arangodb3/arango-dfdb.conf.in.orig 2017-02-02 18:50:53.000000000 +0100 +++ etc/arangodb3/arango-dfdb.conf.in 2017-02-02 23:22:45.184316000 +0100 @@ -3,7 +3,7 @@ [database] auto-upgrade = false upgrade-check = false -directory= @LOCALSTATEDIR@/lib/arangodb3 +directory= @LOCALSTATEDIR@/arangodb [server] rest-server = false @@ -18,7 +18,7 @@ [javascript] startup-directory = @PKGDATADIR@/js -app-path = @LOCALSTATEDIR@/lib/arangodb3-apps +app-path = @LOCALSTATEDIR@/arangodb/apps script = @PKGDATADIR@/js/server/arango-dfdb.js v8-contexts = 1 Index: etc/arangodb3/arangod.conf.in --- etc/arangodb3/arangod.conf.in.orig 2017-02-02 18:50:53.000000000 +0100 +++ etc/arangodb3/arangod.conf.in 2017-02-02 23:22:45.184476000 +0100 @@ -5,7 +5,7 @@ # [database] -directory = @LOCALSTATEDIR@/lib/arangodb3 +directory = @LOCALSTATEDIR@/arangodb # maximal-journal-size = 33554432 @@ -53,7 +53,7 @@ [javascript] startup-directory = @PKGDATADIR@/js -app-path = @LOCALSTATEDIR@/lib/arangodb3-apps +app-path = @LOCALSTATEDIR@/arangodb/apps # app-path = @HOMEDRIVE@/@HOMEPATH@/arangodb3/apps # number of V8 contexts available for JavaScript execution. use 0 to @@ -69,6 +69,6 @@ [log] level = info -file = @LOCALSTATEDIR@/log/arangodb3/arangod.log +file = @LOCALSTATEDIR@/arangodb/log/arangod.log -[cluster] \ No newline at end of file +[cluster] Index: lib/Basics/operating-system.h --- lib/Basics/operating-system.h.orig 2017-02-02 18:50:53.000000000 +0100 +++ lib/Basics/operating-system.h 2017-02-02 23:22:45.184737000 +0100 @@ -436,6 +436,7 @@ #define TRI_GCC_THREAD_LOCAL_STORAGE 1 +#define TRI_HAVE_SC_PHYS_PAGES 1 #define TRI_HAVE_LINUX_PROC 1 #define ARANGODB_HAVE_DOMAIN_SOCKETS 1 #define TRI_HAVE_POSIX_MMAP 1 Index: lib/Basics/socket-utils.h --- lib/Basics/socket-utils.h.orig 2017-02-02 18:50:53.000000000 +0100 +++ lib/Basics/socket-utils.h 2017-02-02 23:22:45.184915000 +0100 @@ -26,6 +26,11 @@ #include "Basics/Common.h" +#include +#include +#include +#include + #ifdef TRI_HAVE_WINSOCK2_H #include #include Index: lib/Endpoint/EndpointIp.cpp --- lib/Endpoint/EndpointIp.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ lib/Endpoint/EndpointIp.cpp 2017-02-02 23:22:45.185110000 +0100 @@ -29,6 +29,10 @@ #include "Endpoint/Endpoint.h" +#include +#include +#include + using namespace arangodb; using namespace arangodb::basics; Index: lib/Logger/LogAppenderSyslog.cpp --- lib/Logger/LogAppenderSyslog.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ lib/Logger/LogAppenderSyslog.cpp 2017-02-02 23:22:45.185269000 +0100 @@ -64,7 +64,7 @@ if ('0' <= facility[0] && facility[0] <= '9') { value = StringUtils::int32(facility); } else { - CODE* ptr = reinterpret_cast(TRI_facilitynames); + CODE* ptr = static_cast((CODE *)TRI_facilitynames); while (ptr->c_name != 0) { if (strcmp(ptr->c_name, facility.c_str()) == 0) { Index: lib/SimpleHttpClient/SimpleHttpClient.cpp --- lib/SimpleHttpClient/SimpleHttpClient.cpp.orig 2017-02-02 23:22:45.185671000 +0100 +++ lib/SimpleHttpClient/SimpleHttpClient.cpp 2017-02-03 21:45:38.194739000 +0100 @@ -835,7 +835,7 @@ uint32_t contentLength; try { - contentLength = static_cast(std::stol(line, nullptr, 16)); + contentLength = static_cast(strtol(line.c_str(), NULL, 16)); } catch (...) { setErrorMessage("found invalid content-length", true); // reset connection Index: lib/Ssl/SslFeature.cpp --- lib/Ssl/SslFeature.cpp.orig 2017-02-02 18:50:53.000000000 +0100 +++ lib/Ssl/SslFeature.cpp 2017-02-02 23:22:45.185965000 +0100 @@ -34,10 +34,6 @@ #include "Random/UniformCharacter.h" #include "Ssl/ssl-helper.h" -#ifndef OPENSSL_THREADS -#error missing thread support for openssl, please recomple OpenSSL with threads -#endif - using namespace arangodb; using namespace arangodb::basics; using namespace arangodb::options;