@@ -4,19 +4,27 @@ MACRO (SKIP_AWS_SDK MSG)
44 RETURN ()
55ENDMACRO ()
66
7- FUNCTION (CHECK_AWS_SDK RETVAL REASON)
7+ FUNCTION (CHECK_AWS_SDK COMPONENTS RETVAL REASON)
88 # AWS_SDK_EXTERNAL_PROJECT must be ON
99 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)
1117 ENDIF ()
1218 IF (NOT NOT_FOR_DISTRIBUTION)
1319 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" )
1420 ENDIF ()
21+ IF (CMAKE_VERSION VERSION_LESS "3.15" )
22+ SKIP_AWS_SDK("CMake too old" )
23+ ENDIF ()
1524 # Check compiler support
1625 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" )
2028 ENDIF ()
2129 ELSEIF (CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
2230 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)
3644 SKIP_AWS_SDK("OS unsupported by AWS SDK" )
3745 ENDIF ()
3846
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-
4547 IF (UNIX )
46- # Check libraries 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" )
5151 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} " )
6157 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} " )
6666 ENDIF ()
67- ENDIF ()
67+ ENDFOREACH ()
6868 ENDIF ()
6969 SET (${RETVAL} ON PARENT_SCOPE)
7070ENDFUNCTION ()
@@ -85,14 +85,4 @@ FUNCTION(USE_AWS_SDK_LIBS)
8585 SET_PROPERTY (GLOBAL PROPERTY AWS_SDK_LIBS ${comp} APPEND )
8686 TARGET_LINK_LIBRARIES (${target} aws-cpp-sdk-${comp} )
8787 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 ()
9888ENDFUNCTION ()
0 commit comments