CMakeLists.txt 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315
  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. #
  8. o3de_pal_dir(pal_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/${PAL_PLATFORM_NAME} "${gem_restricted_path}" "${gem_path}" "${gem_parent_relative_path}")
  9. set(common_dir ${CMAKE_CURRENT_LIST_DIR}/Platform/Common)
  10. include(${pal_dir}/PAL_${PAL_PLATFORM_NAME_LOWERCASE}.cmake) #for PAL_TRAIT_AUDIO_ENGINE_WWISE Traits
  11. set(AUDIOENGINEWWISE_COMPILEDEFINITIONS
  12. $<IF:$<CONFIG:Release>,WWISE_RELEASE,ENABLE_AUDIO_LOGGING>
  13. )
  14. find_package(Wwise MODULE)
  15. ################################################################################
  16. # Servers
  17. # (and situations where Wwise SDK is not found or otherwise unavailable)
  18. ################################################################################
  19. if(NOT PAL_TRAIT_AUDIO_ENGINE_WWISE_SUPPORTED OR NOT Wwise_FOUND)
  20. # Don't create any Gem targets and aliases. Nothing should depend on this
  21. # Gem directly, because if it doesn't define targets it will cause an error.
  22. return()
  23. endif()
  24. ################################################################################
  25. # Clients
  26. ################################################################################
  27. ly_add_target(
  28. NAME ${gem_name}.Private.Object STATIC
  29. NAMESPACE Gem
  30. FILES_CMAKE
  31. audioenginewwise_files.cmake
  32. ${pal_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}_files.cmake
  33. PLATFORM_INCLUDE_FILES
  34. ${pal_dir}/platform_${PAL_PLATFORM_NAME_LOWERCASE}.cmake
  35. TARGET_PROPERTIES
  36. O3DE_PRIVATE_TARGET TRUE
  37. INCLUDE_DIRECTORIES
  38. PRIVATE
  39. Source/Engine
  40. ${pal_dir}
  41. ${common_dir}
  42. COMPILE_DEFINITIONS
  43. PUBLIC
  44. ${AUDIOENGINEWWISE_COMPILEDEFINITIONS}
  45. BUILD_DEPENDENCIES
  46. PUBLIC
  47. 3rdParty::Wwise
  48. Legacy::CryCommon
  49. Gem::AudioSystem.API
  50. )
  51. ly_add_target(
  52. NAME ${gem_name} ${PAL_TRAIT_MONOLITHIC_DRIVEN_MODULE_TYPE}
  53. NAMESPACE Gem
  54. FILES_CMAKE
  55. audioenginewwise_shared_files.cmake
  56. INCLUDE_DIRECTORIES
  57. PRIVATE
  58. Source/Engine
  59. ${pal_dir}
  60. ${common_dir}
  61. BUILD_DEPENDENCIES
  62. PRIVATE
  63. Gem::${gem_name}.Private.Object
  64. )
  65. # Inject the gem name into the Module source file
  66. ly_add_source_properties(
  67. SOURCES
  68. Source/AudioEngineWwiseModule.cpp
  69. PROPERTY COMPILE_DEFINITIONS
  70. VALUES
  71. O3DE_GEM_NAME=${gem_name}
  72. O3DE_GEM_VERSION=${gem_version})
  73. ly_create_alias(NAME ${gem_name}.Clients NAMESPACE Gem TARGETS Gem::${gem_name})
  74. ly_create_alias(NAME ${gem_name}.Unified NAMESPACE Gem TARGETS Gem::${gem_name})
  75. ################################################################################
  76. # Tests
  77. ################################################################################
  78. if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  79. ly_add_target(
  80. NAME ${gem_name}.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  81. NAMESPACE Gem
  82. FILES_CMAKE
  83. audioenginewwise_tests_files.cmake
  84. audioenginewwise_shared_files.cmake
  85. INCLUDE_DIRECTORIES
  86. PRIVATE
  87. Tests
  88. Source/Engine
  89. ${pal_dir}
  90. ${common_dir}
  91. BUILD_DEPENDENCIES
  92. PUBLIC
  93. Gem::AudioSystem.API
  94. PRIVATE
  95. AZ::AzTest
  96. Gem::${gem_name}.Private.Object
  97. )
  98. ly_add_googletest(
  99. NAME Gem::${gem_name}.Tests
  100. )
  101. list(APPEND testTargets ${gem_name}.Tests)
  102. ly_add_target_files(
  103. TARGETS
  104. ${testTargets}
  105. FILES
  106. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/soundbanks/init.bnk
  107. OUTPUT_SUBDIRECTORY
  108. Test.Assets/Gems/AudioEngineWwise/sounds/wwise/soundbanks
  109. )
  110. endif() # PAL_TRAIT_BUILD_TESTS_SUPPORTED
  111. ################################################################################
  112. # Tools / Builders
  113. ################################################################################
  114. if (PAL_TRAIT_BUILD_HOST_TOOLS)
  115. ly_add_target(
  116. NAME ${gem_name}.Editor.Private.Object STATIC
  117. NAMESPACE Gem
  118. AUTORCC
  119. FILES_CMAKE
  120. audioenginewwise_editor_files.cmake
  121. TARGET_PROPERTIES
  122. O3DE_PRIVATE_TARGET TRUE
  123. COMPILE_DEFINITIONS
  124. PUBLIC
  125. ${AUDIOENGINEWWISE_COMPILEDEFINITIONS}
  126. INCLUDE_DIRECTORIES
  127. PRIVATE
  128. Source/Engine
  129. Source/Editor
  130. ${pal_dir}
  131. BUILD_DEPENDENCIES
  132. PUBLIC
  133. 3rdParty::Wwise
  134. Gem::AudioSystem.Editor.API
  135. Legacy::CryCommon
  136. PRIVATE
  137. Legacy::EditorCore
  138. Gem::${gem_name}.Private.Object
  139. RUNTIME_DEPENDENCIES
  140. Gem::AudioSystem.Editor
  141. )
  142. ly_add_target(
  143. NAME ${gem_name}.Editor GEM_MODULE
  144. NAMESPACE Gem
  145. FILES_CMAKE
  146. audioenginewwise_editor_shared_files.cmake
  147. COMPILE_DEFINITIONS
  148. PRIVATE
  149. AUDIO_ENGINE_WWISE_EDITOR
  150. INCLUDE_DIRECTORIES
  151. PRIVATE
  152. Source/Engine
  153. Source/Editor
  154. ${pal_dir}
  155. BUILD_DEPENDENCIES
  156. PUBLIC
  157. Gem::AudioSystem.API
  158. PRIVATE
  159. Gem::${gem_name}.Editor.Private.Object
  160. RUNTIME_DEPENDENCIES
  161. Gem::AudioSystem.Editor
  162. )
  163. ly_add_target(
  164. NAME ${gem_name}.Builder.Private.Object STATIC
  165. NAMESPACE Gem
  166. FILES_CMAKE
  167. audioenginewwise_builder_files.cmake
  168. TARGET_PROPERTIES
  169. O3DE_PRIVATE_TARGET TRUE
  170. COMPILE_DEFINITIONS
  171. PUBLIC
  172. ${AUDIOENGINEWWISE_COMPILEDEFINITIONS}
  173. INCLUDE_DIRECTORIES
  174. PRIVATE
  175. Source/Builder
  176. Source/Engine
  177. ${pal_dir}
  178. BUILD_DEPENDENCIES
  179. PUBLIC
  180. 3rdParty::Wwise
  181. AZ::AssetBuilderSDK
  182. Gem::AudioSystem.API
  183. PRIVATE
  184. Legacy::EditorCore
  185. )
  186. ly_add_target(
  187. NAME ${gem_name}.Builder GEM_MODULE
  188. NAMESPACE Gem
  189. FILES_CMAKE
  190. audioenginewwise_builder_shared_files.cmake
  191. COMPILE_DEFINITIONS
  192. PRIVATE
  193. AUDIO_ENGINE_WWISE_BUILDER
  194. INCLUDE_DIRECTORIES
  195. PRIVATE
  196. Source/Builder
  197. Source/Editor
  198. Source/Engine
  199. ${pal_dir}
  200. BUILD_DEPENDENCIES
  201. PUBLIC
  202. Gem::AudioSystem.API
  203. Gem::AudioSystem.Editor.API
  204. Legacy::CryCommon
  205. PRIVATE
  206. Gem::${gem_name}.Builder.Private.Object
  207. Gem::${gem_name}.Private.Object
  208. )
  209. ly_create_alias(NAME ${gem_name}.Builders NAMESPACE Gem TARGETS Gem::${gem_name}.Builder)
  210. ly_create_alias(NAME ${gem_name}.Tools NAMESPACE Gem TARGETS Gem::${gem_name}.Editor)
  211. if (PAL_TRAIT_BUILD_TESTS_SUPPORTED)
  212. ly_add_target(
  213. NAME ${gem_name}.Editor.Tests ${PAL_TRAIT_TEST_TARGET_TYPE}
  214. NAMESPACE Gem
  215. FILES_CMAKE
  216. audioenginewwise_editor_tests_files.cmake
  217. audioenginewwise_editor_shared_files.cmake
  218. INCLUDE_DIRECTORIES
  219. PRIVATE
  220. Tests
  221. Source/Builder
  222. Source/Editor
  223. Source/Engine
  224. ${pal_dir}
  225. BUILD_DEPENDENCIES
  226. PUBLIC
  227. Gem::AudioSystem.API
  228. PRIVATE
  229. AZ::AzTest
  230. Gem::${gem_name}.Editor.Private.Object
  231. Gem::${gem_name}.Builder.Private.Object
  232. Legacy::CryCommon
  233. )
  234. ly_add_googletest(
  235. NAME Gem::${gem_name}.Editor.Tests
  236. )
  237. list(APPEND editorTestTargets ${gem_name}.Editor.Tests)
  238. ly_add_target_files(
  239. TARGETS
  240. ${editorTestTargets}
  241. FILES
  242. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/EmptyControl.xml
  243. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MissingPreloads.xml
  244. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MissingWwiseFileNode.xml
  245. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MultiplePreloadsMultipleBanks.xml
  246. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/MultiplePreloadsOneBank.xml
  247. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/OnePreloadMultipleBanks.xml
  248. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/OnePreloadOneBank.xml
  249. OUTPUT_SUBDIRECTORY
  250. Test.Assets/Gems/AudioEngineWwise/AudioControls
  251. )
  252. ly_add_target_files(
  253. TARGETS
  254. ${editorTestTargets}
  255. FILES
  256. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingAtlPlatformsNode.xml
  257. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingConfigGroupNameAttribute.xml
  258. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingPlatformNameAttributeOnePreload.xml
  259. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingPlatformNode.xml
  260. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MissingWwiseFileNode.xml
  261. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MultiplePreloadsMultipleBanks.xml
  262. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/MultiplePreloadsOneBank.xml
  263. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/NoConfigGroups.xml
  264. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/OnePreloadMultipleBanks.xml
  265. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/OnePreloadOneBank.xml
  266. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/AudioControls/Legacy/WrongConfigGroup.xml
  267. OUTPUT_SUBDIRECTORY
  268. Test.Assets/Gems/AudioEngineWwise/AudioControls/Legacy
  269. )
  270. ly_add_target_files(
  271. TARGETS
  272. ${editorTestTargets}
  273. FILES
  274. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank1.bankdeps
  275. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank2.bankdeps
  276. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank3.bankdeps
  277. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank4.bankdeps
  278. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank5.bankdeps
  279. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank6.bankdeps
  280. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank7.bankdeps
  281. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank8.bankdeps
  282. ${CMAKE_CURRENT_SOURCE_DIR}/Tests/Sounds/wwise/test_bank9.bankdeps
  283. OUTPUT_SUBDIRECTORY
  284. Test.Assets/Gems/AudioEngineWwise/sounds/wwise
  285. )
  286. endif() # PAL_TRAIT_BUILD_TESTS_SUPPORTED
  287. endif() # PAL_TRAIT_BUILD_HOST_TOOLS