FindAWSNativeSDK.cmake.Windows 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363
  1. #
  2. # Copyright (c) Contributors to the Open 3D Engine Project.
  3. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. #
  5. # SPDX-License-Identifier: Apache-2.0 OR MIT
  6. #
  7. include(CMakeParseArguments)
  8. set(AWSNATIVESDK_PACKAGE_NAME AWSNativeSDK)
  9. set(AWS_BASE_PATH ${CMAKE_CURRENT_LIST_DIR}/${AWSNATIVESDK_PACKAGE_NAME})
  10. # Include Path
  11. set(AWSNATIVESDK_INCLUDE_PATH ${AWS_BASE_PATH}/include)
  12. # Determine the lib path and possible bin path
  13. if (LY_MONOLITHIC_GAME)
  14. set(AWSNATIVESDK_COMPILE_DEFINITIONS
  15. AWS_CUSTOM_MEMORY_MANAGEMENT
  16. PLATFORM_SUPPORTS_AWS_NATIVE_SDK
  17. )
  18. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/lib/$<IF:$<CONFIG:Debug>,Debug,Release>)
  19. else()
  20. set(AWSNATIVESDK_COMPILE_DEFINITIONS
  21. AWS_CUSTOM_MEMORY_MANAGEMENT
  22. PLATFORM_SUPPORTS_AWS_NATIVE_SDK
  23. USE_IMPORT_EXPORT
  24. USE_WINDOWS_DLL_SEMANTICS
  25. AWS_CRT_CPP_USE_IMPORT_EXPORT
  26. AWS_HTTP_USE_IMPORT_EXPORT
  27. AWS_IO_USE_IMPORT_EXPORT
  28. AWS_USE_IO_COMPLETION_PORTS
  29. AWS_COMMON_USE_IMPORT_EXPORT
  30. AWS_CAL_USE_IMPORT_EXPORT
  31. AWS_COMPRESSION_USE_IMPORT_EXPORT
  32. AWS_MQTT_USE_IMPORT_EXPORT
  33. AWS_MQTT_WITH_WEBSOCKETS
  34. AWS_AUTH_USE_IMPORT_EXPORT
  35. AWS_CHECKSUMS_USE_IMPORT_EXPORT
  36. AWS_EVENT_STREAM_USE_IMPORT_EXPORT
  37. AWS_S3_USE_IMPORT_EXPORT
  38. )
  39. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/bin/$<IF:$<CONFIG:Debug>,Debug,Release>)
  40. endif()
  41. # Helper function to define individual AWSNativeSDK Libraries
  42. function(ly_declare_aws_library)
  43. set(options)
  44. set(oneValueArgs NAME LIB_FILE)
  45. set(multiValueArgs BUILD_DEPENDENCIES RUNTIME_DEPENDENCIES)
  46. cmake_parse_arguments(ly_declare_aws_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  47. set(TARGET_WITH_NAMESPACE "3rdParty::${AWSNATIVESDK_PACKAGE_NAME}::${ly_declare_aws_library_NAME}")
  48. if (NOT TARGET ${TARGET_WITH_NAMESPACE})
  49. add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  50. ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_INCLUDE_PATH})
  51. if (ly_declare_aws_library_LIB_FILE)
  52. target_link_libraries(${TARGET_WITH_NAMESPACE}
  53. INTERFACE
  54. ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
  55. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  56. )
  57. if (NOT LY_MONOLITHIC_GAME)
  58. ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX})
  59. if (ly_declare_aws_library_RUNTIME_DEPENDENCIES)
  60. ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${ly_declare_aws_library_RUNTIME_DEPENDENCIES})
  61. endif()
  62. endif()
  63. elseif (ly_declare_aws_library_BUILD_DEPENDENCIES)
  64. target_link_libraries(${TARGET_WITH_NAMESPACE}
  65. INTERFACE
  66. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  67. )
  68. endif()
  69. target_link_options(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_LINK_OPTIONS})
  70. target_compile_definitions(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_COMPILE_DEFINITIONS})
  71. endif()
  72. endfunction()
  73. #### Core ####
  74. set(CORE_STATIC_LIBS
  75. ${AWSNATIVE_SDK_LIB_PATH}/aws-crt-cpp.lib
  76. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-s3.lib
  77. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-auth.lib
  78. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-mqtt.lib
  79. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-http.lib
  80. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-event-stream.lib
  81. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-io.lib
  82. ${AWSNATIVE_SDK_LIB_PATH}/aws-checksums.lib
  83. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-compression.lib
  84. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-cal.lib
  85. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-common.lib
  86. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-sdkutils.lib
  87. Ncrypt
  88. Secur32
  89. Shlwapi
  90. Userenv
  91. Wininet
  92. Winhttp
  93. )
  94. set(CORE_SHARED_LIBS
  95. ${AWSNATIVE_SDK_LIB_PATH}/aws-crt-cpp.dll
  96. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-s3.dll
  97. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-auth.dll
  98. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-mqtt.dll
  99. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-http.dll
  100. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-event-stream.dll
  101. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-io.dll
  102. ${AWSNATIVE_SDK_LIB_PATH}/aws-checksums.dll
  103. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-compression.dll
  104. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-cal.dll
  105. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-common.dll
  106. ${AWSNATIVE_SDK_LIB_PATH}/aws-c-sdkutils.dll
  107. )
  108. if(LY_MONOLITHIC_GAME)
  109. ly_declare_aws_library(
  110. NAME
  111. Core
  112. LIB_FILE
  113. aws-cpp-sdk-core
  114. BUILD_DEPENDENCIES
  115. ${CORE_STATIC_LIBS}
  116. )
  117. else()
  118. ly_declare_aws_library(
  119. NAME
  120. Core
  121. LIB_FILE
  122. aws-cpp-sdk-core
  123. BUILD_DEPENDENCIES
  124. ${CORE_STATIC_LIBS}
  125. RUNTIME_DEPENDENCIES
  126. ${CORE_SHARED_LIBS}
  127. )
  128. endif()
  129. #### AccessManagement ####
  130. ly_declare_aws_library(
  131. NAME
  132. AccessManagement
  133. LIB_FILE
  134. aws-cpp-sdk-access-management
  135. BUILD_DEPENDENCIES
  136. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  137. 3rdParty::AWSNativeSDK::Core
  138. )
  139. #### BedrockRuntime ####
  140. ly_declare_aws_library(
  141. NAME
  142. BedrockRuntime
  143. LIB_FILE
  144. aws-cpp-sdk-bedrock-runtime
  145. BUILD_DEPENDENCIES
  146. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  147. 3rdParty::AWSNativeSDK::Core
  148. )
  149. #### CognitoIdentity ####
  150. ly_declare_aws_library(
  151. NAME
  152. CognitoIdentity
  153. LIB_FILE
  154. aws-cpp-sdk-cognito-identity
  155. BUILD_DEPENDENCIES
  156. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  157. 3rdParty::AWSNativeSDK::Core
  158. )
  159. #### CognitoIdp ####
  160. ly_declare_aws_library(
  161. NAME
  162. CognitoIdp
  163. LIB_FILE
  164. aws-cpp-sdk-cognito-idp
  165. BUILD_DEPENDENCIES
  166. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  167. 3rdParty::AWSNativeSDK::Core
  168. )
  169. #### DeviceFarm ####
  170. ly_declare_aws_library(
  171. NAME
  172. DeviceFarm
  173. LIB_FILE
  174. aws-cpp-sdk-devicefarm
  175. BUILD_DEPENDENCIES
  176. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  177. 3rdParty::AWSNativeSDK::Core
  178. )
  179. #### DynamoDB ####
  180. ly_declare_aws_library(
  181. NAME
  182. DynamoDB
  183. LIB_FILE
  184. aws-cpp-sdk-dynamodb
  185. BUILD_DEPENDENCIES
  186. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  187. 3rdParty::AWSNativeSDK::Core
  188. )
  189. #### GameLift ####
  190. ly_declare_aws_library(
  191. NAME
  192. GameLift
  193. LIB_FILE
  194. aws-cpp-sdk-gamelift
  195. BUILD_DEPENDENCIES
  196. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  197. 3rdParty::AWSNativeSDK::Core
  198. )
  199. #### IdentityManagement ####
  200. ly_declare_aws_library(
  201. NAME
  202. IdentityManagement
  203. LIB_FILE
  204. aws-cpp-sdk-identity-management
  205. BUILD_DEPENDENCIES
  206. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  207. 3rdParty::AWSNativeSDK::Core
  208. )
  209. #### Kinesis ####
  210. ly_declare_aws_library(
  211. NAME
  212. Kinesis
  213. LIB_FILE
  214. aws-cpp-sdk-kinesis
  215. BUILD_DEPENDENCIES
  216. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  217. 3rdParty::AWSNativeSDK::Core
  218. )
  219. #### Lambda ####
  220. ly_declare_aws_library(
  221. NAME
  222. Lambda
  223. LIB_FILE
  224. aws-cpp-sdk-lambda
  225. BUILD_DEPENDENCIES
  226. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  227. 3rdParty::AWSNativeSDK::Core
  228. )
  229. #### MobileAnalytics ####
  230. # MobileAnalytics library no longer exists and should be replaced with AWS PinPoint or other equivalent API
  231. #### Queues ####
  232. ly_declare_aws_library(
  233. NAME
  234. Queues
  235. LIB_FILE
  236. aws-cpp-sdk-queues
  237. BUILD_DEPENDENCIES
  238. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  239. 3rdParty::AWSNativeSDK::Core
  240. )
  241. #### S3 ####
  242. ly_declare_aws_library(
  243. NAME
  244. S3
  245. LIB_FILE
  246. aws-cpp-sdk-s3
  247. BUILD_DEPENDENCIES
  248. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  249. 3rdParty::AWSNativeSDK::Core
  250. )
  251. #### SNS ####
  252. ly_declare_aws_library(
  253. NAME
  254. SNS
  255. LIB_FILE
  256. aws-cpp-sdk-sns
  257. BUILD_DEPENDENCIES
  258. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  259. 3rdParty::AWSNativeSDK::Core
  260. )
  261. #### SQS ####
  262. ly_declare_aws_library(
  263. NAME
  264. SQS
  265. LIB_FILE
  266. aws-cpp-sdk-sqs
  267. BUILD_DEPENDENCIES
  268. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  269. 3rdParty::AWSNativeSDK::Core
  270. )
  271. #### STS ####
  272. ly_declare_aws_library(
  273. NAME
  274. STS
  275. LIB_FILE
  276. aws-cpp-sdk-sts
  277. BUILD_DEPENDENCIES
  278. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  279. 3rdParty::AWSNativeSDK::Core
  280. )
  281. #### Transfer ####
  282. ly_declare_aws_library(
  283. NAME
  284. Transfer
  285. LIB_FILE
  286. aws-cpp-sdk-transfer
  287. BUILD_DEPENDENCIES
  288. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  289. 3rdParty::AWSNativeSDK::Core
  290. )
  291. #########
  292. ######### Grouping Definitions #########
  293. #########
  294. #### GameLiftClient ####
  295. ly_declare_aws_library(
  296. NAME
  297. GameLiftClient
  298. BUILD_DEPENDENCIES
  299. 3rdParty::AWSNativeSDK::Core
  300. 3rdParty::AWSNativeSDK::GameLift
  301. )
  302. #### AWSClientAuth ####
  303. ly_declare_aws_library(
  304. NAME
  305. AWSClientAuth
  306. BUILD_DEPENDENCIES
  307. 3rdParty::AWSNativeSDK::Core
  308. 3rdParty::AWSNativeSDK::CognitoIdentity
  309. 3rdParty::AWSNativeSDK::CognitoIdp
  310. 3rdParty::AWSNativeSDK::STS
  311. 3rdParty::AWSNativeSDK::IdentityManagement
  312. )
  313. #### AWSCore ####
  314. ly_declare_aws_library(
  315. NAME
  316. AWSCore
  317. BUILD_DEPENDENCIES
  318. 3rdParty::AWSNativeSDK::Core
  319. 3rdParty::AWSNativeSDK::DynamoDB
  320. 3rdParty::AWSNativeSDK::Lambda
  321. 3rdParty::AWSNativeSDK::S3
  322. )