FindAWSNativeSDK.cmake.Android 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405
  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 any extra build dependencies
  13. if(LY_MONOLITHIC_GAME)
  14. set(AWSNATIVE_SDK_DEBUG_LIB_PATH ${AWS_BASE_PATH}/lib/Debug)
  15. set(AWSNATIVE_SDK_RELEASE_LIB_PATH ${AWS_BASE_PATH}/lib/Release)
  16. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/lib/$<IF:$<CONFIG:Debug>,Debug,Release>)
  17. set(AWSNATIVESDK_BUILD_DEPENDENCIES
  18. ${AWSNATIVE_SDK_LIB_PATH}/dependencies/${CMAKE_STATIC_LIBRARY_PREFIX}curl${CMAKE_STATIC_LIBRARY_SUFFIX}
  19. 3rdParty::OpenSSL
  20. 3rdParty::ZLIB
  21. )
  22. else()
  23. set(AWSNATIVE_SDK_DEBUG_LIB_PATH ${AWS_BASE_PATH}/bin/Debug)
  24. set(AWSNATIVE_SDK_RELEASE_LIB_PATH ${AWS_BASE_PATH}/bin/Release)
  25. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/bin/$<IF:$<CONFIG:Debug>,Debug,Release>)
  26. endif()
  27. # AWS Compile Definitions
  28. set(AWSNATIVESDK_COMPILE_DEFINITIONS AWS_CUSTOM_MEMORY_MANAGEMENT PLATFORM_SUPPORTS_AWS_NATIVE_SDK)
  29. # Helper function to define individual AWSNativeSDK Libraries
  30. function(ly_declare_aws_library)
  31. set(options)
  32. set(oneValueArgs NAME LIB_FILE)
  33. set(multiValueArgs BUILD_DEPENDENCIES)
  34. cmake_parse_arguments(ly_declare_aws_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  35. set(TARGET_WITH_NAMESPACE "3rdParty::${AWSNATIVESDK_PACKAGE_NAME}::${ly_declare_aws_library_NAME}")
  36. if (NOT TARGET ${TARGET_WITH_NAMESPACE})
  37. if (ly_declare_aws_library_LIB_FILE)
  38. if (LY_MONOLITHIC_GAME)
  39. add_library(${TARGET_WITH_NAMESPACE} STATIC IMPORTED GLOBAL)
  40. set_target_properties(${TARGET_WITH_NAMESPACE}
  41. PROPERTIES
  42. IMPORTED_LOCATION_DEBUG ${AWSNATIVE_SDK_DEBUG_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
  43. IMPORTED_LOCATION ${AWSNATIVE_SDK_RELEASE_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
  44. )
  45. else()
  46. add_library(${TARGET_WITH_NAMESPACE} SHARED IMPORTED GLOBAL)
  47. set_target_properties(${TARGET_WITH_NAMESPACE}
  48. PROPERTIES
  49. IMPORTED_LOCATION_DEBUG ${AWSNATIVE_SDK_DEBUG_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX}
  50. IMPORTED_LOCATION ${AWSNATIVE_SDK_RELEASE_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX}
  51. )
  52. endif()
  53. target_link_libraries(${TARGET_WITH_NAMESPACE}
  54. INTERFACE
  55. ${AWSNATIVESDK_BUILD_DEPENDENCIES}
  56. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  57. )
  58. elseif (ly_declare_aws_library_BUILD_DEPENDENCIES)
  59. add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  60. target_link_libraries(${TARGET_WITH_NAMESPACE}
  61. INTERFACE
  62. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  63. )
  64. else()
  65. add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  66. endif()
  67. ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_INCLUDE_PATH})
  68. target_link_options(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_LINK_OPTIONS})
  69. target_compile_definitions(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_COMPILE_DEFINITIONS})
  70. endif()
  71. endfunction()
  72. #### CRT ####
  73. if(LY_MONOLITHIC_GAME)
  74. ly_declare_aws_library(
  75. NAME
  76. AWSCrt
  77. LIB_FILE
  78. aws-crt-cpp
  79. BUILD_DEPENDENCIES
  80. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-s3${CMAKE_STATIC_LIBRARY_SUFFIX}
  81. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-auth${CMAKE_STATIC_LIBRARY_SUFFIX}
  82. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-http${CMAKE_STATIC_LIBRARY_SUFFIX}
  83. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-io${CMAKE_STATIC_LIBRARY_SUFFIX}
  84. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-mqtt${CMAKE_STATIC_LIBRARY_SUFFIX}
  85. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-event-stream${CMAKE_STATIC_LIBRARY_SUFFIX}
  86. ${AWSNATIVE_SDK_LIB_PATH}/libaws-checksums${CMAKE_STATIC_LIBRARY_SUFFIX}
  87. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-common${CMAKE_STATIC_LIBRARY_SUFFIX}
  88. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-compression${CMAKE_STATIC_LIBRARY_SUFFIX}
  89. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-cal${CMAKE_STATIC_LIBRARY_SUFFIX}
  90. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-sdkutils${CMAKE_STATIC_LIBRARY_SUFFIX}
  91. ${AWSNATIVE_SDK_LIB_PATH}/libs2n${CMAKE_STATIC_LIBRARY_SUFFIX}
  92. )
  93. endif()
  94. #### Core ####
  95. if(LY_MONOLITHIC_GAME)
  96. ly_declare_aws_library(
  97. NAME
  98. Core
  99. LIB_FILE
  100. aws-cpp-sdk-core
  101. BUILD_DEPENDENCIES
  102. 3rdParty::AWSNativeSDK::AWSCrt
  103. )
  104. else()
  105. ly_declare_aws_library(
  106. NAME
  107. Core
  108. LIB_FILE
  109. aws-cpp-sdk-core
  110. )
  111. endif()
  112. #### AccessManagement ####
  113. ly_declare_aws_library(
  114. NAME
  115. AccessManagement
  116. LIB_FILE
  117. aws-cpp-sdk-access-management
  118. BUILD_DEPENDENCIES
  119. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  120. 3rdParty::AWSNativeSDK::Core
  121. )
  122. #### BedrockRuntime ####
  123. ly_declare_aws_library(
  124. NAME
  125. BedrockRuntime
  126. LIB_FILE
  127. aws-cpp-sdk-bedrock-runtime
  128. BUILD_DEPENDENCIES
  129. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  130. 3rdParty::AWSNativeSDK::Core
  131. )
  132. #### CognitoIdentity ####
  133. ly_declare_aws_library(
  134. NAME
  135. CognitoIdentity
  136. LIB_FILE
  137. aws-cpp-sdk-cognito-identity
  138. BUILD_DEPENDENCIES
  139. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  140. 3rdParty::AWSNativeSDK::Core
  141. )
  142. #### CognitoIdp ####
  143. ly_declare_aws_library(
  144. NAME
  145. CognitoIdp
  146. LIB_FILE
  147. aws-cpp-sdk-cognito-idp
  148. BUILD_DEPENDENCIES
  149. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  150. 3rdParty::AWSNativeSDK::Core
  151. )
  152. #### DeviceFarm ####
  153. ly_declare_aws_library(
  154. NAME
  155. DeviceFarm
  156. LIB_FILE
  157. aws-cpp-sdk-devicefarm
  158. BUILD_DEPENDENCIES
  159. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  160. 3rdParty::AWSNativeSDK::Core
  161. )
  162. #### DynamoDB ####
  163. ly_declare_aws_library(
  164. NAME
  165. DynamoDB
  166. LIB_FILE
  167. aws-cpp-sdk-dynamodb
  168. BUILD_DEPENDENCIES
  169. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  170. 3rdParty::AWSNativeSDK::Core
  171. )
  172. #### GameLift ####
  173. ly_declare_aws_library(
  174. NAME
  175. GameLift
  176. LIB_FILE
  177. aws-cpp-sdk-gamelift
  178. BUILD_DEPENDENCIES
  179. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  180. 3rdParty::AWSNativeSDK::Core
  181. )
  182. #### IdentityManagement ####
  183. ly_declare_aws_library(
  184. NAME
  185. IdentityManagement
  186. LIB_FILE
  187. aws-cpp-sdk-identity-management
  188. BUILD_DEPENDENCIES
  189. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  190. 3rdParty::AWSNativeSDK::Core
  191. )
  192. #### Kinesis ####
  193. ly_declare_aws_library(
  194. NAME
  195. Kinesis
  196. LIB_FILE
  197. aws-cpp-sdk-kinesis
  198. BUILD_DEPENDENCIES
  199. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  200. 3rdParty::AWSNativeSDK::Core
  201. )
  202. #### Lambda ####
  203. ly_declare_aws_library(
  204. NAME
  205. Lambda
  206. LIB_FILE
  207. aws-cpp-sdk-lambda
  208. BUILD_DEPENDENCIES
  209. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  210. 3rdParty::AWSNativeSDK::Core
  211. )
  212. #### MobileAnalytics ####
  213. ly_declare_aws_library(
  214. NAME
  215. MobileAnalytics
  216. LIB_FILE
  217. aws-cpp-sdk-mobileanalytics
  218. BUILD_DEPENDENCIES
  219. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  220. 3rdParty::AWSNativeSDK::Core
  221. )
  222. #### Queues ####
  223. ly_declare_aws_library(
  224. NAME
  225. Queues
  226. LIB_FILE
  227. aws-cpp-sdk-queues
  228. BUILD_DEPENDENCIES
  229. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  230. 3rdParty::AWSNativeSDK::Core
  231. )
  232. #### S3 ####
  233. ly_declare_aws_library(
  234. NAME
  235. S3
  236. LIB_FILE
  237. aws-cpp-sdk-s3
  238. BUILD_DEPENDENCIES
  239. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  240. 3rdParty::AWSNativeSDK::Core
  241. )
  242. #### SNS ####
  243. ly_declare_aws_library(
  244. NAME
  245. SNS
  246. LIB_FILE
  247. aws-cpp-sdk-sns
  248. BUILD_DEPENDENCIES
  249. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  250. 3rdParty::AWSNativeSDK::Core
  251. )
  252. #### SQS ####
  253. ly_declare_aws_library(
  254. NAME
  255. SQS
  256. LIB_FILE
  257. aws-cpp-sdk-sqs
  258. BUILD_DEPENDENCIES
  259. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  260. 3rdParty::AWSNativeSDK::Core
  261. )
  262. #### STS ####
  263. ly_declare_aws_library(
  264. NAME
  265. STS
  266. LIB_FILE
  267. aws-cpp-sdk-sts
  268. BUILD_DEPENDENCIES
  269. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  270. 3rdParty::AWSNativeSDK::Core
  271. )
  272. #### Transfer ####
  273. ly_declare_aws_library(
  274. NAME
  275. Transfer
  276. LIB_FILE
  277. aws-cpp-sdk-transfer
  278. BUILD_DEPENDENCIES
  279. # Even though AWS Core is a sibling module, make sure it's linked in first because this module depends on it.
  280. 3rdParty::AWSNativeSDK::Core
  281. )
  282. #########
  283. ######### Grouping Definitions #########
  284. #########
  285. #### Dependencies ####
  286. if(LY_MONOLITHIC_GAME)
  287. ly_declare_aws_library(
  288. NAME
  289. Dependencies
  290. BUILD_DEPENDENCIES
  291. 3rdParty::AWSNativeSDK::AWSCrt
  292. )
  293. else()
  294. ly_declare_aws_library(
  295. NAME
  296. Dependencies
  297. )
  298. endif()
  299. #### IdentityMetrics ####
  300. ly_declare_aws_library(
  301. NAME
  302. IdentityMetrics
  303. BUILD_DEPENDENCIES
  304. 3rdParty::AWSNativeSDK::CognitoIdentity
  305. 3rdParty::AWSNativeSDK::CognitoIdp
  306. 3rdParty::AWSNativeSDK::Core
  307. 3rdParty::AWSNativeSDK::IdentityManagement
  308. 3rdParty::AWSNativeSDK::MobileAnalytics
  309. 3rdParty::AWSNativeSDK::STS
  310. 3rdParty::AWSNativeSDK::Dependencies
  311. )
  312. #### IdentityLambda ####
  313. ly_declare_aws_library(
  314. NAME
  315. IdentityLambda
  316. BUILD_DEPENDENCIES
  317. 3rdParty::AWSNativeSDK::CognitoIdentity
  318. 3rdParty::AWSNativeSDK::CognitoIdp
  319. 3rdParty::AWSNativeSDK::Core
  320. 3rdParty::AWSNativeSDK::IdentityManagement
  321. 3rdParty::AWSNativeSDK::Lambda
  322. 3rdParty::AWSNativeSDK::STS
  323. 3rdParty::AWSNativeSDK::Dependencies
  324. )
  325. #### GameLiftClient ####
  326. ly_declare_aws_library(
  327. NAME
  328. GameLiftClient
  329. BUILD_DEPENDENCIES
  330. 3rdParty::AWSNativeSDK::GameLift
  331. 3rdParty::AWSNativeSDK::Core
  332. 3rdParty::AWSNativeSDK::Dependencies
  333. )
  334. #### AWSClientAuth ####
  335. ly_declare_aws_library(
  336. NAME
  337. AWSClientAuth
  338. BUILD_DEPENDENCIES
  339. 3rdParty::AWSNativeSDK::CognitoIdentity
  340. 3rdParty::AWSNativeSDK::CognitoIdp
  341. 3rdParty::AWSNativeSDK::IdentityManagement
  342. 3rdParty::AWSNativeSDK::STS
  343. 3rdParty::AWSNativeSDK::Dependencies
  344. )
  345. #### AWSCore ####
  346. ly_declare_aws_library(
  347. NAME
  348. AWSCore
  349. BUILD_DEPENDENCIES
  350. 3rdParty::AWSNativeSDK::DynamoDB
  351. 3rdParty::AWSNativeSDK::Lambda
  352. 3rdParty::AWSNativeSDK::S3
  353. 3rdParty::AWSNativeSDK::Core
  354. 3rdParty::AWSNativeSDK::Dependencies
  355. )