FindAWSNativeSDK.cmake.Mac 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355
  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
  13. if(LY_MONOLITHIC_GAME)
  14. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/lib/$<IF:$<CONFIG:Debug>,Debug,Release>)
  15. else()
  16. set(AWSNATIVE_SDK_LIB_PATH ${AWS_BASE_PATH}/bin/$<IF:$<CONFIG:Debug>,Debug,Release>)
  17. endif()
  18. # AWS Compile Definitions
  19. set(AWSNATIVESDK_COMPILE_DEFINITIONS AWS_CUSTOM_MEMORY_MANAGEMENT PLATFORM_SUPPORTS_AWS_NATIVE_SDK)
  20. find_library(SECURITY_FRAMEWORK Security)
  21. set(AWSNATIVESDK_BUILD_DEPENDENCIES
  22. ${SECURITY_FRAMEWORK}
  23. curl # The one bundled with the aws sdk in 3rdParty doesn't use the right openssl
  24. )
  25. # Helper function to define individual AWSNativeSDK Libraries
  26. function(ly_declare_aws_library)
  27. set(options)
  28. set(oneValueArgs NAME LIB_FILE)
  29. set(multiValueArgs BUILD_DEPENDENCIES RUNTIME_DEPENDENCIES)
  30. cmake_parse_arguments(ly_declare_aws_library "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
  31. set(TARGET_WITH_NAMESPACE "3rdParty::${AWSNATIVESDK_PACKAGE_NAME}::${ly_declare_aws_library_NAME}")
  32. if (NOT TARGET ${TARGET_WITH_NAMESPACE})
  33. add_library(${TARGET_WITH_NAMESPACE} INTERFACE IMPORTED GLOBAL)
  34. ly_target_include_system_directories(TARGET ${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_INCLUDE_PATH})
  35. if (ly_declare_aws_library_LIB_FILE)
  36. if (LY_MONOLITHIC_GAME)
  37. target_link_libraries(${TARGET_WITH_NAMESPACE}
  38. INTERFACE
  39. ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_STATIC_LIBRARY_SUFFIX}
  40. ${AWSNATIVESDK_BUILD_DEPENDENCIES}
  41. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  42. )
  43. else()
  44. target_link_libraries(${TARGET_WITH_NAMESPACE}
  45. INTERFACE
  46. ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_STATIC_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX}
  47. ${AWSNATIVESDK_BUILD_DEPENDENCIES}
  48. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  49. )
  50. ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${AWSNATIVE_SDK_LIB_PATH}/${CMAKE_SHARED_LIBRARY_PREFIX}${ly_declare_aws_library_LIB_FILE}${CMAKE_SHARED_LIBRARY_SUFFIX})
  51. # Add any runtime dependencies if exist
  52. if (ly_declare_aws_library_RUNTIME_DEPENDENCIES)
  53. ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${ly_declare_aws_library_RUNTIME_DEPENDENCIES})
  54. endif()
  55. endif()
  56. elseif (ly_declare_aws_library_BUILD_DEPENDENCIES)
  57. target_link_libraries(${TARGET_WITH_NAMESPACE}
  58. INTERFACE
  59. ${ly_declare_aws_library_BUILD_DEPENDENCIES}
  60. )
  61. elseif (ly_declare_aws_library_RUNTIME_DEPENDENCIES)
  62. ly_add_dependencies(${TARGET_WITH_NAMESPACE} ${ly_declare_aws_library_RUNTIME_DEPENDENCIES})
  63. endif()
  64. target_link_options(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_LINK_OPTIONS})
  65. target_compile_definitions(${TARGET_WITH_NAMESPACE} INTERFACE ${AWSNATIVESDK_COMPILE_DEFINITIONS})
  66. endif()
  67. endfunction()
  68. #### Core ####
  69. set(CORE_STATIC_LIBS
  70. ${AWSNATIVE_SDK_LIB_PATH}/libaws-crt-cpp.a
  71. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-s3.a
  72. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-auth.a
  73. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-mqtt.a
  74. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-http.a
  75. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-event-stream.a
  76. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-io.a
  77. ${AWSNATIVE_SDK_LIB_PATH}/libaws-checksums.a
  78. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-compression.a
  79. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-cal.a
  80. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-common.a
  81. )
  82. set(CORE_SHARED_LIBS
  83. ${AWSNATIVE_SDK_LIB_PATH}/libaws-crt-cpp.dylib
  84. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-s3.0unstable.dylib
  85. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-s3.1.0.0.dylib
  86. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-s3.dylib
  87. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-auth.1.0.0.dylib
  88. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-auth.dylib
  89. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-mqtt.1.0.0.dylib
  90. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-mqtt.dylib
  91. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-http.1.0.0.dylib
  92. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-http.dylib
  93. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-event-stream.1.0.0.dylib
  94. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-event-stream.dylib
  95. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-io.1.0.0.dylib
  96. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-io.dylib
  97. ${AWSNATIVE_SDK_LIB_PATH}/libaws-checksums.1.0.0.dylib
  98. ${AWSNATIVE_SDK_LIB_PATH}/libaws-checksums.dylib
  99. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-compression.1.0.0.dylib
  100. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-compression.dylib
  101. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-cal.1.0.0.dylib
  102. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-cal.dylib
  103. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-common.1.0.0.dylib
  104. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-common.1.dylib
  105. ${AWSNATIVE_SDK_LIB_PATH}/libaws-c-common.dylib
  106. )
  107. if(LY_MONOLITHIC_GAME)
  108. ly_declare_aws_library(
  109. NAME
  110. Core
  111. LIB_FILE
  112. aws-cpp-sdk-core
  113. BUILD_DEPENDENCIES
  114. ${CORE_STATIC_LIBS}
  115. )
  116. else()
  117. ly_declare_aws_library(
  118. NAME
  119. Core
  120. LIB_FILE
  121. aws-cpp-sdk-core
  122. BUILD_DEPENDENCIES
  123. ${CORE_SHARED_LIBS}
  124. RUNTIME_DEPENDENCIES
  125. ${CORE_SHARED_LIBS}
  126. )
  127. endif()
  128. #### AccessManagement ####
  129. ly_declare_aws_library(
  130. NAME
  131. AccessManagement
  132. LIB_FILE
  133. aws-cpp-sdk-access-management
  134. BUILD_DEPENDENCIES
  135. 3rdParty::AWSNativeSDK::Core
  136. )
  137. #### BedrockRuntime ####
  138. ly_declare_aws_library(
  139. NAME
  140. BedrockRuntime
  141. LIB_FILE
  142. aws-cpp-sdk-bedrock-runtime
  143. BUILD_DEPENDENCIES
  144. 3rdParty::AWSNativeSDK::Core
  145. )
  146. #### CognitoIdentity ####
  147. ly_declare_aws_library(
  148. NAME
  149. CognitoIdentity
  150. LIB_FILE
  151. aws-cpp-sdk-cognito-identity
  152. BUILD_DEPENDENCIES
  153. 3rdParty::AWSNativeSDK::Core
  154. )
  155. #### CognitoIdp ####
  156. ly_declare_aws_library(
  157. NAME
  158. CognitoIdp
  159. LIB_FILE
  160. aws-cpp-sdk-cognito-idp
  161. BUILD_DEPENDENCIES
  162. 3rdParty::AWSNativeSDK::Core
  163. )
  164. #### DeviceFarm ####
  165. ly_declare_aws_library(
  166. NAME
  167. DeviceFarm
  168. LIB_FILE
  169. aws-cpp-sdk-devicefarm
  170. BUILD_DEPENDENCIES
  171. 3rdParty::AWSNativeSDK::Core
  172. )
  173. #### DynamoDB ####
  174. ly_declare_aws_library(
  175. NAME
  176. DynamoDB
  177. LIB_FILE
  178. aws-cpp-sdk-dynamodb
  179. BUILD_DEPENDENCIES
  180. 3rdParty::AWSNativeSDK::Core
  181. )
  182. #### GameLift ####
  183. ly_declare_aws_library(
  184. NAME
  185. GameLift
  186. LIB_FILE
  187. aws-cpp-sdk-gamelift
  188. BUILD_DEPENDENCIES
  189. 3rdParty::AWSNativeSDK::Core
  190. )
  191. #### IdentityManagement ####
  192. ly_declare_aws_library(
  193. NAME
  194. IdentityManagement
  195. LIB_FILE
  196. aws-cpp-sdk-identity-management
  197. BUILD_DEPENDENCIES
  198. 3rdParty::AWSNativeSDK::Core
  199. )
  200. #### Kinesis ####
  201. ly_declare_aws_library(
  202. NAME
  203. Kinesis
  204. LIB_FILE
  205. aws-cpp-sdk-kinesis
  206. BUILD_DEPENDENCIES
  207. 3rdParty::AWSNativeSDK::Core
  208. )
  209. #### Lambda ####
  210. ly_declare_aws_library(
  211. NAME
  212. Lambda
  213. LIB_FILE
  214. aws-cpp-sdk-lambda
  215. BUILD_DEPENDENCIES
  216. 3rdParty::AWSNativeSDK::Core
  217. )
  218. #### MobileAnalytics ####
  219. # MobileAnalytics library no longer exists and should be replaced with AWS PinPoint or other equivalent API
  220. #### Queues ####
  221. ly_declare_aws_library(
  222. NAME
  223. Queues
  224. LIB_FILE
  225. aws-cpp-sdk-queues
  226. BUILD_DEPENDENCIES
  227. 3rdParty::AWSNativeSDK::Core
  228. )
  229. #### S3 ####
  230. ly_declare_aws_library(
  231. NAME
  232. S3
  233. LIB_FILE
  234. aws-cpp-sdk-s3
  235. BUILD_DEPENDENCIES
  236. 3rdParty::AWSNativeSDK::Core
  237. )
  238. #### SNS ####
  239. ly_declare_aws_library(
  240. NAME
  241. SNS
  242. LIB_FILE
  243. aws-cpp-sdk-sns
  244. BUILD_DEPENDENCIES
  245. 3rdParty::AWSNativeSDK::Core
  246. )
  247. #### SQS ####
  248. ly_declare_aws_library(
  249. NAME
  250. SQS
  251. LIB_FILE
  252. aws-cpp-sdk-sqs
  253. BUILD_DEPENDENCIES
  254. 3rdParty::AWSNativeSDK::Core
  255. )
  256. #### STS ####
  257. ly_declare_aws_library(
  258. NAME
  259. STS
  260. LIB_FILE
  261. aws-cpp-sdk-sts
  262. BUILD_DEPENDENCIES
  263. 3rdParty::AWSNativeSDK::Core
  264. )
  265. #### Transfer ####
  266. ly_declare_aws_library(
  267. NAME
  268. Transfer
  269. LIB_FILE
  270. aws-cpp-sdk-transfer
  271. BUILD_DEPENDENCIES
  272. 3rdParty::AWSNativeSDK::Core
  273. )
  274. #########
  275. ######### Grouping Definitions #########
  276. #########
  277. #### GameLiftClient ####
  278. ly_declare_aws_library(
  279. NAME
  280. GameLiftClient
  281. BUILD_DEPENDENCIES
  282. 3rdParty::AWSNativeSDK::Core
  283. 3rdParty::AWSNativeSDK::GameLift
  284. )
  285. #### AWSClientAuth ####
  286. ly_declare_aws_library(
  287. NAME
  288. AWSClientAuth
  289. BUILD_DEPENDENCIES
  290. 3rdParty::AWSNativeSDK::Core
  291. 3rdParty::AWSNativeSDK::CognitoIdentity
  292. 3rdParty::AWSNativeSDK::CognitoIdp
  293. 3rdParty::AWSNativeSDK::STS
  294. 3rdParty::AWSNativeSDK::IdentityManagement
  295. )
  296. #### AWSCore ####
  297. ly_declare_aws_library(
  298. NAME
  299. AWSCore
  300. BUILD_DEPENDENCIES
  301. 3rdParty::AWSNativeSDK::Core
  302. 3rdParty::AWSNativeSDK::DynamoDB
  303. 3rdParty::AWSNativeSDK::Lambda
  304. 3rdParty::AWSNativeSDK::S3
  305. )