@@ -4,19 +4,27 @@ MACRO (SKIP_AWS_SDK MSG)
4
4
RETURN ()
5
5
ENDMACRO ()
6
6
7
- FUNCTION (CHECK_AWS_SDK RETVAL REASON)
7
+ FUNCTION (CHECK_AWS_SDK COMPONENTS RETVAL REASON)
8
8
# AWS_SDK_EXTERNAL_PROJECT must be ON
9
9
IF (NOT AWS_SDK_EXTERNAL_PROJECT)
10
- SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON" )
10
+ FOREACH (comp ${COMPONENTS} )
11
+ FIND_PACKAGE (aws-cpp-sdk-${comp} CONFIG QUIET )
12
+ IF (NOT aws-cpp-sdk-${comp} _FOUND)
13
+ SKIP_AWS_SDK("AWS_SDK_EXTERNAL_PROJECT is not ON and aws-cpp-sdk-${comp} not found" )
14
+ ENDIF ()
15
+ ENDFOREACH ()
16
+ SET (${RETVAL} ON PARENT_SCOPE)
11
17
ENDIF ()
12
18
IF (NOT NOT_FOR_DISTRIBUTION)
13
19
SKIP_AWS_SDK("AWS SDK has Apache 2.0 License which is not compatible with GPLv2. Set -DNOT_FOR_DISTRIBUTION=ON if you need it" )
14
20
ENDIF ()
21
+ IF (CMAKE_VERSION VERSION_LESS "3.15" )
22
+ SKIP_AWS_SDK("CMake too old" )
23
+ ENDIF ()
15
24
# Check compiler support
16
25
IF (CMAKE_CXX_COMPILER_ID MATCHES "GNU" )
17
- EXECUTE_PROCESS (COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
18
- IF (GCC_VERSION VERSION_LESS 4.8)
19
- SKIP_AWS_SDK("GCC VERSION too old (${GCC_VERSION} , required is 4.8 or later" )
26
+ IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.9)
27
+ SKIP_AWS_SDK("GCC VERSION too old (${GCC_VERSION} , required is 4.9 or later" )
20
28
ENDIF ()
21
29
ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
22
30
IF ((CMAKE_CXX_COMPILER_VERSION AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 3.3) OR
@@ -36,35 +44,27 @@ FUNCTION (CHECK_AWS_SDK RETVAL REASON)
36
44
SKIP_AWS_SDK("OS unsupported by AWS SDK" )
37
45
ENDIF ()
38
46
39
- # Build from source, using ExternalProject_Add
40
- # AWS C++ SDK requires cmake 2.8.12
41
- IF (CMAKE_VERSION VERSION_LESS "2.8.12" )
42
- SKIP_AWS_SDK("CMake is too old" )
43
- ENDIF ()
44
-
45
47
IF (UNIX )
46
- # Check librairies required for building SDK
47
- FIND_PACKAGE (CURL)
48
- SET_PACKAGE_PROPERTIES(CURL PROPERTIES TYPE REQUIRED)
49
- IF (NOT CURL_FOUND)
50
- SKIP_AWS_SDK("AWS C++ SDK requires libcurl development package" )
48
+ IF ("${WITH_ZLIB} " STREQUAL "bundled" )
49
+ # Breaks FIND_PACKAGE(ZLIB)
50
+ SKIP_AWS_SDK("Incompatible with WITH_ZLIB=bundled" )
51
51
ENDIF ()
52
- FIND_PATH (UUID_INCLUDE_DIR uuid/uuid.h)
53
- IF (NOT UUID_INCLUDE_DIR)
54
- SKIP_AWS_SDK("AWS C++ SDK requires uuid development package" )
55
- ENDIF ()
56
- IF (NOT APPLE )
57
- FIND_LIBRARY (UUID_LIBRARIES uuid)
58
- SET_PACKAGE_PROPERTIES(UUID_LIBRARIES PROPERTIES TYPE REQUIRED)
59
- IF (NOT UUID_LIBRARIES)
60
- SKIP_AWS_SDK("AWS C++ SDK requires uuid development package" )
52
+ # Check libraries required for building SDK
53
+ FOREACH (pkg CURL ZLIB OpenSSL)
54
+ FIND_PACKAGE (${pkg} )
55
+ IF (NOT ${pkg} _FOUND)
56
+ SKIP_AWS_SDK("AWS C++ SDK requires ${pkg} " )
61
57
ENDIF ()
62
- FIND_PACKAGE (OpenSSL)
63
- SET_PACKAGE_PROPERTIES(OpenSSL PROPERTIES TYPE REQUIRED)
64
- IF (NOT OPENSSL_FOUND)
65
- SKIP_AWS_SDK("AWS C++ SDK requires openssl development package" )
58
+ SET_PACKAGE_PROPERTIES(${pkg} PROPERTIES TYPE REQUIRED)
59
+ ENDFOREACH ()
60
+ # Also check for required libraries explicitely - they might be
61
+ # missing, even if check above succeeds, e.g when using own copy
62
+ # of zlib
63
+ FOREACH (lib OpenSSL::Crypto ZLIB::ZLIB CURL::libcurl)
64
+ IF (NOT TARGET ${lib} )
65
+ SKIP_AWS_SDK("AWS C++ SDK requires ${lib} " )
66
66
ENDIF ()
67
- ENDIF ()
67
+ ENDFOREACH ()
68
68
ENDIF ()
69
69
SET (${RETVAL} ON PARENT_SCOPE)
70
70
ENDFUNCTION ()
@@ -85,14 +85,4 @@ FUNCTION(USE_AWS_SDK_LIBS)
85
85
SET_PROPERTY (GLOBAL PROPERTY AWS_SDK_LIBS ${comp} APPEND )
86
86
TARGET_LINK_LIBRARIES (${target} aws-cpp-sdk-${comp} )
87
87
ENDFOREACH ()
88
- TARGET_LINK_LIBRARIES (${target} aws-cpp-sdk-core)
89
- TARGET_INCLUDE_DIRECTORIES (${target} PRIVATE ${PROJECT_BINARY_DIR} /extra/aws_sdk/aws_sdk_cpp/include )
90
- # Link OS libraries that AWS SDK depends on
91
- IF (WIN32 )
92
- TARGET_LINK_LIBRARIES (${target} bcrypt winhttp wininet userenv version )
93
- ELSE ()
94
- FIND_PACKAGE (CURL REQUIRED)
95
- FIND_PACKAGE (OpenSSL REQUIRED)
96
- TARGET_LINK_LIBRARIES (${target} ${OPENSSL_LIBRARIES} ${CURL_LIBRARIES} ${UUID_LIBRARIES} )
97
- ENDIF ()
98
88
ENDFUNCTION ()
0 commit comments