summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladislav Vaintroub <wlad@mariadb.com>2017-04-06 18:29:33 -0400
committerVladislav Vaintroub <wlad@mariadb.com>2017-04-06 18:40:12 -0400
commitb64910ce27a4df33e3ad2e3f40764e8b3271a9aa (patch)
treef1b22f69de853613d9bd37de0bb8a5e417d565d5
parent428a922cd0284b5fbdf97f74118209a6a9b4fb4c (diff)
downloadmariadb-git-b64910ce27a4df33e3ad2e3f40764e8b3271a9aa.tar.gz
MDEV-12452 MDEV-12453 : Fix building rocksdb and aws_key_management on macOS
use CMAKE_CXX_STANDARD to set C++11 flags with CMake 3.1+ (apples flags are somehow different from standard clang) port htonbe16/32/64 macros for rocksdb use reinterpret_cast<size_t> to cast macOS's pthread_t (pointer type) to size_t , for rocksdb
-rw-r--r--plugin/aws_key_management/CMakeLists.txt8
-rw-r--r--storage/rocksdb/CMakeLists.txt4
-rw-r--r--storage/rocksdb/build_rocksdb.cmake4
-rw-r--r--storage/rocksdb/rdb_buff.h10
-rw-r--r--storage/rocksdb/ut0counter.h2
5 files changed, 20 insertions, 8 deletions
diff --git a/plugin/aws_key_management/CMakeLists.txt b/plugin/aws_key_management/CMakeLists.txt
index 66b8074406f..59fdd1684f2 100644
--- a/plugin/aws_key_management/CMakeLists.txt
+++ b/plugin/aws_key_management/CMakeLists.txt
@@ -50,7 +50,6 @@ ENDIF()
FIND_LIBRARY(AWS_CPP_SDK_CORE NAMES aws-cpp-sdk-core PATH_SUFFIXES "${SDK_INSTALL_BINARY_PREFIX}")
FIND_LIBRARY(AWS_CPP_SDK_KMS NAMES aws-cpp-sdk-kms PATH_SUFFIXES "${SDK_INSTALL_BINARY_PREFIX}")
-SET(CMAKE_REQUIRED_FLAGS ${CXX11_FLAGS})
FIND_PATH(AWS_CPP_SDK_INCLUDE_DIR NAMES aws/kms/KMSClient.h)
IF(AWS_CPP_SDK_CORE AND AWS_CPP_SDK_KMS AND AWS_CPP_SDK_INCLUDE_DIR)
@@ -121,6 +120,7 @@ ELSE()
-DBUILD_ONLY=kms
-DBUILD_SHARED_LIBS=OFF
-DFORCE_SHARED_CRT=OFF
+ -DENABLE_TESTING=OFF
"-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} ${PIC_FLAG}"
"-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${PIC_FLAG}"
"-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} ${PIC_FLAG}"
@@ -140,7 +140,11 @@ ELSE()
ENDIF()
ADD_DEFINITIONS(${SSL_DEFINES}) # Need to know whether openssl should be initialized
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAGS}")
+IF(CMAKE_VERSION GREATER "3.0")
+ SET(CMAKE_CXX_STANDARD 11)
+ELSE()
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAGS}")
+ENDIF()
IF(WIN32)
SET(AWS_CPP_SDK_DEPENDENCIES bcrypt winhttp wininet userenv version)
ELSE()
diff --git a/storage/rocksdb/CMakeLists.txt b/storage/rocksdb/CMakeLists.txt
index 308bd26592e..3223e084709 100644
--- a/storage/rocksdb/CMakeLists.txt
+++ b/storage/rocksdb/CMakeLists.txt
@@ -54,7 +54,9 @@ ELSE()
SKIP_ROCKSDB_PLUGIN("Compiler not supported")
ENDIF()
-IF(CXX11_FLAGS)
+IF(CMAKE_VERSION GREATER 3.0)
+ SET(CMAKE_CXX_STANDARD 11)
+ELSEIF(CXX11_FLAGS)
ADD_DEFINITIONS(${CXX11_FLAGS})
ENDIF()
diff --git a/storage/rocksdb/build_rocksdb.cmake b/storage/rocksdb/build_rocksdb.cmake
index 4b830bbdf32..b4871662f9d 100644
--- a/storage/rocksdb/build_rocksdb.cmake
+++ b/storage/rocksdb/build_rocksdb.cmake
@@ -29,10 +29,6 @@ else()
endif()
endif()
-include (CheckTypeSize)
-check_type_size(size_t SIZEOF_SIZE_T)
-set_property(SOURCE ha_rocksdb.cc APPEND PROPERTY COMPILE_DEFINITIONS
- SIZEOF_SIZE_T=${SIZEOF_SIZE_T} SIZEOF_UINT64_T=8)
# Optional compression libraries.
diff --git a/storage/rocksdb/rdb_buff.h b/storage/rocksdb/rdb_buff.h
index c2d039b46c5..4b5850137f6 100644
--- a/storage/rocksdb/rdb_buff.h
+++ b/storage/rocksdb/rdb_buff.h
@@ -30,6 +30,16 @@
#define be16toh _byteswap_ushort
#endif
+#if __APPLE__
+#include <libkern/OSByteOrder.h>
+#define htobe64(x) OSSwapHostToBigInt64(x)
+#define be64toh(x) OSSwapBigToHostInt64(x)
+#define htobe32(x) OSSwapHostToBigInt32(x)
+#define be32toh(x) OSSwapBigToHostInt32(x)
+#define htobe16(x) OSSwapHostToBigInt16(x)
+#define be16toh(x) OSSwapBigToHostInt16(x)
+#endif
+
namespace myrocks {
/*
diff --git a/storage/rocksdb/ut0counter.h b/storage/rocksdb/ut0counter.h
index af2e023af27..97c92dc675b 100644
--- a/storage/rocksdb/ut0counter.h
+++ b/storage/rocksdb/ut0counter.h
@@ -78,7 +78,7 @@ struct thread_id_indexer_t : public generic_indexer_t<Type, N> {
thread id is represented as a pointer, it may not work as
effectively. */
size_t get_rnd_index() const {
- return get_curr_thread_id();
+ return reinterpret_cast<size_t>(get_curr_thread_id());
}
};