@@ -8,67 +8,132 @@ IF(SDK_LIBS_COUNT EQUAL 0)
8
8
RETURN ()
9
9
ENDIF ()
10
10
11
- CHECK_AWS_SDK(RETVAL REASON)
11
+ CHECK_AWS_SDK(" ${SDK_LIBS} " RETVAL REASON)
12
12
IF (NOT RETVAL)
13
13
MESSAGE (FATAL_ERROR
14
14
"AWS C++ will not be built (${REASON} ), but dependency on following components is found ${SDK_LIBS} .
15
15
Use CHECK_AWS_SDK() function before trying to build with SDK components" )
16
16
ENDIF ()
17
17
18
+ IF (NOT AWS_SDK_EXTERNAL_PROJECT)
19
+ # System aws sdk libraries found
20
+ RETURN ()
21
+ ENDIF ()
18
22
19
- SET (byproducts )
23
+ SET (all_libs
24
+ aws-crt-cpp
25
+ aws-c-event-stream
26
+ aws-c-common
27
+ aws-c-http
28
+ aws-c-mqtt
29
+ aws-c-cal
30
+ aws-c-auth
31
+ aws-c-io
32
+ aws-checksums
33
+ aws-c-s3
34
+ aws-c-sdkutils
35
+ aws-c-compression
36
+ aws-cpp-sdk-core
37
+ )
38
+ IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
39
+ LIST (APPEND all_libs s2n)
40
+ ENDIF ()
20
41
21
- FOREACH (lib ${SDK_LIBS} core)
22
- SET (lib aws-cpp-sdk-${lib} )
23
- ADD_LIBRARY (${lib} STATIC IMPORTED GLOBAL )
42
+ FOREACH (lib ${SDK_LIBS} )
43
+ LIST (APPEND all_libs aws-cpp-sdk-${lib} )
44
+ ENDFOREACH ()
45
+ LIST (REMOVE_DUPLICATES all_libs)
46
+
47
+ SET (byproducts )
48
+ MAKE_DIRECTORY (${PROJECT_BINARY_DIR} /extra/aws_sdk/aws_sdk_cpp/include )
49
+ FOREACH (lib ${all_libs} )
50
+ ADD_LIBRARY (${lib} UNKNOWN IMPORTED GLOBAL )
24
51
ADD_DEPENDENCIES (${lib} aws_sdk_cpp)
25
52
26
53
SET (loc "${CMAKE_CURRENT_BINARY_DIR} /aws_sdk_cpp/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${lib}${CMAKE_STATIC_LIBRARY_SUFFIX} " )
27
54
IF (CMAKE_VERSION VERSION_GREATER "3.1" )
28
55
SET (byproducts ${byproducts} BUILD_BYPRODUCTS ${loc} )
29
56
ENDIF ()
30
57
SET_TARGET_PROPERTIES (${lib} PROPERTIES IMPORTED_LOCATION ${loc} )
58
+ TARGET_INCLUDE_DIRECTORIES (${lib} INTERFACE ${PROJECT_BINARY_DIR} /extra/aws_sdk/aws_sdk_cpp/include )
31
59
ENDFOREACH ()
32
60
33
- # To be compatible with older cmake, we use older version of the SDK
34
- IF (CMAKE_VERSION LESS "3.0" )
35
- SET (GIT_TAG "1.0.8" )
36
- ELSE ()
37
- SET (GIT_TAG "1.8.29" )
38
- ENDIF ()
61
+ # Define link dependencies between AWS C libs
62
+ TARGET_LINK_LIBRARIES (aws-cpp-sdk-core INTERFACE aws-crt-cpp aws-c-event-stream aws-c-common)
63
+ TARGET_LINK_LIBRARIES (aws-crt-cpp INTERFACE aws-c-http aws-c-mqtt aws-c-cal aws-c-auth aws-c-common aws-c-io
64
+ aws-checksums aws-c-event-stream aws-c-s3 aws-c-sdkutils)
65
+ TARGET_LINK_LIBRARIES (aws-c-event-stream INTERFACE aws-c-io aws-c-common aws-checksums)
66
+ TARGET_LINK_LIBRARIES (aws-c-http INTERFACE aws-c-io aws-c-compression aws-c-cal aws-c-common)
67
+ TARGET_LINK_LIBRARIES (aws-c-mqtt INTERFACE aws-c-http aws-c-io aws-c-common aws-c-cal aws-c-common)
68
+ TARGET_LINK_LIBRARIES (aws-c-auth INTERFACE aws-c-sdkutils aws-c-cal aws-c-http aws-c-io aws-c-common)
69
+ TARGET_LINK_LIBRARIES (aws-c-io INTERFACE aws-c-common aws-c-cal)
70
+ TARGET_LINK_LIBRARIES (aws-checksums INTERFACE aws-c-common)
71
+ TARGET_LINK_LIBRARIES (aws-c-compression INTERFACE aws-c-common)
72
+ TARGET_LINK_LIBRARIES (aws-c-s3 INTERFACE aws-c-auth aws-checksums aws-c-http aws-c-io aws-c-cal aws-c-common aws-c-sdkutils aws-c-common)
73
+ TARGET_LINK_LIBRARIES (aws-c-sdkutils INTERFACE aws-c-common)
39
74
40
- IF (MSVC_CRT_TYPE MATCHES "/MD" )
41
- SET (FORCE_SHARED_CRT ON )
75
+ IF (WIN32 )
76
+ TARGET_LINK_LIBRARIES (aws-c-io INTERFACE bcrypt crypt32 secur32 ncrypt ws2_32)
77
+ TARGET_LINK_LIBRARIES (aws-c-common INTERFACE shlwapi)
78
+ TARGET_LINK_LIBRARIES (aws-cpp-sdk-core INTERFACE winhttp wininet version userenv)
42
79
ELSE ()
43
- SET (FORCE_SHARED_CRT OFF )
80
+ TARGET_LINK_LIBRARIES (aws-c-cal INTERFACE OpenSSL::Crypto)
81
+ TARGET_LINK_LIBRARIES (aws-cpp-sdk-core INTERFACE ZLIB::ZLIB CURL::libcurl)
82
+
83
+ # Dependencies below are from CMakeLists.txt for aws-c-common
84
+ SET (THREADS_PREFER_PTHREAD_FLAG ON )
85
+ FIND_PACKAGE (Threads REQUIRED)
86
+ TARGET_LINK_LIBRARIES (aws-c-common INTERFACE ${CMAKE_DL_LIBS} Threads::Threads)
87
+ IF (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
88
+ TARGET_LINK_LIBRARIES (aws-c-common INTERFACE s2n m rt)
89
+ ELSEIF (APPLE )
90
+ TARGET_LINK_LIBRARIES (aws-c-common INTERFACE "-framework CoreFoundation" )
91
+ TARGET_LINK_LIBRARIES (aws-c-io INTERFACE "-framework Security" "-framework Network" )
92
+ ENDIF ()
44
93
ENDIF ()
45
94
95
+ FOREACH (lib ${SDK_LIBS} )
96
+ TARGET_LINK_LIBRARIES (aws-cpp-sdk-${lib} INTERFACE aws-cpp-sdk-core)
97
+ ENDFOREACH ()
98
+
99
+ SET (GIT_TAG "1.11.582" )
100
+
46
101
LIST (REMOVE_DUPLICATES SDK_LIBS)
47
102
STRING ( REPLACE ";" "!" SDK_LIBS_STR "${SDK_LIBS} " )
48
- #MESSAGE("SDK_LIBS_STR=${SDK_LIBS_STR}")
103
+
104
+ IF (MSVC )
105
+ SET (BUILD_AND_INSTALL_COMMANDS
106
+ BUILD_COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config RelWithDebInfo --verbose --parallel
107
+ INSTALL_COMMAND ${CMAKE_COMMAND} --install <BINARY_DIR> --config RelWithDebInfo)
108
+ SET (BUILD_TYPE -DCMAKE_BUILD_TYPE=RelWithDebInfo)
109
+ ELSE ()
110
+ SET (BUILD_AND_INSTALL_COMMANDS)
111
+ SET (BUILD_TYPE )
112
+ ENDIF ()
49
113
50
114
ExternalProject_Add(
51
115
aws_sdk_cpp
52
116
GIT_REPOSITORY "https://github.com/awslabs/aws-sdk-cpp.git"
53
117
GIT_TAG ${GIT_TAG}
118
+ GIT_SHALLOW TRUE
54
119
UPDATE_COMMAND ""
55
120
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /aws-sdk-cpp"
56
121
LIST_SEPARATOR !
57
122
${byproducts}
58
123
CMAKE_ARGS
124
+ ${BUILD_TYPE}
125
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo
126
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON
59
127
-DBUILD_ONLY=${SDK_LIBS_STR}
60
128
-DBUILD_SHARED_LIBS=OFF
61
- -DFORCE_SHARED_CRT=${FORCE_SHARED_CRT}
129
+ -DFORCE_SHARED_CRT=ON
62
130
-DENABLE_TESTING=OFF
63
- "-DCMAKE_CXX_FLAGS_DEBUG=${CMAKE_CXX_FLAGS_DEBUG} ${PIC_FLAG} "
64
- "-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${PIC_FLAG} "
65
- "-DCMAKE_CXX_FLAGS_RELEASE=${CMAKE_CXX_FLAGS_RELEASE} ${PIC_FLAG} "
66
- "-DCMAKE_CXX_FLAGS_MINSIZEREL=${CMAKE_CXX_FLAGS_MINSIZEREL} ${PIC_FLAG} "
67
- "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} "
68
- "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} "
131
+ -DAWS_WARNINGS_ARE_ERRORS=OFF
69
132
${EXTRA_SDK_CMAKE_FLAGS}
70
133
-DCMAKE_INSTALL_PREFIX=${CMAKE_CURRENT_BINARY_DIR} /aws_sdk_cpp
71
134
-DCMAKE_INSTALL_LIBDIR=lib
72
- TEST_COMMAND ""
135
+ TEST_COMMAND ""
136
+ ${BUILD_AND_INSTALL_COMMANDS}
73
137
)
138
+
74
139
SET_TARGET_PROPERTIES (aws_sdk_cpp PROPERTIES EXCLUDE_FROM_ALL TRUE )
0 commit comments