3
3
# are
4
4
5
5
# - OS : Windows,Linux or OSX
6
- # - C++11 compiler : VS2013+, gcc 4.7 +, clang 3.3+
6
+ # - C++11 compiler : VS2013+, gcc 4.8 +, clang 3.3+
7
7
# - libcurl development package needs to be present on Unixes
8
8
#
9
9
# If we build SDK outselves, we'll need require GIT to be present on the build machine
13
13
# or if plugin is explicitely requested to build. Then bail out.
14
14
MACRO (SKIP_AWS_PLUGIN msg )
15
15
IF (VERBOSE OR "${PLUGIN_AWS_KEY_MANAGEMENT} " MATCHES "^(STATIC|DYNAMIC)$" )
16
- MESSAGE (STATUS "Skip aws_key_management - ${msg} " )
16
+ MESSAGE (STATUS "Can't build aws_key_management - ${msg} " )
17
+ ENDIF ()
18
+ IF (TARGET aws_key_management )
19
+ MESSAGE (FATAL_ERROR "Error configuring aws_key_management - aborting" )
17
20
ENDIF ()
18
21
RETURN ()
19
22
ENDMACRO ()
@@ -27,7 +30,7 @@ ENDIF()
27
30
28
31
# This plugin needs recent C++ compilers (AWS C++ SDK header files are using C++11 features)
29
32
SET (CXX11_FLAGS )
30
- SET (OLD_COMPILER_MSG "AWS SDK requires c++11 -capable compiler (minimal supported versions are g++ 4.7 , clang 3.3, VS2103)" )
33
+ SET (OLD_COMPILER_MSG "AWS SDK requires c++11 -capable compiler (minimal supported versions are g++ 4.8 , clang 3.3, VS2103)" )
31
34
32
35
IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
33
36
EXECUTE_PROCESS (COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION )
@@ -54,26 +57,6 @@ IF (NOT(WIN32 OR APPLE OR (CMAKE_SYSTEM_NAME MATCHES "Linux")))
54
57
ENDIF ()
55
58
56
59
57
- # Figure out where AWS installs SDK libraries
58
- # The below is defined in AWS SDK's CMakeLists.txt
59
- # (and their handling is weird, every OS has special install directory)
60
- IF (WIN32 )
61
- SET (SDK_INSTALL_BINARY_PREFIX "windows" )
62
- ELSEIF (APPLE )
63
- SET (SDK_INSTALL_BINARY_PREFIX "mac" )
64
- ELSEIF (UNIX )
65
- SET (SDK_INSTALL_BINARY_PREFIX "linux" )
66
- ENDIF ()
67
- IF (NOT APPLE )
68
- IF (CMAKE_SIZEOF_VOID_P EQUAL 8 )
69
- SET (SDK_INSTALL_BINARY_PREFIX "${SDK_INSTALL_BINARY_PREFIX} /intel64" )
70
- ELSE ()
71
- SET (SDK_INSTALL_BINARY_PREFIX "${SDK_INSTALL_BINARY_PREFIX} /ia32" )
72
- ENDIF ()
73
- ENDIF ()
74
- IF (CMAKE_CONFIGURATION_TYPES )
75
- SET (SDK_INSTALL_BINARY_PREFIX "${SDK_INSTALL_BINARY_PREFIX} /${CMAKE_CFG_INTDIR} " )
76
- ENDIF ()
77
60
78
61
FIND_LIBRARY (AWS_CPP_SDK_CORE NAMES aws-cpp-sdk-core PATH_SUFFIXES "${SDK_INSTALL_BINARY_PREFIX} " )
79
62
FIND_LIBRARY (AWS_CPP_SDK_KMS NAMES aws-cpp-sdk-core PATH_SUFFIXES "${SDK_INSTALL_BINARY_PREFIX} " )
@@ -99,26 +82,35 @@ ELSE()
99
82
SKIP_AWS_PLUGIN ("AWS C++ SDK requires libcurl development package" )
100
83
ENDIF ()
101
84
SET (PIC_FLAG -fPIC )
85
+ FIND_PATH (UUID_INCLUDE_DIR uuid/uuid.h )
86
+ IF (NOT UUID_INCLUDE_DIR )
87
+ SKIP_AWS_PLUGIN ("AWS C++ SDK requires uuid development package" )
88
+ ENDIF ()
89
+ IF (NOT APPLE )
90
+ FIND_LIBRARY (UUID_LIBRARIES uuid )
91
+ IF (NOT UUID_LIBRARIES )
92
+ SKIP_AWS_PLUGIN ("AWS C++ SDK requires uuid development package" )
93
+ ENDIF ()
94
+ ENDIF ()
102
95
ENDIF ()
103
96
IF (MSVC )
104
- SET (EXTRA_SDK_CMAKE_FLAGS -DCMAKE_CXX_FLAGS_DEBUGOPT= "" -DCMAKE_EXE_LINKER_FLAGS_DEBUGOPT= "" -DCMAKE_CXX_FLAGS=/wd4592 )
97
+ SET (EXTRA_SDK_CMAKE_FLAGS -DCMAKE_CXX_FLAGS_DEBUGOPT= "" -DCMAKE_EXE_LINKER_FLAGS_DEBUGOPT= "" " -DCMAKE_CXX_FLAGS=/wd4530 /WX-" )
105
98
ENDIF ()
106
99
IF (CMAKE_CXX_COMPILER )
107
100
SET (EXTRA_SDK_CMAKE_FLAGS ${EXTRA_SDK_CMAKE_FLAGS} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} )
108
101
ENDIF ()
109
102
110
- # Relax AWS C++ SDK unreasonably high requirements for CMake version. Use replace utility (from MariaDB build)
111
- # to patch their CMakeLists.txt
112
103
SET (AWS_SDK_PATCH_COMMAND )
113
104
ExternalProject_Add (
114
105
aws_sdk_cpp
115
106
GIT_REPOSITORY "https://github.com/awslabs/aws-sdk-cpp.git"
116
- GIT_TAG "0.9.6" # single tag
107
+ GIT_TAG "1.0.8"
117
108
UPDATE_COMMAND ""
118
- PATCH_COMMAND replace 3.1.2 2.8 -- ${CMAKE_BINARY_DIR} /aws-sdk-cpp/CMakeLists.txt
119
109
SOURCE_DIR "${CMAKE_BINARY_DIR} /aws-sdk-cpp"
120
110
CMAKE_ARGS
121
- -DBUILD_ONLY=aws-cpp-sdk-kms -DSTATIC_LINKING=1
111
+ -DBUILD_ONLY=kms
112
+ -DBUILD_SHARED_LIBS=OFF
113
+ -DFORCE_SHARED_CRT=OFF
122
114
"-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} ${PIC_FLAG} "
123
115
"-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${PIC_FLAG} "
124
116
"-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} ${PIC_FLAG} "
@@ -127,18 +119,18 @@ ELSE()
127
119
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/aws_sdk_cpp
128
120
TEST_COMMAND ""
129
121
)
130
-
122
+ SET_TARGET_PROPERTIES ( aws_sdk_cpp PROPERTIES EXCLUDE_FROM_ALL TRUE )
131
123
# We do not need to build the whole SDK , just 2 of its libs
132
124
set (AWS_SDK_LIBS aws-cpp-sdk-core aws-cpp-sdk-kms )
133
125
FOREACH (lib ${AWS_SDK_LIBS} )
134
126
ADD_LIBRARY (${lib} STATIC IMPORTED GLOBAL )
135
127
ADD_DEPENDENCIES (${lib} aws_sdk_cpp )
136
- SET (loc "${CMAKE_BINARY_DIR} /aws_sdk_cpp/lib/${SDK_INSTALL_BINARY_PREFIX} / ${ CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
128
+ SET (loc "${CMAKE_BINARY_DIR} /aws_sdk_cpp/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
137
129
SET_TARGET_PROPERTIES (${lib} PROPERTIES IMPORTED_LOCATION ${loc} )
138
130
IF (WIN32 )
139
131
SET_TARGET_PROPERTIES (${lib} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES "bcrypt;winhttp;wininet;userenv" )
140
132
ELSE ()
141
- SET_TARGET_PROPERTIES (${lib} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES "${SSL_LIBRARIES} ;${CURL_LIBRARIES} " )
133
+ SET_TARGET_PROPERTIES (${lib} PROPERTIES IMPORTED_LINK_INTERFACE_LIBRARIES "${SSL_LIBRARIES} ;${CURL_LIBRARIES} ; ${UUID_LIBRARIES} " )
142
134
ENDIF ()
143
135
ENDFOREACH ()
144
136
@@ -150,5 +142,6 @@ ELSE()
150
142
INCLUDE_DIRECTORIES (${CMAKE_BINARY_DIR} /aws_sdk_cpp/include )
151
143
ENDIF ()
152
144
145
+ ADD_DEFINITIONS (${SSL_DEFINES} ) # Need to know whether openssl should be initialized
153
146
SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CXX11_FLAGS} " )
154
147
TARGET_LINK_LIBRARIES (aws_key_management ${AWS_SDK_LIBS} )
0 commit comments